/** * Viewing the message of given ID. * @param integer $id * @return string|\yii\web\Response */ public function actionView($id = null) { $model = Message::find()->where(['and', ['id' => $id], ['or', 'receiver_id' => User::loggedId(), 'sender_id' => User::loggedId()]])->limit(1)->one(); if ($model) { if ($model->receiver_id == User::loggedId() && $model->receiver_status == Message::STATUS_NEW) { $model->receiver_status = Message::STATUS_READ; if ($model->save()) { Cache::getInstance()->deleteElement('user.newmessages', User::loggedId()); } } return $this->render('view', ['model' => $model]); } else { $this->error(Yii::t('podium/flash', 'Sorry! We can not find the message with the given ID.')); return $this->redirect(['messages/inbox']); } }
/** * Loads older messages in thread. * @return string */ public function actionLoad() { if (!Yii::$app->request->isAjax) { return $this->redirect(['default/index']); } $result = ['messages' => '', 'more' => 0]; if (!Yii::$app->user->isGuest) { $loggedId = User::loggedId(); $id = Yii::$app->request->post('message'); $message = Message::find()->where(['id' => $id])->limit(1)->one(); if ($message && ($message->sender_id == $loggedId || $message->isMessageReceiver($loggedId))) { $stack = 0; $reply = clone $message; while ($reply->reply && $stack < 5) { $result['more'] = 0; if ($reply->reply->sender_id == $loggedId && $reply->reply->sender_status == Message::STATUS_DELETED) { $reply = $reply->reply; continue; } $result['messages'] .= $this->renderPartial('load', ['reply' => $reply]); $reply = $reply->reply; if ($reply) { $result['more'] = $reply->id; } $stack++; } } } return Json::encode($result); }