[SPIP] ~version 3.0.7-->3.0.10
[ptitvelo/web/www.git] / www / ecrire / inc / utils.php
index 3516e9d..03340b2 100644 (file)
@@ -239,8 +239,12 @@ function _request($var, $c=false) {
        AND isset($GLOBALS['meta']['charset'])
        AND $GLOBALS['meta']['charset'] != 'utf-8'
        AND is_string($a)
-       AND preg_match(',[\x80-\xFF],', $a)) {
-               include_spip('inc/charsets');
+       // check rapide mais pas fiable
+       AND preg_match(',[\x80-\xFF],', $a)
+       // check fiable
+       AND include_spip('inc/charsets')
+       AND is_utf8($a)
+       ) {
                return importer_charset($a, 'utf-8');
        }
 
@@ -377,14 +381,18 @@ function ancre_url($url, $ancre) {
        return $url . (strlen($ancre) ? '#'. $ancre : '');
 }
 
-//
-// pour le nom du cache, les types_urls et self
-//
-// http://doc.spip.org/@nettoyer_uri
-function nettoyer_uri()
+/**
+ * pour le nom du cache, les types_urls et self
+ * http://doc.spip.org/@nettoyer_uri
+ *
+ * @param string|null $reset
+ * @return string
+ */
+function nettoyer_uri($reset = null)
 {
        static $done = false;
        static $propre = '';
+       if (!is_null($reset)) return $propre=$reset;
        if ($done) return $propre;
        $done = true;
 
@@ -1197,20 +1205,32 @@ function test_valeur_serveur($truc) {
 //
 // Fonctions de fabrication des URL des scripts de Spip
 //
-
-// l'URL de base du site, sans se fier a meta(adresse_site) qui
-// peut etre fausse (sites a plusieurs noms d'hotes, deplacements, erreurs)
-// Note : la globale $profondeur_url doit etre initialisee de maniere a
-// indiquer le nombre de sous-repertoires de l'url courante par rapport a la
-// racine de SPIP : par exemple, sur ecrire/ elle vaut 1, sur sedna/ 1, et a
-// la racine 0. Sur url/perso/ elle vaut 2
-// http://doc.spip.org/@url_de_base
-function url_de_base() {
+/**
+ * l'URL de base du site, sans se fier a meta(adresse_site) qui
+ * peut etre fausse (sites a plusieurs noms d'hotes, deplacements, erreurs)
+ * Note : la globale $profondeur_url doit etre initialisee de maniere a
+ * indiquer le nombre de sous-repertoires de l'url courante par rapport a la
+ * racine de SPIP : par exemple, sur ecrire/ elle vaut 1, sur sedna/ 1, et a
+ * la racine 0. Sur url/perso/ elle vaut 2
+ * http://doc.spip.org/@url_de_base
+ *
+ * @param int|boo|array $profondeur
+ *    si non renseignee : retourne l'url pour la profondeur $GLOBALS['profondeur_url']
+ *    si int : indique que l'on veut l'url pour la prondeur indiquee
+ *    si bool : retourne le tableau static complet
+ *    si array : reinitialise le tableau static complet avec la valeur fournie
+ * @return string|array
+ */
+function url_de_base($profondeur=null) {
 
        static $url = array();
+       if (is_array($profondeur)) return $url = $profondeur;
+       if ($profondeur===false) return $url;
+
+       if (is_null($profondeur)) $profondeur = $GLOBALS['profondeur_url'];
 
-       if (isset($url[$GLOBALS['profondeur_url']]))
-               return $url[$GLOBALS['profondeur_url']];
+       if (isset($url[$profondeur]))
+               return $url[$profondeur];
 
        $http = (
                (isset($_SERVER["SCRIPT_URI"]) AND
@@ -1237,9 +1257,9 @@ function url_de_base() {
                }
        }
 
-       $url[$GLOBALS['profondeur_url']] = url_de_($http,$host,$GLOBALS['REQUEST_URI'],$GLOBALS['profondeur_url']);
+       $url[$profondeur] = url_de_($http,$host,$GLOBALS['REQUEST_URI'],$profondeur);
 
-       return $url[$GLOBALS['profondeur_url']];
+       return $url[$profondeur];
 }
 /**
  * fonction testable de construction d'une url appelee par url_de_base()