예제 #1
0
 /**
  * Get messages for dialog
  *
  * @return array
  * @throws BadRequestHttpException
  */
 public function actionGetDialogMessages()
 {
     /**
      * @var $dialog PoprigunChatDialog
      */
     $dialogId = Yii::$app->request->get('dialogId');
     $dialog = PoprigunChatDialog::findOne(['id' => Chat::decodeDialogId($dialogId)]);
     $messageId = Yii::$app->request->get('messageId');
     $old = Yii::$app->request->get('old', false);
     $count = Yii::$app->request->get('count', false);
     $messageCount = Yii::$app->request->get('message_count', false);
     if (null == $dialog || !$dialog->isAllowed($this->user->id)) {
         throw new \BadMethodCallException();
     }
     $limit = !$messageCount ? Chat::$defaultCount : $messageCount;
     if ($old) {
         $messages = $dialog->getMessages($limit, $messageId, true);
     } else {
         $messages = $dialog->getMessages(empty($messageId) ? $limit : null, $messageId);
     }
     $chatUser = $dialog->getPoprigunChatUsers()->andWhere(['user_id' => $this->user->id])->one();
     PoprigunChatUserRel::setReadMessage($chatUser->id, PoprigunChatUserRel::getUnreadMessage($chatUser->id, $messages));
     $json = $this->getMessageArray($messages);
     if (!empty($json)) {
         krsort($json);
         $json = array_values($json);
         if ($count) {
             $json['count'] = $dialog->getPoprigunChat()->count();
         }
     }
     return $json;
 }