Файл: system/controllers/comments/actions/refresh.php
Строк: 50
<?php
class actionCommentsRefresh extends cmsAction {
    public function run(){
        if (!$this->request->isAjax()){ cmsCore::error404(); }
        $user = cmsUser::getInstance();
        if (!$user->is_logged) { cmsCore::error404(); }
        $template = cmsTemplate::getInstance();
        $timestamp = $this->request->get('timestamp');
        $target_controller = $this->request->get('tc');
        $target_subject = $this->request->get('ts');
        $target_id = $this->request->get('ti');
        $comments_per_request = 5;
        $this->model->
                filterEqual('target_controller', $target_controller)->
                filterEqual('target_subject', $target_subject)->
                filterEqual('target_id', $target_id)->
                filterTimestampGt('date_pub', $timestamp)->
                filterNotEqual('user_id', $user->id)->
                orderBy('id')->
                limit($comments_per_request);
        $total_count = $this->model->getCommentsCount();
        if (!$total_count){
            $result = array('error' => false, 'total' => 0, 'exists' => 0);
            $template->renderJSON($result);
        }
        $comments = $this->model->getComments();
        $comments_collection = array();
        $template_request = new cmsRequest(array(), cmsRequest::CTX_INTERNAL);
        foreach($comments as $comment){
            $comments_collection[] = array(
                'id' => $comment['id'],
                'parent_id' => $comment['parent_id'],
                'level' => $comment['level'],
                'timestamp' => strtotime($comment['date_pub']),
                'html' => $template->render('comment', array('comments'=>array($comment), 'user'=>$user), $template_request)
            );
        }
        // Формируем и возвращаем результат
        $result = array(
            'error' => false,
            'total' => $total_count,
            'exists' => $total_count > $comments_per_request ? $total_count - $comments_per_request : 0,
            'comments' => $comments_collection,
        );
        $template->renderJSON($result);
    }
}