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