diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php index ad3c94184e304171ffecf88f8e67877a1c054838..5219f261b33ca0ffde4103708591eb1b882529a4 100644 --- a/ecrire/inc/distant.php +++ b/ecrire/inc/distant.php @@ -155,15 +155,21 @@ function prepare_donnees_post($donnees, $boundary = '') { // 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 -// si munge_charset est une chaine, alors c'est un nom de fichier -// dans lequel on ecrit directement la page +// Le second argument ($trans) : +// * si c'est une chaine longue, alors c'est un nom de fichier +// dans lequel on ecrit directement la page +// * si c'est true/null ca correspond a une demande d'encodage/charset // http://doc.spip.org/@recuperer_page -function recuperer_page($url, $munge_charset=false, $get_headers=false, +function recuperer_page($url, $trans=false, $get_headers=false, $taille_max = null, $datas='', $boundary='', $refuser_gz = false, $date_verif = '', $uri_referer = '') { $gz = false; + + // $copy = copier le fichier ? + $copy = (is_string($trans) AND strlen($trans) > 5); // eviter "false" :-) + if (is_null($taille_max)) - $taille_max = is_string($munge_charset)?_COPIE_LOCALE_MAX_SIZE:1048576; + $taille_max = $copy ? _COPIE_LOCALE_MAX_SIZE : 1048576; // Accepter les URLs au format feed:// ou qui ont oublie le http:// $url = preg_replace(',^feed://,i', 'http://', $url); @@ -182,7 +188,7 @@ function recuperer_page($url, $munge_charset=false, $get_headers=false, // dix tentatives maximum en cas d'entetes 301... for ($i=0;$i<10;$i++) { - $url = recuperer_lapage($url, $munge_charset, $get, $taille_max, $datas, $boundary, $refuser_gz, $date_verif, $uri_referer); + $url = recuperer_lapage($url, $trans, $get, $taille_max, $datas, $boundary, $refuser_gz, $date_verif, $uri_referer); if (!$url) return false; if (is_array($url)) { list($headers, $result) = $url; @@ -198,11 +204,14 @@ function recuperer_page($url, $munge_charset=false, $get_headers=false, // http://doc.spip.org/@recuperer_lapage function recuperer_lapage($url, $trans=false, $get='GET', $taille_max = 1048576, $datas='', $boundary='', $refuser_gz = false, $date_verif = '', $uri_referer = '') { - // si on ecrit directement dans un fichier, - // pour ne pas manipuler en memoire - // refuser gz - if (is_string($trans) AND $trans) + // $copy = copier le fichier ? + $copy = (is_string($trans) AND strlen($trans) > 5); // eviter "false" :-) + + // si on ecrit directement dans un fichier, pour ne pas manipuler + // en memoire refuser gz + if ($copy) $refuser_gz = true; + // ouvrir la connexion et envoyer la requete et ses en-tetes list($f, $fopen) = init_http($get, $url, $refuser_gz, $uri_referer, $datas); if (!$f) { @@ -231,7 +240,7 @@ function recuperer_lapage($url, $trans=false, $get='GET', $taille_max = 1048576, # spip_log("recup $headers" ); if ($trans === NULL) return array($headers, ''); - $result = recuperer_body($f, $taille_max,is_string($trans)?$trans:''); + $result = recuperer_body($f, $taille_max, $copy ? $trans : ''); fclose($f); if (!$result) return array($headers, $result); @@ -240,7 +249,7 @@ function recuperer_lapage($url, $trans=false, $get='GET', $taille_max = 1048576, $result = spip_gzinflate_body($result); } // Faut-il l'importer dans notre charset local ? - if ($trans===true) { + if ($trans === true) { include_spip('inc/charsets'); $result = transcoder_page ($result, $headers); }