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

	$arFields1 = Util::getEqualityFields($arFields);

	if (!self::CheckFields("ADD", $arFields))
	{
		return false;
	}

	$db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetLogAdd");
	while ($arEvent = $db_events->Fetch())
	{
		if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
		{
			return false;
		}
	}

	$arSiteID = array();
	if (isset($arFields['SITE_ID']))
	{
		if (is_array($arFields["SITE_ID"]))
		{
			foreach ($arFields["SITE_ID"] as $site_id)
			{
				$arSiteID[$site_id] = $DB->ForSQL($site_id);
			}
		}
		else
		{
			$arSiteID[$arFields["SITE_ID"]] = $DB->ForSQL($arFields["SITE_ID"]);
		}
	}

	if (empty($arSiteID))
	{
		unset($arFields["SITE_ID"]);
	}
	else
	{
		$arFields["SITE_ID"] = end($arSiteID);
	}

	unset($arFields["LOG_UPDATE"]);
	if (empty($arFields1["LOG_UPDATE"]))
	{
		$arFields["~LOG_UPDATE"] = CDatabase::CurrentTimeFunction();
	}

	$arInsert = $DB->PrepareInsert("b_sonet_log", $arFields);
	Util::processEqualityFieldsToInsert($arFields1, $arInsert);

	$ID = false;
	if ($arInsert[0] <> '')
	{
		$strSql =
			"INSERT INTO b_sonet_log(".$arInsert[0].") ".
			"VALUES(".$arInsert[1].")";
		$DB->Query($strSql, False, "File: ".__FILE__."
Line: ".__LINE__); $ID = (int)$DB->LastID(); if ($ID > 0) { BitrixSocialnetworkComponentHelper::userLogSubscribe(array( 'logId' => $ID, 'userId' => (isset($arFields["USER_ID"]) ? (int)$arFields["USER_ID"] : 0), 'typeList' => array( 'FOLLOW', ) )); if ($bSendEvent) { self::SendEvent($ID); } if (!empty($arSiteID)) { $DB->Query(" INSERT INTO b_sonet_log_site(LOG_ID, SITE_ID) SELECT ".$ID.", LID FROM b_lang WHERE LID IN ('".implode("', '", $arSiteID)."') ", false, "FILE: ".__FILE__."
LINE: ".__LINE__); } if (isset($arFields["TAG"])) { LogTagTable::set(array( 'itemType' => LogTagTable::ITEM_TYPE_LOG, 'itemId' => $ID, 'tags' => $arFields["TAG"] )); } $USER_FIELD_MANAGER->Update("SONET_LOG", $ID, $arFields); $arFields["ID"] = $ID; $events = GetModuleEvents("socialnetwork", "OnAfterSocNetLogAdd"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($arFields)); } LogIndex::setIndex([ 'itemType' => LogIndexTable::ITEM_TYPE_LOG, 'itemId' => $ID, 'fields' => $arFields, ]); } } CSocNetLogTools::SetCacheLastLogID("log", $ID); return $ID; }