- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/delivery/menu.php
- Класс: BitrixSaleDeliveryMenu
- Вызов: Menu::getChildren
protected function getChildren(array $parentIds = array(0))
{
if(empty($parentIds))
return array();
$result = array();
$dbRes = BitrixSaleDeliveryServicesTable::getList(array(
"filter" => array(
"=PARENT_ID" => $parentIds
),
"select" => array(
"ID", "NAME", "DESCRIPTION", "CLASS_NAME"
),
"order" => array(
"SORT" =>"ASC",
"NAME" => "ASC"
)
));
$services = array();
$parents = array();
while($service = $dbRes->fetch())
{
$services[$service["ID"]] = $service;
$result[$service["ID"]] = array();
if(is_callable($service["CLASS_NAME"].'::canHasChildren') && $service["CLASS_NAME"]::canHasChildren())
$parents[] = $service["ID"];
}
if(!empty($parents))
$childrenList = $this->getChildren($parents);
foreach($services as $serviceId => $service)
{
$canHasChildren = in_array($serviceId, $parents);
if($canHasChildren && !empty($childrenList[$serviceId]))
$children = $childrenList[$serviceId];
else
$children =array();
foreach($children as $key => $child)
if(!$child["can_has_children"])
unset($children[$key]);
$item = array(
"text" => htmlspecialcharsbx($service["NAME"]),
"title" => htmlspecialcharsbx($service["DESCRIPTION"]),
"url" => "sale_delivery_service_list.php?lang=".LANGUAGE_ID."&filter_group=".$serviceId."&PARENT_ID=".$serviceId."&apply_filter=y",
"page_icon" => "sale_page_icon",
//"icon" => $canHasChildren ? "sale_section_icon" : "",
"can_has_children" => $canHasChildren,
"more_url" => array(
"sale_delivery_service_edit.php?lang=".LANGUAGE_ID."&PARENT_ID=".$serviceId
),
"items_id" => "sale_delivery_service_list_".$serviceId,
);
if($canHasChildren && !empty($children))
{
$item["items"] = $children;
$item["dynamic"] = true;
$item["items_id"] = "menu_sale_delivery_".$serviceId;
}
$result[$serviceId] = $item;
}
return $result;
}