• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/event_calendar.php
  • Класс: CEventCalendar
  • Вызов: CEventCalendar::InitCalendarEntry
static function InitCalendarEntry($siteId)
{
	$iblockId = self::GetUserCalendarIBlockId($siteId);

	$arRequiredProps = array(
		"BXDAVEX_LABEL" => array(
			"PROPERTY_TYPE" => "S",
			"NAME" => "Exchange sync label",
		),
		"BXDAVCD_LABEL" => array(
			"PROPERTY_TYPE" => "S",
			"NAME" => "CalDAV sync label",
		),
	);

	$dbProperty = CIBlockProperty::GetList(
		array(),
		array(
			"IBLOCK_ID" => $iblockId,
			"TYPE" => "E",
			"CHECK_PERMISSIONS" => "N"
		)
	);
	while ($arProperty = $dbProperty->Fetch())
	{
		if (array_key_exists($arProperty["CODE"], $arRequiredProps))
			unset($arRequiredProps[$arProperty["CODE"]]);
	}

	$property = new CIBlockProperty;
	foreach ($arRequiredProps as $requiredPropKey => $requiredPropValue)
	{
		$arFields = array(
			"IBLOCK_ID" => $iblockId,
			"ACTIVE" => "Y",
			"USER_TYPE" => false,
			"MULTIPLE" => 'N',
			"CODE" => $requiredPropKey,
			"CHECK_PERMISSIONS" => "N"
		);

		$property->Add(array_merge($arFields, $requiredPropValue));
	}

	$arRequiredFields = array(
		"UF_BXDAVEX_EXCH" => array(
			"USER_TYPE_ID" => "string",
			"SORT" => 100,
			"EDIT_FORM_LABEL_DEFAULT_MESSAGE" => "Exchange calendar",
		),
		"UF_BXDAVEX_EXCH_LBL" => array(
			"USER_TYPE_ID" => "string",
			"SORT" => 100,
			"EDIT_FORM_LABEL_DEFAULT_MESSAGE" => "Exchange calendar modification label",
		),
		"UF_BXDAVEX_CDAV_COL" => array(
			"USER_TYPE_ID" => "integer",
			"SORT" => 100,
			"EDIT_FORM_LABEL_DEFAULT_MESSAGE" => "CalDAV connection",
		),
		"UF_BXDAVEX_CDAV" => array(
			"USER_TYPE_ID" => "string",
			"SORT" => 100,
			"EDIT_FORM_LABEL_DEFAULT_MESSAGE" => "CalDAV calendar",
		),
		"UF_BXDAVEX_CDAV_LBL" => array(
			"USER_TYPE_ID" => "string",
			"SORT" => 100,
			"EDIT_FORM_LABEL_DEFAULT_MESSAGE" => "CalDAV calendar modification label",
		),
	);

	$arUserCustomFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("IBLOCK_".$iblockId."_SECTION");
	foreach ($arUserCustomFields as $key => $value)
	{
		if (array_key_exists($key, $arRequiredFields))
			unset($arRequiredFields[$key]);
	}

	foreach ($arRequiredFields as $requiredFieldKey => $requiredFieldValue)
	{
		$arFields = array(
			"ENTITY_ID" => "IBLOCK_".$iblockId."_SECTION",
			"FIELD_NAME" => $requiredFieldKey,
			"SHOW_IN_LIST" => "N",
			"IS_SEARCHABLE" => "N",
			"SHOW_FILTER" => "N",
			"EDIT_IN_LIST" => "N",
		);
		$dbLang = CLanguage::GetList();
		while ($arLang = $dbLang->Fetch())
			$arFields["EDIT_FORM_LABEL"][$arLang["LID"]] = $requiredFieldValue["EDIT_FORM_LABEL_DEFAULT_MESSAGE"];

		$obUserField = new CUserTypeEntity;
		$obUserField->Add(array_merge($arFields, $requiredFieldValue));
	}
}