/** * Удаляет юзера из разговора * * @param array $aTalkId Список ID сообщений * @param int $sUserId ID пользователя * @param int $iActive Статус связи * @return bool */ public function DeleteTalkUserByArray($aTalkId, $sUserId, $iActive = self::TALK_USER_DELETE_BY_SELF) { if (!is_array($aTalkId)) { $aTalkId = array($aTalkId); } // Удаляем для каждого отметку избранного foreach ($aTalkId as $sTalkId) { $this->DeleteFavouriteTalk(Engine::GetEntity('Favourite', array('target_id' => (string) $sTalkId, 'target_type' => 'talk', 'user_id' => $sUserId))); } // Нужно почистить зависимые кеши foreach ($aTalkId as $sTalkId) { $sTalkId = (string) $sTalkId; $this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array("update_talk_user_{$sTalkId}")); } $this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array("update_talk_user")); $ret = $this->oMapper->DeleteTalkUserByArray($aTalkId, $sUserId, $iActive); // Удаляем пустые беседы, если в них нет пользователей foreach ($aTalkId as $sTalkId) { $sTalkId = (string) $sTalkId; if (!count($this->GetUsersTalk($sTalkId, array(self::TALK_USER_ACTIVE)))) { $this->DeleteTalk($sTalkId); } } return $ret; }