/' \""); return true; } else { return false; } } function indi_admin_test_sync() { if(indi_job_start("File sync")) { return true; } else { return false; } } // Job di avvio per il dump del database function indi_start_db_update(){ global $DB, $CONF; set_time_limit(0); //indi_log($DB['database']); if($DB['database'] != "" and $_GET['dbg'] == "" or $_GET['indi_admin_db_sync'] == 1){ if(indi_check_log($DB['database']) == false or $_GET['indi_admin_db_sync'] == 1) { //indi_log("aggiornamenti da effettuare $DB[database])"); // Ci sono aggiornamenti da effettuare // indi_job_start("sync_db: '$DB[database]'"); //d_err("sync_db: '$DB[database]'"); if(indi_run_update($dbToUpdate)){ // Aggiornamenti OK // indi_job_log("OK indi_start_db_update"); //CAKE // Chiamo il dbg e cancello la cache per evitare errori amministrazione indi_delete_temp_dir("admin_tnx/tmp/cache/"); //cake indi_url_get_content($CONF['baseurl']."?&dbg=1"); indi_url_get_content($CONF['baseurl']."admin_tnx/?&dbg=1"); //indi_log("file_get_contents:".$CONF[baseurl]."?&dbg=1"); } else { // Errore nell'esecuizione di alcuni aggiornamenti // indi_job_error("ERR indi_start_db_update"); } // indi_job_finish(); } } } // Job di avvio per il dump del database function indi_db_start_dump(){ set_time_limit(0); $tables = array_keys($_GET['tables']); $export_data = (bool) $_GET['export_data']; if(indi_job_start("DB DUMP PARAMETRIZZATO")) { $ret = indi_db_dump($tables,$export_data); if($ret['stato'] == 0) indi_job_error($ret['descrizione']); else { $link_ret = "Scarica Dump"; indi_job_finish($link_ret); } return true; } else { return false; } } // Job di avvio per l'invio online del database function indi_db_start_restore_online(){ set_time_limit(0); if(indi_job_start("DB RESTORE ONLINE")) { $ret = indi_db_dump(); if($ret['stato'] == 0){ indi_job_error($ret['descrizione']); } else { $CONF_DB = $GLOBALS['DB_REMOTE']; // Imposto connessione $CONF_DB['database'] = $GLOBALS['DB']['database']; $ret = indi_db_restore_dump($ret['nome_file'], true, $CONF_DB); if($ret['stato'] == 1){ // Restore eseguito correttamente, creo l'output $output = $ret['codice']; if($ret['codice']) $output .= " - " . $ret['errori']; indi_job_finish($output); } else { // Errore nell'esecuzione del restore, restituisco l'errore se necessario $output = $ret['codice']; if($ret['errori']) $output .= " - " . $ret['errori']; indi_job_error($output); } } return true; } else { return false; } } // Job per ottenere tutte le tabelle di un database function indi_db_table_list($DBCONFIG){ // Connessione al DB e selezione database $link = @mysql_tnx_connect($DBCONFIG['host'], $DBCONFIG['username'], $DBCONFIG['password']); if(!$link) return array("ret" => 0, "errore" => "Errore Parametri"); mysql_tnx_select_db($DBCONFIG['database'], $link); if(mysql_tnx_error()) return array("ret" => 0, "errore" => "Errore selezione database: " . mysql_tnx_error()); // Query per estrazione tabelle $result = mysql_tnx_query("SHOW TABLES", $link); if(!$result) return array("ret" => 0, "errore" => "Errore query estrazione tabelle: " . mysql_tnx_error()); // Estrazione tabelle $tableList = array(); while($table = mysql_tnx_fetch_array($result)) $tableList[] = $table[0]; return array("ret" => 1, "output" => $tableList); } // Job per la creazione della form per i filtraggi del dump function indi_db_dump_form(){ global $DB; $res = indi_db_table_list($DB); if($res[ret] == 1){ $tableList = $res[output]; if($tableList){ $output .= "
\n"; foreach($tableList as $tab) $output .= "\n"; $output .= "\n"; $output .= "\n"; $output .= "
"; return $output; } } else { return "

" . $res[errore] . "

