• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_webdav_helper.php
  • Класс: \CCrmWebDavHelper
  • Вызов: CCrmWebDavHelper::PrepareUrl
static function PrepareUrl($template, &$arElement)
{
	if (!(IsModuleInstalled('iblock')
		&& CModule::IncludeModule('iblock')))
	{
		return '';
	}

	$template = strval($template);
	if($template === '' || !is_array($arElement))
	{
		return '';
	}

	$elementID = isset($arElement['ID']) ? intval($arElement['ID']) : 0;
	$elementName = isset($arElement['NAME']) ? $arElement['NAME'] : '';
	$authorID = isset($arElement['CREATED_BY']) ? intval($arElement['CREATED_BY']) : 0;

	$navChainKey = $arElement['IBLOCK_ID'].'_'.$arElement['IBLOCK_SECTION_ID'];
	if(is_array(self::$IBLOCK_SECTION_NAV_CHAINS) && isset(self::$IBLOCK_SECTION_NAV_CHAINS[$navChainKey]))
	{
		$arSection = self::$IBLOCK_SECTION_NAV_CHAINS[$navChainKey];
	}
	else
	{
		if(self::$IBLOCK_SECTION_NAV_CHAINS === null)
		{
			self::$IBLOCK_SECTION_NAV_CHAINS = array();
		}

		$dbNav = CIBlockSection::GetNavChain($arElement['IBLOCK_ID'], $arElement['IBLOCK_SECTION_ID']);
		$arSection = self::$IBLOCK_SECTION_NAV_CHAINS[$navChainKey] = is_object($dbNav) ? $dbNav->Fetch() : null;
	}

	$socnetGroupID = is_array($arSection) && isset($arSection['SOCNET_GROUP_ID']) ? intval($arSection['SOCNET_GROUP_ID']) : 0;

	$url = $template;

	$url = str_replace(
		array(
			'#ELEMENT_ID#',
			'#element_id#',
			'#ID#',
			'#id#'
		),
		$elementID,
		$url
	);

	$url = str_replace(
		array(
			'#ELEMENT_NAME#',
			'#element_name#',
			'#NAME#',
			'#name#'
		),
		$elementName,
		$url
	);

	$url = str_replace(
		array(
			'#SOCNET_USER_ID#',
			'#socnet_user_id#',
			'#USER_ID#',
			'#user_id#'
		),
		$authorID,
		$url
	);

	$url = str_replace(
		array(
			'#SOCNET_GROUP_ID#',
			'#socnet_group_id#',
			'#GROUP_ID#',
			'#group_id#',
		),
		$socnetGroupID,
		$url
	);

	$url = str_replace(
		array(
			'#SOCNET_OBJECT#',
			'#socnet_object#'
		),
		$socnetGroupID > 0 ? 'group' : 'user',
		$url
	);

	$url = str_replace(
		array(
			'#SOCNET_OBJECT_ID#',
			'#socnet_object_id#'
		),
		$socnetGroupID > 0 ? $socnetGroupID : $authorID,
		$url
	);

	return str_replace(array("///","//"),"/", $url);
}