[SPIP] ~v3.0.21-->v3.0.22
[lhc/web/www.git] / www / ecrire / inc / utils.php
index 923431f..01ed0c1 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2014                                                *
+ *  Copyright (c) 2001-2016                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -1220,8 +1220,9 @@ 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)
+ * L'URL de base du site, en priorité sans se fier a meta(adresse_site) qui
+ * peut etre fausse (sites a plusieurs noms d'hotes, deplacements, erreurs).
+ * En dernier recours, lorsqu'on ne trouve rien, on utilise adresse_site comme fallback.
  * 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
@@ -1252,8 +1253,16 @@ function url_de_base($profondeur=null) {
                OR (isset($_SERVER['HTTPS']) AND
                    test_valeur_serveur($_SERVER['HTTPS']))
        ) ? 'https' : 'http';
-       # note : HTTP_HOST contient le :port si necessaire
+       // note : HTTP_HOST contient le :port si necessaire
        $host = $_SERVER['HTTP_HOST'];
+       // si on n'a pas trouvé d'hôte du tout, en dernier recours on utilise adresse_site comme fallback
+       if (is_null($host) and isset($GLOBALS['meta']['adresse_site'])) {
+               $host = $GLOBALS['meta']['adresse_site'];
+               if ($scheme = parse_url($host, PHP_URL_SCHEME)) {
+                       $http = $scheme;
+                       $host = str_replace("{$scheme}://", '', $host);
+               }
+       }
        if (isset($_SERVER['SERVER_PORT'])
                AND $port=$_SERVER['SERVER_PORT']
                AND strpos($host,":")==false){
@@ -1574,6 +1583,12 @@ function spip_initialisation_core($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) {
                #if (!defined('_SPIP_LOCK_MODE')) define('_SPIP_LOCK_MODE',2); // utiliser le nfslock de spip mais link() est tres souvent interdite
        }
 
+       // PHP_VERSION_ID dispo depuis PHP 5.2.7
+       if (!defined('PHP_VERSION_ID')) {
+          $version = explode('.',PHP_VERSION);
+          define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2]));
+       }
+
        //
        // Module de lecture/ecriture/suppression de fichiers utilisant flock()
        // (non surchargeable en l'etat ; attention si on utilise include_spip()
@@ -1599,7 +1614,9 @@ function spip_initialisation_core($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) {
        spip_desinfecte($_REQUEST);
 
        // Par ailleurs on ne veut pas de magic_quotes au cours de l'execution
-       @set_magic_quotes_runtime(0);
+       if (PHP_VERSION_ID<50300) {
+               @set_magic_quotes_runtime(0);
+       }
 
        // Si les variables sont passees en global par le serveur,
        // il faut faire quelques verifications de base
@@ -1791,7 +1808,7 @@ function spip_initialisation_suite() {
        // on verifie que la memoire est suffisante pour le compactage css+js pour eviter la page blanche
        // il y aura d'autres problemes et l'utilisateur n'ira pas tres loin, mais ce sera plus comprehensible qu'une page blanche
        if (test_espace_prive() AND _MEMORY_LIMIT_MIN>8){
-               if ($memory = trim(ini_get('memory_limit'))){
+               if ($memory = trim(ini_get('memory_limit')) and $memory != -1) {
                        $unit = strtolower(substr($memory,strlen($memory/1),1));
                        switch($unit) {
                                // Le modifieur 'G' est disponible depuis PHP 5.1.0