/**
  * AJAX
  * Получает новые сообщения
  * Эта функция стоит как слушатель и вызывается каждые 10 секунд
  * Возвращаемые сообщения будут отсортировны от ранних до поздних
  *
  * REQUEST:
  * - from - int - идентификатор пользователя, от кого
  * - last_datetime - int - время от которого нужно получить сообщения
  *
  * @return string json array
  * [
  *     {
  *          'datetime' => int,
  *          'html'     => string
  *     }, ...
  * ]
  */
 public function actionGet_new_messages()
 {
     //        self::validateRequestJson([
     //            [['last_datetime', 'from'], 'required'],
     //            [['last_datetime', 'from'], 'integer'],
     //        ]);
     $last_datetime = self::getParam('last_datetime');
     $items = ChatMessage::query(['user_id_from' => self::getParam('from'), 'user_id_to' => \Yii::$app->user->id])->andWhere(['>', 'datetime', $last_datetime])->orderBy(['datetime' => SORT_ASC])->all();
     $new = [];
     foreach ($items as $item) {
         $new[] = ['datetime' => $item['datetime'], 'html' => $this->renderFile('@app/views/cabinet_chat/get_new_messages.php', ['message' => new ChatMessage($item), 'user' => User::find($item['user_id_from'])])];
     }
     return self::jsonSuccess($new);
 }
 /**
  * Показывает разговор с конкретным пользователем
  *
  * @return string|\yii\web\Response
  */
 public function actionUser($id)
 {
     return $this->render(['items' => ChatMessage::getItems($id), 'userFrom' => Yii::$app->user->id, 'userTo' => $id]);
 }
Esempio n. 3
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getChatMessages()
 {
     return $this->hasMany(ChatMessage::className(), ['profile_id' => 'id']);
 }