• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/mysql/log.php
  • Класс: CSocNetLog
  • Вызов: CSocNetLog::Update
static function Update($ID, $arFields)
{
	global $DB, $CACHE_MANAGER, $APPLICATION, $USER_FIELD_MANAGER;

	$ID = (int)$ID;
	if ($ID <= 0)
	{
		$APPLICATION->ThrowException(GetMessage("SONET_L_WRONG_PARAMETER_ID"), "ERROR_NO_ID");
		return false;
	}

	$str_SiteID = '';

	$arFields1 = Util::getEqualityFields($arFields);
	if (!self::CheckFields("UPDATE", $arFields, $ID))
	{
		return false;
	}

	$res = GetModuleEvents('socialnetwork', 'OnBeforeSocNetLogUpdate');
	while ($eventFields = $res->fetch())
	{
		if (ExecuteModuleEventEx($eventFields, [ &$arFields ]) === false)
		{
			return false;
		}
	}

	$arSiteID = [];
	if (is_set($arFields, "SITE_ID"))
	{
		if (is_array($arFields["SITE_ID"]))
		{
			$arSiteID = $arFields["SITE_ID"];
		}
		else
		{
			$arSiteID[] = $arFields["SITE_ID"];
		}

		$arFields["SITE_ID"] = false;
		$str_SiteID = "''";
		foreach ($arSiteID as $v)
		{
			$arFields["SITE_ID"] = $v;
			$str_SiteID .= ", '".$DB->ForSql($v)."'";
		}
	}

	$strUpdate = $DB->PrepareUpdate("b_sonet_log", $arFields);
	Util::processEqualityFieldsToUpdate($arFields1, $strUpdate);

	if ($strUpdate !== '')
	{
		$strSql =
			"UPDATE b_sonet_log SET ".
			"	".$strUpdate." ".
			"WHERE ID = ".$ID." ";
		$DB->Query($strSql, False, "File: ".__FILE__."
Line: ".__LINE__); if (!empty($arSiteID)) { $strSql = "DELETE FROM b_sonet_log_site WHERE LOG_ID=".$ID; $DB->Query($strSql, false, "FILE: ".__FILE__."
LINE: ".__LINE__); $strSql = "INSERT INTO b_sonet_log_site(LOG_ID, SITE_ID) " . "SELECT " . $ID . ", LID " . "FROM b_lang " . "WHERE LID IN (" . $str_SiteID . ") " . "ON DUPLICATE KEY UPDATE LOG_ID = " . $ID; $DB->Query($strSql, false, "FILE: ".__FILE__."
LINE: ".__LINE__); } if (isset($arFields["TAG"])) { LogTagTable::set([ 'itemType' => LogTagTable::ITEM_TYPE_LOG, 'itemId' => $ID, 'tags' => $arFields["TAG"], ]); } $USER_FIELD_MANAGER->Update("SONET_LOG", $ID, $arFields); if (defined("BX_COMP_MANAGED_CACHE")) { $CACHE_MANAGER->ClearByTag("SONET_LOG_".$ID); } $cache = new CPHPCache; $cache->CleanDir("/sonet/log/" . (int)($ID / 1000) . "/" . $ID . "/comments/"); } elseif (!$USER_FIELD_MANAGER->Update("SONET_LOG", $ID, $arFields)) { $ID = false; } if ((int)$ID > 0) { $events = GetModuleEvents("socialnetwork", "OnAfterSocNetLogUpdate"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } if ( !empty($arFields['TITLE']) || !empty($arFields['MESSAGE']) ) { LogIndex::setIndex(array( 'itemType' => LogIndexTable::ITEM_TYPE_LOG, 'itemId' => $ID, 'fields' => $arFields )); } if ( !empty($arFields['LOG_UPDATE']) || !empty($arFields1['LOG_UPDATE']) ) { $res = LogTable::getList(array( 'filter' => array( 'ID' => $ID ), 'select' => array('LOG_UPDATE') )); if ( ($logFields = $res->fetch()) && !empty($logFields['LOG_UPDATE']) ) { LogRightTable::setLogUpdate(array( 'logId' => $ID, 'value' => $logFields['LOG_UPDATE'] )); LogIndexTable::setLogUpdate(array( 'logId' => $ID, 'value' => $logFields['LOG_UPDATE'] )); } } } return $ID; }