- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/mysql/log.php
- Класс: CSocNetLog
- Вызов: CSocNetLog::Delete
static function Delete($ID)
{
global $DB, $APPLICATION, $USER_FIELD_MANAGER, $CACHE_MANAGER;
$ID = (int)$ID;
if ($ID <= 0)
{
$APPLICATION->ThrowException(GetMessage("SONET_GL_WRONG_PARAMETER_ID"), "ERROR_NO_ID");
return false;
}
$db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetLogDelete");
while ($arEvent = $db_events->Fetch())
{
if (ExecuteModuleEventEx($arEvent, array($ID))===false)
{
return false;
}
}
$res = BitrixSocialnetworkLogCommentTable::getList([
'filter' => [
'=LOG_ID' => $ID
],
'select' => [ 'RATING_TYPE_ID', 'RATING_ENTITY_ID' ]
]);
while ($logCommentFields = $res->fetch())
{
CRatings::deleteRatingVoting([
'ENTITY_TYPE_ID' => $logCommentFields['RATING_TYPE_ID'],
'ENTITY_ID' => $logCommentFields['RATING_ENTITY_ID']
]);
}
$DB->Query("DELETE LC FROM b_sonet_log_comment LC INNER JOIN (SELECT L.TMP_ID FROM b_sonet_log L WHERE L.ID = ".$ID.") L1 ON LC.LOG_ID = L1.TMP_ID", true);
$DB->Query("DELETE FROM b_sonet_log_right WHERE LOG_ID = ".$ID, true);
$DB->Query("DELETE FROM b_sonet_log_site WHERE LOG_ID = ".$ID, true);
$DB->Query("DELETE FROM b_sonet_log_favorites WHERE LOG_ID = ".$ID, true);
$DB->Query("DELETE FROM b_sonet_log_tag WHERE LOG_ID = ".$ID, true);
$logFields = array();
$res = LogTable::getList(array(
'filter' => array(
'ID' => $ID
),
'select' => array('EVENT_ID', 'SOURCE_ID', 'RATING_TYPE_ID', 'RATING_ENTITY_ID')
));
if ($fields = $res->fetch())
{
$logFields = $fields;
}
$bSuccess = $DB->Query("DELETE FROM b_sonet_log WHERE ID = ".$ID, true);
if (
$bSuccess
&& !empty($logFields)
)
{
$DB->Query("DELETE FROM ".UserContentViewTable::getTableName()." WHERE RATING_TYPE_ID = '".$DB->ForSQL($logFields['RATING_TYPE_ID'])."' AND RATING_ENTITY_ID = " . (int)$logFields['RATING_ENTITY_ID'], true);
$USER_FIELD_MANAGER->Delete("SONET_LOG", $ID);
$db_events = GetModuleEvents("socialnetwork", "OnSocNetLogDelete");
while ($arEvent = $db_events->Fetch())
{
ExecuteModuleEventEx($arEvent, array($ID, $logFields));
}
LogIndex::deleteIndex(array(
'itemType' => LogIndexTable::ITEM_TYPE_LOG,
'itemId' => $ID
));
CRatings::deleteRatingVoting([
'ENTITY_TYPE_ID' => $logFields['RATING_TYPE_ID'],
'ENTITY_ID' => $logFields['RATING_ENTITY_ID']
]);
if (defined("BX_COMP_MANAGED_CACHE"))
{
$CACHE_MANAGER->ClearByTag("SONET_LOG_".$ID);
}
$cache = new CPHPCache;
$cache->CleanDir("/sonet/log/" . (int)($ID / 1000) . "/" . $ID . "/comments/");
}
return $bSuccess;
}