function addLinkToSubMenu(&$ssmenu, &$droit) { global $right2links; if (!array_key_exists($droit['rig_name'], $right2links)) { return; } if (isset($right2links[$droit['rig_name']]['links'])) { foreach ($right2links[$droit['rig_name']]['links'] as $link) { // On vérifie que cette entrée est pas déjà dans le menu $found = false; foreach ($ssmenu as $ln) { if (strcasecmp($link['menu_text'], $ln['menu_text']) == 0) { $found = true; } } if ($found) { continue; } $link['menu_link'] = '#' . $link['menu_link']; if ((int) $droit['fun_id'] != 0) { // si la page doit comporter un num de fondation dans le GET $link['menu_link'] .= '/' . $droit['fun_id']; } $ssmenu[] = $link; } } if (isset($right2links[$droit['rig_name']]['children'])) { foreach ($right2links[$droit['rig_name']]['children'] as $child_name) { $droit_copy = $droit; $droit_copy['rig_name'] = $child_name; addLinkToSubMenu($ssmenu, $droit_copy); } } }
<?php // error_reporting('none'); $sideMenu = array('state' => true, 'items' => array()); require_once 'orchestra/fundationManager.class.php'; define('ARGUMENT_ERROR', 'ARGUMENT_ERROR'); // TODO virer ça autre part require_once 'inc/sideMenu.inc.php'; $fundationManager = new fundationManager(); $fund_list = $fundationManager->getAllFundationsAndRights(); if ($fund_list['state']) { // Menu admin $arr = array(); foreach ($fund_list['admin_rights'] as $line) { addLinkToSubMenu($arr, $line); } sortSubMenu($arr); $sideMenu['items'][] = array('title' => 'BuckUTT', 'items' => $arr); // Menu fundations foreach ($fund_list['fundations'] as $fund) { $arr = array(); foreach ($fund['rights'] as $line) { addLinkToSubMenu($arr, $line); } sortSubMenu($arr); $sideMenu['items'][] = array('title' => $fund['name'], 'items' => $arr); } } echo json_encode($sideMenu);