/** * Инициализация виджета */ public function init() { parent::init(); $this->model = new Comment(); $this->models = !empty($this->models) ? $this->models : Comment::model()->page()->approved()->findAll(); $this->publishAssets(); $this->buildCommentsArray(); }
/** * @return string урл первого нового комментария */ public static function getNewCommentsUrl() { $userID = \Yii::app()->getModule('comments')->getUserID(); if (!empty($userID)) { $newComments = NewComments::model()->user($userID)->findAll(); } if (empty($newComments)) { return false; } $comment = Comment::model()->findByPk($newComments[0]->comment_id); return $comment->url . '#comment_' . $comment->id; }
/** * Кладёт массив лайков в сессию */ public function setLikesToSession() { $commentsLikes = Comment::getCommentsLikesFromSession(); if (isset($commentsLikes[$this->id])) { $commentsLikes[$this->id] = array('defaultLikes' => $commentsLikes[$this->id]['defaultLikes'], 'like' => $this->isLiked); } else { $commentsLikes[$this->id] = array('defaultLikes' => $this->oldLikes, 'like' => $this->isLiked); } // Кладём в сессию массив id моделей, для которой провелось голосование \Yii::app()->session['commentsLikes'] = $commentsLikes; }
return $data->getEmail(); }), array('name' => 'content', 'value' => function ($data) { return CHelper::cutStr($data->content); }), array('name' => 'likes', 'value' => function ($data) { return $data->getLikes(); }, 'htmlOptions' => array('width' => '50px', 'style' => 'text-align: center;')), array('name' => 'status', 'filter' => Comment::getStatusArray(), 'value' => function ($data) { return $data->getStatus(); }, 'htmlOptions' => array('width' => '120px', 'style' => 'text-align: center;')), array('name' => 'created', 'filter' => false, 'value' => function ($data) { return CHelper::date($data->created); }, 'htmlOptions' => array('width' => '140px', 'style' => 'text-align: center;')), array('header' => 'Операции', 'class' => 'CButtonColumn', 'htmlOptions' => array('width' => '70px', 'style' => 'text-align: center;'))))); ?> <p class="control"> Статус: <?php echo CHtml::dropDownList('status', '', Comment::getStatusArray(), array('empty' => '--Выберите статус--')); ?> <?php echo CHtml::ajaxSubmitButton('Применить', array('ajaxUpdateStatus'), array('success' => 'reloadGrid')); ?> | <?php echo CHtml::ajaxSubmitButton('Отметить прочитанными', array('ajaxUpdateSetOld'), array('success' => 'reloadGrid')); ?> | <?php echo CHtml::ajaxSubmitButton('Отметить новыми', array('ajaxUpdateSetNew'), array('success' => 'reloadGrid')); ?> | <?php
/** * Отправляет пачками письма пользователям о новых комментариях * @param $newComment */ protected function sendUserNotifies($newComment) { foreach (Comment::model()->page($newComment->url)->notify()->findAll() as $subscriber) { // Если email нового комментария (отправителя) совпадает с email подписчика, // то выходит что это один и тот же человек, ему уведомление не высылаем, пропускаем итерацию цикла if ($newComment->getEmail() === $subscriber->getEmail()) { continue; } $message = $this->renderPartial('comments.extensions.comments_widget.views.email.notifyUser', array('newComment' => $newComment, 'userName' => $subscriber->getAuthor(), 'userEmail' => $subscriber->getEmail(), 'hash' => $subscriber->getHash()), true); $this->module->sendMail($subscriber->getEmail(), 'Новый комментарий на сайте "' . \Yii::app()->name . '"', $message); } }