• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/item/workgroup.php
  • Класс: BitrixSocialnetworkItemWorkgroup
  • Вызов: Workgroup::getGroupUrlData
public function getGroupUrlData($params = array())
{
	static $cache = array();

	$groupFields = $this->getFields();
	$userId = (int)($params['USER_ID'] ?? 0);

	if (
		!empty($cache)
		&& !empty($cache[$groupFields["ID"]])
	)
	{
		$groupUrlTemplate = $cache[$groupFields['ID']]['URL_TEMPLATE'];
		$groupSiteId = $cache[$groupFields['ID']]['SITE_ID'];
	}
	else
	{
		$groupSiteId = CSocNetGroup::getDefaultSiteId($groupFields["ID"], $groupFields["SITE_ID"]);
		$workgroupsPage = Option::get("socialnetwork", "workgroups_page", "/workgroups/", SITE_ID);
		$groupUrlTemplate = HelperPath::get('group_path_template');
		$groupUrlTemplate = "#GROUPS_PATH#".mb_substr($groupUrlTemplate, mb_strlen($workgroupsPage), mb_strlen($groupUrlTemplate) - mb_strlen($workgroupsPage));

		$cache[$groupFields["ID"]] = array(
			'URL_TEMPLATE' => $groupUrlTemplate ,
			'SITE_ID' => $groupSiteId
		);
	}

	$groupUrl = str_replace(array("#group_id#", "#GROUP_ID#"), $groupFields["ID"], $groupUrlTemplate);
	$serverName = $domainName = '';

	if ($userId > 0)
	{
		$tmp = CSocNetLogTools::processPath(
			[
				'GROUP_URL' => $groupUrl,
			],
			$userId,
			$groupSiteId
		);

		$groupUrl = $tmp["URLS"]["GROUP_URL"];
		$serverName = (mb_strpos($groupUrl, "http://") === 0 || mb_strpos($groupUrl, "https://") === 0 ? "" : $tmp["SERVER_NAME"]);
		$domainName = (mb_strpos($groupUrl, "http://") === 0 || mb_strpos($groupUrl, "https://") === 0 ? "" : (isset($tmp["DOMAIN"]) && !empty($tmp["DOMAIN"]) ? "//".$tmp["DOMAIN"] : ""));
	}

	return [
		'URL' => $groupUrl,
		'SERVER_NAME' => $serverName,
		'DOMAIN' => $domainName
	];
}