コード例 #1
0
ファイル: PoprigunChatUserRel.php プロジェクト: poprigun/chat
 /**
  * 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']]);
 }
コード例 #2
0
ファイル: PoprigunChatDialog.php プロジェクト: poprigun/chat
 /**
  * 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')]);
 }