Example #1
0
 /**
  * @inheritdoc
  */
 public function send(MessageForm $message, User $user)
 {
     if ($message->validate()) {
         $node = new Message($message->attributes);
         $node->from = $this->user->id;
         if ($node->validate() && $node->save(false)) {
             return $node;
         }
     }
     return null;
 }
 /**
  * @param null $id
  * @return array|string
  * @throws \yii\base\InvalidConfigException
  * @internal param null $id
  */
 public function actionIndex($id = null)
 {
     $messages = [];
     $uploader = $this->loadUploader();
     $dialogs = Yii::$app->messages->getDialogs();
     if (Yii::$app->request->isPost) {
         $message = new MessageForm();
         if ($message->load(Yii::$app->request->post())) {
             if ($result = Yii::$app->messages->send($message, User::findOne($message->to))) {
                 $uploader->messageModel = $result;
                 $uploader->saveTempFiles();
                 Yii::$app->response->format = Response::FORMAT_JSON;
                 return ['time' => time(), 'text' => $result->text, 'message' => $this->renderPartial('_message', ['message' => $result, 'firstToday' => !Date::isSameDay(Yii::$app->request->post('last_time'), time())])];
             }
         }
     }
     $activeDialog = null;
     if ($id) {
         foreach ($dialogs as $dialog) {
             if ($dialog->dialogId == $id) {
                 $activeDialog = $dialog;
                 Yii::$app->messages->markAsRead($activeDialog);
                 $messages = Yii::$app->messages->getDialogMessages($activeDialog);
                 break;
             }
         }
         if (!$activeDialog) {
             throw new NotFoundHttpException();
         }
     } else {
         if ($dialogs) {
             $activeDialog = $dialogs[0];
             Yii::$app->messages->markAsRead($activeDialog);
             $messages = Yii::$app->messages->getDialogMessages($activeDialog);
         }
     }
     $uploader->clearUserGarbage();
     return $this->render('index', ['dialogs' => Yii::$app->messages->getDialogs(), 'activeDialog' => $activeDialog, 'messages' => $messages]);
 }