//########################################################################
//###################### VISUALIZZAZIONE SITO ########################
//########################################################################
//indi boot finito
//variabili ok, menu ok, lingue ok
$DATI['indi_boot'] = 1;
if($_GET["getGurl"]) {
$agg = $DATI['agg_array'];
unset($agg['getGurl']);
echo "{".indi_htmlentities("|gurl(".$DATI['pagina'].",,".http_build_query($agg).")")."}";
die;
}
//limite tempo di esecuzione frontend se non è cambiato nel frattempo
if($DATI["indi_max_execution_time"]) set_time_limit($DATI["indi_max_execution_time"]);
//JOBS
//start del jobs da background o GET, valutare se spostare prima
if(isset($_GET['job'])) {
//sleep(6);
// trigger_error("I jobs via get credo sono deprecati, non lo lancio");
return;//il trigger error sopra c'è stato per anni.......
$_job = indi_job_start("Start from GET",$_GET['job'],"running",$_GET['job_uid']);
if($_job == FALSE){
//se è già in esecuzione blocco lo script
indi_job_error("Blocco esecuzione indi_job_start e relativa pagina!",$_GET['job']);
exit; //ferma esecuzione PAGINA
}
}
//########################################################################
//###################### AMFPHP ########################
//########################################################################
if($_GET['t'] == "flashrpc"){
chdir($CONF['libPath']."amfphp/");
include("gateway.php");
die();
}
if($_SESSION["sito_vis"] != "NO" or ($_GET["sito_vis"] == "SI" and $_SESSION["sito_vis"] == "NO")) {
if($CONF['tabellaSitemapAggiorna']){
//setto subito il PID in modo che l'admin sappia quanto prima che sto avviando l'operazione, gli include possono ritardare questa operazione
tabellaSitemapAggiornaSetPID();//segnalo alle altre eventuali sessioni precendenti che sono in attesa di partire
}
#######################################
//############# ANTISPAM ##############
#######################################
//Non becca le richieste ajax, che non dovrebbero passare per via del javascript
if($DATI["FORM_ANTISPAM"] == "SI") {
if(count($_POST) > 0 and
(
//primo controllo classico
(trim($_POST["name_ifa"]) != "" )
//controllo i due campi di controllo se vengono modificati
//or (isset($_POST["FORM"]["test_ifa"]) and $_POST["FORM"]["test_ifa"] != "trfgbhyrds_xx")
//or (isset($_POST["FORM"]["test_ifa2"]) and $_POST["FORM"]["test_ifa2"] != "ifa2")
//controllo specifico per i form di indi
or (is_array($_POST["FORM"]) && count($_POST["FORM"]) > 0 and !stristr(serialize($_POST),"name_ifa"))
or (is_array($_POST["FORM_GEST"]) && count($_POST["FORM_GEST"]) > 0 and !stristr(serialize($_POST),"name_ifa"))
//manca controllo html su textarea
//oppure ci sono i campi di controllo ma e' stato tolto uno degli altri
//or (isset($_POST["FORM"]["test_ifa"]) and (!isset($_POST["name_ifa"]) or !isset($_POST["FORM"]["test_ifa2"])))
//or (isset($_POST["FORM"]["test_ifa2"]) and (!isset($_POST["name_ifa"]) or !isset($_POST["FORM"]["test_ifa"])))
//aggiuntivi da bloccare
//or (trim($_POST[FORM][email]) == "df@fg.com") //labella toscana 29/10/2012
)
) {
//log ed email
//indi_debug("FORM_ANTISPAM (".$_SERVER['REMOTE_ADDR']." ".$_POST[FORM][email].")", "monitortnx@gmail.com");
if(is_array($_POST["FORM"])) indi_log("FORM_ANTISPAM (".$_SERVER['REMOTE_ADDR']." ".$_POST['FORM']['email'].")");
//annullo tutto
$_POST = array();
$_GET = array();
$_REQUEST = array();
$_SESSION = array();
}
//cancello la variabile
unset($_POST["name_ifa"]);
if(is_array($_POST["FORM"])){
unset($_POST["FORM"]["test_ifa"]);
unset($_POST["FORM"]["test_ifa2"]);
if(count($_POST["FORM"]) == 0) unset($_POST["FORM"]);//se non ci sono elementi
}
unset($_REQUEST["name_ifa"]);
if(is_array($_REQUEST["FORM"])){
unset($_REQUEST["FORM"]["test_ifa"]);
unset($_REQUEST["FORM"]["test_ifa2"]);
if(count($_REQUEST["FORM"]) == 0) unset($_REQUEST["FORM"]);//se non ci sono elementi
}
}
if($DATI["INDI_BUFFER"]) ob_start();
//################################################################
//###################### AZIONI MODULI O ALTRO ################
//################################################################
d_info("Inizio","MODULI ACTION","INDI");
//pre module
if(function_exists(pre_module_action_function)) pre_module_action_function();
indi_do_action(pre_module);
//syncronizzo database se necessario (le funzioni sono in admin.inc.php)
if($CONF['admin_db_sync'] == "SI") {
d_info("Inizio","admin_db_sync","INDI");
if($CONF['admin_db_sync_auto'] == "SI" or $_GET['indi_admin_db_sync'] == 1 and (!$_REQUEST["dbg"] and !$_REQUEST["amministrazioneIndi"])) {
//includo conf
if($CONF['admin_db_sync_file'] and is_file($CONF['admin_db_sync_file'])) {
include($CONF['admin_db_sync_file']);
}
//richiamo funzione
indi_start_db_update();
}
d_info("Fine","admin_db_sync","INDI");
}
if ($CONF['mod_apache_autoconf'] == "SI") mod_apache_autoconf_init();
if ($CONF['mod_auth'] == "SI") auth_pre_page_action();
//FUNZIONE DA ESEGUIRE PRIMA DI ALTRE PRE ACTION
if($DATI["pre_page_action"] != "") {
d_info("Inizio","PRE_ACTION","INDI");
$DATI["pre_page_action"]();
d_info("Fine","PRE_ACTION","INDI");
}
if ($CONF['mod_carr'] == "SI"||$CONF['mod_carr2'] == "SI") {
carr_pre_page_action();
}
if ($CONF['mod_smarty'] == "SI") {
smarty_pre_page_action();
}
if ($CONF['mod_xfiles'] == "SI") {
xfiles_pre_page_action();
}
if ($CONF['mod_html'] == "SI") {
html_pre_page_action();
}
if ($CONF['mod_grab'] == "SI") grab_pre_page_action();
if ($CONF['mod_moduli'] == "SI") { //???da finire
d("m");
mod_moduli_init_real();
d("m");
mod_moduli_init();
d("m");
}
d_info("Fine","MODULI ACTION","INDI");
indi_do_action(post_module);
//######################################################
//###################### REDIRECTS ##################
//######################################################
//controllo se c'e' menu link e faccio il redirect forzato
if(!$DATI['disable_menu_link'] && $DATI['menu_link'] != "" && is_array($MENU[$DATI['menu_link']])) {
indi_redirect_pagina($DATI['menu_link']);
}
//controllo se c'e' menu_link_force e faccio il redirect
if($DATI['menu_link_force'] != "" && !$CONF['tabellaSitemapAggiorna'] && !$_GET['t']/*10/6/2020 controllo che non ci sia t, altrimenti saltano privacy/cookie con un menu_link_force su homepage*/) {
indi_redirect($DATI['menu_link_force']);
}
//##########################################################
//###################### TEMPLATE ###################
//##########################################################
if($CONF['mod_templating'] != "SI") { //niente pagina inc
//controllo se e' pagina di menu
//###################### PAGINA_INC ########################
//creo variabile pagina_inc usata in indi per semplificare l' inclusione dei file relativi alle pagine nel menu
$DATI['pagina_inc'] = str_replace("../","",$DATI['pagina_inc']); //per sicurezza
if($DATI['pagina_inc'] == "") $DATI["pagina_inc"] = $DATI["pagina"];
d_info($DATI["pagina_inc"],"pagina_inc","INDI");
if (@is_file($DATI["dir_pagine"].$DATI["pagina_inc"])) $DATI["pagina_inc"] = $DATI["dir_pagine"].$DATI["pagina_inc"];
elseif (@is_file($DATI["dir_pagine"].$DATI["pagina_inc"]."_".$lang.".inc.php")) $DATI["pagina_inc"] = $DATI["dir_pagine"].$DATI["pagina_inc"]."_".$lang.".inc.php";
elseif (@is_file($DATI["dir_pagine"].$DATI["pagina_inc"].".inc.php")) $DATI["pagina_inc"] = $DATI["dir_pagine"].$DATI["pagina_inc"].".inc.php";
elseif (@is_file($DATI["dir_pagine"].$MENU[$DATI[menu_ref]]["$lang"]["pagina"].".inc.php")) $DATI["pagina_inc"] = $DATI["dir_pagine"].$MENU[$DATI['menu_ref']]["$lang"]["pagina"].".inc.php";
//da fare per cartella gruppo o cartella riferimento
elseif (@is_file($DATI["dir_pagine"].$DATI['menu_ref']."/".$DATI["pagina_inc"].".inc.php")) $DATI["pagina_inc"] = $DATI["dir_pagine"].$DATI['menu_ref']."/".$DATI["pagina_inc"].".inc.php";
elseif (@is_file($DATI["dir_pagine"].$DATI['indi_menu_ref_1']."/".$DATI["pagina_inc"].".inc.php")) $DATI["pagina_inc"] = $DATI["dir_pagine"].$DATI['indi_menu_ref_1']."/".$DATI["pagina_inc"].".inc.php";
elseif (@is_file($DATI["dir_pagine"].$DATI['indi_menu_ref_1']."/".$DATI['indi_menu_ref_2']."/".$DATI["pagina_inc"].".inc.php")) $DATI["pagina_inc"] = $DATI["dir_pagine"].$DATI['indi_menu_ref_1']."/".$DATI['indi_menu_ref_2']."/".$DATI["pagina_inc"].".inc.php";
elseif (@is_file($DATI["dir_pagine"].$DATI['indi_menu_ref_2']."/".$DATI["pagina_inc"].".inc.php")) $DATI["pagina_inc"] = $DATI["dir_pagine"].$DATI['indi_menu_ref_2']."/".$DATI["pagina_inc"].".inc.php";
elseif (@is_file($DATI["dir_pagine"].$DATI['indi_menu_ref_1']."/".$DATI['indi_menu_ref_2']."/".$DATI['indi_menu_ref_3']."/".$DATI["pagina_inc"].".inc.php")) $DATI["pagina_inc"] = $DATI["dir_pagine"].$DATI['indi_menu_ref_1']."/".$DATI['indi_menu_ref_2']."/".$DATI['indi_menu_ref_3']."/".$DATI["pagina_inc"].".inc.php";
elseif (@is_file($DATI["dir_pagine"].$DATI["pagina_inc"].".php")) $DATI["pagina_inc"] = $DATI["dir_pagine"].$DATI["pagina_inc"].".php";
//elseif (@is_file($DATI["pagina_inc"])) {}
else {
$pagina_inc_err = 1;
//d_err("Errore include pagina pagina_inc($pagina)");
//indi_404();
//indi_log_file("Errore include pagina pagina_inc($pagina)");
//404 + noindex, redirect in home page ed e-mail
//
//indi_dev_email("[PHP] Err include pagina ($pagina) [".$DATI["baseurl2"].$_SERVER['REQUEST_URI']."]");
//indi_redirect_pagina($DATI['pagina_def']);
}
d_info($DATI["pagina_inc"],"pagina_inc","INDI");
if(!$pagina_inc_err) {
$indi_file_size .= filesize($DATI["pagina_inc"]);
//if($CONF['VERSIONING'] == "AUTO") $indi_versioning_array[$DATI["pagina_inc"]] = "pagina";
}
}
//###################### GESTIONE INCLUDE ########################
d_info("Inizio","INCLUDE","INDI");
indi_do_action(pre_include);
foreach($DATI as $k => $v ) if(is_string($v)){
$kk = trim(substr($k,0,strpos($k,":")));
if($kk == "file") {
if(trim($v) != "NO" and $v != "") {
$indi_file_include = substr($k,strlen($kk)+1);
$indi_file_include = indi_tpl($indi_file_include,$DATI,1);
// $GLOBALS['time3k'][$indi_file_include] = -microtime(true);
if(indi_estensione_file($indi_file_include,"php")){
$funzione = '';//devo fare i due if prima di fare l'include/require, altrimenti mi può sovrascrivere $v
if(stristr($v,"INC")) {
$funzione = "include";
}
else if(stristr($v,"REQ")) {
$funzione = "require";
}
if($funzione){
if(@is_file($indi_file_include)) {
if($_GET['debugBootOutput2']){
echo $indi_file_include."
";
$out = ob_get_clean();
echo $out;
if($out) die();
}
if($funzione == 'include') include($indi_file_include);
else if($funzione == 'require') require($indi_file_include);
$indi_file_size .= @filesize($indi_file_include);
//if($CONF['VERSIONING'] == "AUTO") $indi_versioning_array[$indi_file_include] = "include";
d_info("$indi_file_include","FILE","INDI");
} else d_err("Errore non esiste: $indi_file_include","FILE","INDI");
}
}
// if($GLOBALS['time3k']) $GLOBALS['time3k'][$indi_file_include] += microtime(true);
// if($GLOBALS['time3k']) $GLOBALS['time3k'][$indi_file_include] = round($GLOBALS['time3k'][$indi_file_include]*10)/10;
}
}
}
//pulisco
unset($v);
unset($k);
unset($kk);
indi_do_action(post_include);
d_info("Fine","INCLUDE","INDI");
if($CONF['tabellaSitemapAggiorna']){
$CONF["tabellaSitemapUsaTransazioni"] = false;
$CONF["tabellaSitemapUsaLockTables"] = false;
$CONF["tabellaSitemapUsaSemafori"] = function_exists("sem_acquire");
if(!$CONF["tabellaSitemapUsaSemafori"]){
$InnoDB = @db_qrs("SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '".$DB['database']."' AND TABLE_NAME = 'sitemap';") == 'InnoDB';
if($InnoDB) $CONF["tabellaSitemapUsaTransazioni"] = true;
else $CONF["tabellaSitemapUsaLockTables"] = true;
}
if($CONF["tabellaSitemapUsaSemafori"]){
tabellaSitemapAggiornaSemaforo(true);//attendo eventuale termine di altri e acquisisco blocco
}
if($CONF["tabellaSitemapUsaSemafori"] && !tabellaSitemapAggiornaAmILastRunningPID()){
//aspettando il semaforo potrebbero essersi accodati più processi e io quindi questo non essere l'ultimo
$res = false;
}
else{
if($CONF["tabellaSitemapUsaTransazioni"]) db_q("START TRANSACTION");
$res = indiTabellaSitemapAggiorna($CONF["tabellaSitemapPrimaImportazione"]);//ritorna false se si interrompe rilevando un altro processo
if($CONF["tabellaSitemapUsaTransazioni"]) db_q($res ? "COMMIT" : "ROLLBACK");
}
if($CONF["tabellaSitemapUsaSemafori"]) tabellaSitemapAggiornaSemaforo();//sblocco semaforo
if($res){
//devo essere sicuro al 100% di essere l'ultimo processo partito, altrimenti azzerando lo interromperei, perchè 0 != ultimoPID
if(tabellaSitemapAggiornaAmILastRunningPID()) tabellaSitemapAggiornaSetPID(0);//svuoto PID
}
// else{
// $msg = "Interrompo la generazione della sitemap perchè è partito un processo dopo di me (io sono ".getmypid().", ".tabellaSitemapAggiornaKey()." è ".tabellaSitemapAggiornaGetLastRunningPID().")";
// trigger_error($msg);
// }
if($GLOBALS['indi_error_messages']){
die(implode("
", $GLOBALS['indi_error_messages']));
}
else if($CONF["tabellaSitemapPrimaImportazione"]){
$url = "http".(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 's' : '')."://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
//Serve per generare eventuali 301 subito (altrimenti verrebbero generati al successivo tabellaSitemapAggiorna)
//qui $MENU è già riempito con gli alias della vecchia rewrite quindi meglio ricaricare invece di tentare una simulazione richiamando indiTabellaSitemapAggiorna()
//il parametro tabellaSitemapAggiorna deve ncessariamente essere passato in maniera standard
//in caso di haproxy questa seconda chiamata potrebbe andare su altro server in cui la tabella non è ancora aggiornata, facendo partire un altro import (non posso leggere il cookie per alla prima chiamata non c'è, viene impostato con la risposta): non mi sbatto oltre perchè nessun sito su haproxy avrà tabellaSitemap=import, o sarà già importato (e posso passarlo a true) o avrà true dalla nascita
// file_get_contents(
// $CONF['baseurl']."?fromPrimaImportazione=".rawurlencode($url)."&fromIp=".$_SERVER['REMOTE_ADDR']."&tabellaSitemapAggiorna=1&tabellaSitemapImportTest=".$_GET['tabellaSitemapImportTest']
// );
//con questo creo sia i 301, sia aggiorno gli altri host, se presenti
tabellaSitemapAggiornaMultiHost();
$hosts = indiGetAllHosts();
$cambiati = db_qa("
SELECT
old.uri as old,
new.uri as new
FROM
sitemap AS old
LEFT JOIN sitemap AS new ON old.pagina = new.pagina AND old.lang = new.lang AND old.rewId = new.rewId AND new.`status` = 200 AND old.host = new.host
WHERE
old.`status` = 301
AND old.host IN ('".implode("','", $hosts)."')
");
$invariati = db_qa("
SELECT
old.uri as old
FROM
sitemap AS old
LEFT JOIN sitemap AS new ON old.id != new.id AND old.pagina = new.pagina AND old.lang = new.lang AND old.rewId = new.rewId AND old.host = new.host
WHERE
old.uri NOT IN ('robots.txt', 'sitemap')
AND old.rewId = 0
AND old.`status` = 200
AND new.id IS NULL
AND old.host IN ('".implode("','", $hosts)."')
");
$corpo = "triggerato da $url
".count($invariati)." url invariati
".count($cambiati)." redirect 301 creati
\r\n";
if($cambiati){
$corpo .= "redirect 301 creati
\r\n";
foreach($cambiati as $cambiato){
$corpo .= "
".indi_htmlentities($cambiato['old'])."/
↓
".indi_htmlentities($cambiato['new'])."/\r\n";
}
}
if($invariati){
$corpo .= "url invariati
\r\n";
foreach($invariati as $invariato){
$corpo .= indi_htmlentities($invariato['old'])."/
\r\n";
}
}
indi_dev_email("Report prima importazione tabellaSitemap $_SERVER[HTTP_HOST] $DATI[nome_sito]", $corpo);
$url = str_replace("tabellaSitemapTruncate=1", "", $url);//loopa altrimenti
indi_redirect($url);//ricarico la pagina corrente perchè questa esecuzione comunque non può proseguire e potrei anche ricevere un 301
}
else if($CONF['tabellaSitemapForzaAggiornamentoLive']){
//continuo l'esecuzione, ma le mappe dei link non sono avvalorate
}
else{
//non posso continuare l'esecuzione della pagina perchè le mappa dei link non sono avvalorate (indiLeggiTabellaSitemap non è stato chiamato)
header('HTTP/1.0 200 Found');//alcuni vecchi siti sulla home con parametri danno 404 (confagrisiena rew_3), serve 200 per la chaiamta server su server da admin
// ob_get_clean();
die($res ? "ok" : "KO");
}
}
if($CONF["tabellaSitemapPronta"]){
// if($_GET['p'] == 'sitemap' /*penso a "&& !$MENU[sitemap]" per eventuali personalizzazioni*/){
// indiTabellaSitemapXmlOutput();//fa die;
// }
$rewIdAlias = $MENU[$DATI['pagina']][$lang]["rewIdAlias"];
if($rewIdAlias && $_GET[$rewIdAlias]){
$current = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$pos = strpos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME']);
if($current != str_replace(["http://", "https://"], "", $_SERVER['HTTP_REFERER']) /* qualche spider (archive.org_bot) mette come referrer lo stesso url che visita a volte con protocollo diverso */ && ($DATI['dove_sono'] == 'loc' || ($_SERVER['HTTP_REFERER'] && $pos && $pos<9 && !is_spider()))){
trigger_error("Attenzione, questo link usa il vecchio formato, controllare dove viene generato. Referer: ".$_SERVER['HTTP_REFERER']);
}
indi_redirect_permanent(genera_link_agg(null,null,array("id"=>null, "rewId"=>$_GET[$rewIdAlias])));
}
else if($rewIdAlias){
$_GET[$rewIdAlias] = $_GET['rewId'];
}
}
//#####################
//genero md5 di DATI per cache
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info($md5_DATI,"md5_DATI inizio");
$md5_DATI = md5(serialize($DATI));
$DATI[md5_DATI] = $md5_DATI;
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info($md5_DATI,"md5_DATI fine");
//genero md5 per TXT
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info($md5_TXT,"md5_TXT inizio");
$md5_TXT = md5(serialize($TXT));
$DATI[md5_TXT] = $md5_TXT;
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info($md5_TXT,"md5_TXT fine");
//###################### TEMPLATE ########################
d_info("Inizio","TEMPLATE","INDI");
//da fare gestione template di base
//pre template
if(function_exists(pre_page_function)) pre_page_function();
d_info("Inizio","TEMPLATE","pre_template prima");
indi_do_action(pre_template);
d_info("Inizio","TEMPLATE","pre_template dopo");
//###################### AZIONE PDF (DEPRECATA) #########################
if($_GET['indi_genera_pdf'] == 1) {
if($_GET["nome_file"] != "") $nome_file = $_GET["nome_file"];
else $nome_file = $DATI['menu_txt'];
indi_genera_pdf(genera_link_agg($pagina,$lang,array("indi_genera_pdf"=>null)),$nome_file.".pdf");
}
//###################### AZIONE SPAMPA (DEPRECATA) #########################
//se la pagina e' nella modalita' stampa setto la variabile globale e metto i javascript per chiusura automatica e stampa
if($_REQUEST["indi_stampa"] == "1" or $_REQUEST["indi_media"] == "print") {
$CONF["STAMPA"] = "SI";
$CONF["MEDIA"] = "print";
//aggiungo javascript alla pagina
javascript("
window.print();
//window.close();
");
} else {
$CONF["STAMPA"] = "NO";
}
d_info("Inizio","TEMPLATE","progress 10");
if($_GET["t"] == "stat") {
//DEPRECATA statistiche e-mail
include(INDI_PATH."template/_template/stat.inc.php");
} elseif($_GET["grab"]==1 and $CONF["mod_grab"] == "SI" and $CONF["dove_sono"] == "loc") {
GRAB_start();
} elseif($_GET["t"] == "key") {
//parole chiave in tutte le lingue
include($CONF['dir_base']."template/_template/key.inc.php");
} elseif($_GET["t"] == "action") {
//parole chiave in tutte le lingue
include($CONF['dir_base']."template/_template/action.inc.php");
} elseif($_GET["t"] == "webservice") {
$CONF['indi_error'] = "NO";//è necessario per ricevere le email degli errori
//alcuni webservice utili
if($_GET["q"]) {
session_write_close();
$errore = trim(ob_get_clean());
ob_start();
// $q = unserialize(str_replace('\"','"',rawurldecode($_GET["q"])));//sbagliato!
$q = unserialize(stripslashes($_GET["q"]));//stripslashes per magic quotes, rawurldecode non serve perchè lo fa apache!
$url = "http".(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 's' : '')."://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
if($q["tipo"] == "variabile" && in_array($q["nome"], $WEBSERVICES['variabili'])) {
$out =$$q["nome"];
} elseif($q["tipo"] == "funzione" && in_array($q["nome"], array_merge($WEBSERVICES['funzioni'], ['img_resize_fix_webservice']))) {
//non metto if function exists così se ci sono problemi online ci arriva una segnalazione in più
if(function_exists($q["nome"])) indi_log("webservice: funzione:$q[nome]($q[parametri])");
else indi_error_handler_email("webservice: errore chiamata a funzione ($q[nome]) inesistente!", print_r(array($url, $errore), true));
$out = call_user_func_array($q["nome"], $q["parametri"]);
} else{
indi_error_handler_email("webservice: Chiamata webservice non autorizzata, funzione:$q[nome]($q[parametri])", print_r(array($url, $errore), true));
$out = substr(base64_encode(serialize($_GET)), 0, 1+round(strlen($_SERVER['REQUEST_URI'])/3));// =)
}
if($errore .= ob_get_clean()){
indi_error_handler_email("webservice: Rilevato output durante l'esecuzione di una chiamata webservice (ignoro)", print_r(array($url, $errore), true));
}
if(!$out){
indi_error_handler_email("webservice: Risultato false di una chiamata webservice", print_r(array($url, $out, $_GET["q"]), true));
}
//indi_log_file("---$out----");
if($q["out"] == "json") print json_encode($out);
else print serialize($out);
exit();
}
} else {
//template speciali
if($DATI['template'] == "ajax" or $DATI['template'] == "function" or $DATI['template'] == "NO") {
//disabilito il template caso ajax non ho bisogno ne di cookie ne di template
} else {
d_info("Inizio","TEMPLATE","progress 11");
if($_GET["t"] == "vuoto") {
$DATI['template'] = "vuoto.php";
}
if(in_array($DATI['template'], ["ajax.php", "template_ajax.inc.php", "template_ajax.php"])) header("X-Robots-Tag: noindex");
//????
//if($CONF["MEDIA"] == "print") print "Stampa";
//GESTIONE DELLA SESSIONE PER STATISTICHE SUPEGLOBALI
//controllo se le statistiche sono attive o e' attivata solo l' opzione di trace dell' ID
if(($CONF["STAT"] == "SI" or $CONF["STAT_trace"] == "SI") and $DATI["SESS"] == "SI") {
// Creo statistiche di base e imposta il sess id
d_info("Inizio","TEMPLATE","progress 12");
creo_statistiche();
d_info("Inizio","TEMPLATE","progress 13");
//test disattivato 12/12/24
// if($DATI['sito'] == 'invoicex'){
// indi_analytics_proxy_hit(['t' => 'pageview']);
// indi_analytics_proxy_hit(['en' => 'page_view', 'v'=>2]);//in background fino 24/10 11:45 - contollare dopo 25/10
// if($_SESSION['STAT']['count_pagina'] == 2) indi_analytics_proxy_hit(['en' => 'user_engagement', 'v'=>2]);//aggiunta 8/11
// }
d_info("Inizio","TEMPLATE","progress 14");
}
//TEMPLATE PRINCIPALE SITO
//cerco il template nella cartella giusta _template/etc
if($CONF['mod_templating'] != "SI") {
d_info("Inizio","TEMPLATE","progress 20");
//includo template
if(is_file($DATI['dir_template'].$DATI['template']) and indi_estensione_file($DATI['template'],"php")) include($DATI['dir_template'].$DATI['template']);
else {
if($CONF['dove_sono'] == "loc") d_err("File TEMPLATE non trovato/non valido: $DATI[template]","TEMPLATE:template","INDI");
}
$indi_file_size .= @filesize($DATI['dir_template'].$DATI['template']);
//if($CONF['VERSIONING'] == "AUTO") $indi_versioning_array[$DATI['dir_template'].$DATI['template']] = "template";
d_info("Inizio","TEMPLATE","progress 30");
//faccio il merge della configurazione per il template
if(is_array($TEMPLATE[$DATI[template]])) $DATI = array_merge($DATI,(array)$TEMPLATE[$DATI[template]]);
d_info($DATI['dir_template'].$DATI['template'],"template file","INDI");
} else {
//--------------- NUOVA GESTIONE TEMPLATE CON ------------------------
//definisco il supercontenitore
d_info("Inizio","templating","INDI");
//pagina inc semplificato non è necessario usarlo, c'e' solo per compatibilita
if($DATI['pagina_inc'] == "") $DATI["pagina_inc"] = $DATI["pagina"].".inc.php";
//$CONF['mod_templating'] = 'SI';
//usata per pulire tutto quello che e' fuori template per evitare errori
//ob_start();
//variabili usate
$_template_array_part_count = 0;
$_template_file_inc = NULL;
$_template_file_inc_trovato = 0;
$GLOBALS['_template_array_used'] = array(); //globale perche' lo uso come log anche nella funzione region_include
region("supercont");
//includo in sequnza i template
//se multipli scompongo e ciclo array
//mettere versioning ???
//sostituisco parentesi
if($DATI['template_dir_order'] == NULL) $DATI['template_dir_order'] = $DATI['block_include_dir'];
//gestisco i due casi di configurazione
$DATI['template_order'] = indi_tpl($DATI['template_order'],$DATI,0); //1ms
$DATI['template_dir_order'] = indi_tpl($DATI['template_dir_order'],$DATI,0); //1ms
//array (da fare)
$_template_array = explode(",",indi_trim_stringa(trim($GLOBALS[DATI]['template_order']),","));
$_template_dir_array = explode(",",indi_trim_stringa(trim($GLOBALS[DATI]['template_dir_order']),","));
//sistemo
$_template_array = array_reverse((indi_array_trim($_template_array)));
$_template_dir_array = array_reverse((indi_array_trim($_template_dir_array)));
//errori
if(!$_template_array) d_err("parametro 'template_order' non settato !","templating","INDI");
if(!$_template_dir_array) d_err("parametro 'template_dir_order' non settato !","templating","INDI");
//aggiungo include path per i template
//add_include_path($DATI['path_base'].$DATI['dir_template']);
//cecca 13/04/2016 - controllo il valore di aclune variabili che se sono vuote non si capisce dove sta il problema (conversione vecchi siti)
if (!$DATI["template_order"]) {
indi_trigger_error("template_order vuota (mod_templating = " . $DATI['mod_templating'] . ")", E_USER_ERROR);
}
if (!$DATI["template_dir_order"]) {
indi_trigger_error("template_dir_order vuota (mod_templating = " . $DATI['mod_templating'] . ")", E_USER_ERROR);
}
if (!$DATI["block_include_dir"]) {
indi_trigger_error("block_include_dir vuota (mod_templating = " . $DATI['mod_templating'] . ")", E_USER_ERROR);
}
foreach($_template_array as $_template_file) {
//estensione facilitata
foreach($_template_dir_array as $_template_dir) {
//tolgo php
$_template_file_inc = $_template_dir.str_replace(".php","", $_template_file);
//forzo php
$_template_file_inc = $_template_file_inc.".php";
d_info($_template_file_inc,"templating provo inc:","INDI");
//includo i vari template
if(indi_estensione_file($_template_file_inc,"php") and is_file($_template_file_inc)) {
//aggiorno $indi_file_size
$indi_file_size .= @filesize($_template_file_inc);
//assegno variabile template
$DATI["template"] = str_replace(".php","",basename($_template_file_inc));
$_template = $DATI["template"];
//faccio il merge della configurazione per il template
if(is_array($TEMPLATE[$_template])) $DATI = array_merge($DATI,(array)$TEMPLATE[$_template]);
//loggo
$GLOBALS['_template_array_used'][] = $_template_file_inc;
d_info($_template_file_inc,"templating file inc:","INDI");
include($_template_file_inc);
$_template_file_inc_trovato = TRUE;
//print region_include($_template_array_part);
$_template_array_part_count++;
if($_template_file_inc_trovato == TRUE) {
break;
}
}
}
if($_template_file_inc_trovato == TRUE) break;
}
//caso nessun template
if($_template_array_part_count == 0) {
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("Nessun template trovato!","templating","INDI");
//cecca 13/04/2016 - aggiungo visualizzazione errore, nei casi di conversione da vecchio indi_ver a indi_ver 6 non si vedeva niente
indi_trigger_error("Nessun template trovato (mod_templating = " . $CONF['mod_templating'] . ")", E_USER_ERROR);
}
//else {
//}
//chiudo e poi stampo superblocco
region("/supercont");
$out = region_render("supercont");
print trim($out);
d_info("Fine","templating","INDI");
unset($GLOBALS['_region_array']);
unset($GLOBALS['_region_current']);
unset($_template);
unset($_template_array);
unset($_template_array_part);
unset($_template_array_part_count);
unset($_template_file_inc_trovato);
}
}
}
d_info("Fine","TEMPLATE","INDI");
//indi_file_size, dimensione di tutti i file inclusi da indi nel frontend
$DATI['indi_file_size'] = $indi_file_size;
d_info($DATI['indi_file_size'],"DATI[indi_file_size]","INDI");
//################################ POST OUTPUT ######################################
//risistemo eventuali variabili di template cambiate all' interno di INDI ($DATI)
$DATI = array_merge($DATI, (array)$DATI['xxx'], (array)$DATI[$lang],(array)$DATI[$indi_location]);
//$TXT = array_merge((array) $TXT["xxx"], (array) $TXT[$lang], (array) $TXT);
$TXT_XXX = $TXT['xxx'];
$TXT_LANG = $TXT[$lang];
//rimuovo le altre lingue se presenti
@reset($LANG);
while(list($k, $v)=@each($LANG)) {
unset($TXT[$k]);
unset($TXT['xxx']);
}
$TXT = array_merge((array) $TXT_XXX, (array) $TXT_LANG, (array) $TXT);
unset($TXT_LANG);
unset($TXT_XXX);
$TXT[$lang] = $TXT;
//md5 x gestione cache
$md5_DATI = md5(serialize($DATI));
$DATI['md5_DATI'] = $md5_DATI;
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info($md5_DATI,"md5_DATI");
//setto variabile globale per errori form
if($F['f_errori']) $DATI['f_errori'] = f_errori();
if(function_exists(post_page_function)) post_page_function();
if($DATI["INDI_BUFFER"]){
//Carico la pagina appena fatta e la metto nella variabile
$output_sito = ob_get_clean();
}
//action post template e prima del filtro dell' output e degli header della pagina
indi_do_action("post_template");
//FINE VISUALIZZAZIONE
if($GLOBALS["CONF"]["DEBUG"] == "SI") {
$db_time2 = indi_time();
$TIME = $db_time2 - $db_time_visualizzazione;
d_info("Fine ($TIME)","VISUALIZZAZIONE SITO","INDI");
}
if($DATI["INDI_BUFFER"]){
//DEPRECATA funzione aggiuntiva configurabile che gestisce l' output del sito per eventuali necessità'
//torna l' output del sito (deprecata
if($DATI['out_page_action'] != "") {
d_info("Inizio","--------- OUT_ACTION","INDI");
$output_sito = $DATI['out_page_action']($output_sito);
d_info("Fine","--------- OUT_ACTION","INDI");
}
if(function_exists(pre_output_function)) $output_sito = pre_output_function($output_sito);
//DEPRECATA funzione che sostituisce e genera l' output del sito
if($DATI["OUTPUT_FILTRO"] != "NO") {
if($GLOBALS["CONF"]["DEBUG"] == "SI") {
$db_time_out = indi_time();
d_info("Inizio","OUTPUT","INDI");
}
//###################################### HEADER ##################################
if($DATI["OUTPUT_HEADER"] != "NO"){
if($DATI['htmlDiversoPerDevice']){
header("Vary: User-Agent");
}
indi_cache_header();
}
d_info($DATI['indi_cache_header'],"OUTPUT -> cache_header","INDI");
if($DATI["CAKE"] != 'NO' && !$GLOBALS["AMMINISTRABUTTON"]['pagine'][$DATI['pagina']] && is_numeric($DATI['pagina']) && $b = amministraButton())
$GLOBALS["DATI"]['body:'.$b.'
'] = 'PRE_CLOSE';
//DEPRECATA ###################################### APC CACHE OUT (indi_apc_output = SI) ##################################
if($DATI['indi_apc'] == "SI" and count($_POST) == 0 and $DATI['auth'] != "SI" and $DATI['indi_apc_output_time'] != 0 and $DATI['indi_apc_output'] != 'NO') {
trigger_error("indi_apc_output (cache della pagina) attivo su questo sito");
//carlo: qui l'output è già generato, la cache è inutile
if($GLOBALS["CONF"]["DEBUG"] == "SI") {
d_info("APC Start","OUTPUT","INDI");
}
//d(strip_tags($output_sito));
$apc_out_key = md5($id_pagina."-".md5($output_sito)."-".$md5_DATI);
if($GLOBALS["CONF"]["DEBUG"] == "SI") {
$db_time_out = indi_time();
d_info($apc_out_key,"OUTPUT -> APC:apc_out_key","INDI");
}
$mk = apc_fetch($apc_out_key);
if ($mk !== FALSE) {
$output_sito = $mk;
if($GLOBALS["CONF"]["DEBUG"] == "SI") {
//debug
$db_time2 = indi_time();
$TIME = $db_time2 - $db_time;
d_info($apc_out_key,"OUTPUT -> APC:OUT:","INDI");
}
} else {
$output_sito = indi_output($output_sito);
//print $GLOBALS["DATI"]['indi_memcache_time'];
apc_store($apc_out_key, $output_sito, $DATI['indi_apc_output_time']);
if($GLOBALS["CONF"]["DEBUG"] == "SI") {
//debug
d_info($apc_out_key,"OUTPUT -> APC:IN:","INDI");
}
}
} else {
if($DATI["favicon_image_dir"]) trigger_error("favicon_image_dir deprecata");
if(is_file($DATI["favicon_src_file"])){
if(substr($DATI["favicon_file_path"], -11) == "favicon.ico") $DATI["favicon_file_path"] = substr($DATI["favicon_file_path"], 0, -11);//prima mettevo anche il nome del file nel path, ora è dinamico
$customPath = (boolean)$DATI["favicon_file_path"];
if($DATI["favicon_file_path"] && substr($DATI["favicon_file_path"], -1) != '/') $DATI["favicon_file_path"] .= '/';
$DATI["favicon_file_path"] .= "favicon".filemtime($DATI["favicon_src_file"]).".ico";
if($_GET['favicon'] || !is_file($DATI["favicon_file_path"]) /*|| ($_GET['favicon'] && is_dir($DATI["favicon_image_dir"]))*/){
if($DATI['sito'] == 'base'){
trigger_error("Se crei la favicon in base poi ce la copiamo su tutti i siti, cancella $DATI[favicon_src_file]");
}
else{
if($DATI["favicon_src_file"]){
$imgs = [];
foreach([16,32,64,128,256] as $v) $imgs[] = gall(["gall_webp"=>false,"gall_q_miniatura"=>100,"gall_crop"=>"NO","gall_fill"=>"SI","gall_fill_color"=>"FFFFFF","gall_img"=>$DATI["favicon_src_file"],"gall_min_w"=>$v,"gall_min_h"=>$v,"gall_return"=>"PATH"]);
}
// else{
// $imgs = indi_dir_to_array($DATI["favicon_image_dir"], true);
// foreach($imgs as $k=>$v) if(substr($v, -4) != ".png"){
// trigger_error("Generazione favicon: ignorato file non png: ".$v);
// unset($imgs[$k]);
// }
// }
$cmd = "convert ".implode(" ", $imgs)." ".$DATI["favicon_file_path"];
$out = system($cmd, $ret);
if($ret) trigger_error($cmd . " - RISULTATO: " . $out);
else if(!$customPath) copy($DATI["favicon_file_path"], "favicon.ico");//se non c'è un custom path copio anche nella root, qualche programma potrebbe cercarla lì
// else chmod($DATI["favicon_file_path"], 0666);//imposto i permessi corretti
if($_SERVER['REMOTE_ADDR'] == '192.168.0.177' || $_GET['debugtnx']) trigger_error("generata favicon");
}
}
}
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("No Cache","OUTPUT","INDI");
$output_sito = indi_output($output_sito);
}
if($GLOBALS["CONF"]["DEBUG"] == "SI") {
$db_time2 = indi_time();
$TIME = $db_time2 - $db_time_out;
d_info("Fine ($TIME)","OUTPUT","INDI");
}
}
if(function_exists(post_output_function)) {
$output_sito= post_output_function($output_sito);
// indi_log("post_output_function");
}
}
//$output_sito
indi_do_action("post_output");
//gestione fine JOBS
if(isset($_GET['job'])) indi_job_finish("FINISH from GET",$_GET['job']);
//aggiorno database globale con indi_admin_refresh_db
// if(($DATI['admin_refresh_db'] || $_GET['indi_admin_refresh_db']) and $_SESSION["amministrazioneIndi"] != 1) indi_admin_refresh_db();
}
if($_GET['testErrori']){
$quanti = 4;
for($i=0; $i<$quanti; $i++){
trigger_error("Errore uguale");
trigger_error("Errore di test con numero random: ".mt_rand());
}
die("Triggerati ".($quanti*2)." errori");
}
// if(!$DATI['mod_privacy_cookie']) indiAdminLog("no_mod_privacy_cookie", '', true);
// else if(!$DATI['mod_pc_gdpr']) indiAdminLog("no_mod_pc_gdpr", '', true);
?>