Ejemplo n.º 1
0
/**
 * Complements d'initialisation non critiques pouvant etre realises
 * par les plugins
 *
 */
function spip_initialisation_suite()
{
    static $too_late = 0;
    if ($too_late++) {
        return;
    }
    // taille mini des login
    if (!defined('_LOGIN_TROP_COURT')) {
        define('_LOGIN_TROP_COURT', 4);
    }
    // la taille maxi des logos (0 : pas de limite) (pas de define par defaut, ce n'est pas utile)
    #if (!defined('_LOGO_MAX_SIZE')) define('_LOGO_MAX_SIZE', 0); # poids en ko
    #if (!defined('_LOGO_MAX_WIDTH')) define('_LOGO_MAX_WIDTH', 0); # largeur en pixels
    #if (!defined('_LOGO_MAX_HEIGHT')) define('_LOGO_MAX_HEIGHT', 0); # hauteur en pixels
    // la taille maxi des images (0 : pas de limite) (pas de define par defaut, ce n'est pas utile)
    #if (!defined('_DOC_MAX_SIZE')) define('_DOC_MAX_SIZE', 0); # poids en ko
    #if (!defined('_IMG_MAX_SIZE')) define('_IMG_MAX_SIZE', 0); # poids en ko
    #if (!defined('_IMG_MAX_WIDTH')) define('_IMG_MAX_WIDTH', 0); # largeur en pixels
    #if (!defined('_IMG_MAX_HEIGHT')) define('_IMG_MAX_HEIGHT', 0); # hauteur en pixels
    if (!defined('_PASS_LONGUEUR_MINI')) {
        define('_PASS_LONGUEUR_MINI', 6);
    }
    // Qualite des images calculees automatiquement. C'est un nombre entre 0 et 100, meme pour imagick (on ramene a 0..1 par la suite)
    if (!defined('_IMG_QUALITE')) {
        define('_IMG_QUALITE', 85);
    }
    # valeur par defaut
    if (!defined('_IMG_GD_QUALITE')) {
        define('_IMG_GD_QUALITE', _IMG_QUALITE);
    }
    # surcharge pour la lib GD
    if (!defined('_IMG_CONVERT_QUALITE')) {
        define('_IMG_CONVERT_QUALITE', _IMG_QUALITE);
    }
    # surcharge pour imagick en ligne de commande
    // Historiquement la valeur pour imagick semble differente. Si ca n'est pas necessaire, il serait preferable de garder _IMG_QUALITE
    if (!defined('_IMG_IMAGICK_QUALITE')) {
        define('_IMG_IMAGICK_QUALITE', 75);
    }
    # surcharge pour imagick en PHP
    if (!defined('_COPIE_LOCALE_MAX_SIZE')) {
        define('_COPIE_LOCALE_MAX_SIZE', 33554432);
    }
    // poids en octet
    // qq chaines standard
    if (!defined('_ACCESS_FILE_NAME')) {
        define('_ACCESS_FILE_NAME', '.htaccess');
    }
    if (!defined('_AUTH_USER_FILE')) {
        define('_AUTH_USER_FILE', '.htpasswd');
    }
    if (!defined('_SPIP_DUMP')) {
        define('_SPIP_DUMP', 'dump@nom_site@@stamp@.xml');
    }
    if (!defined('_CACHE_RUBRIQUES')) {
        /** Fichier cache pour le navigateur de rubrique du bandeau */
        define('_CACHE_RUBRIQUES', _DIR_TMP . 'menu-rubriques-cache.txt');
    }
    if (!defined('_CACHE_RUBRIQUES_MAX')) {
        /** Nombre maxi de rubriques enfants affichées pour chaque rubrique du navigateur de rubrique du bandeau */
        define('_CACHE_RUBRIQUES_MAX', 500);
    }
    if (!defined('_EXTENSION_SQUELETTES')) {
        define('_EXTENSION_SQUELETTES', 'html');
    }
    if (!defined('_DOCTYPE_ECRIRE')) {
        define('_DOCTYPE_ECRIRE', "<!DOCTYPE html>\n");
    }
    if (!defined('_DOCTYPE_AIDE')) {
        define('_DOCTYPE_AIDE', "<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Frameset//EN' 'http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd'>");
    }
    /** L'adresse de base du site ; on peut mettre '' si la racine est gerée par
     * le script de l'espace public, alias index.php */
    if (!defined('_SPIP_SCRIPT')) {
        define('_SPIP_SCRIPT', 'spip.php');
    }
    /** Argument page, personalisable en cas de conflit avec un autre script */
    if (!defined('_SPIP_PAGE')) {
        define('_SPIP_PAGE', 'page');
    }
    // le script de l'espace prive
    // Mettre a "index.php" si DirectoryIndex ne le fait pas ou pb connexes:
    // les anciens IIS n'acceptent pas les POST sur ecrire/ (#419)
    // meme pb sur thttpd cf. http://forum.spip.org/fr_184153.html
    if (!defined('_SPIP_ECRIRE_SCRIPT')) {
        define('_SPIP_ECRIRE_SCRIPT', empty($_SERVER['SERVER_SOFTWARE']) ? '' : preg_match(',IIS|thttpd,', $_SERVER['SERVER_SOFTWARE']) ? 'index.php' : '');
    }
    if (!defined('_SPIP_AJAX')) {
        define('_SPIP_AJAX', !isset($_COOKIE['spip_accepte_ajax']) ? 1 : ($_COOKIE['spip_accepte_ajax'] != -1 ? 1 : 0));
    }
    // La requete est-elle en ajax ?
    if (!defined('_AJAX')) {
        define('_AJAX', (isset($_SERVER['HTTP_X_REQUESTED_WITH']) or !empty($_REQUEST['var_ajax_redir']) or !empty($_REQUEST['var_ajaxcharset']) or !empty($_REQUEST['var_ajax'])) and empty($_REQUEST['var_noajax']));
    }
    # nombre de pixels maxi pour calcul de la vignette avec gd
    # au dela de 5500000 on considere que php n'est pas limite en memoire pour cette operation
    # les configurations limitees en memoire ont un seuil plutot vers 1MPixel
    if (!defined('_IMG_GD_MAX_PIXELS')) {
        define('_IMG_GD_MAX_PIXELS', (isset($GLOBALS['meta']['max_taille_vignettes']) and $GLOBALS['meta']['max_taille_vignettes']) ? $GLOBALS['meta']['max_taille_vignettes'] : 0);
    }
    if (!defined('_MEMORY_LIMIT_MIN')) {
        define('_MEMORY_LIMIT_MIN', 16);
    }
    // en Mo
    // si on est dans l'espace prive et si le besoin est superieur a 8Mo (qui est vraiment le standard)
    // 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'))) {
            $unit = strtolower(substr($memory, strlen($memory / 1), 1));
            switch ($unit) {
                // Le modifieur 'G' est disponible depuis PHP 5.1.0
                case 'g':
                    $memory *= 1024;
                case 'm':
                    $memory *= 1024;
                case 'k':
                    $memory *= 1024;
            }
            if ($memory < _MEMORY_LIMIT_MIN * 1024 * 1024) {
                @ini_set('memory_limit', $m = _MEMORY_LIMIT_MIN . 'M');
                if (trim(ini_get('memory_limit')) != $m) {
                    if (!defined('_INTERDIRE_COMPACTE_HEAD_ECRIRE')) {
                        define('_INTERDIRE_COMPACTE_HEAD_ECRIRE', true);
                    }
                    // evite une page blanche car on ne saura pas calculer la css dans ce hit
                }
            }
        } else {
            if (!defined('_INTERDIRE_COMPACTE_HEAD_ECRIRE')) {
                define('_INTERDIRE_COMPACTE_HEAD_ECRIRE', true);
            }
        }
        // evite une page blanche car on ne saura pas calculer la css dans ce hit
    }
    // Protocoles a normaliser dans les chaines de langues
    if (!defined('_PROTOCOLES_STD')) {
        define('_PROTOCOLES_STD', 'http|https|ftp|mailto|webcal');
    }
    init_var_mode();
}
Ejemplo n.º 2
0
/**
 * Complements d'initialisation non critiques pouvant etre realises
 * par les plugins
 *
 */
