Exemple #1
0
 /**
  * Read messages.
  */
 public function readMessages()
 {
     if (\Yii::app()->request->getParam('count', false)) {
         $this->controller->setMessAge(\ContactsManager::getCountByType($this->controller->identity->getId(), \ContactsManager::TYPE_NEW));
         return;
     }
     $required = array('messageId' => true);
     $messageId = $this->controller->getParams($required)['messageId'];
     /**
      * @var \MessagingMessage $message
      */
     $message = \MessagingMessage::model()->findByPk($messageId);
     $messages = \MessagingMessage::model()->forMarkAsReaded($messageId, $message->author_id, $this->controller->identity->getId())->findAll(array('limit' => 50));
     $criteria = new \CDbCriteria();
     $criteria->addInCondition('message_id', \CHtml::listData($messages, 'id', 'id'));
     $criteria->addColumnCondition(array('user_id' => $this->controller->identity->getId()));
     if (!\MessagingMessageUser::model()->updateAll(array('dtime_read' => new \CDbExpression('NOW()')), $criteria)) {
         throw new ApiException('UpdateFailed', 500);
     }
     $this->controller->setMessage('Success');
     // Подготовим и отправим событие
     $comet = new \CometModel();
     $criteria = new \CDbCriteria();
     $criteria->addInCondition('message_id', \CHtml::listData($messages, 'id', 'id'));
     /**
      * @var \MessagingMessage[] $messageModels
      */
     $messageModels = \MessagingMessage::model()->withMyStatsOnTop($this->controller->identity->getId(), false)->findAll($criteria);
     foreach ($messageModels as $messageModel) {
         $user = $messageModel->messageUsers[1]->user_id;
         //self
         $data = array('dialog' => array('id' => $user), 'message' => \DialogForm::messageToJson($messageModel, $this->controller->identity->getId(), $user, $messageModel->messageUsers[1]));
         $comet->send($this->controller->identity->getId(), $data, \CometModel::MESSAGING_MESSAGE_READ);
         //interlocutor
         $data = array('dialog' => array('id' => $this->controller->identity->getId()), 'message' => \DialogForm::messageToJson($messageModel, $user, $this->controller->identity->getId(), $messageModel->messageUsers[1]));
         $comet->send($user, $data, \CometModel::MESSAGING_MESSAGE_READ);
     }
 }