/** * Удаляет комментарии из базы данных * * @param array|int $aTargetId Список ID владельцев * @param string $sTargetType Тип владельцев * @return bool */ public function DeleteCommentByTargetId($aTargetId, $sTargetType) { if (!is_array($aTargetId)) { $aTargetId = array($aTargetId); } /** * Получаем список идентификаторов удаляемых комментариев */ $aCommentsId = array(); foreach ($aTargetId as $sTargetId) { $aComments = $this->GetCommentsByTargetId($sTargetId, $sTargetType); $aCommentsId = array_merge($aCommentsId, array_keys($aComments['comments'])); } /** * Если ни одного комментария не найдено, выходим */ if (!count($aCommentsId)) { return true; } /** * Чистим зависимые кеши */ if (Config::Get('sys.cache.solid')) { $this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array("comment_update", "comment_target_{$sTargetId}_{$sTargetType}")); } else { $this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array("comment_target_{$sTargetId}_{$sTargetType}")); /** * Удаляем кеш для каждого комментария */ foreach ($aCommentsId as $iCommentId) { $this->Cache_Delete("comment_{$iCommentId}"); } } if ($this->oMapper->DeleteCommentByTargetId($aTargetId, $sTargetType)) { /** * Удаляем комментарии из избранного */ $this->DeleteFavouriteCommentsByArrayId($aCommentsId); /** * Удаляем комментарии к топику из прямого эфира */ $this->DeleteCommentOnlineByArrayId($aCommentsId, $sTargetType); /** * Удаляем голосование за комментарии */ $this->Vote_DeleteVoteByTarget($aCommentsId, 'comment'); return true; } return false; }
/** * Удаляет комментарии из базы данных * * @param array|int $aTargetsId Список ID владельцев * @param string $sTargetType Тип владельцев * * @return bool */ public function DeleteCommentByTargetId($aTargetsId, $sTargetType) { if (!is_array($aTargetsId)) { $aTargetsId = array($aTargetsId); } // * Получаем список идентификаторов удаляемых комментариев $aCommentsId = $this->GetCommentsIdByTargetsId($aTargetsId, $sTargetType); // * Если ни одного комментария не найдено, выходим if (!count($aCommentsId)) { return true; } $bResult = $this->oMapper->DeleteCommentByTargetId($aTargetsId, $sTargetType); if ($bResult) { // * Удаляем комментарии из избранного $this->DeleteFavouriteCommentsByArrayId($aCommentsId); // * Удаляем комментарии к топику из прямого эфира $this->DeleteCommentOnlineByArrayId($aCommentsId, $sTargetType); // * Удаляем голосование за комментарии E::ModuleVote()->DeleteVoteByTarget($aCommentsId, 'comment'); } // * Чистим зависимые кеши, даже если что-то не так пошло if (Config::Get('sys.cache.solid')) { foreach ($aTargetsId as $nTargetId) { E::ModuleCache()->CleanByTags(array("comment_update", "comment_target_{$nTargetId}_{$sTargetType}")); } } else { foreach ($aTargetsId as $nTargetId) { E::ModuleCache()->CleanByTags(array("comment_target_{$nTargetId}_{$sTargetType}")); } if ($aCommentsId) { // * Удаляем кеш для каждого комментария foreach ($aCommentsId as $iCommentId) { E::ModuleCache()->Delete("comment_{$iCommentId}"); } } } return $bResult; }