/**
  * Инициализация виджета
  */
 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();
 }
示例#2
0
 /**
  * @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;
 }
示例#3
0
 /**
  * Кладёт массив лайков в сессию
  */
 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;
 }
示例#4
0
    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);
     }
 }