"; } } function indi_delete_temp_dir($dirpath){ return true; if($dirpath){ $handle = opendir($dirpath); while (($file = readdir($handle)) !== false) { if(file_exists($dirpath . $file) AND $file != "." AND $file != ".."){ unlink($dirpath . $file); } } closedir($handle); } indi_log("Cancellata cartella temp per aggiornamento database"); } /* ---------------- ADMIN DB ----------------------*/ /* Controllo presenza log degli aggiornamenti ed eventuale creazione */ function indi_check_log($dbDestinazione){ global $DB, $DB_SYNC, $DATI; // db_q("SET SESSION sql_mode='ANSI_QUOTES';");//se setto questo parametro le doppie virgolette lavorano come il backtick (quindi tutte le query che vengono lanciate con doppie virgolette usate per contenere stringhe daranno errore, vedi sito_turismo_new + query di log lib pagamenti) $result = db_q("SHOW TABLES IN `$dbDestinazione` LIKE 'log_db'"); if($result) $logExists = mysql_tnx_fetch_assoc($result); if(!$logExists){ $q = "CREATE TABLE IF NOT EXISTS log_db ("; $q .= "id INT(11) NOT NULL PRIMARY KEY, "; $q .= "utente varchar(50), "; $q .= "descrizione varchar(100), "; $q .= "data_ora TIMESTAMP DEFAULT CURRENT_TIMESTAMP) "; db_q($q); indi_log("Aggiornamento DB $dbDestinazione: creata tabella log"); } /* TUX - CORRETTO CONTROLLO PERCHE' CARLO HA TOLTO DELLE QUERY DAL DB SYNC E QUINDI NON TORNANO PIU' I TOTALI */ // // Controllo se ci sono aggiornamenti da effettuare // $numAggiornamentiTot = count($DB_SYNC); // Aggiornamenti totali // $result = mysql_tnx_query("SELECT count(*) as tot FROM log_db"); // if($result) $numAggiornamentiFatti = mysql_tnx_fetch_assoc($result); // $numAggiornamentiFatti = $numAggiornamentiFatti[tot]; // Aggiornamenti effettuati /* NUOVO SISTEMA, VERIFICO NEI LOG SE SONO STATI FATTI TUTTI GLI AGGIORNAMENTI */ $IDS_UPDATE = array_keys($DB_SYNC); $result = mysql_tnx_query("SELECT count(*) as tot FROM log_db WHERE id IN (" . implode(", ", $IDS_UPDATE) . ")"); if($result){ $numAggiornamentiFatti = mysql_tnx_fetch_assoc($result); $numAggiornamentiFatti = $numAggiornamentiFatti[tot]; $numAggiornamentiTot = count($IDS_UPDATE); //indi_log("$numAggiornamentiFatti $numAggiornamentiTot"); if($numAggiornamentiFatti !== FALSE and $numAggiornamentiTot !== FALSE and ($numAggiornamentiFatti < $numAggiornamentiTot)){ // Devo fare ancora alcuni aggiornamenti return false; } else { // Gli aggiornamenti sono già stati fatti, aggiorno numero di versione // mysql_tnx_query("TRUNCATE TABLE version", $link); // mysql_tnx_query("INSERT INTO version SET number = " . $DATI[st_versione_db], $link); return true; } } else { return false; } } /** Esegue gli aggiornamenti */ function indi_run_update($dbDestinazione){ global $DB, $DB_SYNC; // Connesione al database $link = @mysql_tnx_connect($DB['host'], $DB['username'], $DB['password']); @mysql_tnx_select_db($dbDestinazione, $link); $allUpdate = true; foreach($DB_SYNC as $id => $update){ if(indi_check_log_id($dbDestinazione, $id)){ //queri o multi query $query_all = explode(";",$update[query]); if(count($query_all) > 1) { foreach($query_all as $k => $v){ if(trim($v)) $result = mysql_tnx_query($v); } } else { $result = mysql_tnx_query($update[query]); } if(!mysql_tnx_error()){ $eseguito = indi_add_log_id($dbDestinazione, $id); } else { $err = addslashes(mysql_tnx_error()); //$allUpdate = false; indi_log("DB_SYNC: Errore aggiornamento $id in $dbDestinazione: $err"); d_err("DB_SYNC: Errore aggiornamento $id in $dbDestinazione: $err","db_sync","DATAB"); if($update['controllo']) { $result = mysql_tnx_query($update[controllo]); if(!mysql_tnx_error()){ $eseguito = indi_add_log_id($dbDestinazione, $id); } else { $allUpdate = false; $err = addslashes(mysql_tnx_error()); indi_log("DB_SYNC: Errore GRAVE controllo aggiornamento $id in $dbDestinazione: $err"); d_err("DB_SYNC: Errore GRAVE controllo aggiornamento $id in $dbDestinazione: $err","db_sync","DATAB"); } } //controllo inversio if($update['controllo_inv']) { $result = mysql_tnx_query($update[controllo]); if(mysql_tnx_error()){ $eseguito = indi_add_log_id($dbDestinazione, $id); } else { $allUpdate = false; $err = addslashes(mysql_tnx_error()); indi_log("DB_SYNC: Errore GRAVE controllo aggiornamento $id in $dbDestinazione: $err"); d_err("DB_SYNC: Errore GRAVE controllo aggiornamento $id in $dbDestinazione: $err","db_sync","DATAB"); } } } } } return $allUpdate; } function indi_add_log_id($dbDestinazione, $id){ global $DB, $DB_SYNC; // Creo query di aggiornamento $q = "INSERT INTO log_db SET "; $q .= "id = '$id', "; $q .= "descrizione = '" . addslashes($DB_SYNC[$id][descrizione]) . "', "; $q .= "utente = '" . $ute = $DB_SYNC[$id][utente] . "'"; // Connesione al database $link = @mysql_tnx_connect($DB['host'], $DB['username'], $DB['password']); @mysql_tnx_select_db($dbDestinazione, $link); mysql_tnx_query($q, $link); if(mysql_tnx_error()) indi_log("Aggiornamento db $dbDestinazione: errore inserimento log $id - " . mysql_tnx_error()); else return true; return false; } /** Controllo se un aggiornamento è stato già effettuato o no */ function indi_check_log_id($dbDestinazione, $id){//carlo: ritorna true se la query corrispondente all'id non è stata fatta global $DB; // Connesione al database $link = @mysql_tnx_connect($DB['host'], $DB['username'], $DB['password']); @mysql_tnx_select_db($dbDestinazione, $link); // Controllo se l'aggiornamento è già stato fatto sul db $result = mysql_tnx_query("SELECT id FROM log_db WHERE id = '$id'"); if($result) return !mysql_tnx_fetch_assoc($result); else return false; } // function indi_sync_fb_versione($dbDestinazione){ // global $DB, $DATI; // // // Modifico versione database destinazione // $link = mysql_tnx_connect($DB['host'], $DB['username'], $DB['password']); // mysql_tnx_select_db($dbDestinazione, $link); // // mysql_tnx_query("TRUNCATE TABLE version", $link); // mysql_tnx_query("INSERT INTO version SET number = " . $DATI[st_versione_db], $link); // // if(mysql_tnx_error()) indi_log("Aggiornamento db $dbDestinazione: errore aggiornamento versione - " . mysql_tnx_error()); // else return true; // // return false; // } /* ######################## FUNZIONI PER DUMP E RESTORE ##################### */ /** Pulizia dei file dump (toglie chiavi BTREE) */ function indi_db_clear_dump_file($nomeFile){ //cecca 31/05/17 - modo più efficiente, aggiunto $mysqlDumpExtraParam in indi_db_dump per poter passare ad esempio --compatible=mysql40 che non andrà a generare using btree return true; /* if(is_file($nomeFile)) { //pulisco dump (da rifare piu' efficente) $out = file_get_contents($nomeFile); unlink($fileOutput); //hack per btree $out = str_replace("USING BTREE","",$out); if($out) { indi_log("indi_db_clear_dump_file: pulisco dump e sovrascrivo file"); file_put_contents($nomeFile,$out); return true; } } indi_log("indi_db_clear_dump_file: errore pulitura ($nomeFile)"); return false; */ } function indi_db_dump($tables = array(), $escludiDati = false, $mysqlDumpExtraParam = ""){ global $CONF, $DB; $link = @mysql_tnx_connect($DB['host'], $DB['username'], $DB['password']); // Connesione al database $user = $DB[username]; $password = is_locale() ? "" : $DB['password']; //da fare $result = mysql_tnx_query("SHOW DATABASES LIKE '" . $DB[database] . "'",$link); // Controllo esistenza db if($result) $dbExists = mysql_tnx_fetch_assoc($result); if(!$dbExists){ indi_log("errore creazione dump: db " . $DB[database] . " inesistente"); return array("stato" => 0, "descrizione" => "origine_inesistente"); // Errore: Db di origine non esiste } @mysql_tnx_select_db($dbOrigine, $link); // Se è presente il parametro tables controllo che le tabelle esistano tutte if($tables){ $parTables = ""; foreach($tables as $tab){ // Controllo se la tabella esiste $result = mysql_tnx_query("SHOW TABLES IN " . $DB[database] . " LIKE '$tab'",$link); if($result) $checkTabelle = mysql_tnx_fetch_assoc($result); if($checkTabelle){ $parTables .=" $tab"; // Tabella esistente, aggiunta al dump } else { indi_log("errore creazione dump: tabella $tab inesistente"); return array("stato" => 0, "descrizione" => "tabella_inesistente"); // Errore: Tabella non esiste } } } // Creo cartella dump all'interno della cartella indi dove salvare il file if(!file_exists($CONF["dir_indi"]."dump")) { mkdir($CONF["dir_indi"]."dump"); indi_log("mkdir indi/dump"); } // Creazione nome file di output $fileOutput = $DB['database'] . "_" . date("YmdHis") . "_dump_db.sql"; $fileOutput = "indi/dump/$fileOutput"; // Costruzione comando da eseguire $command = "mysqldump $mysqlDumpExtraParam --opt "; if($escludiDati) $command .= "--no-data "; $command .= $DB[database]; if($parTables) $command .= $parTables; $command .= " -u $user"; if($password) $command .= " -p$password"; $command .= " > $fileOutput"; $command .= ";echo \$?"; $ret = exec($command); indi_log("indi_db_dump: $command"); // Controllo se il dump è andato a buon fine if($ret != "0"){ // Errore nella creazione del dump, cancello il file, scrivo nel log e ritorno errore unlink($fileOutput); indi_log("indi_db_dump: errore nell'esecuzione del comando, file cancellato"); return array("stato" => 0, "descrizione" => "err_esecuzione_dump", "debug_ret" => $ret, "debug_command" => $command); } if(indi_db_clear_dump_file($fileOutput)){ // Esecuzione avvenuta correttamente, scrivo nel log e ritorno conferma indi_log("indi_db_dump: creazione dump ok"); return array("stato" => 1, "codice" => "ok_dump", "nome_file" => $fileOutput); } return array("stato" => 0, "codice" => "ko_dump"); } /** Eseguo dump su un database, se il database non esiste viene creato */ function indi_db_restore_dump($file, $sovrascrivi = false, $database = NULL, $DBCONF = NULL){ global $DB; //prendo i dati di default di indi if(!$DBCONF) $DBCONF = $DB; //forzo database if($database != "") $DBCONF['database'] = $database; if(!$DBCONF['database']){ indi_log("indi_db_restore_dump: nessun database su cui ripristinare!"); return array("stato" => 0, "codice" => "nessun database su cui ripristinare!"); } indi_log("Restore nel DB: ".$DBCONF['database']); if(!file_exists($file)){ indi_log("indi_db_restore_dump: file indicato inesistente"); return array("stato" => 0, "codice" => "file_dump_inesistente"); } indi_log("Restore da dump: $file"); if($DBCONF['host'] and $DBCONF['username'] and $DBCONF['password']){ // Connessione mysql senza selezione db $link = @mysql_tnx_connect($DBCONF['host'], $DBCONF['username'], $DBCONF['password']); if(!$link){ indi_log("indi_db_restore_dump: errore connessione"); return array("stato" => 0, "codice" => "errore connessione"); } } else { indi_log("indi_db_restore_dump: parametri database non completi"); return array("stato" => 0, "codice" => "parametri_configurazione_sbagliati"); } // Controllo se il database esiste online $result = mysql_tnx_query("SHOW DATABASES LIKE '" . $DBCONF['database'] . "'",$link); if($result){ $checkEsistente = mysql_tnx_fetch_assoc($result); } else if(mysql_tnx_error($link )){ indi_log("indi_db_restore_dump: database " . $DBCONF['database'] . " database esistente"); } // Devo sovrascrivere? if($sovrascrivi){ if($checkEsistente){ // Cancello Database if(!mysql_tnx_query("DROP DATABASE " . $DBCONF['database'] . "", $link)){ indi_log("indi_db_restore_dump: Errore cancellazione database"); return array("stato" => 0, "codice" => "errore_cancellazione_db", "errori" => mysql_tnx_error($link )); } else { indi_log("indi_db_restore_dump: database " . $DBCONF['database'] . " cancellato per sovrascrittura"); } } } else { // Se il database esiste ritorno errore, non posso sovrascrivere! if($checkEsistente){ indi_log("indi_db_restore_dump: database già esistente, opzione sovrascrittura disabilitata"); return array("stato" => 0, "codice" => "db_esistente_senza_sovrascrittura"); } } // Creo database vuoto if(!mysql_tnx_query("CREATE DATABASE " . $DBCONF['database'],$link )){ indi_log("indi_db_restore_dump: Errore creazione database"); return array("stato" => 0, "codice" => "errore_creazione_db", "errori" => mysql_tnx_error($link)); } // Seleziono db nuovo if(!@mysql_tnx_select_db($DBCONF['database'], $link)){ indi_log("indi_db_restore_dump: Errore selezione database"); return array("stato" => 0, "codice" => "errore_selezione_db", "errori" => mysql_tnx_error($link)); } $err = ""; $templine = ''; $lines = file($file); foreach ($lines as $line){ if(substr($line, 0, 2) == '--' || substr($line, 0, 2) == '/*' || $line == '') continue; $templine .= $line; if (substr(trim($line), -1, 1) == ';'){ //query if(!mysql_tnx_query(trim($templine), $link)){ $err .= mysql_tnx_errno($link) . ": " . mysql_tnx_error($link). " \n"; } $templine = ''; } } if(!$err){ indi_log("indi_db_restore_dump: Ok restore! Database: $DBCONF[database]"); return array("stato" => 1, "codice" => "Ok restore! Database: $DBCONF[database]"); } else { indi_log("indi_db_restore_dump: Errore restore ($err)"); } } /** Creazione del dump di un database e restore di dati e struttura in un altro */ function indi_db_duplica($db_origine, $db_destinazione, $sovrascrivi = false ,$tables = null, $escludiDati = false){ // Controllo se posso ottenere il lock e proseguire if(checkFileLock("dump_restore", $db_origine, $db_destinazione)){ // Lock ottenuto, eseguo il dump del database $dump = indi_db_dump($tables, $escludiDati); if($dump[stato] == 1){ // Dump a buon fine, eseguo restore $err = indi_db_restore_dump($db_destinazione, $dump["nome_file"], $sovrascrivi); $cod = $err ? "db_duplicato_con_errori" : "ok_duplica"; } else { return $dump["codice"]; // Errore nel dump } freeLockFile(); // Rilascio il lock return array("stato" => 1, "codice" => $cod, "err" => $err); } else { // Lock non ottenuto return array("stato" => 0, "codice" => "impossibile_ottenere_lock"); } } /* ---------------- AUTOGESTIONE X ADMIN ---------------------- //aggiorna all' atto dell' inizializzazione del sito alune variabili globali nel database globale indi_admin db_q("UPDATE premio_utenti_stat SET numero_login = numero_login + 1 WHERE id_utente = '$id_utente'"); if(!mysql_tnx_affected_rows()) db_q("INSERT DELAYED INTO premio_utenti_stat SET id_utente = '$id_utente', numero_login = numero_login + 1, data_inserimento = CURRENT_TIMESTAMP"); */ //chiave $_indi_admin_refresh_db = 0; function indiAdminLog($tipo, $dettagli = '', $singoloLogPerSitoDISATTIVATO = false){ return; // 15/6/2020 Disattivo $singoloLogPerSito perchè se ci sono qualche migliaio di righe (5000) questa query impiega quasi 5 secondi: "select sql_no_cache sito_id from logs where `sito_id`='934' AND `tipo`='no_mod_pc_gdpr' limit 1" // con singoloLogPerSito=true c'è comuqnue un rallentamento proporzionale al numero di log del sito, se singoloLogPerSito=false nessun problema di prestazioni ma tabella infinita, probabilmente la solzione è non backupparla if(!$GLOBALS['CONF']['indiAdminId']) return;//abilito i log solo per una percentuale di visite, vedi sotto indiAdminMainLog $sql = array( "sito_id" => $GLOBALS['CONF']['indiAdminId'], "tipo" => $tipo ); // commento vecchio (non vero): la query di select su tipo e sito non ci mette di più rispetto alla insert // $time3k = -microtime(true); // if($singoloLogPerSito && db_qrs("select sito_id from logs where ".arrayToSql($sql, ' AND ')." limit 1", 0, "indi_admin", 'utf8')){ // indi_log_globale("indiAdminLog select ms ".(round(($time3k+microtime(true))*100000)/100)); // return; // } $sql['url'] = "http".(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 's' : '')."://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; $sql['dettagli'] = $dettagli; // $time3k = -microtime(true); $return = db_q(" INSERT INTO logs SET data = CURRENT_TIMESTAMP, ".arrayToSql($sql)."", "indi_admin", 'utf8'); // indi_log_globale("indiAdminLog insert ms ".(round(($time3k+microtime(true))*100000)/100)); return $return; } function indiAdminMainLog(){ global $CONF,$NO_INDI_RENDER; //cecca 14/01/25 salto log random perchè se non si vuole il render di indi per velocizzare non c'è bisogno di questo log e soprattutto cambia database e non viene riselezionato perchè dentro index1.1.php poi salta boot01000_variabili_pagina.php che avrebbe riselezionato il db del sito if ($NO_INDI_RENDER) return; if(mt_rand(0,3) || $_SERVER['TNX_LIMITA_CARICO']) return; // if(!$CONF['usaNuovaDbQ']) return; $ssl = (int)(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off'); $sql = array( // "https" => $ssl,//prima mettevamo anche il protocollo nell'url da autorizzare, ora non più, quindi evito che si creino due inserimenti, con ssl e senza "dominio" => $_SERVER['SERVER_NAME'], "cartella" => $CONF['sito'], "db" => $GLOBALS['DB']['database'] ); $CONF['indiAdminId'] = db_qrs("SELECT id from siti where ".arrayToSql($sql, " AND "), 0, "indi_admin", 'utf8'); if($CONF['indiAdminId'] === false) return;//db morto $sql['https'] = $ssl; $sql = arrayToSql($sql); if(!$CONF['indiAdminId']){ db_q(" INSERT INTO siti SET $sql, lastVisit = CURRENT_TIMESTAMP, totalVisits = 1", "indi_admin", 'utf8'); $CONF['indiAdminId'] = db_last_insert_id(); if(indi_is_production() && $CONF['indiAdminId'] && !$CONF['dominioMultiDb']){ $url = "http".($ssl?"s":"")."://".$_SERVER['SERVER_NAME']; // trigger_error_to_carlo("Controlla parametri nuovo sito online"); indi_email(array( "to" => $GLOBALS['_dev_email'].",s.selvi@tnx.it", "from_email" => "nuovositoonline@tnx.it", "email_copia" => "NO", "oggetto" => "Nuovo sito online ".$url." (cartella: ".$CONF['sito']." - db: ".$GLOBALS['DB']['database'].")", // "messaggio" => "Aggiungere queste due entry:\n". // "$url\n". // "$url/*\n". // "\n". // "su:\n". // "https://console.cloud.google.com/apis/credentials/key/0?project=api-project-943986763139\n". // "(account tnxstaff@gmail.com)\n" "messaggio" => "Aggiungere questa entry:\n". $_SERVER['SERVER_NAME']."/*\n". "\n". "su:\n". "https://console.cloud.google.com/apis/credentials/key/486fe6af-c910-4897-9744-8c9ecb4237c7?folder=&organizationId=&project=api-project-943986763139 (ordinalo)\n". "oppure su:". "https://console.cloud.google.com/apis/credentials/key/0?project=api-project-943986763139 (altri siti)\n". "(login tnxstaff@gmail.com)\n\n\n\n". "Pagina visitata: http".(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 's' : '')."://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] )); } } // else{ else if(false){ db_q(" UPDATE LOW_PRIORITY siti SET lastVisit = CURRENT_TIMESTAMP, totalVisits = totalVisits+1 WHERE id = '".addslashes($CONF['indiAdminId'])."'", "indi_admin", 'utf8'); } // $link = db_q(" // INSERT DELAYED INTO siti // SET // $sql, // lastVisit = CURRENT_TIMESTAMP, // totalVisits = 1 // ON DUPLICATE KEY // UPDATE // lastVisit = CURRENT_TIMESTAMP, // totalVisits = totalVisits+1", // "indi_admin", 'utf8'); //With ON DUPLICATE KEY UPDATE, the affected-rows value per row is 1 if the row is inserted as a new row, //2 if an existing row is updated, and 0 if an existing row is set to its current values. $_indi_admin_refresh_db = (boolean)$CONF['indiAdminId']; } //aggiorna le informazioni nel database globale function indi_admin_refresh_db() { global $_indi_admin_refresh_db; return; //disattivato carlo if(function_exists("file_get_html"))//su pescille c'è già ed è una versione diversa return; if(function_exists("apc_store") and $GLOBALS['CONF']['sito'] != "" and $GLOBALS['DATI']['pagina_def'] == $GLOBALS['pagina']) { $_indi_sito = apc_fetch($GLOBALS['CONF']['sito']); // or $_indi_sito != $_indi_sito_new //se e' scaduta la cache if ($_indi_sito === FALSE or $_GET['indi_admin_refresh_db'] != '') { //indi_admin_refresh_db forzo refersh //salvo nella cache $ret = apc_store($GLOBALS['CONF']['sito'], $GLOBALS['CONF']['sito'], $GLOBALS['CONF']['admin_refresh_db_time']); if($ret === TRUE) { $_indi_admin_refresh_db = 1; @db_q_utf8("INSERT INTO siti SET id = '".$GLOBALS['CONF']['sito']."'","indi_admin"); //se ci sono i tag //estraggo dati pagina //includo libreria per parse hmtml include_once($GLOBALS['DATI']["dir_lib"].'simplehtmldom/simple_html_dom.php'); $html = new simple_html_dom(); $html->load($GLOBALS[output_sito]); $title = $html->find('title',0)->innertext; $mdesc = $html->find('meta[name=description]',0)->content; $mkey = $html->find('meta[name=keywords]',0)->content; $h1 = $html->find('h1',0)->innertext; $h2 = $html->find('h2',0)->innertext; $testi = indi_nl2spazio2($html->plaintext); $link_tnx = $html->find('.link_tnx',0)->innertext; //dominio e page rank, solo se e' online e non e' sul sito di test //DISABILITATO if(1==2 and indi_is_production()) { $dominio = str_replace("www.","",$_SERVER['HTTP_HOST']); //carlo: messa chiocchiola perchè spesso la richiesta va in timeout $pr = json_decode(@indi_apc_get_url("http://pagerank.koeniglich.ch/json/$dominio"),"604800");//1 settimana if(is_numeric($pr['rank'])) $pr = $pr['rank']; else $pr = 'null'; indi_log("Pagerank: $pr $dominio"); $query_agg = " dominio = '$dominio', pr = $pr,"; } //page rank // if($GLOBALS['DB']['host'] == 'localhost'){ //se il db è esterno mettere $CONF[admin_refresh_db] = NULL if(db_q_utf8("UPDATE siti SET nome_sito = '".addslashes($GLOBALS['DATI']['nome_sito'])."', db = '".$GLOBALS['DB']['database']."', indi_subversion = ".$GLOBALS['CONF']['indi_subversion'].", lingue = '".addslashes(serialize($GLOBALS[LANG]))."', indicizzazione = '".addslashes(serialize(array( "title" => $title, "mdesc" => $mdesc, "mkey" => $mkey, "h1" => $h1, "h2" => $h2, "testi" => $testi, "link_tnx" => $link_tnx )))."', pagine = ".$GLOBALS['CONF']['indi_menu_tot_pagine'].", data_creazione = '".indi_date_mysql(@filemtime("../".$GLOBALS['CONF']['sito']))."', $query_agg data_aggiornamento = CURRENT_TIMESTAMP WHERE id = '".$GLOBALS['CONF']['sito']."' ","indi_admin")) { indi_log("OK indi_admin_refresh_db(): update aggiornamento GLOBALE (".$GLOBALS['CONF']['sito'].")"); } else { indi_log("ERRORE indi_admin_refresh_db(): update aggiornamento GLOBALE (".$GLOBALS['CONF']['sito'].")"); } // } } else { indi_log("ERRORE indi_admin_refresh_db(): apc_store (".$GLOBALS['CONF']['sito'].")"); } } } } ?>