Пример #1
0
 /**
  * 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']);
     }
 }
Пример #2
0
 /**
  * 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);
 }