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