• Модуль: 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;
}