//##########################################################################
//################ IMPOSTAZIONI BASE GALLERIA ##############################
//##########################################################################
//configurazione assegnate di default a tutte le pagine
$CONF_MENU["menu_from"] = "indi"; //chi genera il menu o database o indi o pagine_dinamiche
$CONF_MENU["template_sottopagine"] = NULL;
$CONF_MENU["menu_pagina_vis"] = "SI"; //decide se mettere o no la pagina nel menu
$CONF_MENU["menu_ref"] = "root"; //se il riferimento non c'e' sono nella root
$CONF_MENU["menu_gruppo"] = "main"; //definisce il gruppo da associare di default
$CONF_MENU["menu_sep"] = "SI"; //definisco che di default c'e' sempre il separatore
//$CONF_MENU["ord"] = NULL //per ordinare, ordine di default automatico con un numero incrementato a 100 + 100
$CONF_MENU["menu_sel"] = NULL; //valore di default per indicatore selezione, se la pagina e' selezionata si imposta a sel
$CONF_MENU["menu_link"] = NULL; //per far puntare una pagina ad un'altra, specificando il nome del menu
$CONF_MENU["menu_no_link"] = NULL; //SI per togliere il link usando il menu_tpl_no_link (cioè sul 'menu_tpl_no_link' mettere il template del menu senza il link)
$CONF_MENU["menu_link_force"] = NULL; //forza il contenuto di un link (per mettere link esterni)
$CONF_MENU["menu_link_agg"] = NULL; //parametri aggiuntivi menu, da passare direttamente alla pagina, per generare link complessi
//$CONF_MENU["menu_tpl_cont"] contatore incrementale
if($CONF["indi_subversion"] < 2) { $CONF_MENU["menu_key"] = NULL; } //parola chiave associata alla pagina
else { $CONF_MENU["key"] = NULL; } //parola chiave associata alla pagina
$CONF_MENU["rew_alias"] = NULL; //parola per generare il link riscritto REW
$CONF_MENU["ssl"] = NULL; //pagina in ssl
if($CONF["indi_subversion"] >= 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 = '
';
//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 = '
';
//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;
}
?>