function spip_initialisation_suite() {
	static $too_late = 0;
	if ($too_late++) return;

	// taille mini des login
	if (!defined('_LOGIN_TROP_COURT')) define('_LOGIN_TROP_COURT', 4);

	// la taille maxi des logos (0 : pas de limite)
	if (!defined('_LOGO_MAX_SIZE')) define('_LOGO_MAX_SIZE', 0); # poids en ko
	if (!defined('_LOGO_MAX_WIDTH')) define('_LOGO_MAX_WIDTH', 0); # largeur en pixels
	if (!defined('_LOGO_MAX_HEIGHT')) define('_LOGO_MAX_HEIGHT', 0); # hauteur en pixels

	if (!defined('_DOC_MAX_SIZE')) define('_DOC_MAX_SIZE', 0); # poids en ko

	if (!defined('_IMG_MAX_SIZE')) define('_IMG_MAX_SIZE', 0); # poids en ko
	if (!defined('_IMG_MAX_WIDTH')) define('_IMG_MAX_WIDTH', 0); # largeur en pixels
	if (!defined('_IMG_MAX_HEIGHT')) define('_IMG_MAX_HEIGHT', 0); # hauteur en pixels

	if (!defined('_COPIE_LOCALE_MAX_SIZE')) define('_COPIE_LOCALE_MAX_SIZE',16777216); // poids en octet

	// qq chaines standard
	if (!defined('_ACCESS_FILE_NAME')) define('_ACCESS_FILE_NAME', '.htaccess');
	if (!defined('_AUTH_USER_FILE')) define('_AUTH_USER_FILE', '.htpasswd');
	if (!defined('_SPIP_DUMP')) define('_SPIP_DUMP', 'dump@nom_site@@stamp@.xml');
	if (!defined('_CACHE_RUBRIQUES')) define('_CACHE_RUBRIQUES', _DIR_TMP.'menu-rubriques-cache.txt');
	if (!defined('_CACHE_RUBRIQUES_MAX')) define('_CACHE_RUBRIQUES_MAX', 500);

	if (!defined('_EXTENSION_SQUELETTES')) define('_EXTENSION_SQUELETTES', 'html');

	if (!defined('_DOCTYPE_ECRIRE')) define('_DOCTYPE_ECRIRE',
		// "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>\n");
		//"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>\n");
		"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>\n");
	       // "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1 //EN' 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>\n");
	if (!defined('_DOCTYPE_AIDE')) define('_DOCTYPE_AIDE',
	       "<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Frameset//EN' 'http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd'>");

	// L'adresse de base du site ; on peut mettre '' si la racine est geree par
	// le script de l'espace public, alias  index.php
	if (!defined('_SPIP_SCRIPT')) define('_SPIP_SCRIPT', 'spip.php');
	// argument page, personalisable en cas de conflit avec un autre script
	if (!defined('_SPIP_PAGE')) define('_SPIP_PAGE', 'page');

	// le script de l'espace prive
	// Mettre a "index.php" si DirectoryIndex ne le fait pas ou pb connexes:
	// les anciens IIS n'acceptent pas les POST sur ecrire/ (#419)
	// meme pb sur thttpd cf. http://forum.spip.org/fr_184153.html

	if (!defined('_SPIP_ECRIRE_SCRIPT')) define('_SPIP_ECRIRE_SCRIPT', // true ? #decommenter ici et commenter la
	       preg_match(',IIS|thttpd,',$_SERVER['SERVER_SOFTWARE']) ?
	       'index.php' : '');


	// Gestion AJAX sauf pour le mode oo (et en espace prive)

	if (isset($GLOBALS['visiteur_session']['prefs'])AND !_DIR_RESTREINT) {
		$x = $GLOBALS['visiteur_session']['prefs'];
		if (!is_array($x)) $x = unserialize($x); // prive.php l'a fait
		if ($x['display'] == 4) {
			define('_SPIP_AJAX', -1);
			if (isset($_COOKIE['spip_accepte_ajax']))
				spip_setcookie('spip_accepte_ajax', -1, 0);
		}
	}

	if (!defined('_SPIP_AJAX'))
		define('_SPIP_AJAX', ((!isset($_COOKIE['spip_accepte_ajax']))
			? 1
		       : (($_COOKIE['spip_accepte_ajax'] != -1) ? 1 : 0)));

	// La requete est-elle en ajax ?
	define('_AJAX',
		(isset($_SERVER['HTTP_X_REQUESTED_WITH']) # ajax jQuery
		OR @$_REQUEST['var_ajax_redir'] # redirection 302 apres ajax jQuery
		OR @$_REQUEST['var_ajaxcharset'] # compat ascendante pour plugins
		)
		AND !@$_REQUEST['var_noajax'] # horrible exception, car c'est pas parce que la requete est ajax jquery qu'il faut tuer tous les formulaires ajax qu'elle contient
	);

	# nombre de pixels maxi pour calcul de la vignette avec gd
	# au dela de 5500000 on considere que php n'est pas limite en memoire pour cette operation
	# les configurations limitees en memoire ont un seuil plutot vers 1MPixel
	if (!defined('_IMG_GD_MAX_PIXELS')) define('_IMG_GD_MAX_PIXELS', (isset($GLOBALS['meta']['max_taille_vignettes'])&&$GLOBALS['meta']['max_taille_vignettes']<5500000)?$GLOBALS['meta']['max_taille_vignettes']:0);
	if (!defined('_IMG_GD_QUALITE')) define('_IMG_GD_QUALITE', 85);

	if (!defined('_MEMORY_LIMIT_MIN')) define('_MEMORY_LIMIT_MIN', 16);
	// si on est dans l'espace prive et si le besoin est superieur a 8Mo (qui est vraiment le standard)
	// 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'))){
			$unit = strtolower(substr($memory,strlen($memory/1),1));
			switch($unit) {
				// Le modifieur 'G' est disponible depuis PHP 5.1.0
				case 'g': $memory *= 1024;
				case 'm': $memory *= 1024;
				case 'k': $memory *= 1024;
			}
			if ($memory<_MEMORY_LIMIT_MIN*1024*1024){
				ini_set('memory_limit',$m=_MEMORY_LIMIT_MIN.'M');
				if (trim(ini_get('memory_limit'))!=$m){
					define('_INTERDIRE_COMPACTE_HEAD_ECRIRE',true); // evite une page blanche car on ne saura pas calculer la css dans ce hit
				}
			}
		}
		else
			define('_INTERDIRE_COMPACTE_HEAD_ECRIRE',true); // evite une page blanche car on ne saura pas calculer la css dans ce hit
	}
	// Protocoles a normaliser dans les chaines de langues
	if (!defined('_PROTOCOLES_STD'))
		define('_PROTOCOLES_STD', 'http|https|ftp|mailto|webcal');

	init_var_mode();
}