= 6) $CONF_MENU["menu_alias"] = NULL; //alias, se non c'e' (di solito preso dal rew alias) //DEPRECATO tipo personalizzato //$CONF_MENU["menu_src"] = ""; //forzo il contenuto del menu usato solo per menu TXT //$CONF_MENU["menu_src_s"] = ""; //forzo il contenuto del menu quando la pagina e' selezionata solo per menu TXT $CONF["menu_from_vis"] = "indi"; //ALL, pagine_dinamiche visualizza tutte le sorgenti di menu, ovvero anche le pagine dinamiche $CONF["menu_riferimento"] = "root"; //visualizza le pagine con lo stesso "menu_ref" assegnato, ALL per tutti i riferimenti $CONF["menu_livello"] = "0"; //visualizza le pagine di questo livello, ALL per tutti i livelli $CONF["menu_vis"] = "SI"; //se NO toglie il menu dalla pagina $CONF["menu_tipo"] = "TXT"; // TXT o IMG o TPL $CONF["menu_link_sempre"] = "NO"; // Se SI mette sempre i link anche se siamo nella pagina (solo per menu TXT o IMG) $CONF["menu_gruppo_vis"] = "ALL"; //definisce il gruppo da visualizzare se ALL viualizza tutti, se "main" solo quelli con la variabile "menu_gruppo" non specificata // $CONF["menu_includi"] = ""; //include forzatamente anche se la pagina e' nascosta $CONF["menu_includi_force"] = ""; //include forzatamente una pagina $CONF["menu_escludi"] = ""; //definisce la pagine da escludere dal menu ($CONF["menu_escludi"] = "azienda|programmazione";) oppure "menu_escludi" => "azienda|programmazione", $CONF["menu_escludi_figlie"] = ""; //esclude le pagine figlie $CONF["menu_includi_protette"] = "SI"; //include le pagine protette $CONF["menu_output"] = "var"; //oppure "array" per avere un array del menu da riciclare $CONF["menu_multi_all"] = NULL; //non usare $CONF["menu_tpl_no_link"] = NULL; //template senza link, prima pero' mettere in 'indi.inc.php' su qualche pagina il tag 'menu_no_link' $CONF["menu_tpl_no_link_sel"] = NULL; //template senza link selezionato //per tipo TPL $CONF["menu_tpl_corpo"] = "[menu_txt]"; //ripetuto ad ogni riga $CONF["menu_tpl_corpo_sel"] = ""; //SE PRESENTE cambia il template per la pagina selezionata, se non presente viene messo menu_tpl_corpo $CONF["menu_tpl_testa"] = ""; //opzionale, e' la testa del menu non ripetuta $CONF["menu_tpl_coda"] = ""; //opzionale, e' la cada del menu non ripetuta $CONF["menu_tpl_sel"] = "selected"; //tetso TPL per pagina selezionata (#menu_sel#) $CONF["menu_tpl_nosel"] = ""; //tetso TPL per pagina selezionata (#menu_sel#) $CONF["menu_tpl_sep"] = ""; //separatore per il menu TPL esempio " | ">, e' aggiunto automaticamente per ogni voce di menu, oppure manualmente con il tag $CONF["menu_tpl_alt"] = "dispari|pari|baubau"; //alterna una variabile fra due o piu' cose, es tabella "||<\tr>", RICORDA DI METTERE NEL TEMPLATE IL NOME DELLA VARIABILEE [menu_tpl_alt] !!!!! $CONF["menu_tpl_eval_pre"] = ""; //codice da valutare nel ciclo prima della costruzione del template $CONF["menu_tpl_eval_post"] = ""; //codice da valutare nel ciclo dopo la costruzione del template // per tipo testo $CONF["menu_txt_sep_sx"] = ""; $CONF["menu_txt_sep_dx"] = ""; $CONF["menu_txt_sep"] = " | "; $CONF["menu_txt_sel_sx"] = ""; $CONF["menu_txt_sel_dx"] = ""; //per tipo immagine $CONF["menu_img_path"] = "menu/"; $CONF["menu_img_link"] = "PAGINA"; $CONF["menu_img_sel"] = "_s"; $CONF["menu_img_ext"] = ".gif"; $CONF["menu_img_sep_sx"] = ""; $CONF["menu_img_sep_dx"] = ""; $CONF["menu_img_sep"] = ""; //pagina precedente e successiva $CONF["menu_pagina_successiva_precedente"] = "TUTTE"; //TUTTE o GRUPPO stabilisce se cercare solo nelle pagine dello stesso gruppo (menu_ref) $CONF["menu_pagina_successiva_precedente_init"] = "SI"; //decide se calcolare la pag. succ. e prec. sempre //tova la pagina precedente, evitando le pagine nascoste e disabilitate e le pagine protette function menu_pagina_precedente($pagina = NULL) { global $DATI, $lang; if($pagina == NULL) $pagina = $GLOBALS["pagina"]; if($GLOBALS["CONF"]["DEBUG"] == "SI") $time = indi_time(); //mi copio il menu $MENU2 = $GLOBALS['MENU']; $c = 0; $find_next = ""; $key_curr = ""; $find_prev_provvisorio = ""; while(list($k, $v)=each($MENU2) and $find_next == "") { $c++; $KEY[$c] = $k; if($k == $pagina) { //trovata pagina corrente $key_curr = $c; $KEY = array_reverse($KEY); reset($KEY); //ciclo le chiavi delle pagine precedenti while(list($kk, $vv)=each($KEY)) { if($vv != $pagina and $MENU2[$vv][$GLOBALS['lang']]['menu_pagina_vis'] == "SI" and $MENU2[$vv][$GLOBALS['lang']]['protetta'] != "SI") { //mi salvo il primo che trovo if($find_prev_provvisorio == "") $find_prev_provvisorio = $vv; if($MENU2[$vv][$GLOBALS['lang']]['menu_ref'] == menu_riferimento(NULL,$pagina)) { //trovo la pagina dello stesso gruppo se c'e' (menu_ref) return $vv; } //controllo che il riferimento non sia della stessa pagina e scarto il link $pagina_link1 = $MENU2[$find_prev_provvisorio][$lang]['menu_link']; if($pagina == $pagina_link1) $find_prev_provvisorio = ""; } } //ho fatto tutto il giro allora imposto il provvisorio meglio di niente if($find_prev_provvisorio != "" and $GLOBALS["DATI"]["menu_pagina_successiva_precedente"] == "TUTTE") { //controllo se il link rimanda a questa pagina $pagina_link1 = $MENU2[$find_prev_provvisorio][$GLOBALS['lang']]['menu_link']; $padre = $DATI[indi_menu_ref_1]; if($pagina == $pagina_link1) return ""; //if($padre == $pagina_link1) return ""; return $find_prev_provvisorio; } else { return ""; } } } } //tova la pagina successiva, evitando le pagine nascoste e disabilitate e le pagine protette function menu_pagina_successiva($pagina = NULL) { if($pagina == NULL) $pagina = $GLOBALS["pagina"]; //mi copio il menu $MENU2 = $GLOBALS['MENU']; $c = 0; $find_next = ""; $key_curr = ""; $find_next_provvisorio = ""; while(list($k, $v)=each($MENU2) and $find_next == "") { $c++; $KEY[$c] = $k; if($k == $pagina) { //trovata pagina corrente $key_curr = $c; $KEY = array_reverse($KEY); reset($KEY); } //adesso cerco quella successiva dopo aver trovato la pagina corrente if($key_curr != "" and $k != $pagina and $MENU2[$k][$GLOBALS['lang']]['menu_pagina_vis'] == "SI" and $MENU2[$k][$GLOBALS['lang']]['protetta'] != "SI") { //mi salvo il primo che trovo if($find_next_provvisorio == "") $find_next_provvisorio = $k; if($MENU2[$k][$GLOBALS['lang']]['menu_ref'] == menu_riferimento(NULL,$pagina)) { //trovo la pagina dello stesso gruppo se c'e' (menu_ref) return $k; } } } //qui ho fatto tutto il giro in avanti, allora decido se tornare una pagina di gruppo diverso ... if($find_next_provvisorio != "" and $GLOBALS["DATI"]["menu_pagina_successiva_precedente"] == "TUTTE") { return $find_next_provvisorio; } else { return ""; } } //funzione per creare il menu, nella configurazione delle pagine imposto i vari parametri function menu($PARAM=NULL,$livello=NULL,$riferimento=NULL) { //d_info("menu"); global $MENU,$DATI,$CONF; //if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info($PARAM, "MENU"); //creo struttura multilivello //se CONFIGURAZIONE viene passata come parametro, sovrascrive tutte le impostazioni precedenti //la configurazione iniziale viene ereditata prima di tutto da CONF, sovrascritta da DATI e sovrascritta da CONFIGURAZIONE if(is_array($PARAM)) $CONFIGURAZIONE = $PARAM; else { if($PARAM != NULL) $CONFIGURAZIONE["menu_tipo"] = $PARAM; if($livello != NULL) $CONFIGURAZIONE["menu_livello"] = $livello; if($riferimento != NULL) $CONFIGURAZIONE["menu_riferimento"] = $riferimento; } $CONFIGURAZIONE = array_merge($CONF, $DATI,(array)$CONFIGURAZIONE); //print $CONFIGURAZIONE["menu_riferimento"]; // da rivedere ??? //if($CONFIGURAZIONE["menu_livello"] != "0") { // if ($riferimento == NULL) $CONFIGURAZIONE["menu_riferimento"] = $DATI[pagina]; // else $CONFIGURAZIONE["menu_riferimento"] = $riferimento; //} //implamento CACHE APC if(isset($GLOBALS[apc_menu_key]) and $DATI['indi_apc_menu'] == "SI") { $apc_menu_key2 = md5(serialize($CONFIGURAZIONE)).$GLOBALS[apc_menu_key]; $menu_output = apc_fetch($apc_menu_key2); if($menu_output) { if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info($apc_menu_key2, "MENU -> APC"); return $menu_output; } } //annullo tutto se decido di non visualizzare il menu if($CONFIGURAZIONE["menu_vis"] == "NO") return ""; $pagina = $CONFIGURAZIONE["pagina"]; $lang = $CONFIGURAZIONE["lang"]; //imposto riferimento di ROOT $ref_start = $CONFIGURAZIONE["menu_riferimento"]; $ref_lev = $CONFIGURAZIONE["menu_livello"]; $livello_ref_start = menu_livello($ref_start); if($CONFIGURAZIONE["menu_riferimento"] == "root") $riferimento_pagina = menu_riferimento($CONFIGURAZIONE["menu_livello"]); else $riferimento_pagina = menu_riferimento($CONFIGURAZIONE["menu_livello"],$CONFIGURAZIONE["menu_riferimento"]); reset($MENU); while(list($k, $pg)=each($MENU)) { //d("$k"); while(list($k, $menu)=each($pg)) { if($k == $lang) { //trovo livello pagina corrente if(isset($menu["pagina"])) $livello_pagina = menu_livello($menu["pagina"]); else $livello_pagina = 0; $menu["livello"] = $livello_pagina; //controllo ALL ??? if($CONFIGURAZIONE["menu_riferimento"] == "ALL") $menu["menu_ref"] = $riferimento_pagina; if($CONFIGURAZIONE["menu_livello"] == "ALL") { if($CONFIGURAZIONE["menu_riferimento"] != "ALL") { //print $livello_pagina; $menu["menu_ref"] = menu_riferimento($livello_ref_start+1,$menu["pagina"]); $riferimento_pagina = $ref_start; } $livello_pagina = $CONFIGURAZIONE["menu_livello"]; } //decido se visualizzare la pagina if($menu['menu_pagina_vis'] == "SI") $visibile = 1; else $visibile = 0; if($CONFIGURAZIONE["menu_escludi"] != "") { $ARR = explode("|",$CONFIGURAZIONE["menu_escludi"]); while(list($k, $v)=@each($ARR)) { if($v == $menu['pagina']) $visibile = 0; } } //escludo figlie if($CONFIGURAZIONE["menu_escludi_figlie"] != "") { //d_err($CONFIGURAZIONE["menu_escludi_figlie"]); //if(indi_cerca($CONFIGURAZIONE["menu_escludi_figlie"],$menu["menu_ref"])) $visibile = 0; $ARR = explode("|",$CONFIGURAZIONE["menu_escludi_figlie"]); //$ARR = $CONFIGURAZIONE["menu_escludi_figlie"]; while(list($k, $v)=@each($ARR)) { if($v == $menu["menu_ref"]) $visibile = 0; } } //inclusione forzata if($CONFIGURAZIONE["menu_includi_force"] != "") { $ARR = explode("|",$CONFIGURAZIONE["menu_includi_force"]); while(list($k, $v)=@each($ARR)) { if($v == $menu['pagina']) $visibile = 1; } } if( ($menu["menu_from"] == $CONFIGURAZIONE["menu_from_vis"] or $CONFIGURAZIONE["menu_from_vis"] == "ALL") and $livello_pagina == $CONFIGURAZIONE["menu_livello"] and $menu["menu_ref"] == $riferimento_pagina and ( $menu["menu_gruppo"] == $CONFIGURAZIONE["menu_gruppo_vis"] or $CONFIGURAZIONE["menu_gruppo_vis"] == "ALL" ) and $visibile === 1 and ($menu['protetta'] != "SI" or $CONFIGURAZIONE["menu_includi_protette"] == "SI")) { $riferimento0 = ""; $riferimento1 = ""; $riferimento2 = ""; $riferimento3 = ""; $riferimento4 = ""; $riferimento0 = $pagina; if(isset($MENU[$riferimento0][$lang]['menu_ref'])){ $riferimento1 = $MENU[$riferimento0][$lang]['menu_ref']; if(isset($MENU[$riferimento1][$lang]['menu_ref'])){ $riferimento2 = $MENU[$riferimento1][$lang]['menu_ref']; if(isset($MENU[$riferimento2][$lang]['menu_ref'])){ $riferimento3 = $MENU[$riferimento2][$lang]['menu_ref']; if(isset($MENU[$riferimento3][$lang]['menu_ref'])){ $riferimento4 = $MENU[$riferimento3][$lang]['menu_ref']; } } } } //trovo sottolivello ??? da fare con array if($menu["pagina"] == $riferimento0 or $menu["pagina"] == $riferimento1 or $menu["pagina"] == $riferimento2 or $menu["pagina"] == $riferimento3 or $menu["pagina"] == $riferimento4 or $menu["pagina"] == $riferimento5) $dove_sono = 1; else $dove_sono = 0; //MULTILIVELLO if(($dove_sono != 0 and $CONFIGURAZIONE["menu_multi"] == "SI") or $CONFIGURAZIONE["menu_multi_all"] != "") $multi = "#MMUL#"; else $multi = ""; if($CONFIGURAZIONE["menu_multi_all"] == "SI") $multi = "#MMUL-$menu[pagina]#"; //SEPARATORE SI NO if($menu["menu_sep"] == "SI") { $sep_sx = "<1>"; $sep_dx = "<2>"; } else { $sep_sx = ""; $sep_dx = ""; } //DA CAMBIARE MENU PERSONALIZZATO if($menu["menu_src"] != "") { //controllo presenza di testo, senno' metto nome pagina //creo il codice //controllo inizio fine if($dove_sono and $CONFIGURAZIONE["menu_link_sempre"] != "SI") $out .= $sep_sx.$menu["menu_src_s"].$multi.$sep_dx; else $out .= $sep_sx.$menu["menu_src"].$multi.$sep_dx; } else { // ######### MENU TESTUALE if($CONFIGURAZIONE["menu_tipo"] == "TXT") { //controllo presenza di testo, senno' metto nome pagina if ($menu["menu_txt"] != "") $txt = $menu["menu_txt"]; else $txt = $menu["nome"]; //creo il codice if($dove_sono and $CONFIGURAZIONE["menu_link_sempre"] != "SI") $out .= $sep_sx.$CONFIGURAZIONE[menu_txt_sel_sx].$txt.$CONFIGURAZIONE[menu_txt_sel_dx].$multi.$sep_dx; else $out .= $sep_sx.''.$txt.''.$multi.$sep_dx; } if($CONFIGURAZIONE["menu_tipo"] == "FLASH") { // $txt = menu_tpl_sos($CONFIGURAZIONE[menu_tpl],$menu); //creo il codice $out .= $sep_sx.$CONFIGURAZIONE[menu_txt_sel_sx].$txt.$CONFIGURAZIONE[menu_txt_sel_dx].$multi.$sep_dx; } // ######### MENU IMMAGINE if($CONFIGURAZIONE["menu_tipo"] == "IMG") { //controllo presenza alt, senno' metto nome pagina if ($menu["menu_txt"] != "") $alt = $menu["menu_txt"]; else $alt = $menu["nome"]; $alt = encode($alt); //creo il nome immagine if($dove_sono) $sel = $CONFIGURAZIONE["menu_img_sel"]; else $sel = ""; // $path_img = $CONFIGURAZIONE["dir_pic"].$CONFIGURAZIONE["menu_img_path"].$menu["lang"].'/'.$menu["pagina"].$sel.$CONFIGURAZIONE["menu_img_ext"]; $path_img = $CONFIGURAZIONE["dir_pic"].$CONFIGURAZIONE["menu_img_path"].$menu["lang"].'/'.$menu["pagina"].$sel.$CONFIGURAZIONE["menu_img_ext"]; $size = @getimagesize($path_img); $img = ''.$alt.''; //creo il codice if($dove_sono and $CONFIGURAZIONE['menu_link_sempre'] != "SI") { $out .= $sep_sx.$img.$multi.$sep_dx; } else { if (isset($CONFIGURAZIONE["menu_aggiungi_parametri"])) { $out .= $sep_sx.''.$img.''.$multi.$sep_dx; } else { $out .= $sep_sx.''.$img.''.$multi.$sep_dx; } } } //############################################ //######### MENU TEMPLATIZZATO (TPL) ######### //############################################ //mi serve la variabile selezionata if($CONFIGURAZIONE["menu_tipo"] == "TPL") { //contatore $menu_tpl_cont++; $menu["menu_tpl_cont"] = $menu_tpl_cont; //codice per alternare QUALUNQUE COSA $menu_tpl_alt_cont++; $menu_tpl_alt = explode("|",$CONFIGURAZIONE["menu_tpl_alt"]); $menu_tpl_alt_num = count($menu_tpl_alt); $menu["menu_tpl_alt"] = $menu_tpl_alt[$menu_tpl_alt_cont-1]; if($menu_tpl_cont % $menu_tpl_alt_num == 0) $menu_tpl_alt_cont = 0; // $TPL_ENTRATO = 1; //eval pre if($CONFIGURAZIONE["menu_tpl_eval_pre"] != "") eval($CONFIGURAZIONE["menu_tpl_eval_pre"]); //aggiungo variabile menu_tpl_sel if($dove_sono) $menu["menu_sel"] = $CONFIGURAZIONE["menu_tpl_sel"]; else $menu["menu_sel"] = $CONFIGURAZIONE["menu_tpl_nosel"]; //controllo presenza di testo, senno' metto nome pagina if($menu["menu_no_link"] and $CONFIGURAZIONE["menu_tpl_no_link"] != "") { if($dove_sono and $CONFIGURAZIONE["menu_tpl_no_link_sel"] != "") $riga_out = $sep_sx.$CONFIGURAZIONE["menu_tpl_no_link_sel"].$sep_dx; else $riga_out = $sep_sx.$CONFIGURAZIONE["menu_tpl_no_link"].$sep_dx; } else { if($dove_sono and $CONFIGURAZIONE["menu_tpl_corpo_sel"] != "") $riga_out = $sep_sx.$CONFIGURAZIONE["menu_tpl_corpo_sel"].$sep_dx; else $riga_out = $sep_sx.$CONFIGURAZIONE["menu_tpl_corpo"].$sep_dx; } //eval post se e' definito eval lo eseguo if($CONFIGURAZIONE["menu_tpl_eval_post"] != "") eval($CONFIGURAZIONE["menu_tpl_eval_post"]); //$riga_out = indi_tpl($riga_out,$menu); $riga_out = indi_tpl($riga_out,$menu,0,"Q"); $riga_out = indi_tpl($riga_out,$menu,1,"Q"); $out .= $riga_out; if($CONFIGURAZIONE["menu_output"] == "array") { $MENU_ARRAY[] = $riga_out; } } if($CONFIGURAZIONE["menu_tipo"] == "IMG_OVER") { //aggiungo javascript $DATI["window.onload:prepareImageSwap(document.body)"] = "vis"; //controllo presenza alt, senno' metto nome pagina if ($menu["menu_txt"] != "") $alt = $menu["menu_txt"]; else $alt = $menu["nome"]; $alt = encode($alt); //creo il nome immagine if($dove_sono) $path_img = $CONFIGURAZIONE["dir_pic"].$CONFIGURAZIONE["menu_img_path"].$menu["lang"].'/'.$menu["pagina"]."_hv.gif"; else $path_img = $CONFIGURAZIONE["dir_pic"].$CONFIGURAZIONE["menu_img_path"].$menu["lang"].'/'.$menu["pagina"]."_nm.gif"; $size = @getimagesize($path_img); $img = ''.$alt.''; //creo il codice if($dove_sono and $CONFIGURAZIONE[menu_link_sempre] != "SI") $out .= $sep_sx.$img.$multi.$sep_dx; else $out .= $sep_sx.''.$img.''.$multi.$sep_dx; } } } } } } if($CONFIGURAZIONE["menu_tipo"] == "TXT" or $CONFIGURAZIONE["menu_tipo"] == "FLASH") { $out = str_replace("<2><1>",$CONFIGURAZIONE[menu_txt_sep],$out); $out = str_replace("<1>",$CONFIGURAZIONE[menu_txt_sep_sx],$out); $out = str_replace("<2>",$CONFIGURAZIONE[menu_txt_sep_dx],$out); } if($CONFIGURAZIONE["menu_tipo"] == "IMG") { $out = str_replace("<2><1>",$CONFIGURAZIONE[menu_img_sep],$out); $out = str_replace("<1>",$CONFIGURAZIONE[menu_img_sep_sx],$out); $out = str_replace("<2>",$CONFIGURAZIONE[menu_img_sep_dx],$out); } if($CONFIGURAZIONE["menu_tipo"] == "IMG_OVER") { $out = str_replace("<2><1>",$CONFIGURAZIONE[menu_img_sep],$out); $out = str_replace("<1>",$CONFIGURAZIONE[menu_img_sep_sx],$out); $out = str_replace("<2>",$CONFIGURAZIONE[menu_img_sep_dx],$out); } //controllo anche che esista almeno una pagina per stampare il template if($CONFIGURAZIONE["menu_tipo"] == "TPL" and $TPL_ENTRATO) { $out = $CONFIGURAZIONE["menu_tpl_testa"].$out.$CONFIGURAZIONE["menu_tpl_coda"]; $out = indi_tpl($out,$CONFIGURAZIONE,1,"Q"); //controllo se nel menu c'e' il tag sep, per capire la modalita' da adottare if(stristr($out,"")) { $out = str_replace("<1>","",$out); $out = str_replace("<2>","",$out); $out = str_replace("",$CONFIGURAZIONE["menu_tpl_sep"],$out); $out = str_replace("","",$out); } else { //separatore $out = str_replace("<2><1>",$CONFIGURAZIONE["menu_tpl_sep"],$out); $out = str_replace("<1>","",$out); $out = str_replace("<2>","",$out); } } if($CONFIGURAZIONE["menu_output"] == "array") { unset($out); $out["testa"] = $CONFIGURAZIONE["menu_tpl_testa"]; $out["coda"] = $CONFIGURAZIONE["menu_tpl_coda"]; while(list($a_k, $a_pagina)=@each($MENU_ARRAY)) { $out_pagina = str_replace("<2><1>",$CONFIGURAZIONE["menu_tpl_sep"],$a_pagina); $out_pagina = str_replace("<1>","",$out_pagina); $out_pagina = str_replace("<2>","",$out_pagina); $out_pagina = indi_tpl($out_pagina,$CONFIGURAZIONE,1,"Q"); $out["corpo"][$a_k] = $out_pagina; } } //CACHE if(isset($apc_menu_key2) and $DATI['indi_apc_menu'] == "SI") apc_store($apc_menu_key2, $out, $DATI['indi_apc_menu_time']); //if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("Fine", "MENU"); return $out; //return encode($out); } function menu_livello($pagina=NULL,$lang=NULL) { global $MENU,$DATI; if($lang == NULL) $lang = $DATI["lang"]; if($pagina == NULL) $pagina = $DATI["pagina"]; $riferimento0 = ""; $riferimento1 = ""; $riferimento2 = ""; $riferimento3 = ""; $riferimento4 = ""; if(isset($MENU[$pagina][$lang]['menu_ref'])){ $riferimento0 = $MENU[$pagina][$lang]['menu_ref']; if(isset($MENU[$riferimento0][$lang]['menu_ref'])){ $riferimento1 = $MENU[$riferimento0][$lang]['menu_ref']; if(isset($MENU[$riferimento1][$lang]['menu_ref'])){ $riferimento2 = $MENU[$riferimento1][$lang]['menu_ref']; if(isset($MENU[$riferimento2][$lang]['menu_ref'])){ $riferimento3 = $MENU[$riferimento2][$lang]['menu_ref']; if(isset($MENU[$riferimento3][$lang]['menu_ref'])){ $riferimento4 = $MENU[$riferimento3][$lang]['menu_ref']; } } } } } //trovo livello della pagina if ($riferimento0 == "root") return 0; if ($riferimento1 == "root") return 1; if ($riferimento2 == "root") return 2; if ($riferimento3 == "root") return 3; if ($riferimento4 == "root") return 4; } //funzione trova riferimento in base al livello e alla pagina di partenza function menu_riferimento($livello=NULL,$pagina=NULL,$lang=NULL) { global $MENU,$DATI; if($lang == NULL) $lang = $DATI["lang"]; if($pagina == NULL) $pagina = $DATI["pagina"]; if($livello == NULL) $livello = menu_livello($pagina,$lang); //$livello_corrente = menu_livello($DATI["pagina"],$DATI["lang"]); //$lev = $livello_corrente-$livello; //print "|$lev|"; //if($lev == "0") return $MENU[$pagina][$lang][menu_ref]; $riferimento0 = ""; $riferimento1 = ""; $riferimento2 = ""; $riferimento3 = ""; $riferimento4 = ""; //creo i riferimenti in ordine inverso $riferimento0 = $pagina; $riferimento1 = $MENU[$riferimento0][$lang]['menu_ref']; $riferimento2 = $MENU[$riferimento1][$lang]['menu_ref']; $riferimento3 = $MENU[$riferimento2][$lang]['menu_ref']; $riferimento4 = $MENU[$riferimento3][$lang]['menu_ref']; $riferimento0 = $pagina; if(isset($MENU[$riferimento0][$lang]['menu_ref'])){ $riferimento1 = $MENU[$riferimento0][$lang]['menu_ref']; if(isset($MENU[$riferimento1][$lang]['menu_ref'])){ $riferimento2 = $MENU[$riferimento1][$lang]['menu_ref']; if(isset($MENU[$riferimento2][$lang]['menu_ref'])){ $riferimento3 = $MENU[$riferimento2][$lang]['menu_ref']; if(isset($MENU[$riferimento3][$lang]['menu_ref'])){ $riferimento4 = $MENU[$riferimento3][$lang]['menu_ref']; } } } } if ($riferimento0 != "root" and $riferimento0 != "") $REF[0] = $riferimento0; if ($riferimento1 != "root" and $riferimento1 != "") $REF[1] = $riferimento1; if ($riferimento2 != "root" and $riferimento2 != "") $REF[2] = $riferimento2; if ($riferimento3 != "root" and $riferimento3 != "") $REF[3] = $riferimento3; if ($riferimento4 != "root" and $riferimento4 != "") $REF[4] = $riferimento4; if ($riferimento5 != "root" and $riferimento5 != "") $REF[5] = $riferimento5; $REF[] = "root"; $REF = array_reverse($REF); //???? if(isset($REF[$livello])) return $REF[$livello]; } // MENU MULTILIVELLO function menu_multi($M){ global $MENU,$DATI; if($lang == NULL) $lang = $DATI["lang"]; if($pagina == NULL) $pagina = $DATI["pagina"]; $M[0] = array_merge($M[A],$M[0]); $M[1] = array_merge($M[A],$M[1]); $M[2] = array_merge($M[A],$M[2]); //$M[0][menu_multi] = "SI"; if($M[0][menu_livello] == "") $M[0][menu_livello] = "0"; //$M[1][menu_multi] = "SI"; if($M[1][menu_livello] == "") $M[1][menu_livello] = "1"; //$M[2][menu_multi] = "SI"; if($M[2][menu_livello] == "") $M[2][menu_livello] = "2"; //monto il menu //forzo l' opzione multi $m1 = menu($M[0]); $m2 = menu($M[1]); $m3 = menu($M[2]); //creo il menu $m = str_replace("#MMUL#",$m2,$m1); $m = str_replace("#MMUL#",$m3,$m); $m = str_replace("#MMUL#","",$m); return $m; } function menu_multi_all($M){ global $MENU,$DATI; if($lang == NULL) $lang = $DATI["lang"]; if($pagina == NULL) $pagina = $DATI["pagina"]; $M[0] = array_merge($M[A],(array)$M[0]); $M[1] = array_merge($M[A],(array)$M[1]); $M[2] = array_merge($M[A],(array)$M[2]); $M[3] = array_merge($M[A],(array)$M[3]); $M[0]['menu_multi_all'] = "SI"; if($M[0]['menu_livello'] == "") $M[0]['menu_livello'] = "0"; $M[1]['menu_multi_all'] = "SI"; if($M[1]['menu_livello'] == "") $M[1]['menu_livello'] = "1"; $M[2]['menu_multi_all'] = "SI"; if($M[2]['menu_livello'] == "") $M[2]['menu_livello'] = "2"; //monto il menu //root $m0 = menu($M[0]); //print_r($m0); //mi creo tutti i menu di tutti i riferimenti di livello 1 //copio conf $M_TMP = $M[1]; $MENU_TMP = $MENU; reset($MENU_TMP); while(list($k, $v)=each($MENU_TMP)) { $lev = menu_livello($k); if($lev == "0") { $M_TMP['menu_riferimento'] = "$k"; $M_TMP['menu_livello'] = "1"; $m_tmp = menu($M_TMP); $m0 = str_replace("#MMUL-$k#",$m_tmp,$m0); } } $M_TMP = $M[2]; $MENU_TMP = $MENU; reset($MENU_TMP); while(list($k, $v)=each($MENU_TMP)) { $lev = menu_livello($k); if($lev == "1") { $M_TMP['menu_riferimento'] = "$k"; $M_TMP['menu_livello'] = "2"; $m_tmp = menu($M_TMP); $m0 = str_replace("#MMUL-$k#",$m_tmp,$m0); } } $M_TMP = $M[2]; $MENU_TMP = $MENU; while(list($k, $v)=each($MENU_TMP)) { $lev = menu_livello($k); if($lev == "2") { $m0 = str_replace("#MMUL-$k#","",$m0); } } //pulisco $m0 = str_replace("#MMUL#","",$m0); return $m0; } function menu_multi_tpl($M){ d_info("menu_multi_tpl"); global $MENU,$DATI; if(is_array($M[0])) $M[0] = array_merge((array)$M['A'],(array)$M[0]); if(is_array($M[1])) $M[1] = array_merge((array)$M['A'],(array)$M[1]); if(is_array($M[2])) $M[2] = array_merge((array)$M['A'],(array)$M[2]); if(is_array($M[3])) $M[3] = array_merge((array)$M['A'],(array)$M[3]); if(is_array($M[4])) $M[4] = array_merge((array)$M['A'],(array)$M[4]); $M[0]['menu_multi_all'] = "SI"; if($M[0]['menu_livello'] == "") $M[0]['menu_livello'] = "0"; $M[1]['menu_multi_all'] = "SI"; if($M[1]['menu_livello'] == "") $M[1]['menu_livello'] = "1"; $M[2]['menu_multi_all'] = "SI"; if($M[2]['menu_livello'] == "") $M[2]['menu_livello'] = "2"; $M[3]['menu_multi_all'] = "SI"; if($M[3]['menu_livello'] == "") $M[3]['menu_livello'] = "3"; $M[4]['menu_multi_all'] = "SI"; if($M[4]['menu_livello'] == "") $M[4]['menu_livello'] = "4"; //monto il menu //root $m0 = menu($M[0]); //print_r($m0); //mi creo tutti i menu di tutti i riferimenti di livello 1 //copio conf $MENU_TMP = $MENU; if($M[1]['menu_tpl_corpo'] != "") { $M_TMP = $M[1]; reset($MENU_TMP); while(list($k, $v)=each($MENU_TMP)) { $lev = menu_livello($k); if($lev == $M[1]['menu_livello']-1) { $M_TMP['menu_riferimento'] = "$k"; $M_TMP['menu_livello'] = $M[1]['menu_livello']; $m_tmp = menu($M_TMP); if(!$M['A']["#MMUL-$k#"]) $m0 = str_replace("#MMUL-$k#",$m_tmp,$m0); else $m0 = str_replace("#MMUL-$k#",$M['A']["#MMUL-$k#"],$m0); } } } else { return $m0; } if($M[2]['menu_tpl_corpo'] != "") { $M_TMP = $M[2]; reset($MENU_TMP); while(list($k, $v)=each($MENU_TMP)) { $lev = menu_livello($k); if($lev == $M[2]['menu_livello']-1) { $M_TMP['menu_riferimento'] = "$k"; $M_TMP['menu_livello'] = $M[2]['menu_livello']; $m_tmp = menu($M_TMP); $m0 = str_replace("#MMUL-$k#",$m_tmp,$m0); } } } else { return $m0; } if($M[3]['menu_tpl_corpo'] != "") { $M_TMP = $M[3]; reset($MENU_TMP); while(list($k, $v)=each($MENU_TMP)) { $lev = menu_livello($k); if($lev == $M[3]['menu_livello']-1) { $M_TMP['menu_riferimento'] = "$k"; $M_TMP['menu_livello'] = $M[3]['menu_livello']; $m_tmp = menu($M_TMP); $m0 = str_replace("#MMUL-$k#",$m_tmp,$m0); } } } else { return $m0; } if($M[4]['menu_tpl_corpo'] != "") { $M_TMP = $M[4]; reset($MENU_TMP); while(list($k, $v)=each($MENU_TMP)) { $lev = menu_livello($k); if($lev == $M[4]['menu_livello']-1) { $M_TMP['menu_riferimento'] = "$k"; $M_TMP['menu_livello'] = $M[4]['menu_livello']; $m_tmp = menu($M_TMP); $m0 = str_replace("#MMUL-$k#",$m_tmp,$m0); } } } else { return $m0; } // if($M[3]['menu_tpl_corpo'] != "") { // $M_TMP = $M[3]; // $MENU_TMP = $MENU; // while(list($k, $v)=each($MENU_TMP)) { // $lev = menu_livello($k); // if($lev == $M[3][menu_livello]-1) { // $m0 = str_replace("#MMUL-$k#","",$m0); // } // // } // d_info("MMM-fine"); // } else { // // return $m0; // // } return $m0; } //PRENDE UN MENU DA UN ARRAY PRONTO function menu_test($tipo="LIS"){ //tabella //lista //div $LIS = array( "menu_tipo" => "TPL", "menu_tpl_testa" => "", ); return menu($$tipo); } //con indi set function menu2($CONF){ return menu(indi_set($CONF)); } function menu_indi($CONF){ return menu(indi_set($CONF)); } //sostituisce un campo dell' array passato all' identificativo parentesi graffe function menu_tpl_sos($testo,$ARR) { if(!strpos($testo,"}")) return $testo; $pattern = '/{([^}{]*?)}/si'; if (preg_match_all ($pattern, $testo, $matches)) { // nl2br(print_r ($matches)); } else { //return $testo; } while(list($k, $v)=@each($matches[1])) { //effettua la sostituzione senza lasciare traccia $REP[$k] = $ARR[$v]; } $out = str_replace($matches[0], $REP, $testo); return $out; } function menu_tpl_format ($campo){ //$campo = explode("=>",$campo); return $campo; } //funzione di associazione per menu di indi function menu_db($CONF) { global $DATI; $CONF = indi_set($CONF); if(isset($CONF["query"])){ $R = db_q($CONF["query"]); if(is_array($R)) { //controlo accpppiamenti } else d_err("Query nulla","mod_menu"); } } function menu_array($profondita = -1, $ref = "root"){//se passo -1 come profondità fa tutti i livelli global $MENU, $lang; $return = array(); ${"MENU"+$profondita} = $MENU;//duplico l'array perchè se no chiamandola ricorsivamente sposta il puntatore foreach(${"MENU"+$profondita} as $id=>$pagina){ if($MENU[$id][$lang]["menu_ref"] == $ref && $MENU[$id][$lang]["menu_pagina_vis"] == "SI"){ $return_i = $MENU[$id]; if($profondita){ $return_i["FIGLI"] = menu_array($profondita-1, $id); if(!$return_i["FIGLI"]) unset($return_i["FIGLI"]); } $return[$id] = $return_i; } } return $return; } ?>