$v){ $randomKeys[mt_rand(0, $max)][] = array($k, $v); } sort($randomKeys); $output = array(); foreach($randomKeys as $key => $level){ foreach($level as $k => $v){ $output[$v[0]] =$v[1]; } } return $output; } } function indi_output($buffer){ global $CONF,$DATI,$TKD,$TXT; //######## GOOGLE ANALITICS MONITORAGGIO FORM E STATISTICHE AUTOMATICHE ################ //controllo se e' settato l' ID //controllo se e' attiva la funzione //???? //######## DTXT ???? ######################################################################## if($DATI["DTXT"] == "SI") { /* javascript("_items = new Array();"); //ciclo javascript("_items[0] = {selector: \".t77\", url: \"index.php?dimage=1&\", wordwrap: true};"); javascript("_items[1] = {selector: \"div.t1\", url: \"index.php?dimage=1&\", wordwrap: true};"); //ciclo javascript(" if(document.createElement && document.getElementsByTagName && !navigator.userAgent.match(/opera\/?6/i)) com_stewartspeak_replacement(_items); "); */ } //######## JETBOX ######################################################################## if($DATI[jetbox] == "SI") { $buffer = str_replace($DATI["jetbox_webimage_src"],$DATI["jetbox_webimage_dst"], $buffer); $buffer = str_replace($DATI["jetbox_webimage_safe"],$DATI["jetbox_webimage_dst"], $buffer); $buffer = str_replace($DATI["jetbox_webfiles_src"],$DATI["jetbox_webfiles_dst"], $buffer); $buffer = str_replace($DATI["jetbox_webfiles_safe"],$DATI["jetbox_webfiles_dst"], $buffer); } //######## HEAD ######################################################################## if($DATI["TKD"] == "SI") { //genero le parti dinamiche $DATI["title_din"] = @implode($DATI["title_sep"],$TKD[T]); $DATI["mkey_din"] = @implode($DATI["mkey_sep"],$TKD[K]); $DATI["mdesc_din"] = @implode($DATI["mdesc_sep"],$TKD[D]); //imposto i titoli $DATI["title"] = indi_tkd_title("title"); $DATI["mkey"] = indi_tkd_title("mkey"); $DATI["mdesc"] = indi_tkd_title("mdesc"); } //debug d_info($DATI["title"],"TPL:TITLE"); d_info($DATI["mkey"],"TPL:MKEY"); d_info($DATI["mdesc"],"TPL:MDESC"); $buffer = str_replace("#TITLE#",$DATI["title"], $buffer); $buffer = str_replace("#MKEY#",$DATI["mkey"], $buffer); $buffer = str_replace("#MDESC#",$DATI["mdesc"], $buffer); $buffer = str_replace("#KEY#",$DATI["key"],$buffer); $buffer = str_replace("#PAGINA#",$DATI["menu_txt"], $buffer); $buffer = str_replace("#LANG#",$DATI["lang"], $buffer); if($DATI["javascript"] != "") $buffer = str_replace("#JAVASCRIPT#","\n\r", $buffer); else str_replace("#JAVASCRIPT#","", $buffer); if($DATI["css"] != "") $buffer = str_replace("#CSS#","\n\r", $buffer); else str_replace("#CSS#","", $buffer); $buffer = str_replace("#BASE#", $DATI["baseurl"], $buffer); //genero header AUTOMATICO //base if($DATI["rss"] != "") $HEAD[5] .= ''; if($DATI["title"] != "") $HEAD[10] .= "".$DATI["title"] .""; if($DATI["mdesc"] != "") $HEAD[12] .= ""; if($DATI["mkey"] != "") $HEAD[14] .= ""; if($DATI["mautore"] != "") $HEAD[16] .= ""; if($DATI["mcopy"] != "") $HEAD[18] .= ""; //charset if($DATI["mcharset"] != "") $HEAD[20] .= ""; //webmaster google if($DATI["google_webmaster"] != "") $HEAD[22] .= ""; //webmaster google if($DATI["meta_noindex"] == "SI") $HEAD[23] .= ""; if($DATI["meta_favicon"] == "AUTO" and is_file("favicon.ico")) $HEAD[30] .= ""; if($DATI["meta_favicon"] == "AUTO" and is_file("favicon.gif") and $DATI['ua2'] == "ge") $HEAD[31] .= ""; //INCLUDO CSS DINAMICI E JAVASCRIPT SE SPECIFICATO reset($DATI); $jremoto = 0; //usato per sapere dove posizionare il base $tjswo_c = 1000; //if in caso stia facendo un cd $base_head = $DATI["baseurl"]; //mette i css relativi while(list($k, $v)=each($DATI)) { $kk = trim(substr($k,0,strpos($k,":"))); $tjswo = substr($k,strlen($kk)+1); if($v != "NO" and $kk != "") { $tjswo_c++; if($kk == "file") { if(is_file($tjswo)) { if(substr($tjswo,strlen($tjswo)-2) == "js" and stristr($v,"VIS")) $HEAD[$tjswo_c] .= ""; if(substr($tjswo,strlen($tjswo)-2) == "ss" and stristr($v,"VIS")) $HEAD[$tjswo_c] .= ""; } elseif(stristr($v,"VIS") and stristr($v,"FORCE")) { if(stristr($v,"JS")) { if(stristr($tjswo,"http://") == false) $HEAD[$tjswo_c] .= ""; else { //caso javascript remoto $jremoto = 1; $HEAD[$tjswo_c] .= ""; } } if(stristr($v,"CSS")) { if(stristr($tjswo,"http://") == false) $HEAD[$tjswo_c] .= ""; else $HEAD[$tjswo_c] .= ""; } } else if(stristr($tjswo,".") == true) d_err("File non trovato: $tjswo","indi_output","INDI"); } //javascript window.onload if($kk == "window.onload") { if(stristr($v,"VIS")) { $DATI["javascript.window.onload"] .= "\t".$tjswo."\n"; } } if($kk == "window.unload") { if(stristr($v,"VIS")) { $DATI["javascript.window.unload"] .= "\t".$tjswo."\n"; } } //javascript semplice if($kk == "javascript") { if(stristr($v,"VIS")) { $DATI["javascript"] .= $tjswo."\n\n"; } } //css semplice if($kk == "css") { if(stristr($v,"VIS")) { $DATI["css"] .= $tjswo."\n\n"; } } //body riscittura if($kk == "body") { if(stristr($v,"PRE_CLOSE")) { $DATI["body_pre_close"] .= $tjswo."\n"; } elseif(stristr($v,"POST_CLOSE")) { $DATI["body_post_close"] .= $tjswo."\n"; } elseif(stristr($v,"PRE_OPEN")) { $DATI["body_pre_open"] .= $tjswo."\n"; } elseif(stristr($v,"POST_OPEN")) { $DATI["body_post_open"] .= $tjswo."\n"; } } } } //BASE if($CONF["MEDIA"] == "cdrom" or $CONF["MEDIA"] == "html") { //non mette il base se il sito viene grabbato } else{ if($DATI["baseurl"] != "") { if($jremoto == 1) $HEAD[3000] = ""; else $HEAD[1] = ""; } } //body if($DATI["body_pre_close"] != "") $buffer = str_replace("",$DATI["body_pre_close"]."",$buffer); if($DATI["body_post_close"] != "") $buffer = str_replace("","\n".$DATI["body_post_close"],$buffer); if($DATI["body_pre_open"] != "") $buffer = str_replace("",$DATI["body_pre_open"]."",$buffer); if($DATI["body_post_open"] != "") $buffer = str_replace("","\n".$DATI["body_post_open"],$buffer); //javascript window.onload if($DATI["javascript.window.onload"] != "") $DATI["javascript"] .= "window.onload=function()\n{\n".$DATI["javascript.window.onload"]."\n}\n"; //javascript window.unload if($DATI["javascript.window.unload"] != "") $DATI["javascript"] .= "window.unload=function()\n{\n".$DATI["javascript.window.unload"]."\n}\n"; //JAVA E CSS NON INCLUSI IN FILE if($DATI["javascript"] != "") $HEAD[4000] .= "\n\r"; if($DATI["css"] != "") $HEAD[5000] .= "\n\r"; /* if($DATI["png_fix"] != "NO"){ $HEAD[6000] .= ""; $DATI['file:_files/pngfix.js'] = 'COPY'; $DATI['file:_pics/null.gif'] = 'COPY'; } */ //###### AGGIUGO HEAD ######################################################## ksort($HEAD); while(list($k, $v)=@each($HEAD)) { $head_tmp .= $v."\n\r"; } $buffer = str_replace("#HEAD#", $head_tmp, $buffer); //###### SISTEMO LINK SBAGLIATI ######################################################## $buffer = str_replace($DATI["path_rel"].$DATI["dir_indi"], $DATI["dir_indi"], $buffer); $buffer = str_replace($DATI["path_rel"].$DATI["dir_pagine"], $DATI["dir_pagine"], $buffer); $buffer = str_replace($DATI["path_rel"].$DATI["dir_file"], $DATI["dir_file"], $buffer); $buffer = str_replace($DATI["path_rel"].$DATI["dir_pic"], $DATI["dir_pic"], $buffer); //###### INDI TEMPLATE ######################################################## //SOSTITUISCO VARIABILI DI TEMPLATE ARRAY DATI ??? //$buffer = indi_out_replace($buffer,$DATI); d_info("Inizio","SOSTITUZIONE","INDI"); $buffer = indi_tpl($buffer,$TXT[$DATI[lang]],0,"#"); $buffer = indi_tpl($buffer,$DATI,0); $buffer = indi_tpl($buffer,$TXT[$DATI[lang]],0,"#"); $buffer = indi_tpl($buffer,$DATI,0); $buffer = indi_tpl($buffer,$TXT[$DATI[lang]],0,"#"); $buffer = indi_tpl($buffer,$DATI,0); $buffer = indi_tpl($buffer,$TXT[$DATI[lang]],0,"#"); $buffer = indi_tpl($buffer,$DATI,0); //pulisco testi $buffer = indi_tpl($buffer,$TXT[$DATI[lang]],1,"#"); //pulisco parentesi $buffer = indi_tpl($buffer,$DATI,1); d_info("->","ACCENTI","INDI"); //$buffer = indi_remove_accents(html_entity_decode($buffer)); //$buffer = indi_transcribe_cp1252_to_latin1($buffer); //$buffer = indi_remove_accents($buffer); //$buffer = indi_transcribe_cp1252_to_latin1($buffer); d_info("<-","ACCENTI","INDI"); d_info("Fine","SOSTITUZIONE","INDI"); //FACCIO UN LOG SPECIALE SE FACCIO IL GRAB if($_SERVER['HTTP_USER_AGENT'] == "INDI_GRAB_LINKGRABBER"){ $b = $DATI["indi_tpl_txt"]; $b = indi_tpl($b,$TXT[$DATI[lang]],0,"#"); $b = indi_tpl($b,$DATI,0); $b = indi_tpl($b,$TXT[$DATI[lang]],0,"#"); $b = indi_tpl($b,$DATI,0); $b = indi_tpl($b,$TXT[$DATI[lang]],0,"#"); $b = indi_tpl($b,$DATI,0); //pulisco testi $b = indi_tpl($b,$TXT[$DATI[lang]],1,"#"); //pulisco parentesi $b = indi_tpl($b,$DATI,1); indi_tpl_file($b); } //Sostituisco i testi //$buffer = indi_out_txt($buffer,$TXT,$DATI["lang"]); return($buffer); } //utili function indi_true($xxx) { if($xxx === TRUE) return TRUE; else return FALSE; } function indi_false($xxx) { if($xxx === FALSE) return TRUE; else return FALSE; } function indi_uguale($uguale1,$uguale2) { if($uguale1 == uguale2) return TRUE; else return FALSE; } if(!function_exists('str_ireplace')){ function str_ireplace($search,$replace,$subject){ $token = chr(1); $haystack = strtolower($subject); $needle = strtolower($search); while (($pos=strpos($haystack,$needle))!==FALSE){ $subject = substr_replace($subject,$token,$pos,strlen($search)); $haystack = substr_replace($haystack,$token,$pos,strlen($search)); } $subject = str_replace($token,$replace,$subject); return $subject; } } // server per mettere salvare in sessione variabili passate via get o post function indi_ssv($var) { if(isset($_REQUEST["$var"])) { if($_SESSION["$var"] != $_REQUEST["$var"]) { //setta la variabile $_SESSION["$var"] = $_REQUEST["$var"]; } } return $_SESSION["$var"]; } //funzione di ridirezione con pagina function indi_redirect($link,$tipo = NULL) { if($GLOBALS['CONF']['force_no_redirect'] == "SI") return NULL; session_write_close(); if($tipo == "permanent") header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$link); exit(); } function indi_redirect_premanent($link) { if($GLOBALS['CONF']['force_no_redirect'] == "SI") return NULL; //if($GLOBALS['CONF']['MEDIA'] == "cdrom") return NULL; session_write_close(); header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$link); exit(); } //funzione di ridirezione con pagina //tipo = permanent (fa' un redirect permanente) function indi_redirect_pagina($pagina,$lingua=NULL,$agg=NULL,$ancora=NULL,$tipo = NULL) { //if($GLOBALS['CONF']['MEDIA'] == "cdrom") return NULL; if($GLOBALS['CONF']['force_no_redirect'] == "SI") return NULL; session_write_close(); global $CONF; if($tipo == "permanent") header("HTTP/1.1 301 Moved Permanently"); header("Location: ".str_replace("&","&",genera_link_email($pagina,$lingua,$agg,$ancora))); exit(); } function indi_redirect_pagina_permanent($pagina,$lingua=NULL,$agg=NULL,$ancora=NULL) { if($GLOBALS['CONF']['force_no_redirect'] == "SI") return NULL; //if($GLOBALS['CONF']['MEDIA'] == "cdrom") return NULL; session_write_close(); global $CONF; header("HTTP/1.1 301 Moved Permanently"); header("Location: ".str_replace("&","&",genera_link_email($pagina,$lingua,$agg,$ancora))); exit(); } function ind_setup() { //creo le directori se non ci sono global $CONF; //se non c'e' la cartella di indi inizializzo if(!file_exists($CONF["dir_indi"].$CONF["file_log_setup"])) { //metto lock apc_store($CONF["sito"],"1"); indi_log_setup("Inizio SETUP $CONF[sito]"); indi_log_setup("Cancello cache indi/_pics"); system("rm -rf indi/_pics"); if(!file_exists($CONF["dir_indi"])) { mkdir($CONF["dir_indi"]); indi_log_setup("mkdir indi"); } if(!file_exists($CONF["dir_indi"].$CONF["dir_pic"])) { mkdir($CONF["dir_indi"].$CONF["dir_pic"]); indi_log_setup("mkdir indi/_pics"); } indi_log_setup("inizio creazione indi/_pics/"); for ($i = 0; $i <= 9; $i++) { mkdir("indi/_pics/$i"); for ($ii = 0; $ii <= 9; $ii++) { mkdir("indi/_pics/$i/$ii"); } } indi_log_setup("fine creazione indi/_pics/"); //tolgo lock apc_store($CONF["sito"],"0"); } } //crea il database se non esiste (da fare) function ind_setup_db() { //controllo il database per l' indicizzazione global $DB,$CONF; if(db_q("SELECT * FROM $CONF[db_tab_log]")) { d_info("OK DB: $DB[database]","ind_setup_db","DATABASE"); return TRUE; } else { d_err("Errore controllo DB $DB[database]","ind_setup_db","DATABASE"); if(db_q("CREATE TABLE `indi_log` ( `id` int(11) NOT NULL auto_increment, `nome` varchar(255) default NULL, `log` text, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1")) { d_info("CREATO TAB: $CONF[db_tab_log]","ind_setup_db","DATABASE"); return TRUE; } else { d_err("Errore creazione TAB o TAB gia esistente: $CONF[db_tab_log]","ind_setup_db","DATABASE"); return FALSE; } } } //trova la cartella in cui risiede il sito function ind_trova_sito() { global $CONFIGURAZIONE; $out = explode("/",$CONFIGURAZIONE); return $out[1]; } function ind_rimuove_duplicati($txt) { /* $txt2 = explode(" ",$txt); while(list($k, $v)=@each($txt2)) { $txt = str_replace(" $v $v "," $v ",$txt); } $txt = preg_replace("/(\w+ \w+) \\1/", '$1',$txt); #reduce doubles to singles $txt2 = explode(" ",$txt); while(list($k, $v)=@each($txt2)) { $txt = str_replace(" $v $v "," $v ",$txt); } */ return $txt; } //crea o torna l' indi //mi cerca una parola con preferenza e relativo peso di preferenza function ind_cerca_parola2($lang,$parola,$peso) { global $INDI,$DATI; reset($INDI); while(list($k, $v)=each($INDI)) { if($v[lang] == "$lang" and $v[link]=="") { //print $peso; //controllo la parola if(@stristr($v[key],$parola)) { if($v[peso] == "$peso") { //assegno il link. return($k); } } //se non trovo nel peso minore lo aumrnto if($v[peso] > $peso) { $peso++; // print "
- INCPESO -> '$peso'"; } } } //se non trova niente torna 0 return -1; } //funzione di ricerca in una stringa separata da | //tipo e' i per non sensibile alle maiuscole e s per sensibile //es indi_cerca("ciao.jpg","jpg|gif|png|) function indi_cerca($stringa,$testo,$tipo=i) { $ARR = explode("|",$stringa); if(sizeof($ARR) == 0) { if(trim(strtolower($stringa)) == trim(strtolower($testo))) return TRUE; } @reset($ARR); while(list($k, $v)=@each($ARR)) { if(trim(strtolower($v)) == trim(strtolower($testo))) return TRUE; } return FALSE; } //non usata per ora function indi_cerca_parte($stringa,$cerca,$tipo=i) { $ARR = explode("|",$stringa); if(sizeof($ARR) == 0) return FALSE; while(list($k, $v)=@each($ARR)) { if(strpos(strtolower($v),strtolower($cerca)) !== 0) return TRUE; } return FALSE; } //prepara tutti i link del sito per essere usati nel menu //usato nel modo non indi function main_link_globale() { global $CONF,$MENU,$LANG,$CONF_MENU,$TXT; $i=1; $l=1; //c3k $is_ordinato = false;//diventa vero solo se è settato ["xxx"]["ord"] in una qualsiasi voce di menu $ordine_menu = 100000;//serve per creare un ordinamento standard che altrimenti non verrebbe mantenuto con una funzione usort o uasot //end c3k $CA1 = array('-','a','a','a','a','a','A','A', 'A','A','e','e','e','E','E','E','i','i','i','I','I', 'I','o','o','o','o','o','O','O','O','O','u','u','u', 'U','U','U','c','C','N','n'); $CA2 = array(' ','á','à','â','ã','ª','Á','À', 'Â','Ã', 'é','è','ê','É','È','Ê','í','ì','î','Í', 'Ì','Î','ò','ó','ô', 'õ','º','Ó','Ò','Ô','Õ','ú', 'ù','û','Ú','Ù','Û','ç','Ç','Ñ','ñ'); $CA2_UTF8 = array_map("utf8_encode", $CA2); $CA3 = array(" ","!","\"","£","$","%","*","#","@",";",":","?","^","&", "£", "¦", "§", "«", "¯", "°", "´","¶", "·", "º", "»","+","--","---"); //faccio il merge reset($MENU); while(list($k, $v)=each($MENU)) { //c3k (da sistemare) $ordine_menu+=100; if(isset($v["xxx"]["ord"])){ $is_ordinato = true; } else{ $MENU[$k]["xxx"]["ord"] = $ordine_menu;//ordinamento } //end c3k //while ($next = next($array)) { //$k = key($array); $v = $array[$k]; reset($LANG); while(list($k1, $v1)=each($LANG)) { // while ($next = next($LANG)) { //$k1 = key($LANG); $v1 = $LANG[$k]; $i++; // faccio il merge con di tutte le pagine; $MENU[$k][$k1] = array_merge($CONF_MENU, (array)$MENU[$k]['xxx'], (array)$MENU[$k][$k1]); //creo link ??? sistemare per lingua e parametri aggiuntivi if($CONF["REW"] == "ver_3" or $CONF["REW"] == "ver_4") { //creo un doppio database per ricerca veloce con chiave alias e con chiave lingua pagina //se c'e' l' alias esplicito if(isset($MENU[$k][$k1]["rew_alias"])) { $rew_alias = $MENU[$k][$k1]["rew_alias"]; if(is_array($GLOBALS["REW_ALIAS"][strtolower($rew_alias)])) { //provo con la lingua $rew_alias = $rew_alias."-".$k1; //ricontrollo if(is_array($GLOBALS["REW_ALIAS"][strtolower($rew_alias)])) { //metto random $rew_alias = $rew_alias."-".rand(100,999); } } //alias automatico con il nome della pagina } elseif($CONF["REW_alias_automatico"] == "SI" and isset($MENU[$k][$k1]["menu_txt"])) { if($CONF["indi_subversion"] < 1) { //$rew_alias = $k1."_".$k."_".str_replace(" ","-",$MENU[$k][$k1]["menu_txt"]); $rew_alias_raw = str_replace(" ","-",$MENU[$k][$k1]["menu_txt"]); //controllo se esiste gia' //?? if(!is_array($GLOBALS["REW_ALIAS"][strtolower($rew_alias_raw)])) $rew_alias = $rew_alias_raw; else $rew_alias = $rew_alias_raw."-".rand(100,999); } else { //$rew_alias = $k1."_".$k."_".str_replace(" ","-",$MENU[$k][$k1]["menu_txt"]); $rew_alias = str_replace(" ","-",$MENU[$k][$k1]["menu_txt"]); //controllo se esiste gia' //?? if(is_array($GLOBALS["REW_ALIAS"][strtolower($rew_alias)])) { //provo con la lingua $rew_alias = $rew_alias."-".$k1; //ricontrollo if(is_array($GLOBALS["REW_ALIAS"][strtolower($rew_alias)])) { //metto random $rew_alias = $rew_alias."-".rand(100,999); } } } } elseif($CONF["REW_alias_gerarchico"] == "SI") { $rew_alias_1 = $MENU[$k][$k1]["menu_txt"]; if(isset($MENU[$k][$k1]["rew_alias"])) $rew_alias_1 = $MENU[$k][$k1]["rew_alias"]; $rew_alias_1_ref = $MENU[$k][$k1]["menu_ref"]; $rew_alias_2 = $MENU[$rew_alias_1_ref][$k1]["menu_txt"]; if(isset($MENU[$rew_alias_1_ref][$k1]["rew_alias"])) $rew_alias_2 = $MENU[$rew_alias_1_ref][$k1]["rew_alias"]; $rew_alias_2_ref = $MENU[$rew_alias_1_ref][$k1]["menu_ref"]; if($rew_alias_2) $rew_alias = $rew_alias_2."/".$rew_alias_1; else $rew_alias = $rew_alias_1; //if(strpos($rew_alias,"##")) str_replace("##invia_amico##", "aa",$rew_alias); $rew_alias = str_replace($CA3,"-",$rew_alias); $rew_alias = str_replace("--","-",$rew_alias); if($CONF[mcharset] == "UTF-8"){ $rew_alias = str_replace($CA2_UTF8,$CA1,$rew_alias); } else { $rew_alias = str_replace($CA2,$CA1,$rew_alias); } //controllo se esiste gia' //?? if(is_array($GLOBALS["REW_ALIAS"][strtolower($rew_alias)])) { //provo con la lingua $rew_alias = $rew_alias."-".$k1; //ricontrollo if(is_array($GLOBALS["REW_ALIAS"][strtolower($rew_alias)])) { //metto random $rew_alias = $rew_alias."-".rand(100,999); } } //XXXXXXXXXXX } elseif($CONF["REW_alias_key"] == "SI" and isset($MENU[$k][$k1]["key"])) { $rew_alias = str_replace(" ","-",$MENU[$k][$k1]["key"]); } else { //costruita $rew_alias = $k1."_".$k; } //costuisco array in base all' alias risultante $GLOBALS["REW_ALIAS"][strtolower($rew_alias)] = array($k,$k1); //$GLOBALS["REW_ALIAS_LWR"][strtolower($rew_alias)] = array($k,$k1); $GLOBALS["REW_ALIAS_INV"][$k1][$k] = $rew_alias; $MENU[$k][$k1]["rew_alias"] = $rew_alias; } } unset($MENU[$k]['xxx']); } //mettere opzione di ordinamento reset($MENU); while(list($k, $v)=each($MENU)) { reset($LANG); while(list($k1, $v1)=each($LANG)) { //genero il link e controllo $MENU[$k][$k1]["link"] = genera_link($k,$k1,$MENU[$k][$k1]["menu_link_agg"]); //assegno la pagina e la lingua $MENU[$k][$k1]["pagina"] = $k; $MENU[$k][$k1]["lang"] = $k1; } } if($is_ordinato){ uasort($MENU, "ordina_menu"); } d_info($i,"Pagine totali","INDI"); d_info(sizeof($LANG),"Lingue totali","INDI"); } function ordina_menu($a, $b){ global $CONF; $l = $CONF["lingua_def"]; if ((!isset($a[$l]["ord"]) && !isset($b[$l]["ord"])) || $a[$l]["ord"] == $b[$l]["ord"]) { return 0; } return ((int)$a[$l]["ord"] < (int)$b[$l]["ord"]) ? -1 : 1; } //funzione per la costruzione di array da stringhe generica di indi function indi_set($OGGETTO) { //controllo se e' un array if (is_array($OGGETTO)) { return $OGGETTO; } else { //tolgo i new line e i tab $OGGETTO = str_replace("\t","",$OGGETTO); $OGGETTO = str_replace("\n","",$OGGETTO); $OGGETTO = str_replace("\r","",$OGGETTO); $OGGETTO2 = explode("|",$OGGETTO); if(sizeof($OGGETTO2) > 0) { while(list($k, $v)=@each($OGGETTO2)) { $OUT = explode("=>",$v); if(sizeof($OUT) > 1) { //Se torna qualcosa, allora torno l' array con chiave valore $chiave = trim($OUT[0]); $valore = $OUT[1]; $OUT2[$chiave] = "$valore"; } else { //siamo nel caso in cui non c'e' la chiave, la aggiungo $OUT2[] = $v; } } return $OUT2; } else { //E' una stringa controllo preseza parentesi //$OUT = ind_parentesi2($OGGETTO,"[","]"); //if($OUT != FALSE) { $OUT = explode("=>",$v); if(sizeof($OUT) >= 1) { //Se torna qualcosa, allora torno l' array con chiave valore $chiave = trim($OUT[0]); $valore = $OUT[1]; $OUT2[$chiave] = "$valore"; return $OUT2; } else { //siamo nel caso in cui non c'e' la chiave, la aggiungo $OUT[0] = $OGGETTO2[0]; return $OUT; } } } } //serve essere inserito all' interno di stringhe e cambiare velocemente visualizzazione function indi_media($media) { global $DATI; return indi_cerca($media,$DATI[MEDIA]); } function indi_media_no($media) { global $DATI; if(indi_cerca($media,$DATI[MEDIA])) return FALSE; else return TRUE; } //################################################################## //########################## FUNZIONI //############################ //################################################################## //funzione per template di configurazione function tconf($template) { GLOBAL $DATI,$TCONF; if (!$template) return 0; $DATI = array_merge($DATI, $TCONF[$template]); } //LOGGA X SETUP e VARIE function indi_log_setup($testo=NULL) { global $CONF; $FILE = $CONF["dir_indi"].$CONF["file_log_setup"]; $LOG = date("d.m.y, g:i a")." ".indi_time()." ->".$testo."\n"; //$LOG .= print_r($_REQUEST, true); //@mail("carlo@tnx.it", "logindi", $LOG); $fp = @fopen($FILE, "a+"); fwrite($fp, $LOG, strlen($LOG)); fclose($fp); //clearstatcache(); } //LOGGA IN UN FILE function indi_log_file($TITOLO,$OGGETTO=NULL,$FILE=NULL) { global $CONF; if($CONF[LOG] == "SI") { if($FILE == NULL) $FILE = $CONF["dir_indi"].$CONF["file_log"]; $LOG = date("d.m.y, g:i a")." ".indi_time()." ->".$TITOLO." ->".$OGGETTO."\n"; //$LOG .= print_r($_REQUEST, true); //@mail("carlo@tnx.it", "logindi", $LOG); $fp = @fopen($FILE, "a+"); fwrite($fp, $LOG, strlen($LOG)); fclose($fp); //clearstatcache(); } else return FALSE; } //INDI TPL IN FILE function indi_tpl_file($OUT) { global $CONF; //if($CONF[LOG] == "SI") { if($FILE == NULL) $FILE = $CONF["dir_indi"].$CONF["indi_tpl_file"]; $LOG = $OUT."\n"; //$LOG .= print_r($_REQUEST, true); //@mail("carlo@tnx.it", "logindi", $LOG); $fp = @fopen($FILE, "a+"); fwrite($fp, $LOG, strlen($LOG)); fclose($fp); clearstatcache(); //} else return FALSE; } function indi_tpl_clear() { global $CONF; if($FILE == NULL) $FILE = $CONF["dir_indi"].$CONF["indi_tpl_file"]; if(!file_exists($FILE)) return; } function indi_log_clear($FILE=NULL) { global $DATI; if(!$DATI) $DATI = $GLOBALS["CONF"]; if($DATI[LOG] == "SI") { if($FILE == NULL) $FILE = $DATI["dir_indi"].$DATI["file_log"]; if(!file_exists($FILE)) return; if(!@unlink($FILE)){ indi_log_file("INDI_LOG", "ATTENZIONE: IMPOSSIBILE CANCELLARE IL FILE DI LOG $FILE", $FILE); } } } //encode in base alla versione del rewrite function indi_urlencode($val) { if($GLOBALS["DATI"]["REW"] != "NO") return str_replace("%2F","%252F",rawurlencode($val)); else return rawurlencode($val); } //encode in base alla versione del rewrite function indi_urldecode($val) { if($GLOBALS["DATI"]["REW"] != "NO") return str_replace("%2F","/",rawurldecode($val)); else return rawurldecode($val); } //genera l' url, si dovrebbe chiamare genera url ... //funzione base di indi function genera_link($pagina=NULL, $lang=NULL, $agg=NULL, $ancora=NULL, $andtype="&",$RAW = 0) { global $DATI,$INDI,$CONF; //CACHE if(isset($GLOBALS['apc_menu_key']) and $DATI['indi_apc'] == "SII") { $apc_tmp = md5(md5($pagina.$lang.$agg.$ancora.$andtype.$RAW).$GLOBALS[md5_DATI].$GLOBALS[apc_menu_key]); $output = apc_fetch($apc_tmp); if($output) { //if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info($apc_tmp, "GENERA_LINK -> APC"); return $output; } } //if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("", "GENERA_LINK"); //metto default if($pagina == NULL) $pagina = $DATI["pagina"]; if($lang == NULL) $lang = $DATI["lang"]; if($ancora !== NULL) $ancora = "#".$ancora; //sistemo variabili in ingresso in caso di errori $lang=trim($lang); $pagina=trim($pagina); //caso pagina root if($pagina == "root") $pagina = $CONF['pagina_def']; //controllo se c'e' opzione menu_ref $pagina_menu_link = $GLOBALS['MENU'][$pagina][$lang]['menu_link']; if($pagina_menu_link != "" and is_array($GLOBALS['MENU'][$pagina_menu_link])) { //cambio pagina $pagina = $pagina_menu_link; } //CONTROLLO se e' stato preinpostato il link in maniera forzata e lo ritorno if(isset($GLOBALS['MENU'][$pagina][$lang]['menu_link_force'])) { $out = $GLOBALS['MENU'][$pagina][$lang]['menu_link_force']; if(isset($apc_tmp)) apc_store($apc_tmp, $out, $DATI['indi_apc_menu_time']); return $out; } //ott per velocita if($agg != "") { //se e' un array if(is_array($agg)) { //costruisco la query ed encodo perche parse_str non decoda while(list($k, $v)=each($agg)) { $query .= "&".indi_urlencode($k)."=".indi_urlencode($v); //creo anche la posizione numerica } $query = "p=".$pagina."&l=".$lang."&".$query; } else { //prima converto tutto in & $agg = str_replace("&","&",$agg); //se sbaglio e metto il punto "?" o "&" lo tolgo ! if($agg{0} == "?") $agg = substr($agg,1,strlen($agg)); if($agg{0} == "&") $agg = substr($agg,1,strlen($agg)); //sistemo link $query = "p=".$pagina."&l=".$lang."&".$agg; } } else { $query = "p=".$pagina."&l=".$lang; } //converto in array per evitare generazione di link infiniti e per consentire la modifica dei parametri via get in maniera agevole parse_str($query,$QUERY_RAW); //rifaccio il ciclo per togliere gli slash che aggiunge il parse if ($CONF['get_magic_quotes_gpc'] == 1) { while (list($key,$val) = each($QUERY_RAW)) { $val = str_replace("\\\'","'",$val); //??????? mistero x php5 $QUERY[stripslashes($key)] = stripslashes($val); } } else { $QUERY = $QUERY_RAW; } //print_r($QUERY); $query = ""; //ricostruisco l' indirizzo while(list($k, $v)=each($QUERY)) { $query .= "&".$k."=".$v; } //tolgo and iniziale $query = substr($query,1,strlen($query)); //converto i parametri in & compatibili $query = str_replace("&","&",$query); //LINK NORMALE $link = "$CONF[nome_programma]?$query$ancora"; //creata per usare l'& normale nei link delle mail (outlook non li converte, testato con mail di testo) if($andtype != "&"){ $link = str_replace("&", $andtype, $link); } //se voglio il link raw senza rewrite e assoluto if($RAW == 1) { if(isset($apc_tmp)) apc_store($apc_tmp, $link, $DATI['indi_apc_menu_time']); return $link; } //se grabbo nel sito metto i link elaborati if($_SERVER['HTTP_USER_AGENT'] == "INDI_HTML_LINKGRABBER"){ HTML_saveLink($link); $link = HTML_link($link); if(isset($apc_tmp)) apc_store($apc_tmp, $link, $DATI['indi_apc_menu_time']); return $link; }elseif($_SERVER['HTTP_USER_AGENT'] == "INDI_GRAB_LINKGRABBER"){ GRAB_saveLink($link); $link = GRAB_link($link); if(isset($apc_tmp)) apc_store($apc_tmp, $link, $DATI['indi_apc_menu_time']); return $link; }elseif($CONF["REW"] == "ver_3") { if($agg != "") { //qui ho quelli normali reset($QUERY); $agg = ""; while(@list($k, $v)=@each($QUERY)) { if($k !== "l" and $k !== "p") { if($v !== "") { if(is_numeric($k) === true and $v !== "") { $agg .= indi_urlencode($v)."/"; } else { $agg .= $k.":".indi_urlencode($v)."/"; } } } } if($agg{0} == "/") $agg = substr($agg,1,strlen($agg)); //rimuovo lo slash in fondo //if($agg{strlen($agg)-1} == "/") $agg = substr($agg,0,strlen($agg)-1); } //cerco nella chiavi if(isset($GLOBALS["REW_ALIAS_INV"][$lang][$pagina])){ // $link = indi_urlencode($GLOBALS["REW_ALIAS_INV"][$lang][$pagina])."/".$agg.$ancora; $link = str_replace("%252F", "/", indi_urlencode($GLOBALS["REW_ALIAS_INV"][$lang][$pagina]))."/".$agg.$ancora; //SMETTE DI FUNZIONARE menu_multi_tpl() (E FORSE ALTRO) QUINDI TOLGO //se due pagine hanno lo stesso alias in lingue diverse, forzo l'aggiunta del parametro l // foreach($GLOBALS[LANG] as $k=>$l) $nomi[] = $GLOBALS["REW_ALIAS_INV"][$k][$pagina]; // if($nomi != array_unique($nomi)) $link .= "l:$lang/"; } else $link = ""; //home page //se posso sovrascrivere sovrascrivo //link personalizzato //link speciale per home page if($pagina == $CONF["pagina_def"] and $lang == $CONF["lingua_def"] and $agg == NULL) { $link = ($CONF["baseurl"]); if(isset($apc_tmp)) apc_store($apc_tmp, $link, $DATI['indi_apc_menu_time']); return $link; } else { $link = ($CONF["baseurl"].$link); if(isset($apc_tmp)) apc_store($apc_tmp, $link, $DATI['indi_apc_menu_time']); return $link; } }elseif($CONF["REW"] == "ver_4") { if($agg != "") { //qui ho quelli normali reset($QUERY); $agg = ""; while(@list($k, $v)=@each($QUERY)) { if($k !== "l" and $k !== "p") { if($v !== "") { if(is_numeric($k) === true and $v !== "") { $agg .= indi_urlencode($v)."/"; } else { $agg .= $k."/".indi_urlencode($v)."/"; } } } } if($agg{0} == "/") $agg = substr($agg,1,strlen($agg)); //rimuovo lo slash in fondo //if($agg{strlen($agg)-1} == "/") $agg = substr($agg,0,strlen($agg)-1); } //cerco nella chiavi if(isset($GLOBALS["REW_ALIAS_INV"][$lang][$pagina])) $link = indi_urlencode($GLOBALS["REW_ALIAS_INV"][$lang][$pagina])."/".$agg.$ancora; else $link = ""; //home page //se posso sovrascrivere sovrascrivo //link personalizzato if(function_exists("post_genera_link")) { $ARR_PGL['link'] = $link; $ARR_PGL['pagina'] = $pagina; $ARR_PGL['lang'] = $lang; $ARR_PGL['agg'] = $agg; $ARR_PGL['ancora'] = $ancora; $link = post_genera_link($ARR_PGL); } //link speciale per home page if($pagina == $CONF["pagina_def"] and $lang == $CONF["lingua_def"] and $agg == NULL) { $link = ($CONF["baseurl"]); if(isset($apc_tmp)) apc_store($apc_tmp, $link, $DATI['indi_apc_menu_time']); return $link; } else { $link = ($CONF["baseurl"].$link); if(isset($apc_tmp)) apc_store($apc_tmp, $link, $DATI['indi_apc_menu_time']); return $link; } //return ($CONF["baseurl"].$link); } else { //link personalizzato if(function_exists("post_genera_link")) { $ARR_PGL['link'] = $link; $ARR_PGL['pagina'] = $pagina; $ARR_PGL['lang'] = $lang; $ARR_PGL['agg'] = $agg; $ARR_PGL['ancora'] = $ancora; $link = post_genera_link($ARR_PGL); } if($pagina == $CONF["pagina_def"] and $lang == $CONF["lingua_def"] and $agg == NULL) { $link = ($CONF["nome_programma"]); if(isset($apc_tmp)) apc_store($apc_tmp, $link, $DATI['indi_apc_menu_time']); return $link; } else { if(isset($apc_tmp)) apc_store($apc_tmp, $link, $DATI['indi_apc_menu_time']); return $link; } //return ($link); } } function genera_relative_link($pagina=NULL, $lang=NULL, $agg=NULL, $ancora=NULL, $andtype="&",$RAW=0){ global $DATI,$CONF; return str_replace($CONF["baseurl"], "", genera_link($pagina, $lang, $agg, $ancora, $andtype,$RAW)); } function genera_link_relativo($pagina=NULL, $lang=NULL, $agg=NULL, $ancora=NULL, $andtype="&",$RAW=0){ global $DATI,$CONF; return str_replace($CONF["baseurl"], "", genera_link($pagina, $lang, $agg, $ancora, $andtype,$RAW)); } function genera_link_relativo_email($pagina=NULL, $lang=NULL, $agg=NULL, $ancora=NULL, $andtype="&",$RAW=1){ global $DATI,$CONF; return str_replace($CONF["baseurl"], "", genera_link($pagina, $lang, $agg, $ancora, $andtype,$RAW)); } //link assoluto function genera_link_assoluto($pagina=NULL, $lang=NULL, $agg=NULL, $ancora=NULL, $andtype="&",$RAW=0){ global $DATI,$CONF; return $CONF["baseurl"].str_replace($CONF["baseurl"], "", genera_link($pagina, $lang, $agg, $ancora, $andtype,$RAW)); } //link ssl function genera_link_ssl($pagina=NULL, $lang=NULL, $agg=NULL, $ancora=NULL, $andtype="&",$RAW=0){ global $DATI,$CONF; $ret = $CONF["baseurl"].str_replace($CONF["baseurl"], "", genera_link($pagina, $lang, $agg, $ancora, $andtype,$RAW)); return str_replace("http://","https://",$ret); } //link ssl function genera_link_email_ssl($pagina=NULL, $lang=NULL, $agg=NULL, $ancora=NULL, $andtype="&",$RAW=1){ global $DATI,$CONF; $ret = $CONF["baseurl"].str_replace($CONF["baseurl"], "", genera_link($pagina, $lang, $agg, $ancora, $andtype,$RAW)); return str_replace("http://","https://",$ret); } function genera_link_email($pagina=NULL, $lang=NULL, $agg=NULL, $ancora=NULL, $andtype="&",$RAW=1){ global $DATI,$CONF; return $CONF["baseurl"].str_replace($CONF["baseurl"], "", genera_link($pagina, $lang, $agg, $ancora, $andtype,$RAW)); } function genera_link_php5($pagina=NULL, $lang=NULL, $agg=NULL, $ancora=NULL, $andtype="&",$RAW=0){ return genera_link($pagina, $lang, $agg, $ancora, $andtype,$RAW); // global $DATI,$CONF; // $dominio = $_SERVER[HTTP_HOST]; // $assoluto = $CONF["baseurl"].str_replace($CONF["baseurl"], "", genera_link($pagina, $lang, $agg, $ancora, $andtype,$RAW)); // // //se sono in locale mando online // //if($DATI["dove_sono"] == "loc") $assoluto = str_replace($CONF["baseurl"], "http://".$CONF["dominio_sito"].":81/", $assoluto); // // $assoluto = str_replace($dominio,$dominio.":81", $assoluto); // return $assoluto; } function genera_link_locale($pagina=NULL, $lang=NULL, $agg=NULL, $ancora=NULL, $andtype="&",$RAW=0){ global $DATI,$CONF; $ret = str_replace($CONF["baseurl"], $CONF["baseurl_locale"].$CONF['sito']."/", genera_link_assoluto($pagina, $lang, $agg, $ancora, $andtype,$RAW)); return $ret; } //Genera l' indirizzo e-mail nascosto con il javascript e tracciato con il programma INRI function genera_email($email=NULL,$testo_link=NULL,$STAT=NULL) { global $DATI; //controllo statistiche if($DATI[STAT] == "SI") $stat = " OnClick='+ prog+'(\"'+dp+'\",\"mail\",\"width=10,height=10\");"; //if(is_array($STAT)) $stat_url = serialize($STAT); $path = "$DATI[nome_programma]?t=stat&stat=".urlencode($stat_url); if($email == NULL) $email = $DATI[email]; if($email != "") { $EMAIL = explode("@",$email); if(isset($EMAIL[2])) $EMAIL[1] = $EMAIL[1]."@".$EMAIL[2]; if($testo_link == NULL) $testo = "emailX=emailE;"; else $testo = 'emailX="'.encode($testo_link).'";'; $email_java = ' '; return $email_java; } } // GENERA //###################################################### /*function genera_BASE() { $HH = $_SERVER["HTTP_HOST"]; $DR = $_SERVER["DOCUMENT_ROOT"]; $SF = $_SERVER["SCRIPT_FILENAME"]; $AA = explode($DR,$SF); $BB = explode("/",$AA[1]); for ($i = 0; $i < sizeof($BB)-1; $i++ ) { $U = $U."/".$BB[$i]; } if (substr($U, 0,1) == "/") return substr($U, 1); else return $U; } */ function genera_BASEURL() { $HH = $_SERVER["HTTP_HOST"]; $DR = $_SERVER["DOCUMENT_ROOT"]; $SF = $_SERVER["SCRIPT_FILENAME"]; $AA = explode($DR,$SF); $BB = explode("/",$AA[1]); for ($i = 0; $i < sizeof($BB)-1; $i++ ) { $U = $U."/".$BB[$i]; } if (substr($U, 1,1) == "/") $U = substr($U, 1); $UU = str_replace("//","/",$HH.$U."/"); return "http://".$UU; } function genera_BASE() { $HH = $_SERVER["HTTP_HOST"]; $DR = $_SERVER["DOCUMENT_ROOT"]; $SF = $_SERVER["SCRIPT_FILENAME"]; $AA = explode($DR,$SF); $BB = explode("/",$AA[1]); for ($i = 0; $i < sizeof($BB)-1; $i++ ) { $U = $U."/".$BB[$i]; } if (substr($U, 1,1) == "/") $U = substr($U, 1); $UU = str_replace("//","/",$U."/"); return $UU; } function genera_dominio() { global $CONF; //if (!stristr($_SERVER['SERVER_NAME'],$CONF[locale])) $sito = $CONF[sito_locale]; //else $sito = $CONF[sito_remoto]; return $CONF[baseurl]; } //FUNZIONI BASE ########################################### //genra il codice per il javascript function genera_javascript() { global $DATI; if($DATI["javascript"] != "") { return("\n\r"); } } function genera_css() { global $DATI; if($DATI["css"] != "") { return("\n\r"); } } //aggiungo del codice javascript nella pagina function javascript($codice) { global $DATI; if ($codice != "") { $DATI["javascript"] .= $codice."\n\r"; } } function css($codice) { global $DATI; if ($codice != "") { $DATI["css"] .= $codice."\n\r"; } } //ripristina i valori provenienti dal GET function ind_valori_agg($agg) { //$origin="http://inri.tnx.dyndns.org/index.php/eng_test1_.html?a=100&b=1000"; //$tab=parse_url($origin); //$query=$tab["query"]; if(@stristr("&",$agg)) { $variables=explode("&",$query); for ($i=0;$i<=count($variables);$i++){ $tab=explode("=",$variables[$i]); // $$tab[0]=$tab[1]; $_GET[$tab[0]] = $tab[1]; } } else { $query=$agg; $variables=explode("&",$query); for ($i=0;$i<=count($variables);$i++){ $tab=explode("=",$variables[$i]); // $$tab[0]=$tab[1]; $_GET[$tab[0]] = $tab[1]; } } } function ind_valori_redirect($agg) { //$origin="http://inri.tnx.dyndns.org/index.php/eng_test1_.html?a=100&b=1000"; //$tab=parse_url($origin); //$query=$tab["query"]; $query=$agg; $variables=explode("&",$query); for ($i=0;$i<=count($variables);$i++){ $tab=explode("=",$variables[$i]); // $$tab[0]=$tab[1]; if($tab[0] !== "") $_GET[$tab[0]] = $tab[1]; } } function indi_simile($a,$b) { $len = strlen($a); $similar = similar_text($a,$b); $out = abs(round((((($len - $similar) / $len)*100))-100)); return $out; } function vemail($e,$v=-1) { global $verbose; /* Return codes: 0: appears to be a valid email 1: didn't match pattern of a valid email 2: looks valid by the pattern, but no DNS records found Try several things to make sure it is most likely valid: 1. preg_match it to make sure it looks valid 2a. If that passes, check for an MX entry for the domain 2b. If no MX, check for any DNS entry for the domain */ if ($v==-1) { $v=$verbose; } if (!preg_match("/^[a-z0-9.+-_]+@([a-z0-9-]+(.[a-z0-9-]+)+)$/i", $e, $grab)) { return 1; } # $grab[0] is the whole address # $grab[1] is the domain $domain = $grab[1]; $cmds = array("host -t MX $domain 2>&1 ","host $domain 2>&1 "); foreach ($cmds as $cmd) { $dns = trim(`$cmd`); if ($v) { print "n"; } if (strpos($dns,"$domain mail is handled ")!==false || strpos($dns,"$domain has address ")!==false || strpos($dns,"$domain is an alias ")!==false) { # It is valid return 0; } } # If it didn't return yet, it's invalid, even though it passed the preg. return 2; } //FUNZIONE DI RISOSTITUZIONE 1=1 function indi_cambia_par($str){ $GLOBALS['indi_cambia_par'] = TRUE; $trans = array("|" => "<|>", "," => "<,>", "(" => "<(>", ")" => "<)>"); $return = strtr($str, $trans); // return $return ? $return : null; return $return; } function indi_cambia_par_r($str){ $trans = array("<|>" => "|","<,>" => ",", "<(>" => "(","<)>" => ")"); return strtr($str, $trans); } //FUNZIONCIONA AIUTO AIUTO function indi_tpl($testo,$ARR,$pulisci=0,$tipo="G") { global $DATI,$TXT; //cache /* if(isset($GLOBALS['apc_menu_key']) and $DATI['indi_apc'] == "SI" and count($ARR) > 200) { $apc_key = md5($testo.serialize($ARR).$pulisci.$tipo).$GLOBALS['md5_TXT'].$GLOBALS['md5_DATI']; $out = apc_fetch($apc_key); if($out) { d_info($apc_key, "INDI_TPL -> APC"); return $out; } } */ //if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("", "INDI_TPL"); //gestione caratteri strani $GLOBALS['indi_cambia_par'] = FALSE; //d("$pulisci $tipo","TPL"); //$tit = $tit+1; //d($tit); if($tipo === "G") { $sx="{"; $sx1="{"; $dx="}"; $dx1="}"; $c="{}"; } if($tipo === "Q") { $sx="["; $sx1="\["; $dx="]"; $dx1="\]"; $c="\[\]"; } if($tipo === "#") { $sx="##"; $sx1="##"; $dx="##"; $dx1="##"; $c="#"; } //if(count($ARR) == 0) return $testo; if(strpos($testo,$sx) === FALSE) { if(isset($apc_key)) apc_store($apc_key, $testo, $DATI['indi_apc_menu_time']); return $testo; } //@reset($ARR); //controllo ???? if($pulisci != 1) $pattern = '/'.$sx1.'([^'.$c.']*?)'.$dx1.'/si'; //else $pattern = '/'.$sx1.'([^'.$c.';:\r\n]*?)'.$dx1.'/si'; //metto il ; per i javascript {return;} come questi //carlo e marco cecca: provo a far funzionare il {} dentro javascript di analytics else $pattern = '/'.$sx1.'([^'.$c.';:\r\n]*?)'.$dx1.'(?!<\/script>)/si'; //metto il ; per i javascript {return;} come questi preg_match_all ($pattern, $testo, $matches); if(is_array($matches[1])) { while(list($k, $v)=each($matches[1])) { //effettua la sostituzione senza lasciare traccia //controllo se c'e' un template di formattazione //->$v e la chiave tra graffe //->$ARR[$v] e' il valore //d($v,"v"); //d($ARR[$v],"ARR"); //{TXT:ciao a tutti} //ricontrollo se ha altri template all' interno if(strstr($v,"|")) { $orig_tpl = pos(explode("|",$v)); //$REP[$k] = indi_formatta($v,$ARR[$orig_tpl]); if($pulisci != 1) { //nel caso non trovo la sostituzione e non ci sia un inizio di funzione if(isset($ARR[$orig_tpl]) === FALSE) { // print str_replace("##","??",$v); //and stristr($v,"TXT:") === FALSE /*if(strpos($orig_tpl,"##") !== FALSE) { $txt = indi_out_txt($orig_tpl,$TXT,$DATI["lang"]); $REP[$k] = indi_formatta($v,$txt); } else $REP[$k] = $sx.indi_formatta($v,$ARR[$orig_tpl],$orig_tpl).$dx;*/ $REP[$k] = $sx.$v.$dx; } //formatto else { $REP[$k] = indi_formatta($v,$ARR[$orig_tpl],$orig_tpl); $REP[$k] = indi_cambia_par($REP[$k]); } //else $REP[$k] = indi_tpl($ARR[$orig_tpl],$ARR,$pulisci,$tipo); } else { //!!!pulisco e accetto anche i testi diretti sempre da template, solo se formatto con | //if(isset($ARR[$orig_tpl]) === FALSE) $ARR[$orig_tpl] = $orig_tpl; $REP[$k] = indi_formatta($v,$ARR[$orig_tpl]); $REP[$k] = indi_cambia_par($REP[$k]); } } //se non c'e' non formatto niente else { if($pulisci != 1) { if(isset($ARR[$v]) === FALSE) { $REP[$k] = $sx.$v.$dx; //and stristr($v,"TXT:") === FALSE //$REP[$k] = indi_tpl("{".$v."}",reset($DATI)); //d($REP[$k]); } else { //$REP[$k] = indi_tpl("{".$v."}",reset($DATI)); $REP[$k] = $ARR[$v]; $REP[$k] = indi_cambia_par($REP[$k]); } } else { $REP[$k] = $ARR[$v]; $REP[$k] = indi_cambia_par($REP[$k]); } } //d($REP[$k]); //$xx = $REP[$k]; //$REP[$k] = indi_tpl($REP[$k],reset($DATI)); if($GLOBALS["CONF"]["DEBUG"] == "SI" && !$REP[$k] && $pulisci) d_info("manca la traduzione di ".$v." ".indi_var_dump($REP[$k]), "sostituzione testi", "SITO"); // trova_var($v, get_defined_vars());die; } //sostituisco solo cosa ho trovato //d($matches[0],"KIAVI"); //d($REP,"REPLACE"); $out = str_replace($matches[0], $REP, $testo); if($GLOBALS[indi_cambia_par]) $out = indi_cambia_par_r($out); if(isset($apc_key)) apc_store($apc_key, $out, $DATI['indi_apc_menu_time']); return $out; } else { if(isset($apc_key)) apc_store($apc_key, $testo, $DATI['indi_apc_menu_time']); return $testo; } } function text4flash($text){//uso questa perchè su uso urlencode mi traduce anche le accentate e poi flash non le visualizza //UPDATE 13/12/07 aggiunto il + tra le sostituzioni, per velocizzare uso i paramentri array invece che il ciclo // $chars = array( // array("&", "%26"), // array("+", "%2B"), // array('"', '\"'), // array(" ", "+"), // ); // $text = strip_tags($text); if(!in_array($GLOBALS['DATI']['sito'], array("toscanalamiere"))) if($text != strip_tags($text)) indi_debug_email("carlo@tnx.it", "vengono visualizzati caratteri html nel flash di ".$GLOBALS['DATI']['sito']." (flash)", "aggiungi le eccezioni in ".__FILE__." linea ".__LINE__); $text = html_entity_decode($text); // foreach($chars as $char){ // $text = str_replace($char[0], $char[1], $text); // } $text2 = str_replace(array("&","+",'"'," ", "\n", "\r"), array("%26","%2B",'\"',"+","+","+"), $text); $text = str_replace(array("%", "&","+",'"'," ", "\n", "\r"), array("%25", "%26","%2B",'\"',"+","+","+"), $text); // TOLTO il 28/07/2009, tenuto per un po' ora sembra tutto ok. c3k. // if($text != $text2){ // if(!in_array($GLOBALS['DATI']['sito'], array("anse","raccianello","weddingsintuscany"))) indi_debug_email("carlo@tnx.it", "encodato % per ".$GLOBALS['DATI']['sito']." (flash)", "aggiungi le eccezioni in ".__FILE__." linea ".__LINE__); // } return $text; } function string4js($string, $delimiter = '"'){ return $delimiter.str_replace(array($delimiter,"\n"), array('\\'.$delimiter," "), $string).$delimiter; } function cakeBoot(){ d_info("Inizio","benchmark inclusione CAKE","INDI"); if (!defined('AUTO_SESSION')) define('AUTO_SESSION', false); //includo struttura cake $dir = $GLOBALS["DATI"]["CAKE_DIR"]; if(!$dir) $dir = "cake"; require_once("$dir/webroot/index.php"); d_info("Fine","benchmark inclusione CAKE","INDI"); } function cakeLoginInfo(){ if(empty($_SESSION['othAuth'])) return false; cakeBoot(); App::import('Component', 'othAuth'); $O = new othAuthComponent(); $k = $O->hashkey;//trovo la chiave random usata da othauth return is_array($_SESSION['othAuth'][$k]) ? $_SESSION['othAuth'][$k] : false;//potrebbe esserci dentro anche frompage (stringa) } //CAKE function cakePage($url_to_render = null){//prende la parte dopo l'alias e la passa come parametri alla pagina del cake (non la posso usare perchè il componente della paginazione del cake genera i link sempre con il prefisso della pagina cake) if(!$GLOBALS["DATI"]["CAKE"]) return; if(empty($url_to_render)){ $paramas = indi_urldecode(strstr($GLOBALS[REW_QUERY_PATH], "/"));//prendo la parte dell'indirizzo dopo l'alias della pagina indi (i parametri per la funzione cake) //quoto perche se sono quotate in automativo if (get_magic_quotes_gpc() == 1) $paramas = addslashes($paramas); $paramas = str_replace($GLOBALS["DATI"]["cake_url"], "", $paramas); //controllo (ed eventualmente tolgo) che non ci sia già la pagina cake nei parametri (come nel caso della paginazione) if(empty($paramas) || $paramas == "/"){ $url_to_render = $GLOBALS["DATI"]["cake_url"]; } else{ if(substr($paramas, 0, 1) == "/"){ //se comincia con / la tolgo $paramas = substr($paramas, 1); } $url_to_render = $GLOBALS["DATI"]["cake_url"] . $paramas; } } d_info('Renderizzo la pagina cake: '.$url_to_render, "", "CAKE"); // //ATTENZIONE CHE STO COSO SOPRASCIVE LE VARIABILE (ad es. $url) // include_once(CORE_PATH . 'cake' . DS . 'bootstrap.php'); cakeBoot(); //if($_GET['dbg'] != 1) ob_start();//se voglio vedere gli errori del cake non posso bufferare l'output //update: NON SI VEDE NEANCHE COSI'... ob_start(); $Dispatcher = new Dispatcher(); $Dispatcher->dispatch($url_to_render); //if($_GET['dbg'] != 1) return ob_get_clean(); return ob_get_clean(); } function indi_vendor($path){//funzione cakephp style per l'inclusione di librerie esterne if (file_exists($GLOBALS["DATI"]["dir_lib"] . $path . '.php')) { require_once($GLOBALS["DATI"]["dir_lib"] . $path . '.php'); } elseif (file_exists($GLOBALS["DATI"]["dir_lib"] . $path)) { require_once($GLOBALS["DATI"]["dir_lib"] . $path); } else { return false; } } function dircopy($srcdir, $dstdir, $verbose = false) { global $_indi_gc_err; $num = 0; if(!is_dir($dstdir)) mkdir($dstdir); if($curdir = opendir($srcdir)) { while($file = readdir($curdir)) { if($file != '.' && $file != '..') { $srcfile = $srcdir . '/' . $file; $dstfile = $dstdir . '/' . $file; if(is_file($srcfile)) { //copio solo se la cartella non è presente if(is_file($dstfile)) { //$ow = filemtime($srcfile) - filemtime($dstfile); else $ow = 1; $ow = 0; } else { $ow = 1; } if($ow > 0) { if($verbose) echo "Copying '$srcfile' to '$dstfile'..."; if(copy($srcfile, $dstfile)) { touch($dstfile, filemtime($srcfile)); $num++; if($verbose) echo "OK\n"; d_info("COPIATO file: $srcfile","dircopy","INDI"); } else { $_indi_gc_err[] = d_err("Errore copia file: $srcfile","FILE","INDI"); echo "Error: File '$srcfile' could not be copied!\n"; } } } else if(is_dir($srcfile)) { $num += dircopy($srcfile, $dstfile, $verbose); } } } closedir($curdir); } return $num; } ?>