X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins%2Fmenus_1%2Finc%2Fmenus.php;h=edc61217c7d18903cbcb1e527c4072f04ca25b08;hb=4f443dce95ff6f8221c189880a70c74ce1c1f238;hp=16793b7f824a4175ad6cdb93f857e06e1e604528;hpb=4a628e9b277d3617535f99d663ca79fa2e891177;p=lhc%2Fweb%2Fwww.git diff --git a/www/plugins/menus_1/inc/menus.php b/www/plugins/menus_1/inc/menus.php index 16793b7f..edc61217 100644 --- a/www/plugins/menus_1/inc/menus.php +++ b/www/plugins/menus_1/inc/menus.php @@ -1,7 +1,9 @@ $chemin) { + if (count($liste)) { + foreach ($liste as $squelette => $chemin) { $type = preg_replace(',[.]html$,i', '', $squelette); $dossier = str_replace($squelette, '', $chemin); // On ne garde que les squelettes ayant un XML de config if (file_exists("$dossier$type.xml") - AND ( - $entree = !$informer OR ($entree = menus_charger_infos($dossier.$type)) - )){ - //on ne garde que les menus repondants aux necessites - $necessite = true; - if (! empty($entree['necessites']['plugin'])) { - /* la globale $plugins liste tout en majuscule */ - $entree['necessites']['plugin'] = array_map("strtoupper", $entree['necessites']['plugin']); - foreach($entree['necessites']['plugin'] as $plugin) { - if ( ! array_key_exists($plugin,$plugins_actifs) ) - $necessite = false; - } - } - if ($necessite) - $resultats[$informer][$type] = $entree; + and ( + $entree = !$informer or ($entree = menus_charger_infos($dossier.$type)) + )) { + //on ne garde que les menus repondants aux necessites + $necessite = true; + if (! empty($entree['necessites']['plugin'])) { + /* la globale $plugins liste tout en majuscule */ + $entree['necessites']['plugin'] = array_map('strtoupper', $entree['necessites']['plugin']); + foreach ($entree['necessites']['plugin'] as $plugin) { + if (!array_key_exists($plugin, $plugins_actifs)) { + $necessite = false; + } + } + } + if ($necessite) { + $resultats[$informer][$type] = $entree; + } } } } - $resultats[$informer] = pipeline('menus_lister_disponibles',array( - 'args' => array(), - 'data' => $resultats[$informer] + $resultats[$informer] = pipeline( + 'menus_lister_disponibles', + array( + 'args' => array(), + 'data' => $resultats[$informer] ) ); } @@ -62,9 +68,9 @@ function menus_lister_disponibles($informer=true){ * @param string $type * @return array */ -function menus_informer($type){ +function menus_informer($type) { static $infos = array(); - if (!isset($infos[$type])){ + if (!isset($infos[$type])) { $fichier = find_in_path("menus/$type.html"); $infos[$type] = menus_charger_infos($fichier); } @@ -78,106 +84,123 @@ function menus_informer($type){ * @param string $info * @return array */ -function menus_charger_infos($type, $info=""){ +function menus_charger_infos($type, $info = '') { // on peut appeler avec le nom du squelette - $fichier = preg_replace(',[.]html$,i','',$type).".xml"; + $fichier = preg_replace(',[.]html$,i', '', $type).'.xml'; include_spip('inc/xml'); include_spip('inc/texte'); $entree = array(); - if ($xml = spip_xml_load($fichier, false)){ - if (count($xml['entree'])){ + if ($xml = spip_xml_load($fichier, false)) { + if (count($xml['entree'])) { $xml = reset($xml['entree']); $entree['nom'] = _T_ou_typo(spip_xml_aplatit($xml['nom'])); $entree['rang'] = intval(trim(spip_xml_aplatit(!empty($xml['rang']) ? $xml['rang'] : 1000))); - $entree['description'] = isset($xml['description']) ? _T_ou_typo(spip_xml_aplatit($xml['description'])) : ''; + $entree['description'] = isset($xml['description']) ? + _T_ou_typo(spip_xml_aplatit($xml['description'])) : ''; $entree['icone'] = isset($xml['icone']) ? find_in_path(reset($xml['icone'])) : ''; $entree['refuser_sous_menu'] = isset($xml['refuser_sous_menu']); // Décomposition des paramètres $entree['parametres'] = array(); - if (spip_xml_match_nodes(',^parametre,', $xml, $parametres)){ - foreach (array_keys($parametres) as $parametre){ + if (spip_xml_match_nodes(',^parametre,', $xml, $parametres)) { + foreach (array_keys($parametres) as $parametre) { list($balise, $attributs) = spip_xml_decompose_tag($parametre); $entree['parametres'][$attributs['nom']] = array( - 'label' => (isset($attributs['label']) && $attributs['label']) ? _T($attributs['label']) : $attributs['nom'], - 'obligatoire' => (isset($attributs['obligatoire']) && $attributs['obligatoire'] == 'oui') ? true : false, - 'class' => (isset($attributs['class']) && $attributs['class']) ? $attributs['class'] : '' + 'label' => (isset($attributs['label']) && $attributs['label']) ? + _T($attributs['label']) : $attributs['nom'], + 'obligatoire' => (isset($attributs['obligatoire']) && $attributs['obligatoire'] == 'oui') ? + true : false, + 'class' => (isset($attributs['class']) && $attributs['class']) ? + $attributs['class'] : '' ); } } //Décomposition des necessites - if (spip_xml_match_nodes(',^necessite,', $xml, $necessites)){ - $entree['necessites']['plugin'] = array(); - foreach (array_keys($necessites) as $necessite){ + if (spip_xml_match_nodes(',^necessite,', $xml, $necessites)) { + $entree['necessites']['plugin'] = array(); + foreach (array_keys($necessites) as $necessite) { list($balise, $attributs) = spip_xml_decompose_tag($necessite); - array_push($entree['necessites'][$attributs['type']] , $attributs['nom']); + array_push($entree['necessites'][$attributs['type']], $attributs['nom']); } } - } } - if (!$info) + if (!$info) { return $entree; - else - return isset($entree[$info]) ? $entree[$info] : ""; + } else { + return isset($entree[$info]) ? $entree[$info] : ''; + } } -// Suprrimer une entrée (et les éventuels sous-menus en cascade) -function menus_supprimer_entree($id_menus_entree){ +/** + * Supprimer une entrée (et les éventuels sous-menus en cascade) + * + * @param int $id_menus_entree + * @return boolean + */ +function menus_supprimer_entree($id_menus_entree) { include_spip('base/abstract_sql'); $id_menus_entree = intval($id_menus_entree); - + // On regarde d'abord s'il y a un sous-menu $id_menu = intval(sql_getfetsel( 'id_menu', 'spip_menus', 'id_menus_entree = '.$id_menus_entree )); - + // Dans ce cas on le supprime d'abord $ok = true; - if ($id_menu) + if ($id_menu) { $ok = menus_supprimer_menu($id_menu); - + } + // Si c'est bon, on peut alors supprimer l'entrée - if ($ok) + if ($ok) { $ok = sql_delete( 'spip_menus_entrees', 'id_menus_entree = '.$id_menus_entree ); - + } return $ok; } -// Supprimer un menu (et donc toutes ses entrées aussi) -function menus_supprimer_menu($id_menu){ +/** + * Supprimer un menu (et donc toutes ses entrées aussi) + * + * @param int $id_menu + * @return boolean + */ +function menus_supprimer_menu($id_menu) { include_spip('base/abstract_sql'); $id_menu = intval($id_menu); - + // On récupère toutes les entrées $entrees = sql_allfetsel( 'id_menus_entree', 'spip_menus_entrees', 'id_menu = '.$id_menu ); - if (is_array($entrees)) + if (is_array($entrees)) { $entrees = array_map('reset', $entrees); - + } + // On les supprime $ok = true; - if (is_array($entrees)) - foreach ($entrees as $id_menus_entree){ - if ($ok) + if (is_array($entrees)) { + foreach ($entrees as $id_menus_entree) { + if ($ok) { $ok = menus_supprimer_entree($id_menus_entree); + } } - + } + // Si tout s'est bien passé on peut enfin supprimer le menu - if ($ok) + if ($ok) { $ok = sql_delete( 'spip_menus', 'id_menu = '.$id_menu ); - + } + return $ok; } - -?>