private 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); }