Ejemplo n.º 1
0
 /**
  * Delete message (change status)
  *
  * @param integer $messageId
  * @param null $userId
  * @return int
  */
 public static function deleteMessage($messageId, $userId = null)
 {
     $userId = $userId ? $userId : Yii::$app->user->id;
     $message = PoprigunChatMessage::find()->select([PoprigunChatMessage::tableName() . '.id', PoprigunChatUser::tableName() . '.id as chat_user_id'])->innerJoinWith('dialog')->innerJoinWith('dialog.poprigunChatUsers')->andWhere([PoprigunChatMessage::tableName() . '.id' => $messageId])->andWhere([PoprigunChatUser::tableName() . '.user_id' => $userId])->asArray()->one();
     if (empty($message)) {
         return false;
     }
     return self::updateAll(['status' => self::STATUS_DELETED], ['message_id' => $message['id'], 'chat_user_id' => $message['chat_user_id']]);
 }
Ejemplo n.º 2
0
 /**
  * Delete dialog/delete dialog messages (change status)
  *
  * @param integer $dialogId
  * @param integer|null $userId
  * @return int
  */
 public static function deleteDialog($dialogId, $userId = null)
 {
     $userId = $userId ? $userId : Yii::$app->user->id;
     $messageIds = PoprigunChatMessage::find()->select([PoprigunChatMessage::tableName() . '.id', PoprigunChatUser::tableName() . '.id as chat_user_id'])->innerJoinWith('chatUserRel')->innerJoinWith('chatUserRel.chatUser')->andWhere([PoprigunChatMessage::tableName() . '.dialog_id' => $dialogId])->andWhere([PoprigunChatUser::tableName() . '.user_id' => $userId])->asArray()->all();
     if (empty($messageIds)) {
         return false;
     }
     return PoprigunChatUserRel::updateAll(['status' => PoprigunChatUserRel::STATUS_DELETED], ['message_id' => ArrayHelper::map($messageIds, 'id', 'id'), 'chat_user_id' => ArrayHelper::map($messageIds, 'chat_user_id', 'chat_user_id')]);
 }
Ejemplo n.º 3
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getMessage()
 {
     return $this->hasOne(PoprigunChatMessage::className(), ['id' => 'message_id']);
 }
Ejemplo n.º 4
0
 /**
  * Send message
  *
  * @return bool
  * @throws BadRequestHttpException
  */
 public function actionSendMessage()
 {
     $model = new PoprigunChatMessage();
     if ($model->load(Yii::$app->request->post())) {
         $model->author_id = $this->user->id;
         $validate = ActiveForm::validate($model);
         if (empty($validate)) {
             $newMessage = $model->sendMessage();
             $result = $newMessage === false ? $newMessage : $this->getMessageArray([$newMessage]);
         } else {
             $result = $validate;
         }
     } else {
         $result = $model->errors;
     }
     return $result;
 }