- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/mysql/group.php
- Класс: CSocNetGroup
- Вызов: CSocNetGroup::Add
static function Add($arFields)
{
global $DB, $CACHE_MANAGER, $USER_FIELD_MANAGER;
$arFields1 = Util::getEqualityFields($arFields);
if (!CSocNetGroup::CheckFields("ADD", $arFields))
{
return false;
}
$arSiteID = [];
if(array_key_exists("SITE_ID", $arFields))
{
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);
}
$arFields["SITE_ID_FULL"] = $arSiteID;
$db_events = GetModuleEvents("socialnetwork", "OnBeforeSocNetGroupAdd");
while ($arEvent = $db_events->Fetch())
{
if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
{
return false;
}
}
unset($arFields["SITE_ID_FULL"]);
if (
array_key_exists("IMAGE_ID", $arFields)
&& is_array($arFields["IMAGE_ID"])
&& (
!array_key_exists("MODULE_ID", $arFields["IMAGE_ID"])
|| $arFields["IMAGE_ID"]["MODULE_ID"] == ''
)
)
{
$arFields["IMAGE_ID"]["MODULE_ID"] = "socialnetwork";
}
CFile::SaveForDB($arFields, "IMAGE_ID", "socialnetwork");
$arInsert = $DB->PrepareInsert("b_sonet_group", $arFields);
Util::processEqualityFieldsToInsert($arFields1, $arInsert);
$ID = false;
if ($arInsert[0] <> '')
{
$strSql =
"INSERT INTO b_sonet_group(".$arInsert[0].") ".
"VALUES(".$arInsert[1].")";
$DB->Query($strSql, False, "File: ".__FILE__."
Line: ".__LINE__);
$ID = (int)$DB->LastID();
$events = GetModuleEvents("socialnetwork", "OnSocNetGroupAdd");
while ($arEvent = $events->Fetch())
{
ExecuteModuleEventEx($arEvent, array($ID, &$arFields));
}
if ($ID > 0)
{
EventServiceService::addEvent(EventServiceEventDictionary::EVENT_WORKGROUP_ADD, [
'GROUP_ID' => $ID,
]);
if(!empty($arSiteID))
{
$DB->Query("
DELETE FROM b_sonet_group_site WHERE GROUP_ID = ".$ID."
", false, "FILE: ".__FILE__."
LINE: ".__LINE__);
$DB->Query("
INSERT INTO b_sonet_group_site(GROUP_ID, SITE_ID)
SELECT ".$ID.", LID
FROM b_lang
WHERE LID IN ('".implode("', '", $arSiteID)."')
", false, "FILE: ".__FILE__."
LINE: ".__LINE__);
if (intval($arFields["SUBJECT_ID"]) > 0)
{
WorkgroupSubject::syncSiteId(array(
'subjectId' => $arFields["SUBJECT_ID"],
'siteId' => $arSiteID
));
}
}
if(defined("BX_COMP_MANAGED_CACHE"))
{
$CACHE_MANAGER->ClearByTag("sonet_group");
}
$USER_FIELD_MANAGER->Update("SONET_GROUP", $ID, $arFields);
CSocNetGroup::SearchIndex($ID, $arSiteID);
if (!empty($arFields["KEYWORDS"]))
{
$tagsList = explode(',', $arFields["KEYWORDS"]);
if (
!empty($tagsList)
&& is_array($tagsList)
)
{
$tagsList = array_map(function($a) { return trim($a, ' '); }, $tagsList);
$tagsList = array_filter($tagsList, function($a) { return ($a <> ''); });
}
if (
!empty($tagsList)
&& is_array($tagsList)
)
{
WorkgroupTagTable::set([
'groupId' => $ID,
'tags' => $tagsList
]);
}
}
Workgroup::setIndex(array(
'fields' => $arFields
));
$groupItem = Workgroup::getById($ID, false);
$groupItem->syncDeptConnection();
}
}
return $ID;
}