function indi_mt_shuffle($array){
if(count($array) == 1 || count($array) == 0){
return $array;
} else {
$randomKeys = array();
$max = count($array);
foreach($array as $k => $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_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;
}
?>