diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php index c7c753670ad64a8f45b63fe5f0e0671e6cc91314..a6994c2f741e6f093fdb106354a510163fbe753a 100644 --- a/ecrire/inc/distant.php +++ b/ecrire/inc/distant.php @@ -126,9 +126,12 @@ function prepare_donnees_post($donnees, $boundary = '') { // datas, une chaine ou un tableau pour faire un POST de donnees // boundary, pour forcer l'envoi par cette methode // et refuser_gz pour forcer le refus de la compression (cas des serveurs orthographiques) +// date_verif, un timestamp unix pour arreter la recuperation si la page distante n'a pas ete modifiee depuis une date donnee +// uri_referer, preciser un referer different // http://doc.spip.org/@recuperer_page -function recuperer_page($url, $munge_charset=false, $get_headers=false, $taille_max = 1048576, - $datas='', $boundary='', $refuser_gz = false) { +function recuperer_page($url, $munge_charset=false, $get_headers=false, + $taille_max = 1048576, $datas='', $boundary='', $refuser_gz = false, + $date_verif = '', $uri_referer = '') { $gz = false; // Accepter les URLs au format feed:// ou qui ont oublie le http:// @@ -146,7 +149,7 @@ function recuperer_page($url, $munge_charset=false, $get_headers=false, $taille_ } for ($i=0;$i<10;$i++) { // dix tentatives maximum en cas d'entetes 301... - list($f, $fopen) = init_http($get, $url, $refuser_gz); + list($f, $fopen) = init_http($get, $url, $refuser_gz, $uri_referer); // si on a utilise fopen() - passer a la suite if ($fopen) { @@ -178,6 +181,13 @@ function recuperer_page($url, $munge_charset=false, $get_headers=false, $taille_ $location = suivre_lien($url, $r[1]); spip_log("Location: $location"); } + if ($date_verif AND preg_match(',^Last-Modified: (.*),', $s, $r)) { + if(strtotime($date_verif)>=strtotime($r[1])) { + //Cas ou la page distante n'a pas bouge depuis + //la derniere visite + return $status; + } + } if (preg_match(",^Content-Encoding: .*gzip,i", $s)) $gz = true; } @@ -332,7 +342,7 @@ function recuperer_infos_distantes($source, $max=0) { // retourne un descripteur de fichier // // http://doc.spip.org/@init_http -function init_http($get, $url, $refuse_gz=false) { +function init_http($get, $url, $refuse_gz=false, $uri_referer = '') { $via_proxy = ''; $proxy_user = ''; $fopen = false; $http_proxy = $GLOBALS['meta']["http_proxy"]; if (!eregi("^http://", $http_proxy)) @@ -378,8 +388,10 @@ function init_http($get, $url, $refuse_gz=false) { . base64_encode($proxy_user . ":" . $proxy_pass) . "\r\n"); } // Referer = c'est nous ! - if ($referer = $GLOBALS['meta']["adresse_site"]) - fputs($f, "Referer: $referer/\r\n"); + if ($referer = $GLOBALS['meta']["adresse_site"]) { + $referer .= '/'.$uri_referer; + fputs($f, "Referer: $referer\r\n"); + } // On sait lire du gzip if ($GLOBALS['flag_gz'] AND !$refuse_gz)