• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/event_calendar.php
  • Класс: CEventCalendar
  • Вызов: CEventCalendar::GetConfirmedID
public function GetConfirmedID($iblockId, $xml_id)
{
	$bCache = true;
	if ($bCache)
	{
		$cache = new CPHPCache;
		$cachePath = "event_calendar/iblock_confirmed_id/";
		$cacheTime = 86400;
		$cacheId = $iblockId."_".$xml_id;

		if ($cache->InitCache($cacheTime, $cacheId, $cachePath))
		{
			$res = $cache->GetVars();
			$id = $res['id'];
		}
	}

	if (!$bCache || empty($res['id']))
	{
		if(!is_array($this->arConfirmedID))
		{
			$this->arConfirmedID = array();
		}

		$arConfirmedID = $this->arConfirmedID;

		if(!array_key_exists($iblockId, $arConfirmedID))
		{
			$rsProperty = CIBlockProperty::GetList(array(), array(
				'IBLOCK_ID' => $iblockId,
				'CODE' => 'CONFIRMED',
			));
			$arProperty = $rsProperty->Fetch();
			if(!$arProperty)
			{
				$obProperty = new CIBlockProperty;
				$obProperty->Add(array(
					"IBLOCK_ID" => $iblockId,
					"ACTIVE" => "Y",
					"PROPERTY_TYPE" => "L",
					"MULTIPLE" => "N",
					"NAME" => GetMessage("EC_PROP_CONFIRMED_NAME"),
					"CODE" => "CONFIRMED",
					"VALUES" => array(
						array("SORT" => 10, "XML_ID" => "Q", "VALUE" => GetMessage("EC_PROP_CONFIRMED_UNK")),
						array("SORT" => 20, "XML_ID" => "Y", "VALUE" => GetMessage("EC_PROP_CONFIRMED_YES")),
						array("SORT" => 30, "XML_ID" => "N", "VALUE" => GetMessage("EC_PROP_CONFIRMED_NO")),
					),
				));
			}

			$arConfirmedID[$iblockId] = array();
			$rsEnumValues = CIBlockProperty::GetPropertyEnum("CONFIRMED", array(), array(
				"IBLOCK_ID" => $iblockId,
			));

			while($arEnum = $rsEnumValues->Fetch())
				$arConfirmedID[$iblockId][$arEnum["XML_ID"]] = $arEnum["ID"];
		}

		$id = $arConfirmedID[$iblockId][$xml_id];

		if ($bCache)
		{
			$cache->StartDataCache($cacheTime, $cacheId, $cachePath);
			$cache->EndDataCache(array("id" => $id));
		}
	}

	return $id;
}