Вход Регистрация
Файл: sys/inc/functions/ds-comments.php
Строк: 205
<?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') {
        
$params = json_decode(base64_decode($_POST['comments_params']), 1); 
        
$params_hash = md5($_POST['comments_params'] . ':' . $user['id'] . ':' . 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 (
strlen2(trim($_POST['msg'])) == 0 && empty($_POST['attachments'])) {
            return ; 
        }

        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']); 

            
$_SESSION['message'] = $params['strings']['comment_send'];
            
ds_redirect($params['action']); 
        } else {
            
do_event('ds_comment_error'); 
        }
    }
}

function 
ds_message($comments_id, $args = array()) 
{
    
$set = get_settings(); 
    
$args = ds_message_args($args); 

    
// Хеш сгенерированной формы
    
$hash = get_comments_hash($args['object'], $args['object_id']); 

    
do_event('pre_comments', $hash, $args); 

    
$encode_params = base64_encode(json_encode($args)); 

    echo 
'<form id="' . $args['type'] . '-form-' . $hash . '" data-hash="' . $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="' . $encode_params . '" />';
    echo 
'<input type="hidden" name="comments_params_hash" value="' . md5($encode_params . ':' . get_user_id() . ':' . 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' => __('Сообщение'), 
        
'hash' => $hash, 
    )); 
    
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>';
    
    
do_event('ds_comment_form_after', $hash, $args); 
}

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 
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); 
}
Онлайн: 2
Реклама