Вход Регистрация
Файл: sys/inc/functions/ds-comments.php
Строк: 274
<?php 

/**
* Инициализация комментариев
*/ 
function ds_comments_init() 
{
    
$user get_user(); 

    if (!isset(
$user['id'])) return ; 

    if (isset(
$_POST['comments_hash']) && isset($_POST['comments_type']) && $_POST['comments_type'] == 'comment') {
        
//$request = array_merge($_POST, $_FILES); 
        //die(json_encode($request)); 

        
$params json_decode(base64_decode($_POST['comments_params']), 1); 
        
$params_hash md5($_POST['comments_params'] . SALT_FORMS_FIELDS);  

        
$replace = array(
            
'%title%' => '[url=' $params['redirect'] . ']' db::esc($_POST['comments_title']) . '[/url]',  
            
'%nick%' => '[url=' get_user_url() . ']' get_user_nick() . '[/url]'
        ); 

        foreach(
$params['strings'] AS $key => $value) {
            foreach(
$replace AS $search => $replaceText) {
                
$params['strings'][$key] = str_replace($search$replaceText$value); 
            }
        }
        
        if (
$params_hash !== $_POST['comments_params_hash']) {
            
add_error(__('Данные комментария не валидны')); 
        }

        if (!
is_errors()) {
            
$content '<!-- CMS-Social Data {{' serialize(use_filters('ds_mail_serialize_data', array(
                
'user_id' => $user['id'], 
                
'attachments' => (isset($_POST['attachments']) ? $_POST['attachments'] : array()), 
            ))) . 
'}} -->' "r";

            
$content .= $_POST['msg']; 

            
$comment_table use_filters('ds_comment_table''comments'$params['object'], $params['object_id']); 

            
db::insert($comment_table, array(
                
'msg' => use_filters('comment_msg_insert'$content), 
                
'time' => time(), 
                
'user_id' => get_user_id(), 
                
'object' => $params['object'], 
                
'object_id' => $params['object_id'], 
            )); 

            
$post_id db::insert_id(); 

            
do_event('ds_comment_send'$post_id$params['object'], $params['object_id']); 

            if (
$post_id) {
                
$_SESSION['message'] = $params['strings']['comment_send'];
                
ds_redirect($params['action']); 
            }
        } 

        
do_event('after_comments_send'$params); 
    }

}

function 
ds_message($comments_id$args = array()) 
{
    
$set get_settings(); 
    
do_event('pre_comments'); 
    
$args ds_message_args($args); 

    
// Хеш сгенерированной формы
    
$hash md5($comments_id ':' $args['action']); 

    echo 
'<form id="' $args['type'] . '-form-' $hash '" class="comments-form" action="' $args['action'] . '" method="POST" enctype="multipart/form-data">';
    echo 
'<input type="hidden" name="comments_hash" value="' $hash '" />';
    echo 
'<input type="hidden" name="comments_title" value="' text($set['title']) . '" />';
    echo 
'<input type="hidden" name="comments_type" value="' $args['type'] . '" />';
    echo 
'<input type="hidden" name="comments_reply" value="0" />';
    echo 
'<input type="hidden" name="comments_params" value="' base64_encode(json_encode($args)) . '" />';
    echo 
'<input type="hidden" name="comments_params_hash" value="' md5(base64_encode(json_encode($args)) . SALT_FORMS_FIELDS) . '" />';

    if (isset(
$args['object'])) {
        echo 
'<input type="hidden" name="comments_object" value="' text($args['object']) . '" />';
    }

    if (isset(
$args['object_id'])) {
        echo 
'<input type="hidden" name="comments_object_id" value="' text($args['object_id']) . '" />';
    }
    
    echo 
'<!-- .ds-comment-form -->'
    echo 
'<div class="ds-comment-form">'

    echo 
'<div class="ds-comment-form-attach">'
    echo 
'<div class="choose">'
    echo 
'<span class="choose-attachment" data-hash="' $hash '"></span>';
    echo 
'<div class="choose-types" data-hash="' $hash '">';
    
$all_media get_media_types(); 

    foreach(
$all_media AS $type => $media) {
        if (
$media['attachments'] === true) {
            echo 
'<a data-hash="' $hash '" 
                 data-type="' 
$type '" 
                 data-term="0" 
                 data-accept="' 
join(','$media['accept']) . '" 
                 class="choose-type choose-type-' 
$type ' load-files"><i class="fa ' $media['icons']['attachments'] . '"></i> ' $media['labels']['title'] . '</a>'
        }
    }
    echo 
'</div>';
    echo 
'</div>';
    echo 
'</div>';

    echo 
'<div class="ds-comment-form-textarea">';
    
do_event('ds_comment_textarea_before'$hash$args); 
    
ds_editor('msg''', array(
        
'placeholder' => __('Сообщение'), 
    )); 
    
do_event('ds_comment_textarea_after'$hash$args); 
    echo 
'</div>'

    echo 
'<div class="ds-comment-form-send">';
    echo 
'<button name="' $hash '" class="button button-comments-send" type="submit">' $args['strings']['send_title'] . '</button>';
    echo 
'</div>'

    echo 
'<!-- / .ds-comment-form -->'
    echo 
'</div>';

    echo 
'<div data-hash="' $hash '" id="attachments-' $hash '" class="attachments"></div>';
    echo 
'<div data-hash="' $hash '" class="wrap-choose-manager"></div>'
    echo 
'</form>';
}

