Beispiel #1
0
 /**
  * Удаляет юзера из разговора
  *
  * @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;
 }