• Модуль: wiki
  • Путь к файлу: ~/bitrix/modules/wiki/classes/general/wiki.php
  • Класс: CWiki
  • Вызов: CWiki::GetCategory
static function GetCategory($NAME, $IBLOCK_ID)
{
	global $arParams;

	$arResult = array();
	$arResult[] = array(
		'TITLE' => GetMessage('Service:Categories_TITLE'),
		'NAME' => GetMessage('Service:Categories'),
		'LINK' => CHTTP::urlAddParams(
			CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CATEGORIES'],
				array(
					'wiki_name' => 'Service:Categories',
					'group_id' => CWikiSocnet::$iSocNetId
				)
			),
			array()
		),
		'IS_RED' => 'N',
		'IS_SERVICE' => 'Y'
	);

	$arFilter['=XML_ID'] = CWikiUtils::htmlspecialcharsback($NAME);
	$arFilter['IBLOCK_ID'] = $IBLOCK_ID;
	$arFilter['CHECK_PERMISSIONS'] = 'N';

	if (CWikiSocnet::IsSocNet())
		$arFilter['SUBSECTION'] = CWikiSocnet::$iCatId;

	$rsElement = CIBlockElement::GetList(array(), $arFilter, false, false, Array());
	$arElement = $rsElement->GetNext();

	$sCatName = '';
	if (CWikiUtils::IsCategoryPage($NAME, $sCatName))
		return 	$arResult;

	$arLink = array();
	$arLinkExists = array();
	$arCat = array();
	$rsSect = CIBlockElement::GetElementGroups($arElement['ID'], false);
	while($arSect = $rsSect->GetNext())
	{
		$arCat[$arSect['ID']] = $arSect;
		$arLink[] = 'category:'.CWikiUtils::htmlspecialcharsback($arSect['NAME']);
	}

	/*if(empty($arLink))
		return array();*/

	if (CWikiSocnet::IsSocNet() && isset($arCat[CWikiSocnet::$iCatId]))
		unset($arCat[CWikiSocnet::$iCatId]);

	$arFilter = array();
	$arFilter['=NAME'] = $arLink;
	$arFilter['IBLOCK_ID'] = $IBLOCK_ID;
	$arFilter['ACTIVE'] = 'Y';
	$arFilter['CHECK_PERMISSIONS'] = 'N';
	if (CWikiSocnet::IsSocNet())
		$arFilter['SUBSECTION'] = CWikiSocnet::$iCatId;

	$rsElement = CIBlockElement::GetList(array(), $arFilter, false, false, Array());

	while($obElement = $rsElement->GetNextElement())
	{
		$arFields = $obElement->GetFields();
		$arLinkExists[] = preg_replace('/^(category|'.GetMessage('CATEGORY_NAME').'):/i'.BX_UTF_PCRE_MODIFIER, '', $arFields['NAME']);
	}

	if (!empty($arCat))
	{
		foreach ($arCat as $_arCat)
		{
			$_arCat['NAME'] = CWikiUtils::htmlspecialcharsback($_arCat['NAME'], false);
			$_arResult = array();
			$_arResult['ID'] = $_arCat['ID'];
			$_arResult['IS_RED'] = 'N';
			$_arResult['LINK'] = CHTTP::urlAddParams(
				CComponentEngine::MakePathFromTemplate($arParams['PATH_TO_CATEGORY'],
					array(
						'wiki_name' => 'Category:'.$_arCat['NAME'],
						'group_id' => CWikiSocnet::$iSocNetId
					)
				),
				array()
			);

			$_arResult['TITLE'] = $_arCat['NAME'];
			$_arResult['NAME'] = $_arCat['NAME'];
			$_arResult['IS_SERVICE'] = 'N';
			if (!in_array($_arCat['NAME'], $arLinkExists))
				$_arResult['IS_RED'] = 'Y';
			$arResult[] = $_arResult;
		}
	}
	return $arResult;
}