From 740d4e5aa136a619983deacd472fec204205b8be Mon Sep 17 00:00:00 2001 From: James <james@rezo.net> Date: Tue, 12 Sep 2006 20:58:58 +0000 Subject: [PATCH] =?UTF-8?q?deux=20nouveaux=20param=C3=A8tres=20pour=20recu?= =?UTF-8?q?perer=5Fpage():?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - $date_verif pour arrêter la recuperation si le Header Last-modified: prouve que la page n'a pas été modifiée depuis la dernière visite sur ce lien : attention c'est en GMT. - $uri_referer pour préciser una autre url que celle de la page d'accueil du site. Une url publique d'un article par exemple. --- ecrire/inc/distant.php | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php index c7c753670a..a6994c2f74 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) -- GitLab