function BeforeIndexForum($arFields, $entity_type, $entity_id, $feature, $operation, $path_template) { global $USER; static $arSiteData; $SECTION_ID = ""; $ELEMENT_ID = intval($_REQUEST["photo_element_id"]); if (empty($ELEMENT_ID)) { $ELEMENT_ID = intval($_REQUEST["ELEMENT_ID"]); } if ($ELEMENT_ID > 0 && CModule::IncludeModule('iblock')) { $rsSections = CIBlockElement::GetElementGroups($ELEMENT_ID, true); $arSection = $rsSections->Fetch(); if ($arSection) { $SECTION_ID = $arSection["ID"]; } } if (count($arFields["LID"]) > 1 && ($entity_type == SONET_ENTITY_GROUP && CModule::IncludeModule("extranet") || $entity_type == SONET_ENTITY_USER)) { if (!$arSiteData) { $arSiteData = CSocNetLogTools::GetSiteData(); } foreach ($arSiteData as $siteId => $arUrl) { if ($entity_type == SONET_ENTITY_GROUP && strpos($path_template, $arUrl["GROUPS_PATH"]) === 0) { $path_template = str_replace($arUrl["GROUPS_PATH"], "#GROUP_PATH#", $path_template); break; } elseif ($entity_type == SONET_ENTITY_USER && strpos($path_template, $arUrl["USER_PATH"]) === 0) { $path_template = str_replace($arUrl["USER_PATH"], "#USER_PATH#", $path_template); break; } } } foreach ($arFields["LID"] as $site_id => $url) { $arFields["URL"] = $arFields["LID"][$site_id] = str_replace(array("#user_id#", "#group_id#", "#topic_id#", "#message_id#", "#action#", "#user_alias#", "#section_id#", "#element_id#", "#task_id#", "#GROUP_PATH#", "#USER_PATH#"), array($this->_user_id > 0 ? $this->_user_id : $USER->GetID(), $this->_group_id, $arFields["PARAM2"], $arFields["ITEM_ID"], "view", ($entity_type == "G" ? "group_" : "user_") . $entity_id, $SECTION_ID, $ELEMENT_ID, $ELEMENT_ID, $arSiteData ? $arSiteData[$site_id]["GROUPS_PATH"] : "", $arSiteData ? $arSiteData[$site_id]["USER_PATH"] : ""), $path_template); } if ($feature == 'tasks' && COption::GetOptionString("intranet", "use_tasks_2_0", "N") == 'Y' && $arFields["PARAM1"] == COption::GetOptionString("tasks", "task_forum_id", 0) && CModule::IncludeModule('tasks')) { if (!preg_match('/^EVENT_[0-9]+/', $arFields["TITLE"], $match)) { $rsTask = CTasks::GetList(array(), array("FORUM_TOPIC_ID" => $arFields['PARAM2'])); if ($arTask = $rsTask->Fetch()) { $arFields['PERMISSIONS'] = CTasks::__GetSearchPermissions($arTask); } } } else { $arFields["PERMISSIONS"] = $this->GetSearchGroups($entity_type, $entity_id, $feature, $operation); $paramsTmp = $this->GetSearchParams($entity_type, $entity_id, $feature, $operation); $arFields["PARAMS"] = !empty($arFields["PARAMS"]) ? array_merge($paramsTmp, $arFields["PARAMS"]) : $paramsTmp; } return $arFields; }
private static function GetMessageRatingEntityURL($url, $user_id = false, $arSites = false, $intranet_site_id = false, $extranet_site_id = false) { static $arSiteData = false; if (!$arSiteData && IsModuleInstalled('intranet') && CModule::IncludeModule('socialnetwork')) { $arSiteData = CSocNetLogTools::GetSiteData(); } if ($arSiteData && count($arSiteData) > 1) { foreach ($arSiteData as $siteId => $arUrl) { $url = str_replace($arUrl["USER_PATH"], "#USER_PATH#", $url); } $arTmp = CSocNetLogTools::ProcessPath(array("URL" => $url), $user_id); $url = $arTmp["URLS"]["URL"]; $url = (strpos($url, "http://") === 0 || strpos($url, "https://") === 0 ? "" : (isset($arTmp["SERVER_NAME"]) && !empty($arTmp["SERVER_NAME"]) ? $arTmp["SERVER_NAME"] : "")) . $arTmp["URLS"]["URL"]; } else { if (is_array($arSites) && intval($user_id) > 0 && strlen($extranet_site_id) > 0 && strlen($intranet_site_id) > 0) { $bExtranetUser = false; if ($arSites[$extranet_site_id]) { $bExtranetUser = true; $rsUser = CUser::GetByID(intval($user_id)); if ($arUser = $rsUser->Fetch()) { if (intval($arUser["UF_DEPARTMENT"][0]) > 0) { $bExtranetUser = false; } } } if ($bExtranetUser) { $link = $url; if (substr($link, 0, strlen($arSites[$extranet_site_id]['DIR'])) == $arSites[$extranet_site_id]['DIR']) { $link = substr($link, strlen($arSites[$extranet_site_id]['DIR'])); } $SiteServerName = $arSites[$extranet_site_id]['SERVER_NAME'] . $arSites[$extranet_site_id]['DIR'] . ltrim($link, "/"); } else { $link = $url; if (substr($link, 0, strlen($arSites[$intranet_site_id]['DIR'])) == $arSites[$intranet_site_id]['DIR']) { $link = substr($link, strlen($arSites[$intranet_site_id]['DIR'])); } $SiteServerName = $arSites[$intranet_site_id]['SERVER_NAME'] . $arSites[$intranet_site_id]['DIR'] . ltrim($link, "/"); } $url = (CMain::IsHTTPS() ? "https" : "http") . "://" . $SiteServerName; } else { $SiteServerName = defined('SITE_SERVER_NAME') && strlen(SITE_SERVER_NAME) > 0 ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name", $_SERVER['SERVER_NAME']); if (strlen($SiteServerName) > 0) { $url = (CMain::IsHTTPS() ? "https" : "http") . "://" . $SiteServerName . $url; } } } return $url; }