function 
ds_message_test($comments_id$args = array()) 
{
    
$set get_settings(); 
    
do_event('pre_comments'); 
    
$args ds_message_args($args); 

    
// Хеш сгенерированной формы
    
$hash md5($comments_id ':' $args['action']); 

    echo 
'<form id="' $args['type'] . '-form-' $hash '" class="comments-form" action="' $args['action'] . '" method="POST" enctype="multipart/form-data">';
    echo 
'<input type="hidden" name="comments_hash" value="' $hash '" />';
    echo 
'<input type="hidden" name="comments_title" value="' text($set['title']) . '" />';
    echo 
'<input type="hidden" name="comments_type" value="' $args['type'] . '" />';
    echo 
'<input type="hidden" name="comments_reply" value="0" />';

    if (isset(
$args['object'])) {
        echo 
'<input type="hidden" name="comments_object" value="' text($set['object']) . '" />';
    }

    if (isset(
$args['object_id'])) {
        echo 
'<input type="hidden" name="comments_object_id" value="' text($set['object_id']) . '" />';
    }
    
    
ds_editor('msg''', array(
        
'placeholder' => __('Сообщение'), 
    )); 
     
    echo 
'<input type="hidden" name="comments_params" value="' base64_encode(json_encode($args)) . '" />';
    echo 
'<input type="hidden" name="comments_params_hash" value="' md5(base64_encode(json_encode($args)) . SALT_FORMS_FIELDS) . '" />';
    echo 
'<div id="log"></div>'
    echo 
'<div data-hash="' $hash '" id="attachments-' $hash '" class="attachments"></div>';

    echo 
'<button name="' $hash '" class="button button-comments-send" type="submit">' $args['strings']['send_title'] . '</button>';

    echo 
'<div class="choose">'
    echo 
' <span class="choose-attachment" data-hash="' $hash '"></span>';

    echo 
'<div class="choose-types" data-hash="' $hash '">';
    
$all_media get_media_types(); 

    foreach(
$all_media AS $type => $media) {
        if (
$media['attachments'] === true) {
            echo 
'<a data-hash="' $hash '" 
                 data-type="' 
$type '" 
                 data-term="0" 
                 data-accept="' 
join(','$media['accept']) . '" 
                 class="choose-type choose-type-' 
$type ' load-files"><i class="fa ' $media['icons']['attachments'] . '"></i> ' $media['labels']['title'] . '</a>'
        }
    }
    echo 
'</div>';
    echo 
'</div>';

    echo 
'<div data-hash="' $hash '" class="wrap-choose-manager"></div>'
    echo 
'</form>';
}

function 
ds_message_args($args
{
    
$default = array(
        
'action' => get_site_url($_SERVER['REQUEST_URI']), 
        
'redirect' => get_site_url($_SERVER['REQUEST_URI']), 
        
'type' => 'comment'
        
'strings' => array(
            
'comment_send' => __('Комментарий успешно отправлен'), 
            
'notification_title' => __('%nick% ответил вам на странице %title%'), 
            
'send_title' => __('Отправить'), 
        ),
        
'placeholder' => ''
        
'object' => 'none'
        
'object_id' => 0
    ); 

    return 
use_filters('filter_message_form_args'array_replace_recursive($default$args)); 
}

function 
get_comments_hash($object$object_id
{
    
//return md5($object . ':' . $object_id); 
    
return base64_encode($object ':' $object_id); 
}

function 
get_comments_count($object$object_id
{
    
$hash get_comments_hash($object$object_id); 

    
$counters ds_get('ds_comments_counters', array()); 
    if (isset(
$counters[$hash])) {
        return 
$counters[$hash]; 
    }

    
$comment_table use_filters('ds_comment_table''comments'$object$object_id); 

    
$counters[$hash] = db::count("SELECT COUNT(*) FROM `" $comment_table "` WHERE `object` = '" $object "' AND `object_id` = '" $object_id "'"); 
    
ds_set('ds_comments_counters'$counters);

    return 
$counters[$hash]; 
}

function 
get_comment_template($args
{
    
$template use_filters('ds_comment_template''<div class="%post_class%"><div class="ds-messages-post"><div class="ds-message-photo">%post_image%</div><div class="ds-message-content">%post_title% (%post_time%)<br /><div class="ds-message-text">%post_content%</div></div></div>%post_actions%</div>'); 

    
    
$html_actions ''
    if (!empty(
$args['actions'])) {
        
$actions = array(); 
        foreach(
$args['actions'] AS $action) {
            
$actions[] = '<a href="' $action['url'] . '">' $action['title'] . '</a>'
        }

        
$html_actions '<div class="post-header-action"><span class="post-action-toggle"><i class="fa fa-ellipsis-h"></i></span><span class="post-action-nav">' join(''$actions) . '</span></div>'
    }

    
$mask = array(
        
'%post_class%'   => $args['classes'],
        
'%post_image%'   => $args['image'],
        
'%post_title%'   => $args['title'],
        
'%post_time%'    => $args['time'],
        
'%post_content%' => $args['content'], 
        
'%post_actions%' => $html_actions
    ); 

    return 
str_replace(array_keys($mask), array_values($mask), $template); 
}
Онлайн: 0
Реклама