/** * 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; }