/*###################################################
//################# INDI GRAB ######################
//###################################################
Modulo per produrre una versione statica del sito e basta, funziona solo da locale vedere mod_html per avere il cd-rom
*/
//############ CONFIGURAZIONE ###############
$CONF["grab_ext"] = ".html";
$CONF["grab_dir"] = "indi/html/"; //non completamente parametrizzato, attenzione
//############### FUNZIONI PER SALVATAGGIO IN HTML ###############
//debug per testare GRAB_allPageSaved
//controllo se sono create le cartelle di base
function grab_pre_page_action() {
global $CONF,$DATI;
//sistemo struttura cartelle solo se sto' grabbando
$DIR = explode("/",$CONF["grab_dir"]);
if(!file_exists("indi/html")) {
mkdir("indi/html");
//log creazione cartella
}
if(!file_exists("indi/html/grab")) {
mkdir("indi/html/grab");
//log creazione cartella
}
if(!file_exists("indi/html/grab/sito")) {
mkdir("indi/html/grab/sito");
//log creazione cartella
}
}
//funzione per iniziare il grab
function GRAB_start(){
global $CONF,$DATI,$LANG;
//pialla tutto
db_q("DROP TABLE indi_grab_link");
@system("rm -rf indi/html/*");
//piallo file tpl
indi_tpl_clear();
db_q("CREATE TABLE `indi_grab_link` (`link` varchar(255) NOT NULL default '',
`saved` int(1) NOT NULL default '0',
PRIMARY KEY (`link`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
GRAB_grabLinkAndPage(genera_link($DATI[pagina_def]));//sostituire con genera_link dell'homepage per dinamicizzarlo
GRAB_spider();
//TOTALE PAGINE
$totali = db_qrs("select count(*) as totali from indi_grab_link","totali");
//creo index.html
if(sizeof($LANG) == 1) $p_index = $DATI[pagina_def];
else $p_index = $DATI[pagina_def].'-'.$DATI[lingua_def];
$filename = $CONF["grab_dir"]."grab/index.html";
$index = '
'.$DATI[nome_sito].'
';
//scrivo file
$handle = @fopen($filename, 'w+');
@fwrite($handle, $index);
@fclose($handle);
//rinomino index per html sito interno
@system("cp $CONF[grab_dir]grab/sito/$p_index.html $CONF[grab_dir]grab/sito/index.html");
//copio tutte le immagini i file, etc, etc
@system("cp -aR ./_files ".$CONF[grab_dir]."grab/sito/");
@system("cp -aR ./_pics ".$CONF[grab_dir]."grab/sito/");
@system("cp -aR ./indi ".$CONF[grab_dir]."grab/sito/");
//tolgo cd dentro indi
@system("rm -rf indi/html/grab/sito/indi/html");
//creo zip
//@system("cd indi/html/cd;zip -r ../cd.zip ./*");
print "FINITO
";
}
function GRAB_download_link() {
global $DATI,$CONF;
if(!GRAB_pageToVisit()) $DATI[html_download_link] = 'DOWNLOAD CD SITO';
else $DATI[html_download_link] = "versione statica del sito in lavorazione, attendere qualche minuto e riprovare: ".GRAB_pageToVisit();
return $DATI[html_download_link];
}
function GRAB_link($link) {
global $CONF,$LANG;
$link = str_replace("&","-",$link);
$link = str_replace("?","-",$link);
$link = str_replace("=","-",$link);
$link = str_replace(" ","-",$link);
$link = str_replace("'","-",$link);
$link = str_replace("/","-",$link);
$link = str_replace("\\","-",$link);
$link = str_replace("%2F","-",$link);
$link = str_replace("%","-",$link);
$link = str_replace($CONF[nome_programma]."-p-","",$link);
if(sizeof($LANG) == 1) {
$link = str_replace("-l-ita","",$link);
$link = str_replace("-l-eng","",$link);
$link = str_replace("-l-ger","",$link);
$link = str_replace("-l-fra","",$link);
$link = str_replace("-l-esp","",$link);
} else {
$link = str_replace("-l-ita","-ita",$link);
$link = str_replace("-l-eng","-eng",$link);
$link = str_replace("-l-ger","-ger",$link);
$link = str_replace("-l-fra","-ger",$link);
$link = str_replace("-l-esp","-ger",$link);
}
$link = $link.$CONF["grab_ext"];
return $link;
}
function GRAB_filename($link) {
global $CONF;
$GRAB_link = GRAB_link($link);
$file = $CONF["grab_dir"]."grab/sito/".$GRAB_link;
return $file;
}
function GRAB_pageToVisit(){
$q = "select count(*) as nonsalvate from indi_grab_link where saved != 1";
$r = db_qr($q);
return $r['nonsalvate'];
}
function GRAB_spider(){
if(GRAB_pageToVisit()){//ci sono ancora pagine da spiderare
$q = "select * from indi_grab_link where saved != 1";
$r = db_q($q);
while($row = mysql_tnx_fetch_assoc($r)){
if(!GRAB_grabLinkAndPage($row['link'])){//ritorna falso solo se non trova la tabella
return;
}
}
GRAB_spider();
}
}
function GRAB_allPageSaved(){
}
function GRAB_grabLinkAndPage($link){
global $CONF;
ini_set("user_agent","INDI_GRAB_LINKGRABBER");
$GRAB_filename = GRAB_filename($link);
$GRAB_out = @file_get_contents($CONF[baseurl].str_replace(array("&", " "), array("&", "%20"), $link));
if(!$GRAB_out){
indi_log_file("HTML_grab", "vado avanti ma NON HO POTUTO GRABBARE LA PAGINA $link \$GRAB_out=".var_dump($GRAB_out));
db_q("update indi_grab_link set saved = 1 where link = '" . $link . "'");
}
else{
$fp = @fopen($GRAB_filename, "w");
if(@fwrite($fp, $GRAB_out, @strlen($GRAB_out))){
db_q("update indi_grab_link set saved = 1 where link = '" . $link . "'");
}
}
@fclose($fp);
return (mysql_tnx_errno() != 1146); //ritorna falso se non trova la tabella
}
function GRAB_saveLink($link){
$q = "insert into indi_grab_link (link) values ('" . $link . "')";
db_q($q);
}
?>