function is_tnx(){
return
($GLOBALS['DATI']['dove_sono'] == 'loc' && strpos($_SERVER["REMOTE_ADDR"], "192.168.") !== 0)
||
$_SERVER["REMOTE_ADDR"] == "213.243.232.46"
||
$_SERVER["REMOTE_ADDR"] == gethostbyname("tnx2.dyndns.org")
;
}
function indi_var_dump($var) {
ob_start();
var_dump($var);
return str_replace("\n","",ob_get_clean());
}
function indi_error_handler($code, $msg, $file, $line, $context){
//penso che a questa funzione vengono passati solo errori E_USER_* (The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called.)
$email = "carlo@tnx.it,damiano@tnx.it";
// $email = "carlo@localhost";
switch ($code) {
case E_STRICT:
case E_NOTICE:
// $GLOBALS[ERRORS_INDI][w][] = $msg;
// $GLOBALS[ERRORS_INDI]++;
// $GLOBALS["ERRORS_INDI_TOT"]++;
// $GLOBALS["ERRORS_INDI"][$file][$line][tot]++;
// $GLOBALS["ERRORS_INDI"][$file][$line][$msg]++;
//non faccio nulla: notice soppressi
break;
case E_ERROR:
case E_USER_ERROR:
//errore fatale:
//online: mando mail, se posso ridireziono alla home altrimenti muoio
//locale: gestisco come normale error con stampa a video e morte dello script
if($GLOBALS["CONF"]["dove_sono"] == "rem" and $GLOBALS["CONF"]['indi_error'] == "NO"){
$body = "$msg at $file ($line), timed at " . date ("d-M-Y H:i:s", mktime());
$body .= "\nhttp://$_SERVER[SERVER_NAME]$_SERVER[REQUEST_URI]";
$body .= "\n\n" . print_r(array('$_GET'=>$_GET, '$_POST'=>$_POST, '$_SERVER'=>$_SERVER, '$_SESSION'=>$_SESSION), TRUE);
mail($email, "[PHP] FATALE: pagina bloccata per ".$GLOBALS["CONF"]["nome_sito"], $body);
}
else{
echo "FATAL: $msg at $file ($line)";
die;
}
break;
case E_WARNING:
case E_USER_NOTICE://generati di default con trigger_error
case E_USER_WARNING:
case E_RECOVERABLE_ERROR:
//errore warning:
//online: mando mail, non faccio vedere nulla all'utente e continuo lo script
//locale: gestisco come normale warning con stampa a video
if(!error_reporting()) return;//(error_reporting()==0 vuol dire che è stato soppresso l'errore con @)
if(function_exists("is_spider") && is_spider()) return;
//unisco gli errori del php con quelli di indi, in qualche modo
$msg_unserialized = unserialize($msg);
if(!is_array($msg_unserialized)) {
$msg = array(
"errore" => $msg,
"nome" => "WARNING",
"gruppo" => "PHP",
);
}
else{
$msg = $msg_unserialized;
}
$debug_print_backtrace = debug_backtrace();
/*
$log_txt .= str_replace("/tnx/www/html/www/indi/SITI/","",$debug_print_backtrace[1][args][0]);
$log_txt .= str_replace("/tnx/www/html/www/indi/SITI/","",$debug_print_backtrace[1][file]);
$log_txt .= str_replace("/tnx/www/html/www/indi/SITI/","",$debug_print_backtrace[1][file]);
//indi_log_globale();
print "
";
print_r($debug_print_backtrace[2]);
print "
";
*/
while(list($k,$v) = each($debug_print_backtrace)) {
//scrivo su file
if($k == 3) {
//$log_file = $debug_print_backtrace[2][0]);
}
if(($k > 1 and $msg['gruppo'] != "PHP") or ($msg['gruppo'] == "PHP" and $k > 0)) {
// $v = "".$v['function'].$v['class']."(".nl2br(@htmlentities(indi_var_dump($v['args'][0]))).") in [".$v['file']."] (linea: ".$v['line'].")";
$v = "".$v['function'].$v['class']."(".nl2br((indi_var_dump($v['args'][0]))).") chiamato da ".$v['file']." (linea: ".$v['line'].")";
$debug_print_backtrace_out .= "".$v."
";
}
}
if($msg['gruppo'] == "PHP") {
$linea = " in [".$file."] linea: $line";
}
if($GLOBALS["CONF"]["dove_sono"] == "rem" and $GLOBALS["CONF"]['indi_error'] == "NO"){//invio mail
$body = "$msg[errore]
at $file (".($linea?$linea:$line).")
timed at " . date ("d-M-Y H:i:s", mktime());
$body .= $linea;
$body .= "
http://$_SERVER[SERVER_NAME]$_SERVER[REQUEST_URI]";
$body .= $debug_print_backtrace_out;
$body .= "
" . print_r(array('$_GET'=>$_GET, '$_POST'=>$_POST, '$_SERVER'=>$_SERVER, '$_SESSION'=>$_SESSION), TRUE)."";
if(!$GLOBALS["warning_email_report_c3k"]){//non ho già inviato un errore durante questa richiesta php
$GLOBALS["warning_email_report_c3k"] = mail($email, "[$msg[gruppo]] $msg[nome] in una pagina di ".$GLOBALS["CONF"]["nome_sito"], $body, 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/html; charset=iso-8859-1' . "\r\n");
}
}
else{//stampa a video indi
$backtrace_html = "
$msg[gruppo] $msg[nome]:
---> mostra backtrace
$debug_print_backtrace_out
";
$GLOBALS['indi_error_messages'][$GLOBALS['indi_error_messages_k']++] = $backtrace_html;
}
break;
default:
//il gestore di errori è stato chiamamto con un codice diverso da un E_USER_*
mail("carlo@tnx.it", "Aggiornare la funzione indi_error_handler()", "Gestire il codice di errore ".$code."\n\n" . print_r(array('$_GET'=>$_GET, '$_POST'=>$_POST, '$_SERVER'=>$_SERVER, '$_SESSION'=>$_SESSION), TRUE));
break;
}
}
function indi_exception_handler($exc){//wrapper per far gestire le eccezioni al gestore d'errori
$code = $exc->getCode();
if(!$code) $code = E_USER_WARNING;//se non c'è un codice lo faccio passare (e arrivare come email) come un warning
$msg = $exc->getMessage();
if(!$msg) $msg = "Eccezione senza descrizione";
$file = $exc->getFile();
$line = $exc->getLine();
indi_error_handler($code, $msg, $file, $line, array());
}
//funzione per start sessione una sola volta
function indi_session_start(){
if($GLOBALS[indi_session_start] == ""){
//imposto manualmente il session id ??? (problema sicurezza forse)
if (isset($_POST["PHPSESSID"])) {//per swfupload in area protetta
session_id($_POST["PHPSESSID"]);
}
//tipo di cache di sessione
// indi_session_cache("SI");
session_start();
$GLOBALS[indi_session_start] = true;
}
}
//imposta la cache della sessione e in generale | public | private_no_expire
//???? da parametrizzare 30 minuti
function indi_session_cache($STATO="NO"){
// if($GLOBALS[indi_session_start]) {
if($STATO != "SI"){
session_cache_limiter('nocache');
} else {
//disabilito cache
session_cache_limiter('private');
session_cache_expire(30);
}
// session_write_close();
session_start();
// }
}
//funzione che gestiche gli header di cache, richiamata nell' index1.1
function indi_cache_header () {
global $DATI;
if($DATI['indi_cache_header'] == "AUTO") {
//default
$DATI['indi_cache_header'] = "cache_default";
//se c'e' un post
if(count($_POST) > 0) {
//$DATI['indi_cache_header'] = "cache_form";
d($_POST);
}
//se sono autenticato o se ho roba nel carrello no cache sempre
//per ora non importarebbe con il cache_default che aggiorna sempre
if($DATI['auth'] == "SI" or count($_SESSION['indicarr']) > 0) {
$DATI['indi_cache_header'] = "cache_no";
}
}
if($DATI['indi_cache_header'] == "cache_default") {
header("Expires: ");
header("Pragma: ");
header("Cache-Control: private, pre-check=0");
//header("Cache-Control: private, max-age=600, pre-check=600");
}
//tolgo gli header
elseif($DATI['indi_cache_header'] == "cache_reset") {
//tolgo la roba
header("Pragma: ");
header("Expires: ");
header("Cache-Control: ");
}
//abilito cache
elseif($DATI['indi_cache_header'] == "cache_si") {
header("Expires: ");
header("Pragma: ");
header("Cache-Control: private, max-age=600, pre-check=600");
}
//abilito cache
elseif($DATI['indi_cache_header'] == "cache_form") {
//header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
header("Expires: ");
header("Pragma: ");
header("Cache-Control: private, max-age=300, pre-check=300");
}
//disabilito cache
elseif($DATI['indi_cache_header'] == "cache_no") {
header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
//header("Cache-Control: private, pre-check=0");
} else {
d_err("indi_cache_header:no_defined","INDI");
}
}
//session_cache_limiter('private');
//???riesumo la sessione da dentro la pagina in test
function indi_session_resume(){
ini_set("session.use_cookies", false);
$name = ini_get("session.name");
session_id($_COOKIE[$name]);
session_start();
}
//funzione time
function indi_time() {
global $indi_time, $time_diff;
$time_tmp=microtime();
$time=substr($time_tmp,11).substr($time_tmp,1,9);
$time_diff = substr($time-$indi_time,0,6);
return $time_diff;
}
//controllo di cache
function indi_cache($file) {
$if_modified_since = preg_replace('/;.*$/', '', $_SERVER["HTTP_IF_MODIFIED_SINCE"]);
$mtime = filemtime($file);
$gmdate_mod = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';
if ($if_modified_since == $gmdate_mod) {
header("HTTP/1.0 304 Not Modified");
exit;
}
header("Last-Modified: $gmdate_mod");
}
//###################### COSE STRANE ############################
if(trim(substr($_SERVER['REQUEST_URI'],strrpos($_SERVER['REQUEST_URI'],"/")+1,strlen($_SERVER['REQUEST_URI']))) == "favicon.ico") {
header ("HTTP/1.0 404 Not Found");
exit();
} else {
//CONTROLLO RICHIESTE STRANE
//primo controllo per richieste ai file appese dietro ai parametri
if(stristr($_SERVER['REQUEST_URI'],"_pics/_pics/")
or stristr($_SERVER['REQUEST_URI'],"_files/_files/")
or stristr($_SERVER['REQUEST_URI'],"/_files/_pics/")
or stristr($_SERVER['REQUEST_URI'],"/_pics/_files/")) {
header ("HTTP/1.0 404 Not Found");
exit();
}
}
//INIZIALIZZO CONTATORE DI TEMPO
$indi_time_tmp=microtime();
$indi_time=substr($indi_time_tmp,11).substr($indi_time_tmp,1,9);
//###################### ERRORI ############################
if(function_exists("set_exception_handler")){//PHP5
set_error_handler('indi_error_handler', E_ALL&~E_STRICT&~E_NOTICE);//tutti esclusi i notice e gli strict
set_exception_handler('indi_exception_handler');
}
else{//PHP4
set_error_handler('indi_error_handler');
}
//### INDIZIO
$indi_base_dir = "INDI_ver1.1";
$CONF["indi_ver"] = $indi_base_dir;
//error_reporting (E_ALL);
define('INDI','ver1.1');
set_magic_quotes_runtime(0);
ini_set('session.use_cookies', true);
ini_set('session.use_trans_sid', false);
ini_set('session.use_only_cookies', true);
set_time_limit(600); //5 minuti
//imposto dove sono
if (stristr($_SERVER['SERVER_NAME'],'dyndns') or stristr($_SERVER['SERVER_ADDR'],'192.168.0.105')) {
$CONF['dove_sono'] = 'loc';
} else $CONF['dove_sono'] = 'rem';
$indi_location = $CONF["dove_sono"];
//utilita INDI admi etc
if($_GET["indi_red_sito"] != "") {
header("Location: ../".$_GET["indi_red_sito"]."/?a=1");
exit();
}
//deprecata
if($_GET["indi_file_css"] != "") {
//controllo cache prima di tutto
indi_cache($_GET["indi_file_css"].".css");
header('Content-type: text/css');
readfile($_GET["indi_file_css"].".css");
exit();
}
if($_GET["indi_file_pdf"] != "") {
//controllo cache prima di tutto
indi_cache($_GET["indi_file_pdf"].".pdf");
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="'.$_GET["indi_file_pdf"].'.pdf"');
readfile($_GET["indi_file_pdf"].".pdf");
exit();
}
if($_GET["indi_file_swf"] != "") {//usata per il grabber dall'amministrazione di indi
if(is_file($_GET["indi_file_swf"].".swf")){
header("Content-type: application/x-shockwave-flash");
readfile($_GET["indi_file_swf"].".swf");
exit();
}
}
//include un file che si trova nella cartella di template
if($_GET["indi_file_tpl"] != "") {
$file = "../../$indi_base_dir/template/_files/".$_GET["indi_file_tpl"];
//controllo input ?? da aggiungere controllo sulla fine del file
if(stristr($_GET["indi_file_tpl"],"..") or !is_file($file)) exit();
//controllo cache prima di tutto
indi_cache($file);
//genero header giusto ??? DA FARE
readfile($file);
exit();
}
if($_GET["indi_file"] != "") {
//controllo input ??? da fare
//if(stristr($_GET["indi_file"])) exit();
//controllo cache prima di tutto
//indi_cache($_GET["indi_file"]);
//readfile($_GET["indi_file"]);
//exit();
}
if($_GET["dimage"] != "") {
include("../../$indi_base_dir/functions_dtxt.inc.php");
//superdefault
$font = "arial" ;
$font_size = 20;
$font_color = '#aaa555' ;
$background_color = '#ffffff' ;
$transparent_background = true ;
$extension = '.png' ;
//prendo parametri
if($_GET[dtxtf]) $font = $_GET[dtxtf];
if($_GET[dtxts]) $font_size = $_GET[dtxts];
if($_GET[dtxtc]) $font_color = $_GET[dtxtc];
if($_GET[dtxtb]) $background_color = $_GET[dtxtb];
if($_GET[dtxtt]) $transparent_background = $_GET[dtxtt];
if($_GET[dtxte]) $extension = $_GET[dtxte];
if($transparent_background == "NO") $transparent_background = false ;
else $transparent_background = true;
/*
---------------------------------------------------------------------------
For basic usage, you should not need to edit anything below this comment.
If you need to further customize this script's abilities, make sure you
are familiar with PHP and its image handling capabilities.
---------------------------------------------------------------------------
*/
//cartella
$font_ext = ".ttf" ;
$font_dir = "../../$indi_base_dir/_lib/fonts/" ;
$font_file = $font_dir.$font.$font_ext;
$cache_images = true ;
$cache_folder = 'indi/_txt_cache' ;
$mime_type = 'image/png' ;
$send_buffer_size = 4096;
// check for GD support
if(!function_exists('ImageCreate'))
fatal_error('Error: Server does not support PHP image generation') ;
// clean up text
if(empty($_GET['text']))
fatal_error('Error: No text specified.') ;
$text = $_GET['text'] ;
if(get_magic_quotes_gpc())
$text = stripslashes($text) ;
$text = javascript_to_html($text) ;
// look for cached copy, send if it exists
$hash = md5(basename($font_file) . $font_size . $font_color .
$background_color . $transparent_background . $text) ;
$cache_filename = $cache_folder . '/' . $hash . $extension ;
if($cache_images && ($file = @fopen($cache_filename,'rb')))
{
header('Content-type: ' . $mime_type) ;
while(!feof($file))
print(($buffer = fread($file,$send_buffer_size))) ;
fclose($file) ;
exit ;
}
// check font availability
$font_found = is_readable($font_file) ;
if(!$font_found)
{
fatal_error('Error: The server is missing the specified font.') ;
}
// create image
$background_rgb = hex_to_rgb($background_color) ;
$font_rgb = hex_to_rgb($font_color) ;
$dip = get_dip($font_file,$font_size) ;
$box = @ImageTTFBBox($font_size,0,$font_file,$text) ;
$image = @ImageCreate(abs($box[2]-$box[0]),abs($box[5]-$dip)) ;
if(!$image || !$box)
{
fatal_error('Error: The server could not create this heading image.') ;
}
// allocate colors and draw text
$background_color = @ImageColorAllocate($image,$background_rgb['red'],
$background_rgb['green'],$background_rgb['blue']) ;
$font_color = ImageColorAllocate($image,$font_rgb['red'],
$font_rgb['green'],$font_rgb['blue']) ;
ImageTTFText($image,$font_size,0,-$box[0],abs($box[5]-$box[3])-$box[1],
$font_color,$font_file,$text) ;
// set transparency
if($transparent_background)
ImageColorTransparent($image,$background_color) ;
header('Content-type: ' . $mime_type) ;
ImagePNG($image) ;
// save copy of image for cache
if($cache_images)
{
@ImagePNG($image,$cache_filename) ;
}
ImageDestroy($image) ;
exit ;
}
//altro controllo per richieste ai file appese dietro ai parametri quando c'è la rew3 attiva ad es. http://www.tuscanyholidayaccommodation.com/toscana/nm:3/nl:1/nf1:ALI/id:22045/_pics/lightbox_overlay.png
//(client che non leggono il base ad esempio)
// if($_SERVER["REMOTE_ADDR"] == "192.168.0.177"){
/*
$request_uri = array_shift(explode("?", $_SERVER['REQUEST_URI']));//evito il problema che si presenta se passo il percorso di un file come parametro ad es. http://indi.tnx.dyndns.org/tuscan_enterprise/index.php?p=gall_popup&l=eng&img=indi/_pics/030801_2_2247747544.jpg
//controllo che nel request_uri non ci sia un file che esiste nelle cartelle qui sotto
$checks = array("_pics", "_files");
foreach($checks as $folder) if(is_file(stristr($request_uri, $folder."/"))) {
header ("HTTP/1.0 404 Not Found");
exit();
}
// }
*/
//acatturo output per evitare problemi
ob_start();
if(!$CONFIGURAZIONE) exit;
//CORE
require("$indi_base_dir/core.inc.php");
require("$indi_base_dir/core_db.inc.php");
require("$indi_base_dir/core_debug.inc.php");
// Includo configurazione base
require("$indi_base_dir/base.inc.php");
//STATO
//controllo comunque se il sito viene grabbato e imposto la variabile
if($_SERVER['HTTP_USER_AGENT'] == "INDI_HTML_LINKGRABBER" or $_GET["indi_html"] == "1" or $_REQUEST["indi_media"] == "cdrom"){
$CONF["MEDIA"] = "cdrom"; //da cambiare in cd-rom
}
if($_SERVER['HTTP_USER_AGENT'] == "INDI_GRAB_LINKGRABBER" or $_GET["indi_grab"] == "1" or $_REQUEST["indi_media"] == "grab"){
$CONF["GRAB"] = "SI";
$CONF["MEDIA"] = "grab";
}
//includo il file di configurazione personalizzato per il sito
include($CONFIGURAZIONE);
$indi_file_size = @filesize("../../".$CONFIGURAZIONE);
//imposto un po' di variabili bi base anche per i moduli
//PRIMA PSEUDORANDOMIZZO
if(isset($IND["SEME"])) srand(abs(crc32(md5($IND["SEME"]))));
else srand(abs(crc32(md5($CONF["SEME"]))));
//Inizializzo le cose automatiche
if($CONF["sito"] == "AUTO") $CONF["sito"] = ind_trova_sito();
//ste sta' facendo il setup si ferma
if(apc_fetch($CONF["sito"]) == 1) die("$CONF[dominio_sito] ($CONF[nome_sito]) - work in progress... wait a moment
");
if($CONF["base"] == "AUTO") $CONF["base"] = genera_BASE();
if($CONF["baseurl"] == "AUTO") $CONF["baseurl"] = genera_BASEURL();
$CONF["baseurl2"] = substr($CONF["baseurl"],0,strlen($CONF["baseurl"])-1);
if($CONF["path_base"] == "AUTO") $CONF["path_base"] = $_SERVER['DOCUMENT_ROOT'].$CONF["base"];
if($CONF["dominio_sito"] == "AUTO") $CONF["dominio_sito"] = str_replace("http://","",$CONF["baseurl2"] );
//se non sono nel dominio di produzione metto
if($CONF["meta_noindex"] == "AUTO") {
if(stristr($_SERVER["SERVER_NAME"],"indi.tnx")) $CONF["meta_noindex"] = "SI";
else $CONF["meta_noindex"] = "NO";
}
// IMPOSTO IL NOME DEL DATABASE IN AUTOMATICO
if($DB["database"] == "AUTO") $DB["database"] = $CONF["db_prefix"].$CONF["sito"];
//PER VERSIONE CDROM e GRAB
if($CONF["MEDIA"] == "cdrom" or $CONF["MEDIA"] == "grab") {
$CONF["baseurl"] = "";
$CONF["baseurl2"] = "";
}
//mi salvo la configurazione del sito per ripristinarla dopo aver incluso i moduli
//la devo per forza includere qui perchè dalla configurazione capisco quali moduli includere
$CONF_SALVATA = $CONF;
//################### MODULI ##################
if ($CONF['mod_html'] == "SI") require("$indi_base_dir/mod_html.inc.php");
if ($CONF['mod_grab'] == "SI") require("$indi_base_dir/mod_grab.inc.php");
if ($CONF['mod_menujb'] == "SI") require("$indi_base_dir/mod_menujb.inc.php");
if ($CONF['mod_menujb2'] == "SI") require("$indi_base_dir/mod_menujb2.inc.php");
if ($CONF['mod_pagine_dinamiche'] == "SI") require_once("$indi_base_dir/mod_pagine_dinamiche.inc.php");
else if ($CONF['mod_pagine_dinamiche2'] == "SI") require_once("$indi_base_dir/mod_pagine_dinamiche2.inc.php");
if ($CONF['mod_auth'] == "SI") require("$indi_base_dir/mod_auth.inc.php");
if ($CONF['mod_xfiles'] == "SI") require("$indi_base_dir/mod_xfiles.inc.php");
if ($CONF['mod_carr'] == "SI") require("$indi_base_dir/mod_carr.inc.php");
else if ($CONF['mod_carr2'] == "SI") require("$indi_base_dir/mod_carr2.inc.php");
if ($CONF['mod_smarty'] == "SI") require("$indi_base_dir/mod_smarty.inc.php");
if ($CONF['mod_form2'] == "SI") require("$indi_base_dir/mod_form2.inc.php");
if ($CONF['mod_snippet'] == "SI") require("$indi_base_dir/mod_snippet.inc.php");
if ($CONF['mod_disponibilita'] == "SI") require("$indi_base_dir/mod_disponibilita.inc.php");
//MODULI DEFAULT
require_once("$indi_base_dir/mod_galleria.inc.php");
require_once("$indi_base_dir/mod_menu.inc.php");
require_once("$indi_base_dir/mod_form.inc.php");
require_once("$indi_base_dir/mod_visualizzazione.inc.php");
//aggiungo HACK REW ???
if($_GET["REW"] != "" and $indi_location == "loc") $CONF["REW"] = $_GET["REW"];
//MERGE DELLA CONFIGURAZIONE DEI MODULI CON QUELLA DI INDI
reset($CONF_SALVATA);
while(list($k, $v)=@each($CONF_SALVATA)) {
if(is_array($v)) {
$CONF_SALVATA_ARR[$k] = $v;
unset($CONF_SALVATA[$k]);
}
}
//mergio senza array
$CONF = array_merge($CONF, (array)$CONF_SALVATA);
reset($CONF_SALVATA_ARR);
while(list($k, $v)=@each($CONF_SALVATA_ARR)) {
$CONF[$k] = array_merge($CONF[$k], (array)$v);
}
//MERGE PER I CONF
$CONF = array_merge($CONF,$CONF["xxx"], (array)$CONF[$lang], (array)$CONF[$indi_location]);
//########################################################################
// PROGRAMMA PRINCIPALE v 1.1//##########################################
//########################################################################
d_info("SETUP PROGRAMMA PRINCIPALE v 1.1","INFO","INDI");
//setup di indi
ind_setup();
if($_GET['fix_indi_dir'] == 1) {
for ($i = 0; $i <= 9; $i++) {
mkdir("indi/_pics/$i");
for ($ii = 0; $ii <= 9; $ii++) {
mkdir("indi/_pics/$i/$ii");
}
}
}
//Disabilita SESSIONI PAGINA
if($CONF["SESS"] == "SI" and !isset($_REQUEST["no_sess"])) indi_session_start();
//imposto la cache
//login automatico locale
if((($_GET[dq]) or ($_GET[d]) or ($_GET[ds]) or ($_GET[de]) or ($_GET[a])) and $CONF["dove_sono"] and stristr($_SERVER['REMOTE_ADDR'],"192.168.0") and $_GET[arq] == "") {
//avvio sessione se sono nella superamministrazione
indi_session_start();
//disabilito cache
indi_session_cache("NO");
$_SESSION["admin_user"] = "tnx";
$_SESSION["admin_pass"] = "tnx";
$_SESSION["admin_debug"] = "NO";
$_SESSION["admin_setup"] = "SI";
$_REQUEST["a"] = 1;
//database
if(isset($_GET[d])) {
$_SESSION["ap"] = "debug";
$_SESSION["ap2"] = "sito";
$_SESSION["sito_vis"] = "SI";
}
if(isset($_GET[dq])) {
$_SESSION["dbg_db"] = "DATAB";
$_SESSION["dbg_err"] = "err";
$_SESSION["dbg_inf"] = "inf";
$_SESSION["dbg_sito"] = "";
$_SESSION["dbg_indi"] = "";
$_SESSION["dbg_dbg"] = "";
$_SESSION["ap"] = "debug";
$_SESSION["ap2"] = "sito";
$_SESSION["sito_vis"] = "SI";
}
if(isset($_GET[ds])) {
$_SESSION["dbg_db"] = "DATAB";
$_SESSION["dbg_err"] = "err";
$_SESSION["dbg_inf"] = "";
$_SESSION["dbg_sito"] = "SITO";
$_SESSION["dbg_indi"] = "INDI";
$_SESSION["dbg_dbg"] = "dbg";
$_SESSION["ap"] = "debug";
$_SESSION["ap2"] = "sito";
$_SESSION["sito_vis"] = "SI";
}
if(isset($_GET[de])) {
$_SESSION["dbg_db"] = "DATAB";
$_SESSION["dbg_err"] = "err";
$_SESSION["dbg_inf"] = "";
$_SESSION["dbg_sito"] = "SITO";
$_SESSION["dbg_indi"] = "INDI";
$_SESSION["dbg_dbg"] = "";
$_SESSION["ap"] = "debug";
$_SESSION["ap2"] = "sito";
$_SESSION["sito_vis"] = "SI";
}
if(isset($_GET[a])) {
$_SESSION["sito_vis"] = "NO";
$_SESSION["admin_debug"] = "NO";
$_SESSION["admin_vis"] = "SI";
$_SESSION["admin_debug"] = "NO";
$_SESSION["ap"] = "home";
$_SESSION["ap2"] = "";
}
}
if($_SESSION["a"] == "1" or $_REQUEST["a"] == "1") {
$CONF["DEBUG"] = "SI";
}
//sottoversione
d_info($CONF['indi_subversion'],"CONF[indi_subversion]","INDI");
//se il visitatore e' remoto disabilito sempre gli errori
if(!stristr($_SERVER['REMOTE_ADDR'],"192.168")) $CONF['indi_error'] = "NO";
//gestione errori onscreen sito se impostati manualmente
//setto cookie
indi_ssv("indi_error");
$indi_error_time = time()+300;
if(isset($_SESSION['indi_error'])) {
if($_SESSION['indi_error'] == 1){
$CONF['indi_error'] = "SI";
} elseif($_SESSION['indi_error'] == 0) {
$CONF['indi_error'] = "NO";
} else {
if($_SESSION['indi_error'] > time()) $CONF['indi_error'] = "NO";
else $CONF['indi_error'] = "SI";
}
$CONF['indi_error'] = "NO";
}
d_info($CONF['indi_error'],'$CONF["indi_error"]');
//################### INIZIALIZZO IL MENU ##################
//ovvero la configurazione generale di indi
//MENU JETBOX1
if ($CONF['mod_pagine_dinamiche'] == "SI") {
d_info("Inizio","--------- INIT mod_pagine_dinamiche","INDI");
$CONF['pagine_dinamiche_function']();
d_info("Fine","--------- INIT mod_pagine_dinamiche","INDI");
}
else if ($CONF['mod_pagine_dinamiche2'] == "SI") {
d_info("Inizio","--------- INIT mod_pagine_dinamiche2","INDI");
pagine_dinamiche_menu();
d_info("Fine","--------- INIT mod_pagine_dinamiche2","INDI");
}
//MENU JETBOX1
if ($CONF['mod_menujb'] == "SI") {
d_info("Inizio","--------- INIT MENU_JB","INDI");
$a = new TabellaAlberoIndi(array(
"tabella" => $CONF["menujb_tabella"],
"idField" => $CONF["menujb_idField"],
"labelField" => $CONF["menujb_labelField"],
"parentField" => $CONF["menujb_parentField"],
"addUnder" => $CONF["menujb_addUnder"],
"pagesNameprefix" => $CONF["menujb_pagesNameprefix"],
"orderBy" => $CONF["menujb_orderBy"]
));
@$a->addPagesToIndiMenu();
d_info("Fine","--------- INIT MENU_JB","INDI");
}
//MENU INDI
d_info("Inizio","--------- INIT MENU","INDI");
//abilito sempre cache
$CONF['indi_menu_tot_pagine'] = count($MENU)*count($LANG);
$CONF['indi_menu_tot_lingue'] = count($LANG);
d_info($CONF['indi_menu_tot_pagine'],"Pagine totali","INDI");
d_info($CONF['indi_menu_tot_lingue'],"Lingue totali","INDI");
//disabilito APC
if($_GET['indi_apc'] == "NO") {
$CONF['indi_apc'] = "NO";
$DATI['indi_apc'] = "NO";
}
if(($_GET['indi_apc'] == 1 or $CONF['indi_apc'] == "SI" or $CONF['indi_menu_tot_pagine'] >= 100) and function_exists("apc_fetch")) {
d_info("APC","Abilito cache APC x funzione (main_link_globale) >= 100 pagine");
$apc_menu_key = md5(json_encode($MENU).json_encode($CONF)."i123");
d_info($apc_menu_key,"main_link_globale:apc_menu_key","INDI");
$mk0 = apc_fetch($apc_menu_key);
if($CONF["REW"] != "NO") {
$mk1 = apc_fetch($apc_menu_key."REW_ALIAS");
$mk2 = apc_fetch($apc_menu_key."REW_ALIAS_INV");
}
if ($mk0 && ($mk1||!isset($mk1)) && ($mk2||!isset($mk2))) {//c3k 30.03.10
if(!trim($mk0))
indi_debug_email("carlo@tnx.it","ERRORE Cache APC: ".__LINE__.__FILE__,$apc_menu_key." (apc key)\n\n".var_export($mk0, true));
//d(strlen(gzuncompress($mk0)));
$MENU = unserialize(gzuncompress($mk0));
unset($mk0);
if($CONF["REW"] != "NO") {
$REW_ALIAS = unserialize(gzuncompress($mk1));
unset($mk1);
$REW_ALIAS_INV = unserialize(gzuncompress($mk2));
unset($mk2);
}
//d_info("apc:unserialize");
d_info("cache OK, after fetch","main_link_globale","INDI");
} else {
main_link_globale();
$menu_serialized = gzcompress(serialize($MENU),1);
if(!trim($menu_serialized)) indi_debug_email("carlo@tnx.it","ERRORE Cache APC: ".__LINE__.__FILE__,$apc_menu_key." (apc key)\n\n".var_export($menu_serialized, true));
apc_store($apc_menu_key, $menu_serialized, $CONF['indi_apc_menu_time']);
unset($menu_serialized);
if($CONF["REW"] != "NO") {
apc_store($apc_menu_key."REW_ALIAS", gzcompress(serialize($REW_ALIAS),1), $CONF['indi_apc_menu_time']);
apc_store($apc_menu_key."REW_ALIAS_INV", gzcompress(serialize($REW_ALIAS_INV),1), $CONF['indi_apc_menu_time']);
}
d_info("cache KO, after store","main_link_globale","INDI");
}
} else {
main_link_globale();
d_info("oss","INDI");
}
//stat finali
//d_info(strlen(serialize($MENU)),"Dimensione MENU","INDI");
//d_info(strlen(serialize($REW_ALIAS)),"Dimensione REW_ALIAS","INDI");
//d_info(strlen(serialize($REW_ALIAS_INV)),"Dimensione REW_ALIAS_INV","INDI");
d_info("Fine","--------- INIT MENU","INDI");
//d($CONF_SALVATA);
//scansiono
// prendo le impostazioni dalle definizioni e aggiorno il file globale e allo stesso tempo aggiorno il file MENU assegnando le variabili che devono essere assegnte
if(isset($_SERVER["REDIRECT_QUERY_STRING"]) and $CONF["REW"] == "NO") ind_valori_redirect($_SERVER["REDIRECT_QUERY_STRING"]);
//print rawurlencode("&");
//REWRITE
/*
rewritin
ver_1:/lang/pagina/var:100
ver_2:/lang/pagina/var/100
ver_3:/alias/var:100
ver_4:/alias/var/100
ver_5:/alias/mixed
*/
if($CONF["REW"] != "NO") {
//faccio qualcosa
//test rimozione XSS di base in rew ver3
if($CONF['indi_remove_xss'] == "SI") $_GET = array_map("indi_remove_xss",$_GET);
$REW_QUERY_XXX = explode("?",$_SERVER['REQUEST_URI']);
$REW_QUERY_PATH = substr($REW_QUERY_XXX[0],strlen($CONF["base"]));
$REW_QUERY_RAW_QUERY = $REW_QUERY_XXX[1];
$indi_rew = explode("/",$REW_QUERY_PATH);
if($REW_QUERY_RAW["query"] != "") parse_str($REW_QUERY_RAW_QUERY,$_GET);
$indi_rew_0 = $indi_rew[0];
//d($_SERVER['REQUEST_URI']);
}
//versione 1
//lingua/pagina/parametri
if($CONF["REW"] == "ver_1" or $CONF["REW"] == "ver_2") {
//parse_str($_SERVER['QUERY_STRING'],$QUERY);
//print $QUERY[indirew1];
$indi_rew_1 = explode("/",$QUERY[indirew1],"&");
//imposto pagina e lingua
if($indi_rew_1[0] !== "") $_GET["l"] = $indi_rew_1[0];
if($indi_rew_1[1] !== "") $_GET["p"] = $indi_rew_1[1];
if(count($indi_rew_1) > 1) {
//VERSIONE 1
if($CONF["REW"] == "ver_1") {
//se ci sono altri parametri
for ($i=2;$i<=count($indi_rew_1);$i++){
//imposto pagina e lingua
if($indi_rew_1[$i] !== "") $_GET[$indi_rew_1[$i]] = $indi_rew_1[$i+1];
$i++;
}
}
//VERSIONE 2
elseif($CONF["REW"] == "ver_2") {
//se ci sono altri parametri
for ($i=2;$i<=count($indi_rew_1);$i++){
//imposto pagina e lingua
if($indi_rew_1[$i] !== "") $_GET[$i-1] = $indi_rew_1[$i];
}
}
}
} elseif ($CONF["REW"] == "ver_3" or $CONF["REW"] == "ver_4") {
//VERSIONE 3
if(count($indi_rew) > 0) {
//acquisisco alias per pagina elingua
//VERSIONE3 /alias/100/
//mi riscrive i parametri posizionali in un array che ha come chiave la posizione
//0 -> 100
//se sono passati con i duepunti mi ricera un array chiave valore
// alias/id:100
//id -> 100
if($CONF["REW"] == "ver_3") {
//se ci sono altri parametri
if($indi_rew[0] !== "") {
//cecca
// damiano (eventualmente trimmare gli slash)
//controllo se presente negli alias un valore uguale alla concatenazione di indi_rew con gli slash per avere pagine tipo ru/form/pippolo
$max_slash = count($indi_rew);
if ($max_slash > 6) $max_slash = 6;
if ($indi_rew[count($indi_rew)-1] == "") $max_slash--;
for ($i_slash = $max_slash; $i_slash > 0; $i_slash--) {
$alias_full = strtolower(implode("/", array_slice($indi_rew, 0, $i_slash)));
$slash_found = array_key_exists(strtolower(indi_urldecode($alias_full)), (array)$GLOBALS["REW_ALIAS"]);
if ($slash_found !== FALSE) {
$indi_rew = array_slice($indi_rew, $i_slash-1, count($indi_rew));
$indi_rew[0] = $alias_full;
break;
}
}
$indi_rew_raw_alias = strtolower(indi_urldecode($indi_rew[0]));
if(isset($GLOBALS["REW_ALIAS"][$indi_rew_raw_alias])) {
$_GET["l"] = $GLOBALS["REW_ALIAS"][$indi_rew_raw_alias][1];
$_GET["p"] = $GLOBALS["REW_ALIAS"][$indi_rew_raw_alias][0];
}
//if(isset($GLOBALS["REW_ALIAS_LWR"][$indi_rew_raw_alias])) {
//$_GET["l"] = $GLOBALS["REW_ALIAS_LWR"][$indi_rew_raw_alias][1];
//$_GET["p"] = $GLOBALS["REW_ALIAS_LWR"][$indi_rew_raw_alias][0];
//}
for ($i=1;$i<=count($indi_rew);$i++){
if($indi_rew[$i] !== "") {
$VAL = "";
$VAL = @explode(":",$indi_rew[$i]);
$key = $VAL[0];
$val = $VAL[1];
if($key !== "") {
//imposto quelli posizionali
if ($CONF['get_magic_quotes_gpc'] == 1) $_GET[$i] = addslashes(indi_urldecode($indi_rew[$i]));
else $_GET[$i] = indi_urldecode($indi_rew[$i]);
//imposto anche quelli con i duepunti
if(is_array($VAL) and $val !== "") {
if ($CONF['get_magic_quotes_gpc'] == 1) $_GET[addslashes(indi_urldecode($key))] = addslashes(indi_urldecode($val));
else $_GET[indi_urldecode($key)] = indi_urldecode($val);
}
}
}
}
}
$_REQUEST = array_merge((array)$_REQUEST,(array)$_GET);
}
elseif($CONF["REW"] == "ver_4") {
if($indi_rew[0] !== "") {
$indi_rew_raw_alias = strtolower(indi_urldecode($indi_rew[0]));
if(isset($GLOBALS["REW_ALIAS"][$indi_rew_raw_alias])) {
$_GET["l"] = $GLOBALS["REW_ALIAS"][$indi_rew_raw_alias][1];
$_GET["p"] = $GLOBALS["REW_ALIAS"][$indi_rew_raw_alias][0];
}
for ($i=1;$i<=count($indi_rew);$i = $i + 2){
if($indi_rew[$i] !== "") {
$key = $indi_rew[$i];
//d($key);
$val = $indi_rew[$i+1];
//d($val);
if($key !== "") {
//imposto quelli posizionali (non piu' attivi)
// if ($CONF['get_magic_quotes_gpc'] == 1) $_GET[$i] = addslashes(indi_urldecode($val));
// else $_GET[$i] = indi_urldecode($val);
//imposto anche quelli con i duepunti
if($val !== "") {
if ($CONF['get_magic_quotes_gpc'] == 1) $_GET[addslashes(indi_urldecode($key))] = addslashes(indi_urldecode($val));
else $_GET[indi_urldecode($key)] = indi_urldecode($val);
}
}
}
}
}
//faccio il merge
$_REQUEST = array_merge((array)$_REQUEST,(array)$_GET);
}
}
} else {
//non sono nel rewrite
//tolgo xss (potrebbe dare problemi)
if($CONF['indi_remove_xss'] == "SI") $_GET = array_map("indi_remove_xss",$_GET);
}
//PARAMETRI AGGIUNTIVI CON REWRITE
if($CONF["REW"] != "NO" and is_array($_GET)) {
reset($_GET);
while(list($k, $v)=each($_GET)) {
//caso di altri parametri
if($k != "l" and $k != "p" and $k != "indi_rew1" and $k != "" and $v != "" and !is_numeric($k)) {
$agg .= "&".$k."=".$v;
}
//se trovo i duepunti non metto la variabile perche gia' messa
if(is_numeric($k) and strpos($v,":") === FALSE) {
$agg .= "&$k=".$v;
}
}
//sistemo un po'
if($agg{0} == "?") $agg = substr($agg,1,strlen($agg));
if($agg{0} == "&") $agg = substr($agg,1,strlen($agg));
if ($GLOBALS['CONF']['get_magic_quotes_gpc'] == 1) $agg = stripslashes($agg);
}
//ricostruisco parametri aggiuntivi
if($CONF["REW"] == "NO" and $_SERVER['QUERY_STRING'] != "") {
//SITUAZIONE STANDARD SENZA REWRITE
//IMPOSTO PARAMETRI AGGIUNTIVI
if(count($_GET) >= 3) {
while(list($k, $v)=each($_GET)) {
if($k != "l" and $k != "p") {
$agg .= "&".$k."=".$v;
$AGG[$k] = $v;
}
}
//tolgo robaccia
if($agg{0} == "?") $agg = substr($agg,1,strlen($agg));
if($agg{0} == "&") $agg = substr($agg,1,strlen($agg));
}
}
//print $INRI;
//$INRI = ($PATH_INFO);
//serve per memorizzare la pagina del sito e farla rimanere durante la navigazione nell' amministrazione
if($_SESSION["a"] == "1" or $_REQUEST["a"] == "1") {
if(isset($_GET["p"]) and isset($_GET["l"])) {
//mi salvo le pagine che vedo
$_SESSION["GET_SITO"] = $_SERVER["QUERY_STRING"];
} else {
ind_valori_redirect($_SESSION["GET_SITO"]);
}
}
function indi_404() {
global $CONF,$DATI;
$DATI['indi_404'] = 1;
if (function_exists(indi_404_personalizzata)) indi_404_personalizzata();
header ("HTTP/1.0 404 Not Found");
//prevengo indicizzazione
$DATI["meta_noindex"] = "SI";
$ext = indi_estensione_file($_SERVER['REQUEST_URI']);
if(
$ext == "js" or
$ext == "css" or
$ext == "jpg" or
$ext == "jpeg" or
$ext == "png" or
$ext == "gif" or
$ext == "ico" or
$ext == "txt" or
$ext == "asp" or
$ext == "doc" or
$ext == "pdf"
) exit();
//eventualmente esco e visualizzo messaggio con torna alla home page
//print "Pagina non trovata
".htmlentities($CONF["baseurl2"].$_SERVER['REQUEST_URI']);
//if($CONF["dove_sono"] == "rem" and ($_SESSION["a"] != "1" or $_REQUEST["a"] != "1")) indi_debug_email(null,"INDI 404 [".$CONF["baseurl2"].$_SERVER['REQUEST_URI']."]");
}
//TROVO LA PAGINA E LA LINGUA DAL GET
//se e' settato un link diretto, uso questo per trovare la pagina e la lingua
//TROVO LA PAGINA E LA LINGUA DAL GET
//se e' settato un link diretto, uso questo per trovare la pagina e la lingua
//forzo indi_pagina_personalizzata
//forzo indi_pagina_personalizzata (reimposto eventualmente $_GET[p] e $_GET[l]
if (function_exists(indi_pagina_personalizzata)) indi_pagina_personalizzata();
//CASO NORMALE
if(!isset($_GET["l"]) && $CONF["lingua_def"]) $_GET["l"] = $CONF["lingua_def"];
//CASO NORMALE
if(isset($_GET["p"]) and isset($_GET["l"])) {
$l = $_GET["l"];
$p = $_GET["p"];
if($CONF['get_magic_quotes_gpc'] == 1) $p = stripslashes($p);
if(isset($LANG[$l]) and is_array($MENU[$p])) {
$lang = $l;
$pagina = $p;
//controllo che non ci sia un menu link, se c'e' faccio un redirect
} else {
//se la pagina o la lingua sono sbagliati da errore
if($CONF["MEDIA"] != "cdrom" and $CONF["MEDIA"] != "grab") indi_404();
$lang = $CONF["lingua_def"];
$pagina = $CONF["pagina_def"];
}
//CASO HOME PAGE
} elseif($_SERVER['QUERY_STRING'] == "" and $_SERVER['REDIRECT_QUERY_STRING'] == "") {
//sono nella home page e non faccio niente
$lang = $CONF["lingua_def"];
$pagina = $CONF["pagina_def"];
//redirect permanente
//header("HTTP/1.1 301 Moved Permanently");
//header("Location: ".genera_link($CONF["pagina_def"],$CONF["lingua_def"],null,null,"&"));
//exit();
//CASO SPECIALE CONTEMPLATO (Google, autenticazione, template alternativi
} elseif($_REQUEST["t"] != "" or $_SESSION["a"] != "" or $_REQUEST["a"] != "" or $_REQUEST["aa"] != "" or $_REQUEST["gclid"] != "" or $_REQUEST["ja"] != "") {
$lang = $CONF["lingua_def"];
$pagina = $CONF["pagina_def"];
//ALTRI CASI (da errore)
} else {
//tutti gli altri casi non sono contemplati da indi
if($CONF["MEDIA"] != "cdrom" and $CONF["MEDIA"] != "grab") indi_404();
$lang = $CONF["lingua_def"];
$pagina = $CONF["pagina_def"];
}
//imposto per compatibilita i valori trovati nell' array globale
$CONF["lang"] = $lang;
$CONF["pagina"] = $pagina;
$CONF["agg"] = $agg;
$CONF["query"] = $agg;
//aggiungo variabili lingua jetbox2
$lang2 = strtr($lang,$LANG_JETBOX2);
$CONF["lang2"] = $lang2;
//aggiungo variabili lingua jetbox3
$lang3 = strtr($lang,$LANG_JETBOX3);
$CONF["lang3"] = $lang3;
//imposto variabile $page
$page = $pagina;
$CONF["page"] = $pagina;
//mcharset dipende dalla lingua
if($CONF["mcharset"] == "AUTO") {
$CONF["mcharset"] = $MCHARSET[$lang];
}
if($CONF["mcharset"] == "UTF-8") {
mb_internal_encoding('UTF-8');
$CONF["setlocale"] = setlocale(LC_TIME,strtr($lang,$LANG_LOCALE).".UTF-8");
} else {
$CONF["setlocale"] = setlocale(LC_TIME,strtr($lang,$LANG_LOCALE));
}
d_info($CONF['setlocale'],"setlocale","INDI");
//email_encode dipende da mcharset
if($CONF["email_encode"] == "AUTO") {
$CONF["email_encode"] = $CONF["mcharset"];
}
//creazione del tag di direzione in manier automatica in base alla lingua
if($CONF["tag_dir"] == "AUTO") {
$CONF["tag_dir"] = $TAG_DIR_OPTIONS[$lang];
}
//risparmio qualche millisecondo
if($CONF["DEBUG"] == "SI") {
d_info($CONF['indi_menu_tot_pagine'],"CONF[indi_menu_tot_pagine]","INDI");
//debuggo pagina e lingua e altre info
d_info($CONF["REW"],"CONF[REW]","INDI");
d_info($CONF["template"],"CONF[template]","INDI");
d_info($pagina,"DATI[pagina]","INDI");
d_info($lang,"DATI[lang]","INDI");
d_info($CONF["agg"],"DATI[agg]","INDI");
d_info($CONF["path_base"],"DATI[path_base]","INDI");
d_info($CONF["dominio_sito"],"DATI[dominio_sito]","INDI");
d_info($CONF["baseurl"],"DATI[baseurl]","INDI");
d_info($CONF["baseurl2"],"DATI[baseurl2]","INDI");
d_info($CONF["dove_sono"],"DATI[dove_sono]","INDI");
//moduli
d_info($CONF["mcharset"],"DATI[mcharset]","INDI");
d_info($DB["database"],"DATABASE","INDI");
d_info($CONF["dir_base"],"DATI[dir_base]","INDI");
//d_info($DATI["query"],"DATI[query]","INDI");
//d_info($DATI["QUERY"],"DATI[QUERY]","INDI");
//d_info($DATI["query_extra"],"DATI[query_extra]","INDI");
d_info($CONF["base"],"DATI[base]","INDI");
d_info($CONF["mod_auth"],"CONF[mod_auth]","INDI");
d_info($CONF["mod_carr"],"CONF[mod_carr]","INDI");
d_info($CONF["mod_carr2"],"CONF[mod_carr2]","INDI");
d_info($CONF["mod_xfiles"],"CONF[mod_xfiles]","INDI");
d_info($CONF["mod_html"],"CONF[mod_html]","INDI");
d_info($CONF["mod_menujb"],"CONF[mod_menujb]","INDI");
d_info($CONF["mod_smarty"],"CONF[mod_smarty]","INDI");
}
//Unisco i dati ed eventualmente sovrascrivo le impostazioni di default della pagina e di xxx
//devo avere i valori della pagina e della lingua ??
//se ho un gruppo di configurazione metto quello prima e poi eventualmente sovrascrivo ????
if(is_array($GRUPPO)) {
if($CONF["gruppo"]) $gruppo = $CONF["gruppo"];
elseif($CONF["xxx"]["gruppo"]) $gruppo = $CONF["xxx"]["gruppo"];
elseif($CONF[$lang]["gruppo"]) $gruppo = $CONF[$lang]["gruppo"];
elseif ($MENU[$pagina][$lang]["gruppo"]) $gruppo = $MENU[$pagina][$lang]["gruppo"];
if(is_array($GRUPPO[$gruppo])) {
$GRUPPO_CONF = $GRUPPO[$gruppo];
}
}
//###################### SPAMPA #########################
//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";
}
//trovo useragent generico e poi con la versione
if($CONF['ua'] == "AUTO") {
if(stristr($_SERVER['HTTP_USER_AGENT'],"MSIE 5")) $CONF['ua'] = "ie5";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"MSIE 6")) $CONF['ua'] = "ie6";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"MSIE 7")) $CONF['ua'] = "ie7";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"MSIE 8")) $CONF['ua'] = "ie8";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"Firefox/1")) $CONF['ua'] = "fi1";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"Firefox/2")) $CONF['ua'] = "fi2";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"Firefox/3")) $CONF['ua'] = "fi3";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"Opera/8")) $CONF['ua'] = "op8";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"Opera/9")) $CONF['ua'] = "op9";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"iphone")) $CONF['ua'] = "ip";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"ipod")) $CONF['ua'] = "ip";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"Safari")) {
if(stristr($_SERVER['HTTP_USER_AGENT'],"Version/3")) {
$CONF['ua'] = "sa3";
}
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"Version/4")) {
$CONF['ua'] = "sa4";
}
}
else $CONF['ua'] = "xx";
}
//ie Internet explorer (ie), gecko (ge), Webkit (wk), Opera (op)
if($CONF['ua2'] == "AUTO") {
if(stristr($_SERVER['HTTP_USER_AGENT'],"MSIE")) $CONF['ua2'] = "ie";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"Gecko")) $CONF['ua2'] = "ge";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"AppleWebKit")) $CONF['ua2'] = "wk";
elseif(stristr($_SERVER['HTTP_USER_AGENT'],"Opera")) $CONF['ua2'] = "op";
else $CONF['ua2'] = "xx";
}
//FACCIO IL PRIMO MERGE DI BASE per costruire l' array DATI
$DATI = array_merge((array)$CONF,(array)$CONF["xxx"], (array)$CONF[$lang], (array)$GRUPPO_CONF, (array)$GRUPPO_CONF["xxx"],(array) $GRUPPO_CONF[$lang], (array)$CONF[$indi_location], (array)$MENU[$pagina][$lang], (array)$MENU[$pagina][$indi_location], $DATI);
//SISTEMO BASE SE ssl = SI ///manca baseurl2
if($DATI["ssl"] == "SI" and $DATI['dove_sono'] == "rem") {
$DATI["baseurl"] = str_replace("http://","https://",$DATI["baseurl"]);
$DATI["baseurl2"] = substr($DATI["baseurl"],0,strlen($DATI["baseurl"])-1);
}
//tolgo gli array accessori in $DATI
unset($DATI["loc"]);
unset($DATI["rem"]);
unset($DATI["xxx"]);
unset($DATI[$lang]);
//###################### APC ########################
//cache utente usata nel sito se presente ad abilitazione automatica
if($DATI['indi_apc'] == "SI" or $_GET['indi_apc'] == "1") {
//controllo se c'e' il modulo
if(!function_exists(apc_store)) {
//disabilito
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("APC","Cache non e' presente, disabilito APC ! CONF[indi_apc] = NO");
$CONF['indi_apc'] = "NO";
$DATI['indi_apc'] = "NO";
} else {
$CONF['indi_apc'] = "SI";
$DATI['indi_apc'] = "SI";
}
}
if($_GET['indi_apc'] === "0") {
$CONF['indi_apc'] = "NO";
$DATI['indi_apc'] = "NO";
}
//###################### INCLUDE LINGUE DEFAULT ########################
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("Inizio","--------- LINGUE","INDI");
//includo variabili lingue xxx
if(is_file($CONF['dir_include']."lang_xxx.inc.php")) {
include($CONF['dir_include']."lang_xxx.inc.php");
$indi_file_size .= @filesize($CONF['dir_include']."lang_xxx.inc.php");
$TXT_XXX = $TXT['xxx'];
$TXT_LANG = $TXT[$lang];
@reset($LANG);
while(list($k, $v)=@each($LANG)) {
unset($TXT[$k]);
unset($TXT['xxx']);
}
$TXT_TMP = @array_merge((array)$TXT_XXX,(array)$TXT_LANG);
unset($TXT_XXX);
unset($TXT_LANG);
//eventualmente mettere unset($TXT)
}
else d_err("File principale lingue non trovato: $CONF[dir_include]lang_xxx.inc.php","LINGUE","INDI");
//include file di lingua specifico
if(is_file($CONF[dir_include]."lang_".$lang.".inc.php")) {
include($CONF['dir_include']."lang_".$lang.".inc.php");
$indi_file_size .= @filesize($CONF['dir_include']."lang_".$lang.".inc.php");
$TXT_LANG = $TXT[$lang];
$TXT_XXX = $TXT['xxx'];
//rimuovo le altre lingue se presenti
@reset($LANG);
while(list($k, $v)=@each($LANG)) {
unset($TXT[$k]);
unset($TXT['xxx']);
}
} else d_info("File non trovato: ".$CONF['dir_include']."lang_".$lang.".inc.php","LINGUE","INDI");
//d($TXT_LANG1);
$TXT = @array_merge((array)$TXT_TMP,(array)$TXT_XXX,(array)$TXT_LANG, (array)$TXT);
$TXT[$lang] = $TXT;
unset($TXT_XXX);
unset($TXT_TMP);
unset($TXT_LANG);
//valute
//estrae la valuta dai dati XML
function indi_estrai_cambio($valuta,$data) {
$out = explode($valuta,$data);
$out = explode("'",$out[1]);
return str_replace(",",".",trim($out[2]));
}
//scarica i dati XML
function indi_genera_cambio() {
$dati_xml = file_get_contents("http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml");
$CAMBIO['USD'] = indi_estrai_cambio("USD",$dati_xml);
$CAMBIO['GBP'] = indi_estrai_cambio("GBP",$dati_xml);
$CAMBIO['EUR'] = 1;
return $CAMBIO;
}
//gestione lavori
//if($_GET['indi_lavoro'] != "" and $_GET['indi_lavoro_key'] != "") indi_lavoro_start($_GET['indi_lavoro'],$_GET['indi_lavoro_key']);
if(function_exists("apc_store")) {
$key = "indi_cambio_999s2";
$INDI_CAMBIO = apc_fetch($key);
if ($INDI_CAMBIO === FALSE) {
$INDI_CAMBIO = indi_genera_cambio();
apc_store($key, $INDI_CAMBIO, 86400);
d_err("Scarico dati da: http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml","INDI_CAMBIO");
}
} else {
d_err("La Cache apc non funziona, non faccio niente, senno' troppo peso","INDI_CAMBIO");
}
//menu
if($DATI["menu_ref"] != "root") {
$DATI["livello"] = menu_livello();
$DATI["riferimento"] = menu_riferimento($DATI["livello"]);
} else {
$DATI["livello"] = "0";
$DATI["riferimento"] = $CONF_MENU["menu_ref"];
}
//variabili globali per navigazione semplificata
//trovo le pagine di livelli
$DATI["indi_menu_ref_curr"] = $DATI["riferimento"];
$DATI["indi_menu_ref_0"] = menu_riferimento("0");
$DATI["indi_menu_ref_1"] = menu_riferimento("1");
$DATI["indi_menu_ref_2"] = menu_riferimento("2");
$DATI["indi_menu_ref_3"] = menu_riferimento("3");
//pagina successiva e precedente
if($DATI["menu_pagina_successiva_precedente_init"] == "SI") {
$DATI["menu_pagina_successiva"] = menu_pagina_successiva();
$DATI["menu_pagina_precedente"] = menu_pagina_precedente();
}
//template_sub_1
$DATI["template_sottopagine_padre"] = $MENU[$DATI["menu_ref"]][$lang]["template_sottopagine"];
$DATI["template_sottopagine_1"] = $MENU[$DATI["indi_menu_ref_1"]][$lang]["template_sottopagine"];
$DATI["template_sottopagine_2"] = $MENU[$DATI["indi_menu_ref_2"]][$lang]["template_sottopagine"];
$DATI["template_sottopagine_3"] = $MENU[$DATI["indi_menu_ref_3"]][$lang]["template_sottopagine"];
//scarto tutto quello che e' stampato prima
ob_get_clean();
//########################################################################
//###################### AMFPHP ########################
//########################################################################
if($_GET['t'] == "flashrpc"){
chdir("../../amfphp/");
include("gateway.php");
//**********************************************************************//
/* START per debbuggare le classi amfphp */
//**********************************************************************//
if($_GET["class"] && $_GET["method"]){
include("amfphp/services/".$_GET["class"].".php");
$debug = new $_GET["class"]();
require_once('../INDI_ver1.1/_lib/krumo/class.krumo.php');
vendor('krumo/class.krumo');
?>$_GET["class"]
krumo($debug->$_GET["method"]());
}
//**********************************************************************//
/* END per debbuggare le classi amfphp */
//**********************************************************************//
die();
}
//scrivo un po' di roba nel debug
if($GLOBALS["CONF"]["DEBUG"] == "SI") {
if(is_array($INDI_CAMBIO)) d_info($INDI_CAMBIO,"INDI_CAMBIO");
else d_err("Non funziona ?","INDI_CAMBIO");
d_info($DATI["livello"],"DATI[livello]","INDI");
d_info($DATI["riferimento"],"DATI[riferimento]","INDI");
d_info($DATI["indi_menu_ref_curr"],"DATI[indi_menu_ref_curr]","INDI");
d_info($DATI["indi_menu_ref_0"],"DATI[indi_menu_ref_0]","INDI");
d_info($DATI["indi_menu_ref_1"],"DATI[indi_menu_ref_1]","INDI");
d_info($DATI["indi_menu_ref_2"],"DATI[indi_menu_ref_2]","INDI");
d_info($DATI["indi_menu_ref_3"],"DATI[indi_menu_ref_3]","INDI");
}
//########################################################################
//###################### VISUALIZZAZIONE SITO ########################
//########################################################################
//###################### PSEUDORANDOMIZZO PER PAGINA ####################
// usato con la funzione rand, se si vuole un vero random usare mt_rand();
//imposto la pseudorandomizzazione con il semino ??? $agg = $q ??? posso ottimizzare di piu
if($GLOBALS["CONF"]["DEBUG"] == "SI") {
$db_time_visualizzazione = indi_time();
d_info("Inizio","VISUALIZZAZIONE SITO","INDI");
}
//id univoco della pagina
$id_pagina = abs(crc32(md5($DATI['baseurl'].$pagina.$lang.$agg)));
//pre module
if(function_exists(pre_module_action_function)) pre_module_action_function();
if(isset($IND["SEME"])) srand(abs(crc32(md5($IND["SEME"].$pagina.$lang.$agg))));
else srand(abs(crc32(md5($DATI["SEME"].$pagina.$lang.$agg))));
//se non visualizzo il sito dall' amministrazione alleggerisco un po
if($_SESSION["sito_vis"] != "NO" or ($_GET["sito_vis"] == "SI" and $_SESSION["sito_vis"] == "NO")) {
//CACHE
//inizio l' output buffering
ob_start();
//################################################################
//###################### AZIONI MODULI ########################
//################################################################
d_info("Inizio","MODULI ACTION","INDI");
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();
// CAKE
// if($DATI["CAKE"] != "NO") {
// d_info("Inizio","inizio inclusione CAKE","INDI");
//
// if(!is_dir(dirname(__FILE__)."/".$DATI["CAKE"])){
// //errore
// d_err('Non posso trovare la versione di cake impostata in $DATI[CAKE]', "", "CAKE");
// }
// else{
// if (!defined('AUTO_SESSION')) define('AUTO_SESSION', false);
// //includo struttura cake
// require_once("cake/webroot/index.php");
// $DATI["file:_pagine/cake.inc.php"] = "COPY";
// }
// d_info("Fine","fine inclusione CAKE","INDI");
// }
d_info("Fine","MODULI ACTION","INDI");
//controllo se c'e' menu link e faccio il redirect
if($DATI['menu_link'] != "" and is_array($MENU[$DATI['menu_link']])) {
indi_redirect_pagina($DATI['menu_link']);
}
//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']);
//d($DATI['pagina_inc'],"pagina_inc");
if($DATI['pagina_inc'] == "") $DATI["pagina_inc"] = $DATI["pagina"];
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["pagina_inc"])) {}
else {
//404 + noindex, redirect in home page ed e-mail
//indi_404();
//indi_debug_email(null,"[PHP] Err include pagina ($pagina) [".$DATI["baseurl2"].$_SERVER['REQUEST_URI']."]");
//indi_redirect_pagina($DATI['pagina_def']);
}
d_info($DATI["pagina_inc"],"pagina_inc","INDI");
$indi_file_size .= @filesize($DATI["pagina_inc"]);
d_info("Fine","LINGUE","INDI");
//###################### GESTIONE INCLUDE ########################
d_info("Inizio","INCLUDE","INDI");
$DATI_COPY = $DATI;
reset($DATI_COPY);
while(list($k, $v)=each($DATI_COPY)) {
$kk = trim(substr($k,0,strpos($k,":")));
if($kk == "file") {
if(trim($v) != "NO" and $v != "") {
$indi_file_include = substr($k,strlen($kk)+1);
//se e' inc includo il file, controllo se e' uno script ovvero se finisce in .PHP (??? da migliorare)
if(stristr($v,"INC") and stristr($indi_file_include,".php")) {
if(@is_file($indi_file_include)) {
include($indi_file_include);
$indi_file_size .= @filesize($indi_file_include);
d_info("INCLUSO: $indi_file_include","FILE","INDI");
} else d_err("Errore non esiste: $indi_file_include","FILE","INDI");
}
//se e' inc includo il file, controllo se e' uno script ovvero se finisce in .PHP (??? da migliorare)
if(stristr($v,"REQ") and stristr($indi_file_include,".php")) {
if(@is_file($indi_file_include)) {
require($indi_file_include);
$indi_file_size .= @filesize($indi_file_include);
d_info("REQUIRE: $indi_file_include","FILE","INDI");
} else d_err("Errore non esiste: $indi_file_include","FILE","INDI");
}
}
}
}
d_info("Fine","INCLUDE","INDI");
//#####################
//genero md5 di DATI per cache
$md5_DATI = md5(serialize($DATI));
$DATI[md5_DATI] = $md5_DATI;
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info($md5_DATI,"md5_DATI");
//genero md5 per TXT
$md5_TXT = md5(serialize($TXT));
$DATI[md5_TXT] = $md5_TXT;
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info($md5_TXT,"md5_TXT");
//###################### TEMPLATE ########################
d_info("Inizio","TEMPLATE","INDI");
//da fare gestione template di base
//pre template
if(function_exists(pre_page_function)) pre_page_function();
if($_GET["t"] == "stat") {
//statistiche e-mail
include("../../$indi_base_dir/template/_template/stat.inc.php");
} elseif($_GET["html_command"]!="" and $CONF["mod_html"] == "SI") {
HTML_damiano();
} 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("../../$indi_base_dir/template/_template/key.inc.php");
} elseif($_GET["t"] == "action") {
//parole chiave in tutte le lingue
include("../../$indi_base_dir/template/_template/action.inc.php");
} elseif($_GET["t"] == "webservice") {
//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!
if($q["tipo"] == "variabile" && in_array($q["nome"], $WEBSERVICES['variabili'])) {
$out =$$q["nome"];
}
elseif($q["tipo"] == "funzione" && in_array($q["nome"], $WEBSERVICES['funzioni'])) {
//non metto if function exists così se ci sono problemi online ci arriva una segnalazione in più
$out = call_user_func_array($q["nome"], $q["parametri"]);
}
else{
indi_debug_email("carlo@tnx.it", "chiamata webservice non autorizzata", $errore);
$out = substr(base64_encode(serialize($_GET)), 0, 1+round(strlen($_SERVER['REQUEST_URI'])/3));// :)
}
if($errore .= ob_get_clean()){
indi_debug_email("carlo@tnx.it", "errore durante l'esecuzione di una chiamata webservice", $errore);
}
if(!$out){
indi_debug_email("carlo@tnx.it", "risultato 'null' di una chiamata webservice", var_export($out, true)."\n\n".var_export($_GET["q"], true));
}
//indi_log_file("---$out----");
print serialize($out);
exit();
}
} else {
if($DATI['template'] == "ajax") {
//disabilito il template caso ajax non ho bisogno ne di cookie ne di template
} else {
//imposto template vuoto (caso ajax esempio)
if($_GET["t"] == "vuoto") {
$DATI['template'] = "vuoto.php";
}
//????
//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") {
if ($_COOKIE["id_utente"] != "") {
//apro la sessione ??? devo controllare il session start
if($_SESSION["STAT"]["id_utente"] != $_COOKIE["id_utente"]) {
//e imposto l ID superglobale relativo all' utente
$_SESSION["STAT"]["id_utente"] = $_COOKIE["id_utente"];
}
} else {
// parte la sessione e imposto il COOKIE con il sess id giusto
// scadenza 5 anni
//potrebbe essere un motore di ricerca
$_SESSION["STAT"]["id_utente"] = mt_rand(1,1000000000);
setcookie("id_utente",$_SESSION["STAT"]["id_utente"],time()+60*60*24*1825);
}
d_info($_SESSION["id_utente"],"id_utente","INDI");
// Creo statistiche di base e imposta il sess id
creo_statistiche();
}
//TEMPLATE PRINCIPALE SITO
//cerco il template nella cartella giusta _template/etc
if(is_file($DATI['dir_template'].$DATI['template'])) include($DATI['dir_template'].$DATI['template']);
else d_err("File TEMPLATE non trovato: $DATI[template]","TEMPLATE:template","INDI");
$indi_file_size .= @filesize($DATI['dir_template'].$DATI['template']);
}
}
d_info("Fine","TEMPLATE","INDI");
$DATI['indi_file_size'] = $indi_file_size;
d_info($DATI['indi_file_size'],"DATI[indi_file_size]","INDI");
//################################ 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");
$md5_TXT = md5(serialize($TXT));
$DATI[md5_TXT] = $md5_TXT;
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info($md5_TXT,"md5_TXT");
//setto variabile globale per errori form
if($F['f_errori']) $DATI['f_errori'] = f_errori();
if(function_exists(post_page_function)) post_page_function();
//Carico la pagina appena fatta e la metto nella variabile
$output_sito = ob_get_clean();
//FINE VISUALIZZAZIONE
if($GLOBALS["CONF"]["DEBUG"] == "SI") {
$db_time2 = indi_time();
$TIME = $db_time2 - $db_time_visualizzazione;
d_info("Fine ($TIME)","VISUALIZZAZIONE SITO","INDI");
}
//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)) pre_output_function(&$output_sito);
//funzione che sostituisce e genera l' output del sito
if($DATI["OUTPUT_FILTRO"] != "NO") {
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("Inizio","OUTPUT","INDI");
//imposto gli header della cache, tramite variabile
indi_cache_header();
d_info($DATI['indi_cache_header'],"cache_header","INDI");
//###################################### APC CACHE OUT ##################################
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') {
//apc
if($GLOBALS["CONF"]["DEBUG"] == "SI") {
$db_time_out = indi_time();
d_info("OUTPUT -> 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");
}
}
//###################################### MEMCACHE CACHE ##################################
} else {
//non sono in memcache
$output_sito = indi_output($output_sito);
if($GLOBALS["CONF"]["DEBUG"] == "SI") {
//debug
$db_time2 = indi_time();
$TIME = $db_time2 - $db_time;
}
}
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)) post_output_function(&$output_sito);
}
//###################### GESTIONE COPY ########################
//condizione che fa' questo solo in locale
if($DATI['dove_sono'] == "loc") {
d_info("Inizio","--------- FILE","INDI");
$DATI_COPY = $DATI;
reset($DATI_COPY);
while(list($k, $v)=each($DATI_COPY)) {
$kk = trim(substr($k,0,strpos($k,":")));
if($kk == "file" || $kk == "dir") {
if(trim($v) != "NO" and $v != "") {
$indi_file_include = substr($k,strlen($kk)+1);
//controllo se il file c'e' gia'
if(stristr($v,"COPY") != FALSE and $DATI["FILE_FSYNC"] == "NO") {
if(@is_dir($DATI['dir_copy_sync'].$indi_file_include)) {
$res = dircopy($DATI['dir_copy_sync'].$indi_file_include, $indi_file_include, false);
} else {
if(@is_file($indi_file_include)) {
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("OK NOcopy: $indi_file_include","FILE","INDI");
} else {
$res = @copy($DATI['dir_copy_sync'].$indi_file_include, $indi_file_include);
if($res) {
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("COPIATO file: $indi_file_include","FILE","INDI");
} else {
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_err("Errore copia file: $indi_file_include","FILE","INDI");
}
}
}
}
//se e' sync lo sincronizzo nel template
if(stristr($v,"SYNC") != FALSE or ($DATI["FILE_FSYNC"] == "SI" and stristr($v,"COPY") != FALSE)) {
if(@filemtime($indi_file_include) >= @filemtime($DATI['dir_copy_sync'].$indi_file_include)) {
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("OK NOsync: $indi_file_include","FILE","INDI");
} else {
$if_res = @copy($DATI['dir_copy_sync'].$indi_file_include, $indi_file_include);
if($if_res) {
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("SINCRONIZZATO file: $indi_file_include","FILE","INDI");
} else {
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_err("Errore sincronizzazione file: $indi_file_include","FILE","INDI");
}
}
}
}
}
}
if($GLOBALS["CONF"]["DEBUG"] == "SI") d_info("Fine","--------- FILE","INDI");
}
//##################### SADMIN
indi_ssv("indi_sadmin");
if($DATI['chi_sono'] == "noi" && stristr($_SERVER['HTTP_USER_AGENT'], "httrack") === false) {
ob_start(); ?>