Completed
Push — master ( d593dc...91e0b1 )
by cam
01:24
created
ecrire/install/etape_4.php 1 patch
Indentation   +49 added lines, -49 removed lines patch added patch discarded remove patch
@@ -11,7 +11,7 @@  discard block
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 
17 17
 include_spip('inc/headers');
@@ -19,62 +19,62 @@  discard block
 block discarded – undo
19 19
 // https://code.spip.net/@install_etape_4_dist
20 20
 function install_etape_4_dist() {
21 21
 
22
-	// creer le repertoire cache, qui sert partout !
23
-	if (!@file_exists(_DIR_CACHE)) {
24
-		$rep = preg_replace(',' . _DIR_TMP . ',', '', _DIR_CACHE);
25
-		$rep = sous_repertoire(_DIR_TMP, $rep, true, true);
26
-	}
22
+    // creer le repertoire cache, qui sert partout !
23
+    if (!@file_exists(_DIR_CACHE)) {
24
+        $rep = preg_replace(',' . _DIR_TMP . ',', '', _DIR_CACHE);
25
+        $rep = sous_repertoire(_DIR_TMP, $rep, true, true);
26
+    }
27 27
 
28 28
 
29
-	echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
30
-	echo info_progression_etape(4, 'etape_', 'install/');
29
+    echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
30
+    echo info_progression_etape(4, 'etape_', 'install/');
31 31
 
32
-	echo "<div class='success'><b>"
33
-		. _T('info_derniere_etape')
34
-		. '</b><p>'
35
-		. _T('info_utilisation_spip')
36
-		. '</p></div>';
32
+    echo "<div class='success'><b>"
33
+        . _T('info_derniere_etape')
34
+        . '</b><p>'
35
+        . _T('info_utilisation_spip')
36
+        . '</p></div>';
37 37
 
38 38
 
39
-	echo '<p>'
40
-		. _T(
41
-			'plugin_info_plugins_dist_1',
42
-			['plugins_dist' => '<tt>' . joli_repertoire(_DIR_PLUGINS_DIST) . '</tt>']
43
-		)
44
-		. '</p>';
39
+    echo '<p>'
40
+        . _T(
41
+            'plugin_info_plugins_dist_1',
42
+            ['plugins_dist' => '<tt>' . joli_repertoire(_DIR_PLUGINS_DIST) . '</tt>']
43
+        )
44
+        . '</p>';
45 45
 
46
-	// installer les extensions
47
-	include_spip('inc/plugin');
48
-	$afficher = charger_fonction('afficher_liste', 'plugins');
49
-	echo $afficher(
50
-		self(),
51
-		liste_plugin_files(_DIR_PLUGINS_DIST),
52
-		[],
53
-		[],
54
-		_DIR_PLUGINS_DIST,
55
-		'afficher_nom_plugin'
56
-	);
46
+    // installer les extensions
47
+    include_spip('inc/plugin');
48
+    $afficher = charger_fonction('afficher_liste', 'plugins');
49
+    echo $afficher(
50
+        self(),
51
+        liste_plugin_files(_DIR_PLUGINS_DIST),
52
+        [],
53
+        [],
54
+        _DIR_PLUGINS_DIST,
55
+        'afficher_nom_plugin'
56
+    );
57 57
 
58
-	// si la base de SPIP est up, on peut installer les plugins, sinon on passe cette etape
59
-	// car les plugins supposent que la base de SPIP est dans son etat normal (mise a jour)
60
-	// au premier passage dans l'espace prive on aura une demande d'upgrade qui se poursuit sur la page plugin
61
-	// et procede alors a l'installation
62
-	if (
63
-		!isset($GLOBALS['meta']['version_installee'])
64
-		or ($GLOBALS['spip_version_base'] == (str_replace(',', '.', $GLOBALS['meta']['version_installee'])))
65
-	) {
66
-		plugin_installes_meta();
67
-	}
58
+    // si la base de SPIP est up, on peut installer les plugins, sinon on passe cette etape
59
+    // car les plugins supposent que la base de SPIP est dans son etat normal (mise a jour)
60
+    // au premier passage dans l'espace prive on aura une demande d'upgrade qui se poursuit sur la page plugin
61
+    // et procede alors a l'installation
62
+    if (
63
+        !isset($GLOBALS['meta']['version_installee'])
64
+        or ($GLOBALS['spip_version_base'] == (str_replace(',', '.', $GLOBALS['meta']['version_installee'])))
65
+    ) {
66
+        plugin_installes_meta();
67
+    }
68 68
 
69
-	// mettre a jour si necessaire l'adresse du site
70
-	// securite si on arrive plus a se loger
71
-	include_spip('inc/config');
72
-	appliquer_adresse_site('');
69
+    // mettre a jour si necessaire l'adresse du site
70
+    // securite si on arrive plus a se loger
71
+    include_spip('inc/config');
72
+    appliquer_adresse_site('');
73 73
 
74
-	// aller a la derniere etape qui clos l'install et redirige
75
-	$suite = "\n<input type='hidden' name='etape' value='fin' />"
76
-		. bouton_suivant(_T('login_espace_prive'));
74
+    // aller a la derniere etape qui clos l'install et redirige
75
+    $suite = "\n<input type='hidden' name='etape' value='fin' />"
76
+        . bouton_suivant(_T('login_espace_prive'));
77 77
 
78
-	echo generer_form_ecrire('install', $suite);
79
-	echo install_fin_html();
78
+    echo generer_form_ecrire('install', $suite);
79
+    echo install_fin_html();
80 80
 }
Please login to merge, or discard this patch.
ecrire/install/etape_ldap5.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -11,85 +11,85 @@
 block discarded – undo
11 11
 \***************************************************************************/
12 12
 
13 13
 if (!defined('_ECRIRE_INC_VERSION')) {
14
-	return;
14
+    return;
15 15
 }
16 16
 include_spip('inc/headers');
17 17
 include_spip('auth/ldap');
18 18
 
19 19
 // https://code.spip.net/@install_etape_ldap5_dist
20 20
 function install_etape_ldap5_dist() {
21
-	etape_ldap5_save();
22
-	etape_ldap5_suite();
21
+    etape_ldap5_save();
22
+    etape_ldap5_suite();
23 23
 }
24 24
 
25 25
 function etape_ldap5_save() {
26
-	if (!@file_exists(_FILE_CONNECT_TMP)) {
27
-		redirige_url_ecrire('install');
28
-	}
26
+    if (!@file_exists(_FILE_CONNECT_TMP)) {
27
+        redirige_url_ecrire('install');
28
+    }
29 29
 
30
-	ecrire_meta('ldap_statut_import', _request('statut_ldap'));
30
+    ecrire_meta('ldap_statut_import', _request('statut_ldap'));
31 31
 
32
-	lire_fichier(_FILE_CONNECT_TMP, $conn);
32
+    lire_fichier(_FILE_CONNECT_TMP, $conn);
33 33
 
34
-	if ($p = strpos($conn, "'');")) {
35
-		ecrire_fichier(
36
-			_FILE_CONNECT_TMP,
37
-			substr($conn, 0, $p + 1)
38
-			. _FILE_LDAP
39
-			. substr($conn, $p + 1)
40
-		);
41
-	}
34
+    if ($p = strpos($conn, "'');")) {
35
+        ecrire_fichier(
36
+            _FILE_CONNECT_TMP,
37
+            substr($conn, 0, $p + 1)
38
+            . _FILE_LDAP
39
+            . substr($conn, $p + 1)
40
+        );
41
+    }
42 42
 
43
-	$adresse_ldap = addcslashes(_request('adresse_ldap'), "'\\");
44
-	$login_ldap = addcslashes(_request('login_ldap'), "'\\");
45
-	$pass_ldap = addcslashes(_request('pass_ldap'), "'\\");
46
-	$port_ldap = addcslashes(_request('port_ldap'), "'\\");
47
-	$tls_ldap = addcslashes(_request('tls_ldap'), "'\\");
48
-	$protocole_ldap = addcslashes(_request('protocole_ldap'), "'\\");
49
-	$base_ldap = addcslashes(_request('base_ldap'), "'\\");
50
-	$base_ldap_text = addcslashes(_request('base_ldap_text'), "'\\");
43
+    $adresse_ldap = addcslashes(_request('adresse_ldap'), "'\\");
44
+    $login_ldap = addcslashes(_request('login_ldap'), "'\\");
45
+    $pass_ldap = addcslashes(_request('pass_ldap'), "'\\");
46
+    $port_ldap = addcslashes(_request('port_ldap'), "'\\");
47
+    $tls_ldap = addcslashes(_request('tls_ldap'), "'\\");
48
+    $protocole_ldap = addcslashes(_request('protocole_ldap'), "'\\");
49
+    $base_ldap = addcslashes(_request('base_ldap'), "'\\");
50
+    $base_ldap_text = addcslashes(_request('base_ldap_text'), "'\\");
51 51
 
52
-	$conn = "\$GLOBALS['ldap_base'] = '$base_ldap';\n"
53
-		. "\$GLOBALS['ldap_link'] = @ldap_connect('$adresse_ldap','$port_ldap');\n"
54
-		. "@ldap_set_option(\$GLOBALS['ldap_link'],LDAP_OPT_PROTOCOL_VERSION,'$protocole_ldap');\n"
55
-		. (($tls_ldap != 'oui') ? '' :
56
-			"@ldap_start_tls(\$GLOBALS['ldap_link']);\n")
57
-		. "@ldap_bind(\$GLOBALS['ldap_link'],'$login_ldap','$pass_ldap');\n";
52
+    $conn = "\$GLOBALS['ldap_base'] = '$base_ldap';\n"
53
+        . "\$GLOBALS['ldap_link'] = @ldap_connect('$adresse_ldap','$port_ldap');\n"
54
+        . "@ldap_set_option(\$GLOBALS['ldap_link'],LDAP_OPT_PROTOCOL_VERSION,'$protocole_ldap');\n"
55
+        . (($tls_ldap != 'oui') ? '' :
56
+            "@ldap_start_tls(\$GLOBALS['ldap_link']);\n")
57
+        . "@ldap_bind(\$GLOBALS['ldap_link'],'$login_ldap','$pass_ldap');\n";
58 58
 
59
-	$champs = is_array($GLOBALS['ldap_attributes']) ? $GLOBALS['ldap_attributes'] : [];
60
-	$res = '';
61
-	foreach ($champs as $champ => $v) {
62
-		$nom = 'ldap_' . $champ;
63
-		$val = trim(_request($nom));
64
-		if (preg_match('/^\w*$/', $val)) {
65
-			if ($val) {
66
-				$val = _q($val);
67
-			}
68
-		} else {
69
-			$val = 'array(' . _q(preg_split('/\W+/', $val)) . ')';
70
-		};
71
-		if ($val) {
72
-			$res .= "'$champ' => " . $val . ',';
73
-		}
74
-	}
75
-	$conn .= "\$GLOBALS['ldap_champs'] = array($res);\n";
59
+    $champs = is_array($GLOBALS['ldap_attributes']) ? $GLOBALS['ldap_attributes'] : [];
60
+    $res = '';
61
+    foreach ($champs as $champ => $v) {
62
+        $nom = 'ldap_' . $champ;
63
+        $val = trim(_request($nom));
64
+        if (preg_match('/^\w*$/', $val)) {
65
+            if ($val) {
66
+                $val = _q($val);
67
+            }
68
+        } else {
69
+            $val = 'array(' . _q(preg_split('/\W+/', $val)) . ')';
70
+        };
71
+        if ($val) {
72
+            $res .= "'$champ' => " . $val . ',';
73
+        }
74
+    }
75
+    $conn .= "\$GLOBALS['ldap_champs'] = array($res);\n";
76 76
 
77
-	install_fichier_connexion(_DIR_CONNECT . _FILE_LDAP, $conn);
77
+    install_fichier_connexion(_DIR_CONNECT . _FILE_LDAP, $conn);
78 78
 }
79 79
 
80 80
 function etape_ldap5_suite() {
81
-	echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
81
+    echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"');
82 82
 
83
-	echo info_etape(
84
-		_T('info_ldap_ok'),
85
-		info_progression_etape(5, 'etape_ldap', 'install/'),
86
-		_T('info_terminer_installation')
87
-	);
83
+    echo info_etape(
84
+        _T('info_ldap_ok'),
85
+        info_progression_etape(5, 'etape_ldap', 'install/'),
86
+        _T('info_terminer_installation')
87
+    );
88 88
 
89
-	echo generer_form_ecrire('install', (
90
-		"<input type='hidden' name='etape' value='3' />" .
91
-		"<input type='hidden' name='ldap_present' value='true' />"
92
-		. bouton_suivant()));
89
+    echo generer_form_ecrire('install', (
90
+        "<input type='hidden' name='etape' value='3' />" .
91
+        "<input type='hidden' name='ldap_present' value='true' />"
92
+        . bouton_suivant()));
93 93
 
94
-	echo install_fin_html();
94
+    echo install_fin_html();
95 95
 }
Please login to merge, or discard this patch.
ecrire/genie/mail.php 1 patch
Indentation   +27 added lines, -27 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 /**
@@ -32,35 +32,35 @@  discard block
 block discarded – undo
32 32
  * @return int
33 33
  */
34 34
 function genie_mail_dist($t) {
35
-	$adresse_neuf = $GLOBALS['meta']['adresse_neuf'];
36
-	$jours_neuf = $GLOBALS['meta']['jours_neuf'];
35
+    $adresse_neuf = $GLOBALS['meta']['adresse_neuf'];
36
+    $jours_neuf = $GLOBALS['meta']['jours_neuf'];
37 37
 
38
-	$now = time();
39
-	if (!isset($GLOBALS['meta']['dernier_envoi_neuf'])) {
40
-		ecrire_meta('dernier_envoi_neuf', date('Y-m-d H:i:s', $now - (3600 * 24 * $jours_neuf)));
41
-	}
38
+    $now = time();
39
+    if (!isset($GLOBALS['meta']['dernier_envoi_neuf'])) {
40
+        ecrire_meta('dernier_envoi_neuf', date('Y-m-d H:i:s', $now - (3600 * 24 * $jours_neuf)));
41
+    }
42 42
 
43
-	$page = recuperer_fond(
44
-		'nouveautes',
45
-		['date' => $GLOBALS['meta']['dernier_envoi_neuf'], 'jours_neuf' => $jours_neuf],
46
-		['raw' => true]
47
-	);
43
+    $page = recuperer_fond(
44
+        'nouveautes',
45
+        ['date' => $GLOBALS['meta']['dernier_envoi_neuf'], 'jours_neuf' => $jours_neuf],
46
+        ['raw' => true]
47
+    );
48 48
 
49
-	if (strlen(trim($page['texte']))) {
50
-		// recuperer les entetes envoyes par #HTTP_HEADER
51
-		$headers = '';
52
-		if (isset($page['entetes']) and count($page['entetes'])) {
53
-			foreach ($page['entetes'] as $k => $v) {
54
-				$headers .= (strlen($v) ? "$k: $v" : $k) . "\n";
55
-			}
56
-		}
49
+    if (strlen(trim($page['texte']))) {
50
+        // recuperer les entetes envoyes par #HTTP_HEADER
51
+        $headers = '';
52
+        if (isset($page['entetes']) and count($page['entetes'])) {
53
+            foreach ($page['entetes'] as $k => $v) {
54
+                $headers .= (strlen($v) ? "$k: $v" : $k) . "\n";
55
+            }
56
+        }
57 57
 
58
-		include_spip('inc/notifications');
59
-		notifications_envoyer_mails($adresse_neuf, $page['texte'], '', '', $headers);
60
-		ecrire_meta('dernier_envoi_neuf', date('Y-m-d H:i:s', $now));
61
-	} else {
62
-		spip_log("mail nouveautes : rien de neuf depuis $jours_neuf jours");
63
-	}
58
+        include_spip('inc/notifications');
59
+        notifications_envoyer_mails($adresse_neuf, $page['texte'], '', '', $headers);
60
+        ecrire_meta('dernier_envoi_neuf', date('Y-m-d H:i:s', $now));
61
+    } else {
62
+        spip_log("mail nouveautes : rien de neuf depuis $jours_neuf jours");
63
+    }
64 64
 
65
-	return 1;
65
+    return 1;
66 66
 }
Please login to merge, or discard this patch.
ecrire/genie/mise_a_jour.php 1 patch
Indentation   +116 added lines, -116 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 /**
@@ -27,15 +27,15 @@  discard block
 block discarded – undo
27 27
  * @return int
28 28
  */
29 29
 function genie_mise_a_jour_dist($t) {
30
-	include_spip('inc/meta');
31
-	$maj = info_maj('spip', 'SPIP', $GLOBALS['spip_version_branche']);
32
-	ecrire_meta('info_maj_spip', $maj ? ($GLOBALS['spip_version_branche'] . "|$maj") : '', 'non');
30
+    include_spip('inc/meta');
31
+    $maj = info_maj('spip', 'SPIP', $GLOBALS['spip_version_branche']);
32
+    ecrire_meta('info_maj_spip', $maj ? ($GLOBALS['spip_version_branche'] . "|$maj") : '', 'non');
33 33
 
34
-	mise_a_jour_ecran_securite();
34
+    mise_a_jour_ecran_securite();
35 35
 
36
-	spip_log('Verification version SPIP : ' . ($maj ? $maj : 'version a jour'), 'verifie_maj');
36
+    spip_log('Verification version SPIP : ' . ($maj ? $maj : 'version a jour'), 'verifie_maj');
37 37
 
38
-	return 1;
38
+    return 1;
39 39
 }
40 40
 
41 41
 // TODO : fournir une URL sur spip.net pour maitriser la diffusion d'une nouvelle version de l'ecran via l'update auto
@@ -52,46 +52,46 @@  discard block
 block discarded – undo
52 52
  * ou de ne repondre une 304 que si le md5 est bon
53 53
  */
54 54
 function mise_a_jour_ecran_securite() {
55
-	// TODO : url https avec verification du certificat
56
-	return;
57
-
58
-	// si l'ecran n'est pas deja present ou pas updatable, sortir
59
-	if (
60
-		!_URL_ECRAN_SECURITE
61
-		or !file_exists($filename = _DIR_ETC . 'ecran_securite.php')
62
-		or !is_writable($filename)
63
-		or !$last_modified = filemtime($filename)
64
-		or !$md5 = md5_file($filename)
65
-	) {
66
-		return false;
67
-	}
68
-
69
-	include_spip('inc/distant');
70
-	$tmp_file = _DIR_TMP . 'ecran_securite.php';
71
-	$url = parametre_url(_URL_ECRAN_SECURITE, 'md5', $md5);
72
-	$url = parametre_url($url, 'vspip', $GLOBALS['spip_version_branche']);
73
-	$res = recuperer_url($url, [
74
-		'if_modified_since' => $last_modified,
75
-		'file' => $tmp_file
76
-	]);
77
-
78
-	// si il y a une version plus recente que l'on a recu correctement
79
-	if (
80
-		$res['status'] == 200
81
-		and $res['length']
82
-		and $tmp_file = $res['file']
83
-	) {
84
-		if ($md5 !== md5_file($tmp_file)) {
85
-			// on essaye de l'inclure pour verifier que ca ne fait pas erreur fatale
86
-			include_once $tmp_file;
87
-			// ok, on le copie a la place de l'ecran existant
88
-			// en backupant l'ecran avant, au cas ou
89
-			@copy($filename, $filename . '-bck-' . date('Y-m-d-His', $last_modified));
90
-			@rename($tmp_file, $filename);
91
-		} else {
92
-			@unlink($tmp_file);
93
-		}
94
-	}
55
+    // TODO : url https avec verification du certificat
56
+    return;
57
+
58
+    // si l'ecran n'est pas deja present ou pas updatable, sortir
59
+    if (
60
+        !_URL_ECRAN_SECURITE
61
+        or !file_exists($filename = _DIR_ETC . 'ecran_securite.php')
62
+        or !is_writable($filename)
63
+        or !$last_modified = filemtime($filename)
64
+        or !$md5 = md5_file($filename)
65
+    ) {
66
+        return false;
67
+    }
68
+
69
+    include_spip('inc/distant');
70
+    $tmp_file = _DIR_TMP . 'ecran_securite.php';
71
+    $url = parametre_url(_URL_ECRAN_SECURITE, 'md5', $md5);
72
+    $url = parametre_url($url, 'vspip', $GLOBALS['spip_version_branche']);
73
+    $res = recuperer_url($url, [
74
+        'if_modified_since' => $last_modified,
75
+        'file' => $tmp_file
76
+    ]);
77
+
78
+    // si il y a une version plus recente que l'on a recu correctement
79
+    if (
80
+        $res['status'] == 200
81
+        and $res['length']
82
+        and $tmp_file = $res['file']
83
+    ) {
84
+        if ($md5 !== md5_file($tmp_file)) {
85
+            // on essaye de l'inclure pour verifier que ca ne fait pas erreur fatale
86
+            include_once $tmp_file;
87
+            // ok, on le copie a la place de l'ecran existant
88
+            // en backupant l'ecran avant, au cas ou
89
+            @copy($filename, $filename . '-bck-' . date('Y-m-d-His', $last_modified));
90
+            @rename($tmp_file, $filename);
91
+        } else {
92
+            @unlink($tmp_file);
93
+        }
94
+    }
95 95
 }
96 96
 
97 97
 /**
@@ -109,54 +109,54 @@  discard block
 block discarded – undo
109 109
  * @return string
110 110
  */
111 111
 function info_maj($dir, $file, $version) {
112
-	include_spip('inc/plugin');
113
-
114
-	list($maj, $min, $rev) = preg_split('/\D+/', $version);
115
-
116
-	$nom = _DIR_CACHE_XML . _VERSIONS_LISTE;
117
-	$page = !file_exists($nom) ? '' : file_get_contents($nom);
118
-	$page = info_maj_cache($nom, $dir, $page);
119
-
120
-	// reperer toutes les versions de numero majeur superieur ou egal
121
-	// (a revoir quand on arrivera a SPIP V10 ...)
122
-	$p = substr('0123456789', intval($maj));
123
-	$p = ',/' . $file . '\D+([' . $p . ']+)\D+(\d+)(\D+(\d+))?.*?[.]zip",i';
124
-	preg_match_all($p, $page, $m, PREG_SET_ORDER);
125
-	$page = $page_majeure = '';
126
-
127
-	// branche en cours d'utilisation
128
-	$branche = implode('.', array_slice(explode('.', $version, 3), 0, 2));
129
-
130
-	foreach ($m as $v) {
131
-		$v = array_pad($v, 5, 0);
132
-		list(, $maj2, $min2, , $rev2) = $v;
133
-		$branche_maj = $maj2 . '.' . $min2;
134
-		$version_maj = $maj2 . '.' . $min2 . '.' . $rev2;
135
-		// d'abord les mises à jour de la même branche
136
-		if (
137
-			(spip_version_compare($version, $version_maj, '<'))
138
-			and (spip_version_compare($page, $version_maj, '<'))
139
-			and spip_version_compare($branche, $branche_maj, '=')
140
-		) {
141
-			$page = $version_maj;
142
-		}
143
-		// puis les mises à jours majeures
144
-		if (
145
-			(spip_version_compare($version, $version_maj, '<'))
146
-			and (spip_version_compare($page, $version_maj, '<'))
147
-			and spip_version_compare($branche, $branche_maj, '<')
148
-		) {
149
-			$page_majeure = $version_maj;
150
-		}
151
-	}
152
-	if (!$page and !$page_majeure) {
153
-		return '';
154
-	}
155
-
156
-	$message = $page ? _T('nouvelle_version_spip', ['version' => $page]) . ($page_majeure ? ' | ' : '') : '';
157
-	$message .= $page_majeure ? _T('nouvelle_version_spip_majeure', ['version' => $page_majeure]) : '';
158
-
159
-	return "<a class='info_maj_spip' href='https://www.spip.net/fr_update' title='$page'>" . $message . '</a>';
112
+    include_spip('inc/plugin');
113
+
114
+    list($maj, $min, $rev) = preg_split('/\D+/', $version);
115
+
116
+    $nom = _DIR_CACHE_XML . _VERSIONS_LISTE;
117
+    $page = !file_exists($nom) ? '' : file_get_contents($nom);
118
+    $page = info_maj_cache($nom, $dir, $page);
119
+
120
+    // reperer toutes les versions de numero majeur superieur ou egal
121
+    // (a revoir quand on arrivera a SPIP V10 ...)
122
+    $p = substr('0123456789', intval($maj));
123
+    $p = ',/' . $file . '\D+([' . $p . ']+)\D+(\d+)(\D+(\d+))?.*?[.]zip",i';
124
+    preg_match_all($p, $page, $m, PREG_SET_ORDER);
125
+    $page = $page_majeure = '';
126
+
127
+    // branche en cours d'utilisation
128
+    $branche = implode('.', array_slice(explode('.', $version, 3), 0, 2));
129
+
130
+    foreach ($m as $v) {
131
+        $v = array_pad($v, 5, 0);
132
+        list(, $maj2, $min2, , $rev2) = $v;
133
+        $branche_maj = $maj2 . '.' . $min2;
134
+        $version_maj = $maj2 . '.' . $min2 . '.' . $rev2;
135
+        // d'abord les mises à jour de la même branche
136
+        if (
137
+            (spip_version_compare($version, $version_maj, '<'))
138
+            and (spip_version_compare($page, $version_maj, '<'))
139
+            and spip_version_compare($branche, $branche_maj, '=')
140
+        ) {
141
+            $page = $version_maj;
142
+        }
143
+        // puis les mises à jours majeures
144
+        if (
145
+            (spip_version_compare($version, $version_maj, '<'))
146
+            and (spip_version_compare($page, $version_maj, '<'))
147
+            and spip_version_compare($branche, $branche_maj, '<')
148
+        ) {
149
+            $page_majeure = $version_maj;
150
+        }
151
+    }
152
+    if (!$page and !$page_majeure) {
153
+        return '';
154
+    }
155
+
156
+    $message = $page ? _T('nouvelle_version_spip', ['version' => $page]) . ($page_majeure ? ' | ' : '') : '';
157
+    $message .= $page_majeure ? _T('nouvelle_version_spip_majeure', ['version' => $page_majeure]) : '';
158
+
159
+    return "<a class='info_maj_spip' href='https://www.spip.net/fr_update' title='$page'>" . $message . '</a>';
160 160
 }
161 161
 
162 162
 /**
@@ -177,25 +177,25 @@  discard block
 block discarded – undo
177 177
  *     Contenu du fichier de cache de l'info de maj de SPIP.
178 178
  */
179 179
 function info_maj_cache($nom, $dir, $page = '') {
180
-	include_spip('inc/acces');
181
-	$alea_ephemere = charger_aleas();
182
-	$re = '<archives id="a' . $alea_ephemere . '">';
183
-	if (preg_match("/$re/", $page)) {
184
-		return $page;
185
-	}
186
-
187
-	$url = _VERSIONS_SERVEUR . $dir . '/' . _VERSIONS_LISTE;
188
-	$a = file_exists($nom) ? filemtime($nom) : '';
189
-	include_spip('inc/distant');
190
-	$res = recuperer_url_cache($url, ['if_modified_since' => $a]);
191
-	// Si rien de neuf (ou inaccessible), garder l'ancienne
192
-	if ($res) {
193
-		$page = $res['page'] ? $res['page'] : $page;
194
-	}
195
-	// Placer l'indicateur de fraicheur
196
-	$page = preg_replace('/^<archives.*?>/', $re, $page);
197
-	sous_repertoire(_DIR_CACHE_XML);
198
-	ecrire_fichier($nom, $page);
199
-
200
-	return $page;
180
+    include_spip('inc/acces');
181
+    $alea_ephemere = charger_aleas();
182
+    $re = '<archives id="a' . $alea_ephemere . '">';
183
+    if (preg_match("/$re/", $page)) {
184
+        return $page;
185
+    }
186
+
187
+    $url = _VERSIONS_SERVEUR . $dir . '/' . _VERSIONS_LISTE;
188
+    $a = file_exists($nom) ? filemtime($nom) : '';
189
+    include_spip('inc/distant');
190
+    $res = recuperer_url_cache($url, ['if_modified_since' => $a]);
191
+    // Si rien de neuf (ou inaccessible), garder l'ancienne
192
+    if ($res) {
193
+        $page = $res['page'] ? $res['page'] : $page;
194
+    }
195
+    // Placer l'indicateur de fraicheur
196
+    $page = preg_replace('/^<archives.*?>/', $re, $page);
197
+    sous_repertoire(_DIR_CACHE_XML);
198
+    ecrire_fichier($nom, $page);
199
+
200
+    return $page;
201 201
 }
Please login to merge, or discard this patch.
ecrire/genie/maintenance.php 1 patch
Indentation   +47 added lines, -47 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  */
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 /**
@@ -35,18 +35,18 @@  discard block
 block discarded – undo
35 35
  */
36 36
 function genie_maintenance_dist($t) {
37 37
 
38
-	// (re)mettre .htaccess avec deny from all
39
-	// dans les deux repertoires dits inaccessibles par http
40
-	include_spip('inc/acces');
41
-	verifier_htaccess(_DIR_ETC);
42
-	verifier_htaccess(_DIR_TMP);
38
+    // (re)mettre .htaccess avec deny from all
39
+    // dans les deux repertoires dits inaccessibles par http
40
+    include_spip('inc/acces');
41
+    verifier_htaccess(_DIR_ETC);
42
+    verifier_htaccess(_DIR_TMP);
43 43
 
44
-	// Verifier qu'aucune table n'est crashee
45
-	if (!_request('reinstall')) {
46
-		verifier_crash_tables();
47
-	}
44
+    // Verifier qu'aucune table n'est crashee
45
+    if (!_request('reinstall')) {
46
+        verifier_crash_tables();
47
+    }
48 48
 
49
-	return 1;
49
+    return 1;
50 50
 }
51 51
 
52 52
 
@@ -63,33 +63,33 @@  discard block
 block discarded – undo
63 63
  *     des tables qui ont crashé.
64 64
  */
65 65
 function verifier_crash_tables() {
66
-	if (spip_connect()) {
67
-		include_spip('base/serial');
68
-		include_spip('base/auxiliaires');
69
-		$crash = [];
70
-		foreach (['tables_principales', 'tables_auxiliaires'] as $com) {
71
-			foreach ($GLOBALS[$com] as $table => $desc) {
72
-				if (
73
-					!sql_select('*', $table, '', '', '', 1)
74
-					and !defined('spip_interdire_cache')
75
-				) { # cas "LOST CONNECTION"
76
-				$crash[] = $table;
77
-				}
78
-			}
79
-		}
80
-		#$crash[] = 'test';
81
-		if ($crash) {
82
-			ecrire_meta('message_crash_tables', serialize($crash));
83
-			spip_log('crash des tables', 'err');
84
-			spip_log($crash, 'err');
85
-		} else {
86
-			effacer_meta('message_crash_tables');
87
-		}
66
+    if (spip_connect()) {
67
+        include_spip('base/serial');
68
+        include_spip('base/auxiliaires');
69
+        $crash = [];
70
+        foreach (['tables_principales', 'tables_auxiliaires'] as $com) {
71
+            foreach ($GLOBALS[$com] as $table => $desc) {
72
+                if (
73
+                    !sql_select('*', $table, '', '', '', 1)
74
+                    and !defined('spip_interdire_cache')
75
+                ) { # cas "LOST CONNECTION"
76
+                $crash[] = $table;
77
+                }
78
+            }
79
+        }
80
+        #$crash[] = 'test';
81
+        if ($crash) {
82
+            ecrire_meta('message_crash_tables', serialize($crash));
83
+            spip_log('crash des tables', 'err');
84
+            spip_log($crash, 'err');
85
+        } else {
86
+            effacer_meta('message_crash_tables');
87
+        }
88 88
 
89
-		return $crash;
90
-	}
89
+        return $crash;
90
+    }
91 91
 
92
-	return false;
92
+    return false;
93 93
 }
94 94
 
95 95
 /**
@@ -105,15 +105,15 @@  discard block
 block discarded – undo
105 105
  * @return string
106 106
  */
107 107
 function message_crash_tables() {
108
-	if ($crash = verifier_crash_tables()) {
109
-		return
110
-			'<strong>' . _T('texte_recuperer_base') . '</strong><br />'
111
-			. ' <tt>' . join(', ', $crash) . '</tt><br />'
112
-			. generer_form_ecrire(
113
-				'base_repair',
114
-				_T('texte_crash_base'),
115
-				'',
116
-				_T('bouton_tenter_recuperation')
117
-			);
118
-	}
108
+    if ($crash = verifier_crash_tables()) {
109
+        return
110
+            '<strong>' . _T('texte_recuperer_base') . '</strong><br />'
111
+            . ' <tt>' . join(', ', $crash) . '</tt><br />'
112
+            . generer_form_ecrire(
113
+                'base_repair',
114
+                _T('texte_crash_base'),
115
+                '',
116
+                _T('bouton_tenter_recuperation')
117
+            );
118
+    }
119 119
 }
Please login to merge, or discard this patch.
ecrire/genie/optimiser.php 1 patch
Indentation   +111 added lines, -111 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('base/abstract_sql');
@@ -35,26 +35,26 @@  discard block
 block discarded – undo
35 35
  **/
36 36
 function genie_optimiser_dist($t) {
37 37
 
38
-	optimiser_base_une_table();
39
-	optimiser_base();
40
-	optimiser_caches_contextes();
38
+    optimiser_base_une_table();
39
+    optimiser_base();
40
+    optimiser_caches_contextes();
41 41
 
42
-	// la date souhaitee pour le tour suivant = apres-demain a 4h du mat ;
43
-	// sachant qu'on a un delai de 48h, on renvoie aujourd'hui a 4h du mat
44
-	// avec une periode de flou entre 2h et 6h pour ne pas saturer un hebergeur
45
-	// qui aurait beaucoup de sites SPIP
46
-	return -(mktime(2, 0, 0) + rand(0, 3600 * 4));
42
+    // la date souhaitee pour le tour suivant = apres-demain a 4h du mat ;
43
+    // sachant qu'on a un delai de 48h, on renvoie aujourd'hui a 4h du mat
44
+    // avec une periode de flou entre 2h et 6h pour ne pas saturer un hebergeur
45
+    // qui aurait beaucoup de sites SPIP
46
+    return -(mktime(2, 0, 0) + rand(0, 3600 * 4));
47 47
 }
48 48
 
49 49
 /**
50 50
  * Vider les contextes ajax de plus de 48h
51 51
  */
52 52
 function optimiser_caches_contextes() {
53
-	sous_repertoire(_DIR_CACHE, 'contextes');
54
-	if (is_dir($d = _DIR_CACHE . 'contextes')) {
55
-		include_spip('inc/invalideur');
56
-		purger_repertoire($d, ['mtime' => time() - 48 * 24 * 3600, 'limit' => 10000]);
57
-	}
53
+    sous_repertoire(_DIR_CACHE, 'contextes');
54
+    if (is_dir($d = _DIR_CACHE . 'contextes')) {
55
+        include_spip('inc/invalideur');
56
+        purger_repertoire($d, ['mtime' => time() - 48 * 24 * 3600, 'limit' => 10000]);
57
+    }
58 58
 }
59 59
 
60 60
 /**
@@ -69,7 +69,7 @@  discard block
 block discarded – undo
69 69
  * @return void
70 70
  **/
71 71
 function optimiser_base($attente = 86400) {
72
-	optimiser_base_disparus($attente);
72
+    optimiser_base_disparus($attente);
73 73
 }
74 74
 
75 75
 
@@ -86,28 +86,28 @@  discard block
 block discarded – undo
86 86
  **/
87 87
 function optimiser_base_une_table() {
88 88
 
89
-	$tables = [];
90
-	$result = sql_showbase();
91
-
92
-	// on n'optimise qu'une seule table a chaque fois,
93
-	// pour ne pas vautrer le systeme
94
-	// lire http://dev.mysql.com/doc/refman/5.0/fr/optimize-table.html
95
-	while ($row = sql_fetch($result)) {
96
-		$tables[] = array_shift($row);
97
-	}
98
-
99
-	spip_log('optimiser_base_une_table ' . json_encode($tables), 'genie' . _LOG_DEBUG);
100
-	if ($tables) {
101
-		$table_op = intval(lire_config('optimiser_table', 0) + 1) % sizeof($tables);
102
-		ecrire_config('optimiser_table', $table_op);
103
-		$q = $tables[$table_op];
104
-		spip_log("optimiser_base_une_table : debut d'optimisation de la table $q", 'genie' . _LOG_DEBUG);
105
-		if (sql_optimize($q)) {
106
-			spip_log("optimiser_base_une_table : fin d'optimisation de la table $q", 'genie' . _LOG_DEBUG);
107
-		} else {
108
-			spip_log("optimiser_base_une_table : Pas d'optimiseur necessaire", 'genie' . _LOG_DEBUG);
109
-		}
110
-	}
89
+    $tables = [];
90
+    $result = sql_showbase();
91
+
92
+    // on n'optimise qu'une seule table a chaque fois,
93
+    // pour ne pas vautrer le systeme
94
+    // lire http://dev.mysql.com/doc/refman/5.0/fr/optimize-table.html
95
+    while ($row = sql_fetch($result)) {
96
+        $tables[] = array_shift($row);
97
+    }
98
+
99
+    spip_log('optimiser_base_une_table ' . json_encode($tables), 'genie' . _LOG_DEBUG);
100
+    if ($tables) {
101
+        $table_op = intval(lire_config('optimiser_table', 0) + 1) % sizeof($tables);
102
+        ecrire_config('optimiser_table', $table_op);
103
+        $q = $tables[$table_op];
104
+        spip_log("optimiser_base_une_table : debut d'optimisation de la table $q", 'genie' . _LOG_DEBUG);
105
+        if (sql_optimize($q)) {
106
+            spip_log("optimiser_base_une_table : fin d'optimisation de la table $q", 'genie' . _LOG_DEBUG);
107
+        } else {
108
+            spip_log("optimiser_base_une_table : Pas d'optimiseur necessaire", 'genie' . _LOG_DEBUG);
109
+        }
110
+    }
111 111
 }
112 112
 
113 113
 
@@ -133,18 +133,18 @@  discard block
 block discarded – undo
133 133
  *     Nombre de suppressions
134 134
  **/
135 135
 function optimiser_sansref($table, $id, $sel, $and = '') {
136
-	$in = [];
137
-	while ($row = sql_fetch($sel)) {
138
-		$in[$row['id']] = true;
139
-	}
140
-	sql_free($sel);
141
-
142
-	if ($in) {
143
-		sql_delete($table, sql_in($id, array_keys($in)) . ($and ? " AND $and" : ''));
144
-		spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: " . implode(', ', array_keys($in)), 'genie' . _LOG_DEBUG);
145
-	}
146
-
147
-	return count($in);
136
+    $in = [];
137
+    while ($row = sql_fetch($sel)) {
138
+        $in[$row['id']] = true;
139
+    }
140
+    sql_free($sel);
141
+
142
+    if ($in) {
143
+        sql_delete($table, sql_in($id, array_keys($in)) . ($and ? " AND $and" : ''));
144
+        spip_log("optimiser_sansref: Numeros des entrees $id supprimees dans la table $table: " . implode(', ', array_keys($in)), 'genie' . _LOG_DEBUG);
145
+    }
146
+
147
+    return count($in);
148 148
 }
149 149
 
150 150
 
@@ -166,81 +166,81 @@  discard block
 block discarded – undo
166 166
  **/
167 167
 function optimiser_base_disparus($attente = 86400) {
168 168
 
169
-	# format = 20060610110141, si on veut forcer une optimisation tout de suite
170
-	$mydate = date('Y-m-d H:i:s', time() - $attente);
171
-	$mydate_quote = sql_quote($mydate);
169
+    # format = 20060610110141, si on veut forcer une optimisation tout de suite
170
+    $mydate = date('Y-m-d H:i:s', time() - $attente);
171
+    $mydate_quote = sql_quote($mydate);
172 172
 
173
-	$n = 0;
173
+    $n = 0;
174 174
 
175
-	//
176
-	// Rubriques
177
-	//
175
+    //
176
+    // Rubriques
177
+    //
178 178
 
179
-	# les articles qui sont dans une id_rubrique inexistante
180
-	# attention on controle id_rubrique>0 pour ne pas tuer les articles
181
-	# specialement affectes a une rubrique non-existante (plugin,
182
-	# cf. https://core.spip.net/issues/1549 )
183
-	$res = sql_select(
184
-		'A.id_article AS id',
185
-		'spip_articles AS A
179
+    # les articles qui sont dans une id_rubrique inexistante
180
+    # attention on controle id_rubrique>0 pour ne pas tuer les articles
181
+    # specialement affectes a une rubrique non-existante (plugin,
182
+    # cf. https://core.spip.net/issues/1549 )
183
+    $res = sql_select(
184
+        'A.id_article AS id',
185
+        'spip_articles AS A
186 186
 		        LEFT JOIN spip_rubriques AS R
187 187
 		          ON A.id_rubrique=R.id_rubrique',
188
-		"A.id_rubrique > 0
188
+        "A.id_rubrique > 0
189 189
 			 AND R.id_rubrique IS NULL
190 190
 		         AND A.maj < $mydate_quote"
191
-	);
191
+    );
192 192
 
193
-	$n += optimiser_sansref('spip_articles', 'id_article', $res);
193
+    $n += optimiser_sansref('spip_articles', 'id_article', $res);
194 194
 
195
-	// les articles a la poubelle
196
-	sql_delete('spip_articles', "statut='poubelle' AND maj < $mydate_quote");
195
+    // les articles a la poubelle
196
+    sql_delete('spip_articles', "statut='poubelle' AND maj < $mydate_quote");
197 197
 
198
-	//
199
-	// Auteurs
200
-	//
198
+    //
199
+    // Auteurs
200
+    //
201 201
 
202
-	include_spip('action/editer_liens');
203
-	// optimiser les liens de tous les auteurs vers des objets effaces
204
-	// et depuis des auteurs effaces
205
-	$n += objet_optimiser_liens(['auteur' => '*'], '*');
202
+    include_spip('action/editer_liens');
203
+    // optimiser les liens de tous les auteurs vers des objets effaces
204
+    // et depuis des auteurs effaces
205
+    $n += objet_optimiser_liens(['auteur' => '*'], '*');
206 206
 
207
-	# effacer les auteurs poubelle qui ne sont lies a rien
208
-	$res = sql_select(
209
-		'A.id_auteur AS id',
210
-		'spip_auteurs AS A
207
+    # effacer les auteurs poubelle qui ne sont lies a rien
208
+    $res = sql_select(
209
+        'A.id_auteur AS id',
210
+        'spip_auteurs AS A
211 211
 		      	LEFT JOIN spip_auteurs_liens AS L
212 212
 		          ON L.id_auteur=A.id_auteur',
213
-		"L.id_auteur IS NULL
213
+        "L.id_auteur IS NULL
214 214
 		       	AND A.statut='5poubelle' AND A.maj < $mydate_quote"
215
-	);
216
-
217
-	$n += optimiser_sansref('spip_auteurs', 'id_auteur', $res);
218
-
219
-	# supprimer les auteurs 'nouveau' qui n'ont jamais donne suite
220
-	# au mail de confirmation (45 jours pour repondre, ca devrait suffire)
221
-	if (!defined('_AUTEURS_DELAI_REJET_NOUVEAU')) {
222
-		define('_AUTEURS_DELAI_REJET_NOUVEAU', 45 * 24 * 3600);
223
-	}
224
-	sql_delete('spip_auteurs', "statut='nouveau' AND maj < " . sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU))));
225
-
226
-	/**
227
-	 * Permet aux plugins de compléter l'optimisation suite aux éléments disparus
228
-	 *
229
-	 * L'index 'data' est un entier indiquant le nombre d'optimisations
230
-	 * qui ont été réalisées (par exemple le nombre de suppressions faites)
231
-	 * et qui doit être incrémenté par les fonctions
232
-	 * utilisant ce pipeline si elles suppriment des éléments.
233
-	 *
234
-	 * @pipeline_appel optimiser_base_disparus
235
-	 */
236
-	$n = pipeline('optimiser_base_disparus', [
237
-		'args' => [
238
-			'attente' => $attente,
239
-			'date' => $mydate
240
-		],
241
-		'data' => $n
242
-	]);
243
-
244
-
245
-	spip_log("optimiser_base_disparus : {$n} lien(s) mort(s)", 'genie' . _LOG_DEBUG);
215
+    );
216
+
217
+    $n += optimiser_sansref('spip_auteurs', 'id_auteur', $res);
218
+
219
+    # supprimer les auteurs 'nouveau' qui n'ont jamais donne suite
220
+    # au mail de confirmation (45 jours pour repondre, ca devrait suffire)
221
+    if (!defined('_AUTEURS_DELAI_REJET_NOUVEAU')) {
222
+        define('_AUTEURS_DELAI_REJET_NOUVEAU', 45 * 24 * 3600);
223
+    }
224
+    sql_delete('spip_auteurs', "statut='nouveau' AND maj < " . sql_quote(date('Y-m-d', time() - intval(_AUTEURS_DELAI_REJET_NOUVEAU))));
225
+
226
+    /**
227
+     * Permet aux plugins de compléter l'optimisation suite aux éléments disparus
228
+     *
229
+     * L'index 'data' est un entier indiquant le nombre d'optimisations
230
+     * qui ont été réalisées (par exemple le nombre de suppressions faites)
231
+     * et qui doit être incrémenté par les fonctions
232
+     * utilisant ce pipeline si elles suppriment des éléments.
233
+     *
234
+     * @pipeline_appel optimiser_base_disparus
235
+     */
236
+    $n = pipeline('optimiser_base_disparus', [
237
+        'args' => [
238
+            'attente' => $attente,
239
+            'date' => $mydate
240
+        ],
241
+        'data' => $n
242
+    ]);
243
+
244
+
245
+    spip_log("optimiser_base_disparus : {$n} lien(s) mort(s)", 'genie' . _LOG_DEBUG);
246 246
 }
Please login to merge, or discard this patch.
ecrire/inc/drapeau_edition.php 1 patch
Indentation   +111 added lines, -111 removed lines patch added patch discarded remove patch
@@ -30,7 +30,7 @@  discard block
 block discarded – undo
30 30
  * @package SPIP\Core\Drapeaux\Edition
31 31
  **/
32 32
 if (!defined('_ECRIRE_INC_VERSION')) {
33
-	return;
33
+    return;
34 34
 }
35 35
 
36 36
 
@@ -45,46 +45,46 @@  discard block
 block discarded – undo
45 45
  *     `[ type d'objet ][id_objet][id_auteur][nom de l'auteur] = time()`
46 46
  **/
47 47
 function lire_tableau_edition() {
48
-	$edition = @unserialize($GLOBALS['meta']['drapeau_edition']);
49
-	if (!$edition) {
50
-		return [];
51
-	}
52
-	$changed = false;
48
+    $edition = @unserialize($GLOBALS['meta']['drapeau_edition']);
49
+    if (!$edition) {
50
+        return [];
51
+    }
52
+    $changed = false;
53 53
 
54
-	$bon_pour_le_service = time() - 3600;
55
-	// parcourir le tableau et virer les vieux
56
-	foreach ($edition as $objet => $data) {
57
-		if (!is_array($data)) {
58
-			unset($edition[$objet]);
59
-		} // vieille version
60
-		else {
61
-			foreach ($data as $id => $tab) {
62
-				if (!is_array($tab)) {
63
-					unset($edition[$objet][$tab]);
64
-				} // vieille version
65
-				else {
66
-					foreach ($tab as $n => $duo) {
67
-						if (current($duo) < $bon_pour_le_service) {
68
-							unset($edition[$objet][$id][$n]);
69
-							$changed = true;
70
-						}
71
-					}
72
-				}
73
-				if (!$edition[$objet][$id]) {
74
-					unset($edition[$objet][$id]);
75
-				}
76
-			}
77
-		}
78
-		if (!$edition[$objet]) {
79
-			unset($edition[$objet]);
80
-		}
81
-	}
54
+    $bon_pour_le_service = time() - 3600;
55
+    // parcourir le tableau et virer les vieux
56
+    foreach ($edition as $objet => $data) {
57
+        if (!is_array($data)) {
58
+            unset($edition[$objet]);
59
+        } // vieille version
60
+        else {
61
+            foreach ($data as $id => $tab) {
62
+                if (!is_array($tab)) {
63
+                    unset($edition[$objet][$tab]);
64
+                } // vieille version
65
+                else {
66
+                    foreach ($tab as $n => $duo) {
67
+                        if (current($duo) < $bon_pour_le_service) {
68
+                            unset($edition[$objet][$id][$n]);
69
+                            $changed = true;
70
+                        }
71
+                    }
72
+                }
73
+                if (!$edition[$objet][$id]) {
74
+                    unset($edition[$objet][$id]);
75
+                }
76
+            }
77
+        }
78
+        if (!$edition[$objet]) {
79
+            unset($edition[$objet]);
80
+        }
81
+    }
82 82
 
83
-	if ($changed) {
84
-		ecrire_tableau_edition($edition);
85
-	}
83
+    if ($changed) {
84
+        ecrire_tableau_edition($edition);
85
+    }
86 86
 
87
-	return $edition;
87
+    return $edition;
88 88
 }
89 89
 
90 90
 /**
@@ -97,7 +97,7 @@  discard block
 block discarded – undo
97 97
  *     `[ type d'objet ][id_objet][id_auteur][nom de l'auteur] = time()`
98 98
  **/
99 99
 function ecrire_tableau_edition($edition) {
100
-	ecrire_meta('drapeau_edition', serialize($edition));
100
+    ecrire_meta('drapeau_edition', serialize($edition));
101 101
 }
102 102
 
103 103
 /**
@@ -117,24 +117,24 @@  discard block
 block discarded – undo
117 117
  *     Type d'objet édité
118 118
  */
119 119
 function signale_edition($id, $auteur, $type = 'article') {
120
-	include_spip('base/objets');
121
-	include_spip('inc/filtres');
122
-	if (objet_info($type, 'editable') !== 'oui') {
123
-		return;
124
-	}
120
+    include_spip('base/objets');
121
+    include_spip('inc/filtres');
122
+    if (objet_info($type, 'editable') !== 'oui') {
123
+        return;
124
+    }
125 125
 
126
-	$edition = lire_tableau_edition();
127
-	if (isset($auteur['id_auteur']) and $id_a = $auteur['id_auteur']) {
128
-		$nom = $auteur['nom'];
129
-	} else {
130
-		$nom = $id_a = $GLOBALS['ip'];
131
-	}
126
+    $edition = lire_tableau_edition();
127
+    if (isset($auteur['id_auteur']) and $id_a = $auteur['id_auteur']) {
128
+        $nom = $auteur['nom'];
129
+    } else {
130
+        $nom = $id_a = $GLOBALS['ip'];
131
+    }
132 132
 
133
-	if (!isset($edition[$type][$id]) or !is_array($edition[$type][$id])) {
134
-		$edition[$type][$id] = [];
135
-	}
136
-	$edition[$type][$id][$id_a][$nom] = time();
137
-	ecrire_tableau_edition($edition);
133
+    if (!isset($edition[$type][$id]) or !is_array($edition[$type][$id])) {
134
+        $edition[$type][$id] = [];
135
+    }
136
+    $edition[$type][$id][$id_a][$nom] = time();
137
+    ecrire_tableau_edition($edition);
138 138
 }
139 139
 
140 140
 /**
@@ -151,9 +151,9 @@  discard block
 block discarded – undo
151 151
  */
152 152
 function qui_edite($id, $type = 'article') {
153 153
 
154
-	$edition = lire_tableau_edition();
154
+    $edition = lire_tableau_edition();
155 155
 
156
-	return empty($edition[$type][$id]) ? [] : $edition[$type][$id];
156
+    return empty($edition[$type][$id]) ? [] : $edition[$type][$id];
157 157
 }
158 158
 
159 159
 /**
@@ -167,22 +167,22 @@  discard block
 block discarded – undo
167 167
  *     Liste de tableaux `['nom_auteur_modif' => x|y|z, 'date_diff' => n]`
168 168
  */
169 169
 function mention_qui_edite($id, $type = 'article') {
170
-	$modif = qui_edite($id, $type);
171
-	unset($modif[$GLOBALS['visiteur_session']['id_auteur']]);
170
+    $modif = qui_edite($id, $type);
171
+    unset($modif[$GLOBALS['visiteur_session']['id_auteur']]);
172 172
 
173
-	if ($modif) {
174
-		$quand = 0;
175
-		foreach ($modif as $duo) {
176
-			$auteurs[] = typo(key($duo));
177
-			$quand = max($quand, current($duo));
178
-		}
173
+    if ($modif) {
174
+        $quand = 0;
175
+        foreach ($modif as $duo) {
176
+            $auteurs[] = typo(key($duo));
177
+            $quand = max($quand, current($duo));
178
+        }
179 179
 
180
-		// format lie a la chaine de langue 'avis_article_modifie'
181
-		return [
182
-			'nom_auteur_modif' => join(' | ', $auteurs),
183
-			'date_diff' => ceil((time() - $quand) / 60)
184
-		];
185
-	}
180
+        // format lie a la chaine de langue 'avis_article_modifie'
181
+        return [
182
+            'nom_auteur_modif' => join(' | ', $auteurs),
183
+            'date_diff' => ceil((time() - $quand) / 60)
184
+        ];
185
+    }
186 186
 }
187 187
 
188 188
 /**
@@ -196,25 +196,25 @@  discard block
 block discarded – undo
196 196
  *     Liste de tableaux `['objet' => x, 'id_objet' => n]`
197 197
  */
198 198
 function liste_drapeau_edition($id_auteur) {
199
-	$edition = lire_tableau_edition();
200
-	$objets_ouverts = [];
199
+    $edition = lire_tableau_edition();
200
+    $objets_ouverts = [];
201 201
 
202
-	foreach ($edition as $objet => $data) {
203
-		foreach ($data as $id => $auteurs) {
204
-			if (
205
-				isset($auteurs[$id_auteur])
206
-				and is_array($auteurs[$id_auteur]) // precaution
207
-				and (array_pop($auteurs[$id_auteur]) > time() - 3600)
208
-			) {
209
-				$objets_ouverts[] = [
210
-					'objet' => $objet,
211
-					'id_objet' => $id,
212
-				];
213
-			}
214
-		}
215
-	}
202
+    foreach ($edition as $objet => $data) {
203
+        foreach ($data as $id => $auteurs) {
204
+            if (
205
+                isset($auteurs[$id_auteur])
206
+                and is_array($auteurs[$id_auteur]) // precaution
207
+                and (array_pop($auteurs[$id_auteur]) > time() - 3600)
208
+            ) {
209
+                $objets_ouverts[] = [
210
+                    'objet' => $objet,
211
+                    'id_objet' => $id,
212
+                ];
213
+            }
214
+        }
215
+    }
216 216
 
217
-	return $objets_ouverts;
217
+    return $objets_ouverts;
218 218
 }
219 219
 
220 220
 /**
@@ -227,15 +227,15 @@  discard block
 block discarded – undo
227 227
  * @return void
228 228
  */
229 229
 function debloquer_tous($id_auteur) {
230
-	$edition = lire_tableau_edition();
231
-	foreach ($edition as $objet => $data) {
232
-		foreach ($data as $id => $auteurs) {
233
-			if (isset($auteurs[$id_auteur])) {
234
-				unset($edition[$objet][$id][$id_auteur]);
235
-				ecrire_tableau_edition($edition);
236
-			}
237
-		}
238
-	}
230
+    $edition = lire_tableau_edition();
231
+    foreach ($edition as $objet => $data) {
232
+        foreach ($data as $id => $auteurs) {
233
+            if (isset($auteurs[$id_auteur])) {
234
+                unset($edition[$objet][$id][$id_auteur]);
235
+                ecrire_tableau_edition($edition);
236
+            }
237
+        }
238
+    }
239 239
 }
240 240
 
241 241
 /**
@@ -253,19 +253,19 @@  discard block
 block discarded – undo
253 253
  * @return void
254 254
  */
255 255
 function debloquer_edition($id_auteur, $id_objet, $type = 'article') {
256
-	$edition = lire_tableau_edition();
256
+    $edition = lire_tableau_edition();
257 257
 
258
-	foreach ($edition as $objet => $data) {
259
-		if ($objet == $type) {
260
-			foreach ($data as $id => $auteurs) {
261
-				if (
262
-					$id == $id_objet
263
-					and isset($auteurs[$id_auteur])
264
-				) {
265
-					unset($edition[$objet][$id][$id_auteur]);
266
-					ecrire_tableau_edition($edition);
267
-				}
268
-			}
269
-		}
270
-	}
258
+    foreach ($edition as $objet => $data) {
259
+        if ($objet == $type) {
260
+            foreach ($data as $id => $auteurs) {
261
+                if (
262
+                    $id == $id_objet
263
+                    and isset($auteurs[$id_auteur])
264
+                ) {
265
+                    unset($edition[$objet][$id][$id_auteur]);
266
+                    ecrire_tableau_edition($edition);
267
+                }
268
+            }
269
+        }
270
+    }
271 271
 }
Please login to merge, or discard this patch.
ecrire/inc/plugin.php 1 patch
Indentation   +976 added lines, -976 removed lines patch added patch discarded remove patch
@@ -17,12 +17,12 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 /** l'adresse du repertoire de telechargement et de decompactage des plugins */
24 24
 if (!defined('_DIR_PLUGINS_AUTO')) {
25
-	define('_DIR_PLUGINS_AUTO', _DIR_PLUGINS . 'auto/');
25
+    define('_DIR_PLUGINS_AUTO', _DIR_PLUGINS . 'auto/');
26 26
 }
27 27
 
28 28
 #include_spip('inc/texte'); // ????? Appelle public/parametrer trop tot avant la reconstruction du chemin des plugins.
@@ -47,27 +47,27 @@  discard block
 block discarded – undo
47 47
  * @return array
48 48
 **/
49 49
 function liste_plugin_files($dir_plugins = null) {
50
-	static $plugin_files = [];
51
-	if (is_null($dir_plugins)) {
52
-		$dir_plugins = _DIR_PLUGINS;
53
-	}
54
-	if (
55
-		!isset($plugin_files[$dir_plugins])
56
-		or count($plugin_files[$dir_plugins]) == 0
57
-	) {
58
-		$plugin_files[$dir_plugins] = [];
59
-		foreach (fast_find_plugin_dirs($dir_plugins) as $plugin) {
60
-			$plugin_files[$dir_plugins][] = substr($plugin, strlen($dir_plugins));
61
-		}
62
-
63
-		sort($plugin_files[$dir_plugins]);
64
-		// et on lit le XML de tous les plugins pour le mettre en cache
65
-		// et en profiter pour nettoyer ceux qui n'existent plus du cache
66
-		$get_infos = charger_fonction('get_infos', 'plugins');
67
-		$get_infos($plugin_files[$dir_plugins], false, $dir_plugins, true);
68
-	}
69
-
70
-	return $plugin_files[$dir_plugins];
50
+    static $plugin_files = [];
51
+    if (is_null($dir_plugins)) {
52
+        $dir_plugins = _DIR_PLUGINS;
53
+    }
54
+    if (
55
+        !isset($plugin_files[$dir_plugins])
56
+        or count($plugin_files[$dir_plugins]) == 0
57
+    ) {
58
+        $plugin_files[$dir_plugins] = [];
59
+        foreach (fast_find_plugin_dirs($dir_plugins) as $plugin) {
60
+            $plugin_files[$dir_plugins][] = substr($plugin, strlen($dir_plugins));
61
+        }
62
+
63
+        sort($plugin_files[$dir_plugins]);
64
+        // et on lit le XML de tous les plugins pour le mettre en cache
65
+        // et en profiter pour nettoyer ceux qui n'existent plus du cache
66
+        $get_infos = charger_fonction('get_infos', 'plugins');
67
+        $get_infos($plugin_files[$dir_plugins], false, $dir_plugins, true);
68
+    }
69
+
70
+    return $plugin_files[$dir_plugins];
71 71
 }
72 72
 
73 73
 /**
@@ -83,45 +83,45 @@  discard block
 block discarded – undo
83 83
  *     Liste complète des répeertoires
84 84
 **/
85 85
 function fast_find_plugin_dirs($dir, $max_prof = 100) {
86
-	$fichiers = [];
87
-	// revenir au repertoire racine si on a recu dossier/truc
88
-	// pour regarder dossier/truc/ ne pas oublier le / final
89
-	$dir = preg_replace(',/[^/]*$,', '', $dir);
90
-	if ($dir == '') {
91
-		$dir = '.';
92
-	}
93
-
94
-	if (!is_dir($dir)) {
95
-		return $fichiers;
96
-	}
97
-	if (is_plugin_dir($dir, '')) {
98
-		$fichiers[] = $dir;
99
-
100
-		return $fichiers;
101
-	}
102
-	if ($max_prof <= 0) {
103
-		return $fichiers;
104
-	}
105
-
106
-	$subdirs = [];
107
-	if (@is_dir($dir) and is_readable($dir) and $d = opendir($dir)) {
108
-		while (($f = readdir($d)) !== false) {
109
-			if (
110
-				$f[0] != '.' # ignorer . .. .svn etc
111
-				and $f != 'CVS'
112
-				and is_dir($f = "$dir/$f")
113
-			) {
114
-				$subdirs[] = $f;
115
-			}
116
-		}
117
-		closedir($d);
118
-	}
119
-
120
-	foreach ($subdirs as $d) {
121
-		$fichiers = array_merge($fichiers, fast_find_plugin_dirs("$d/", $max_prof - 1));
122
-	}
123
-
124
-	return $fichiers;
86
+    $fichiers = [];
87
+    // revenir au repertoire racine si on a recu dossier/truc
88
+    // pour regarder dossier/truc/ ne pas oublier le / final
89
+    $dir = preg_replace(',/[^/]*$,', '', $dir);
90
+    if ($dir == '') {
91
+        $dir = '.';
92
+    }
93
+
94
+    if (!is_dir($dir)) {
95
+        return $fichiers;
96
+    }
97
+    if (is_plugin_dir($dir, '')) {
98
+        $fichiers[] = $dir;
99
+
100
+        return $fichiers;
101
+    }
102
+    if ($max_prof <= 0) {
103
+        return $fichiers;
104
+    }
105
+
106
+    $subdirs = [];
107
+    if (@is_dir($dir) and is_readable($dir) and $d = opendir($dir)) {
108
+        while (($f = readdir($d)) !== false) {
109
+            if (
110
+                $f[0] != '.' # ignorer . .. .svn etc
111
+                and $f != 'CVS'
112
+                and is_dir($f = "$dir/$f")
113
+            ) {
114
+                $subdirs[] = $f;
115
+            }
116
+        }
117
+        closedir($d);
118
+    }
119
+
120
+    foreach ($subdirs as $d) {
121
+        $fichiers = array_merge($fichiers, fast_find_plugin_dirs("$d/", $max_prof - 1));
122
+    }
123
+
124
+    return $fichiers;
125 125
 }
126 126
 
127 127
 /**
@@ -142,27 +142,27 @@  discard block
 block discarded – undo
142 142
 **/
143 143
 function is_plugin_dir($dir, $dir_plugins = null) {
144 144
 
145
-	if (is_array($dir)) {
146
-		foreach ($dir as $k => $d) {
147
-			if (!is_plugin_dir($d, $dir_plugins)) {
148
-				unset($dir[$k]);
149
-			}
150
-		}
151
-
152
-		return $dir;
153
-	}
154
-	if (is_null($dir_plugins)) {
155
-		$dir_plugins = _DIR_PLUGINS;
156
-	}
157
-	$search = ["$dir_plugins$dir/paquet.xml"];
158
-
159
-	foreach ($search as $s) {
160
-		if (file_exists($s)) {
161
-			return $dir;
162
-		}
163
-	}
164
-
165
-	return '';
145
+    if (is_array($dir)) {
146
+        foreach ($dir as $k => $d) {
147
+            if (!is_plugin_dir($d, $dir_plugins)) {
148
+                unset($dir[$k]);
149
+            }
150
+        }
151
+
152
+        return $dir;
153
+    }
154
+    if (is_null($dir_plugins)) {
155
+        $dir_plugins = _DIR_PLUGINS;
156
+    }
157
+    $search = ["$dir_plugins$dir/paquet.xml"];
158
+
159
+    foreach ($search as $s) {
160
+        if (file_exists($s)) {
161
+            return $dir;
162
+        }
163
+    }
164
+
165
+    return '';
166 166
 }
167 167
 
168 168
 /** Regexp d'extraction des informations d'un intervalle de compatibilité */
@@ -189,51 +189,51 @@  discard block
 block discarded – undo
189 189
  **/
190 190
 function plugin_version_compatible($intervalle, $version, $avec_quoi = '') {
191 191
 
192
-	if (!strlen($intervalle)) {
193
-		return true;
194
-	}
195
-	if (!preg_match(_EXTRAIRE_INTERVALLE, $intervalle, $regs)) {
196
-		return false;
197
-	}
198
-	// Extraction des bornes et traitement de * pour la borne sup :
199
-	// -- on autorise uniquement les ecritures 3.0.*, 3.*
200
-	$minimum = $regs[1];
201
-	$maximum = $regs[2];
202
-
203
-	//  si une version SPIP de compatibilité a été définie (dans
204
-	//  mes_options.php, sous la forme : define('_DEV_VERSION_SPIP_COMPAT', '3.1.0');
205
-	//  on l'utilise (phase de dev, de test...) mais *que* en cas de comparaison
206
-	//  avec la version de SPIP (ne nuit donc pas aux tests de necessite
207
-	//  entre plugins)
208
-	if (defined('_DEV_VERSION_SPIP_COMPAT') and $avec_quoi == 'spip' and $version !== _DEV_VERSION_SPIP_COMPAT) {
209
-		if (plugin_version_compatible($intervalle, _DEV_VERSION_SPIP_COMPAT, $avec_quoi)) {
210
-			return true;
211
-		}
212
-		// si pas de compatibilite avec _DEV_VERSION_SPIP_COMPAT, on essaye quand meme avec la vrai version
213
-		// cas du plugin qui n'est compatible qu'avec cette nouvelle version
214
-	}
215
-
216
-	$minimum_inc = $intervalle[0] == '[';
217
-	$maximum_inc = substr($intervalle, -1) == ']';
218
-
219
-	if (strlen($minimum)) {
220
-		if ($minimum_inc and spip_version_compare($version, $minimum, '<')) {
221
-			return false;
222
-		}
223
-		if (!$minimum_inc and spip_version_compare($version, $minimum, '<=')) {
224
-			return false;
225
-		}
226
-	}
227
-	if (strlen($maximum)) {
228
-		if ($maximum_inc and spip_version_compare($version, $maximum, '>')) {
229
-			return false;
230
-		}
231
-		if (!$maximum_inc and spip_version_compare($version, $maximum, '>=')) {
232
-			return false;
233
-		}
234
-	}
235
-
236
-	return true;
192
+    if (!strlen($intervalle)) {
193
+        return true;
194
+    }
195
+    if (!preg_match(_EXTRAIRE_INTERVALLE, $intervalle, $regs)) {
196
+        return false;
197
+    }
198
+    // Extraction des bornes et traitement de * pour la borne sup :
199
+    // -- on autorise uniquement les ecritures 3.0.*, 3.*
200
+    $minimum = $regs[1];
201
+    $maximum = $regs[2];
202
+
203
+    //  si une version SPIP de compatibilité a été définie (dans
204
+    //  mes_options.php, sous la forme : define('_DEV_VERSION_SPIP_COMPAT', '3.1.0');
205
+    //  on l'utilise (phase de dev, de test...) mais *que* en cas de comparaison
206
+    //  avec la version de SPIP (ne nuit donc pas aux tests de necessite
207
+    //  entre plugins)
208
+    if (defined('_DEV_VERSION_SPIP_COMPAT') and $avec_quoi == 'spip' and $version !== _DEV_VERSION_SPIP_COMPAT) {
209
+        if (plugin_version_compatible($intervalle, _DEV_VERSION_SPIP_COMPAT, $avec_quoi)) {
210
+            return true;
211
+        }
212
+        // si pas de compatibilite avec _DEV_VERSION_SPIP_COMPAT, on essaye quand meme avec la vrai version
213
+        // cas du plugin qui n'est compatible qu'avec cette nouvelle version
214
+    }
215
+
216
+    $minimum_inc = $intervalle[0] == '[';
217
+    $maximum_inc = substr($intervalle, -1) == ']';
218
+
219
+    if (strlen($minimum)) {
220
+        if ($minimum_inc and spip_version_compare($version, $minimum, '<')) {
221
+            return false;
222
+        }
223
+        if (!$minimum_inc and spip_version_compare($version, $minimum, '<=')) {
224
+            return false;
225
+        }
226
+    }
227
+    if (strlen($maximum)) {
228
+        if ($maximum_inc and spip_version_compare($version, $maximum, '>')) {
229
+            return false;
230
+        }
231
+        if (!$maximum_inc and spip_version_compare($version, $maximum, '>=')) {
232
+            return false;
233
+        }
234
+    }
235
+
236
+    return true;
237 237
 }
238 238
 
239 239
 /**
@@ -250,62 +250,62 @@  discard block
 block discarded – undo
250 250
  * @return array
251 251
  */
252 252
 function liste_plugin_valides($liste_plug, $force = false) {
253
-	$liste_ext = liste_plugin_files(_DIR_PLUGINS_DIST);
254
-	$get_infos = charger_fonction('get_infos', 'plugins');
255
-	$infos = [
256
-		// lister les extensions qui sont automatiquement actives
257
-		'_DIR_PLUGINS_DIST' => $get_infos($liste_ext, $force, _DIR_PLUGINS_DIST),
258
-		'_DIR_PLUGINS' => $get_infos($liste_plug, $force, _DIR_PLUGINS)
259
-	];
260
-
261
-	// creer une premiere liste non ordonnee mais qui ne retient
262
-	// que les plugins valides, et dans leur derniere version en cas de doublon
263
-	$infos['_DIR_RESTREINT'][''] = $get_infos('./', $force, _DIR_RESTREINT);
264
-	$infos['_DIR_RESTREINT']['SPIP']['version'] = $GLOBALS['spip_version_branche'];
265
-	$infos['_DIR_RESTREINT']['SPIP']['chemin'] = [];
266
-	$liste_non_classee = [
267
-		'SPIP' => [
268
-			'nom' => 'SPIP',
269
-			'etat' => 'stable',
270
-			'version' => $GLOBALS['spip_version_branche'],
271
-			'dir_type' => '_DIR_RESTREINT',
272
-			'dir' => '',
273
-		]
274
-	];
275
-
276
-	$invalides = [];
277
-	foreach ($liste_ext as $plug) {
278
-		if (isset($infos['_DIR_PLUGINS_DIST'][$plug])) {
279
-			plugin_valide_resume($liste_non_classee, $plug, $infos, '_DIR_PLUGINS_DIST');
280
-		}
281
-	}
282
-	foreach ($liste_plug as $plug) {
283
-		if (isset($infos['_DIR_PLUGINS'][$plug])) {
284
-			$r = plugin_valide_resume($liste_non_classee, $plug, $infos, '_DIR_PLUGINS');
285
-			if (is_array($r)) {
286
-				$invalides = array_merge($invalides, $r);
287
-			}
288
-		}
289
-	}
290
-
291
-	if (defined('_DIR_PLUGINS_SUPPL') and _DIR_PLUGINS_SUPPL) {
292
-		$infos['_DIR_PLUGINS_SUPPL'] = $get_infos($liste_plug, false, _DIR_PLUGINS_SUPPL);
293
-		foreach ($liste_plug as $plug) {
294
-			if (isset($infos['_DIR_PLUGINS_SUPPL'][$plug])) {
295
-				$r = plugin_valide_resume($liste_non_classee, $plug, $infos, '_DIR_PLUGINS_SUPPL');
296
-				if (is_array($r)) {
297
-					$invalides = array_merge($invalides, $r);
298
-				}
299
-			}
300
-		}
301
-	}
302
-
303
-	plugin_fixer_procure($liste_non_classee, $infos);
304
-
305
-	// les plugins qui sont dans $liste_non_classee ne sont pas invalides (on a trouve un autre version valide)
306
-	$invalides = array_diff_key($invalides, $liste_non_classee);
307
-
308
-	return [$infos, $liste_non_classee, $invalides];
253
+    $liste_ext = liste_plugin_files(_DIR_PLUGINS_DIST);
254
+    $get_infos = charger_fonction('get_infos', 'plugins');
255
+    $infos = [
256
+        // lister les extensions qui sont automatiquement actives
257
+        '_DIR_PLUGINS_DIST' => $get_infos($liste_ext, $force, _DIR_PLUGINS_DIST),
258
+        '_DIR_PLUGINS' => $get_infos($liste_plug, $force, _DIR_PLUGINS)
259
+    ];
260
+
261
+    // creer une premiere liste non ordonnee mais qui ne retient
262
+    // que les plugins valides, et dans leur derniere version en cas de doublon
263
+    $infos['_DIR_RESTREINT'][''] = $get_infos('./', $force, _DIR_RESTREINT);
264
+    $infos['_DIR_RESTREINT']['SPIP']['version'] = $GLOBALS['spip_version_branche'];
265
+    $infos['_DIR_RESTREINT']['SPIP']['chemin'] = [];
266
+    $liste_non_classee = [
267
+        'SPIP' => [
268
+            'nom' => 'SPIP',
269
+            'etat' => 'stable',
270
+            'version' => $GLOBALS['spip_version_branche'],
271
+            'dir_type' => '_DIR_RESTREINT',
272
+            'dir' => '',
273
+        ]
274
+    ];
275
+
276
+    $invalides = [];
277
+    foreach ($liste_ext as $plug) {
278
+        if (isset($infos['_DIR_PLUGINS_DIST'][$plug])) {
279
+            plugin_valide_resume($liste_non_classee, $plug, $infos, '_DIR_PLUGINS_DIST');
280
+        }
281
+    }
282
+    foreach ($liste_plug as $plug) {
283
+        if (isset($infos['_DIR_PLUGINS'][$plug])) {
284
+            $r = plugin_valide_resume($liste_non_classee, $plug, $infos, '_DIR_PLUGINS');
285
+            if (is_array($r)) {
286
+                $invalides = array_merge($invalides, $r);
287
+            }
288
+        }
289
+    }
290
+
291
+    if (defined('_DIR_PLUGINS_SUPPL') and _DIR_PLUGINS_SUPPL) {
292
+        $infos['_DIR_PLUGINS_SUPPL'] = $get_infos($liste_plug, false, _DIR_PLUGINS_SUPPL);
293
+        foreach ($liste_plug as $plug) {
294
+            if (isset($infos['_DIR_PLUGINS_SUPPL'][$plug])) {
295
+                $r = plugin_valide_resume($liste_non_classee, $plug, $infos, '_DIR_PLUGINS_SUPPL');
296
+                if (is_array($r)) {
297
+                    $invalides = array_merge($invalides, $r);
298
+                }
299
+            }
300
+        }
301
+    }
302
+
303
+    plugin_fixer_procure($liste_non_classee, $infos);
304
+
305
+    // les plugins qui sont dans $liste_non_classee ne sont pas invalides (on a trouve un autre version valide)
306
+    $invalides = array_diff_key($invalides, $liste_non_classee);
307
+
308
+    return [$infos, $liste_non_classee, $invalides];
309 309
 }
310 310
 
311 311
 /**
@@ -325,30 +325,30 @@  discard block
 block discarded – undo
325 325
  *   array description short si on ne le retient pas (pour memorisation dans une table des erreurs)
326 326
  */
327 327
 function plugin_valide_resume(&$liste, $plug, $infos, $dir_type) {
328
-	$i = $infos[$dir_type][$plug];
329
-	$p = strtoupper($i['prefix']);
330
-	$short_desc = [
331
-		'nom' => $i['nom'],
332
-		'etat' => $i['etat'],
333
-		'version' => $i['version'],
334
-		'dir' => $plug,
335
-		'dir_type' => $dir_type
336
-	];
337
-	if (isset($i['erreur']) and $i['erreur']) {
338
-		$short_desc['erreur'] = $i['erreur'];
339
-		return [$p => $short_desc];
340
-	}
341
-	if (!plugin_version_compatible($i['compatibilite'], $GLOBALS['spip_version_branche'], 'spip')) {
342
-		return [$p => $short_desc];
343
-	}
344
-	if (
345
-		!isset($liste[$p])
346
-		or spip_version_compare($i['version'], $liste[$p]['version'], '>')
347
-	) {
348
-		$liste[$p] = $short_desc;
349
-	}
350
-	// ok le plugin etait deja dans la liste ou on a choisi une version plus recente
351
-	return $p;
328
+    $i = $infos[$dir_type][$plug];
329
+    $p = strtoupper($i['prefix']);
330
+    $short_desc = [
331
+        'nom' => $i['nom'],
332
+        'etat' => $i['etat'],
333
+        'version' => $i['version'],
334
+        'dir' => $plug,
335
+        'dir_type' => $dir_type
336
+    ];
337
+    if (isset($i['erreur']) and $i['erreur']) {
338
+        $short_desc['erreur'] = $i['erreur'];
339
+        return [$p => $short_desc];
340
+    }
341
+    if (!plugin_version_compatible($i['compatibilite'], $GLOBALS['spip_version_branche'], 'spip')) {
342
+        return [$p => $short_desc];
343
+    }
344
+    if (
345
+        !isset($liste[$p])
346
+        or spip_version_compare($i['version'], $liste[$p]['version'], '>')
347
+    ) {
348
+        $liste[$p] = $short_desc;
349
+    }
350
+    // ok le plugin etait deja dans la liste ou on a choisi une version plus recente
351
+    return $p;
352 352
 }
353 353
 
354 354
 /**
@@ -364,47 +364,47 @@  discard block
 block discarded – undo
364 364
  * @param array $infos
365 365
  */
366 366
 function plugin_fixer_procure(&$liste, &$infos) {
367
-	foreach ($liste as $p => $resume) {
368
-		$i = $infos[$resume['dir_type']][$resume['dir']];
369
-		if (isset($i['procure']) and $i['procure']) {
370
-			foreach ($i['procure'] as $procure) {
371
-				$p = strtoupper($procure['nom']);
372
-				$dir = $resume['dir'];
373
-				if ($dir) {
374
-					$dir .= '/';
375
-				}
376
-				$dir .= 'procure:' . $procure['nom'];
377
-
378
-				$procure['etat'] = '?';
379
-				$procure['dir_type'] = $resume['dir_type'];
380
-				$procure['dir'] = $dir;
381
-
382
-				// si ce plugin n'est pas deja procure, ou dans une version plus ancienne
383
-				// on ajoute cette version a la liste
384
-				if (
385
-					!isset($liste[$p])
386
-					or spip_version_compare($procure['version'], $liste[$p]['version'], '>')
387
-				) {
388
-					$liste[$p] = $procure;
389
-
390
-					// on fournit une information minimale pour ne pas perturber la compilation
391
-					$infos[$resume['dir_type']][$dir] = [
392
-						'prefix' => $procure['nom'],
393
-						'nom' => $procure['nom'],
394
-						'etat' => $procure['etat'],
395
-						'version' => $procure['version'],
396
-						'chemin' => [],
397
-						'necessite' => [],
398
-						'utilise' => [],
399
-						'lib' => [],
400
-						'menu' => [],
401
-						'onglet' => [],
402
-						'procure' => [],
403
-					];
404
-				}
405
-			}
406
-		}
407
-	}
367
+    foreach ($liste as $p => $resume) {
368
+        $i = $infos[$resume['dir_type']][$resume['dir']];
369
+        if (isset($i['procure']) and $i['procure']) {
370
+            foreach ($i['procure'] as $procure) {
371
+                $p = strtoupper($procure['nom']);
372
+                $dir = $resume['dir'];
373
+                if ($dir) {
374
+                    $dir .= '/';
375
+                }
376
+                $dir .= 'procure:' . $procure['nom'];
377
+
378
+                $procure['etat'] = '?';
379
+                $procure['dir_type'] = $resume['dir_type'];
380
+                $procure['dir'] = $dir;
381
+
382
+                // si ce plugin n'est pas deja procure, ou dans une version plus ancienne
383
+                // on ajoute cette version a la liste
384
+                if (
385
+                    !isset($liste[$p])
386
+                    or spip_version_compare($procure['version'], $liste[$p]['version'], '>')
387
+                ) {
388
+                    $liste[$p] = $procure;
389
+
390
+                    // on fournit une information minimale pour ne pas perturber la compilation
391
+                    $infos[$resume['dir_type']][$dir] = [
392
+                        'prefix' => $procure['nom'],
393
+                        'nom' => $procure['nom'],
394
+                        'etat' => $procure['etat'],
395
+                        'version' => $procure['version'],
396
+                        'chemin' => [],
397
+                        'necessite' => [],
398
+                        'utilise' => [],
399
+                        'lib' => [],
400
+                        'menu' => [],
401
+                        'onglet' => [],
402
+                        'procure' => [],
403
+                    ];
404
+                }
405
+            }
406
+        }
407
+    }
408 408
 }
409 409
 
410 410
 /**
@@ -418,20 +418,20 @@  discard block
 block discarded – undo
418 418
  * @return array
419 419
  */
420 420
 function liste_chemin_plugin($liste, $dir_plugins = _DIR_PLUGINS) {
421
-	foreach ($liste as $prefix => $infos) {
422
-		if (
423
-			!$dir_plugins
424
-			or (
425
-				defined($infos['dir_type'])
426
-				and constant($infos['dir_type']) == $dir_plugins)
427
-		) {
428
-			$liste[$prefix] = $infos['dir'];
429
-		} else {
430
-			unset($liste[$prefix]);
431
-		}
432
-	}
433
-
434
-	return $liste;
421
+    foreach ($liste as $prefix => $infos) {
422
+        if (
423
+            !$dir_plugins
424
+            or (
425
+                defined($infos['dir_type'])
426
+                and constant($infos['dir_type']) == $dir_plugins)
427
+        ) {
428
+            $liste[$prefix] = $infos['dir'];
429
+        } else {
430
+            unset($liste[$prefix]);
431
+        }
432
+    }
433
+
434
+    return $liste;
435 435
 }
436 436
 
437 437
 /**
@@ -446,9 +446,9 @@  discard block
 block discarded – undo
446 446
  * @return array
447 447
  */
448 448
 function liste_chemin_plugin_actifs($dir_plugins = _DIR_PLUGINS) {
449
-	include_spip('plugins/installer');
449
+    include_spip('plugins/installer');
450 450
 
451
-	return liste_chemin_plugin(liste_plugin_actifs(), $dir_plugins);
451
+    return liste_chemin_plugin(liste_plugin_actifs(), $dir_plugins);
452 452
 }
453 453
 
454 454
 /**
@@ -479,54 +479,54 @@  discard block
 block discarded – undo
479 479
  *                qui n'ont pas satisfait leurs dépendances
480 480
 **/
481 481
 function plugin_trier($infos, $liste_non_classee) {
482
-	$toute_la_liste = $liste_non_classee;
483
-	$liste = $ordre = [];
484
-	$count = 0;
485
-
486
-	while ($c = count($liste_non_classee) and $c != $count) { // tant qu'il reste des plugins a classer, et qu'on ne stagne pas
487
-		#echo "tour::";var_dump($liste_non_classee);
488
-		$count = $c;
489
-		foreach ($liste_non_classee as $p => $resume) {
490
-			$plug = $resume['dir'];
491
-			$dir_type = $resume['dir_type'];
492
-			$info1 = $infos[$dir_type][$plug];
493
-			// si des plugins sont necessaires,
494
-			// on ne peut inserer qu'apres eux
495
-			foreach ($info1['necessite'] as $need) {
496
-				$nom = strtoupper($need['nom']);
497
-				$compat = isset($need['compatibilite']) ? $need['compatibilite'] : '';
498
-				if (!isset($liste[$nom]) or !plugin_version_compatible($compat, $liste[$nom]['version'])) {
499
-					$info1 = false;
500
-					break;
501
-				}
502
-			}
503
-			if (!$info1) {
504
-				continue;
505
-			}
506
-			// idem si des plugins sont utiles,
507
-			// sauf si ils sont de toute facon absents de la liste
508
-			foreach ($info1['utilise'] as $need) {
509
-				$nom = strtoupper($need['nom']);
510
-				$compat = isset($need['compatibilite']) ? $need['compatibilite'] : '';
511
-				if (isset($toute_la_liste[$nom])) {
512
-					if (
513
-						!isset($liste[$nom]) or
514
-						!plugin_version_compatible($compat, $liste[$nom]['version'])
515
-					) {
516
-						$info1 = false;
517
-						break;
518
-					}
519
-				}
520
-			}
521
-			if ($info1) {
522
-				$ordre[$p] = $info1;
523
-				$liste[$p] = $liste_non_classee[$p];
524
-				unset($liste_non_classee[$p]);
525
-			}
526
-		}
527
-	}
528
-
529
-	return [$liste, $ordre, $liste_non_classee];
482
+    $toute_la_liste = $liste_non_classee;
483
+    $liste = $ordre = [];
484
+    $count = 0;
485
+
486
+    while ($c = count($liste_non_classee) and $c != $count) { // tant qu'il reste des plugins a classer, et qu'on ne stagne pas
487
+        #echo "tour::";var_dump($liste_non_classee);
488
+        $count = $c;
489
+        foreach ($liste_non_classee as $p => $resume) {
490
+            $plug = $resume['dir'];
491
+            $dir_type = $resume['dir_type'];
492
+            $info1 = $infos[$dir_type][$plug];
493
+            // si des plugins sont necessaires,
494
+            // on ne peut inserer qu'apres eux
495
+            foreach ($info1['necessite'] as $need) {
496
+                $nom = strtoupper($need['nom']);
497
+                $compat = isset($need['compatibilite']) ? $need['compatibilite'] : '';
498
+                if (!isset($liste[$nom]) or !plugin_version_compatible($compat, $liste[$nom]['version'])) {
499
+                    $info1 = false;
500
+                    break;
501
+                }
502
+            }
503
+            if (!$info1) {
504
+                continue;
505
+            }
506
+            // idem si des plugins sont utiles,
507
+            // sauf si ils sont de toute facon absents de la liste
508
+            foreach ($info1['utilise'] as $need) {
509
+                $nom = strtoupper($need['nom']);
510
+                $compat = isset($need['compatibilite']) ? $need['compatibilite'] : '';
511
+                if (isset($toute_la_liste[$nom])) {
512
+                    if (
513
+                        !isset($liste[$nom]) or
514
+                        !plugin_version_compatible($compat, $liste[$nom]['version'])
515
+                    ) {
516
+                        $info1 = false;
517
+                        break;
518
+                    }
519
+                }
520
+            }
521
+            if ($info1) {
522
+                $ordre[$p] = $info1;
523
+                $liste[$p] = $liste_non_classee[$p];
524
+                unset($liste_non_classee[$p]);
525
+            }
526
+        }
527
+    }
528
+
529
+    return [$liste, $ordre, $liste_non_classee];
530 530
 }
531 531
 
532 532
 /**
@@ -543,40 +543,40 @@  discard block
 block discarded – undo
543 543
  *     Répertoire (plugins, plugins-dist, ...) => Couples (prefixes => infos completes) des plugins qu'ils contiennent
544 544
 **/
545 545
 function plugins_erreurs($liste_non_classee, $liste, $infos, $msg = []) {
546
-	static $erreurs = [];
547
-
548
-	if (!is_array($liste)) {
549
-		$liste = [];
550
-	}
551
-
552
-	// les plugins en erreur ne sont pas actifs ; ils ne doivent pas être dans la liste
553
-	$liste = array_diff_key($liste, $liste_non_classee);
554
-
555
-	foreach ($liste_non_classee as $p => $resume) {
556
-		$dir_type = $resume['dir_type'];
557
-		$plug = $resume['dir'];
558
-		$k = $infos[$dir_type][$plug];
559
-
560
-		$plug = constant($dir_type) . $plug;
561
-		if (!isset($msg[$p])) {
562
-			if (isset($resume['erreur']) and $resume['erreur']) {
563
-				$msg[$p] = [$resume['erreur']];
564
-			}
565
-			elseif (!plugin_version_compatible($k['compatibilite'], $GLOBALS['spip_version_branche'], 'spip')) {
566
-				$msg[$p] = [plugin_message_incompatibilite($k['compatibilite'], $GLOBALS['spip_version_branche'], 'SPIP', 'necessite')];
567
-			}
568
-			elseif (!$msg[$p] = plugin_necessite($k['necessite'], $liste, 'necessite')) {
569
-				$msg[$p] = plugin_necessite($k['utilise'], $liste, 'utilise');
570
-			}
571
-		} else {
572
-			foreach ($msg[$p] as $c => $l) {
573
-				$msg[$p][$c] = plugin_controler_lib($l['nom'], $l['lien']);
574
-			}
575
-		}
576
-		$erreurs[$plug] = $msg[$p];
577
-	}
578
-
579
-	ecrire_meta('plugin_erreur_activation', serialize($erreurs));
546
+    static $erreurs = [];
547
+
548
+    if (!is_array($liste)) {
549
+        $liste = [];
550
+    }
551
+
552
+    // les plugins en erreur ne sont pas actifs ; ils ne doivent pas être dans la liste
553
+    $liste = array_diff_key($liste, $liste_non_classee);
554
+
555
+    foreach ($liste_non_classee as $p => $resume) {
556
+        $dir_type = $resume['dir_type'];
557
+        $plug = $resume['dir'];
558
+        $k = $infos[$dir_type][$plug];
559
+
560
+        $plug = constant($dir_type) . $plug;
561
+        if (!isset($msg[$p])) {
562
+            if (isset($resume['erreur']) and $resume['erreur']) {
563
+                $msg[$p] = [$resume['erreur']];
564
+            }
565
+            elseif (!plugin_version_compatible($k['compatibilite'], $GLOBALS['spip_version_branche'], 'spip')) {
566
+                $msg[$p] = [plugin_message_incompatibilite($k['compatibilite'], $GLOBALS['spip_version_branche'], 'SPIP', 'necessite')];
567
+            }
568
+            elseif (!$msg[$p] = plugin_necessite($k['necessite'], $liste, 'necessite')) {
569
+                $msg[$p] = plugin_necessite($k['utilise'], $liste, 'utilise');
570
+            }
571
+        } else {
572
+            foreach ($msg[$p] as $c => $l) {
573
+                $msg[$p][$c] = plugin_controler_lib($l['nom'], $l['lien']);
574
+            }
575
+        }
576
+        $erreurs[$plug] = $msg[$p];
577
+    }
578
+
579
+    ecrire_meta('plugin_erreur_activation', serialize($erreurs));
580 580
 }
581 581
 
582 582
 /**
@@ -591,25 +591,25 @@  discard block
 block discarded – undo
591 591
  *     - Liste des erreurs ou code HTML des erreurs
592 592
 **/
593 593
 function plugin_donne_erreurs($raw = false, $raz = true) {
594
-	if (!isset($GLOBALS['meta']['plugin_erreur_activation'])) {
595
-		return $raw ? [] : '';
596
-	}
597
-	$list = @unserialize($GLOBALS['meta']['plugin_erreur_activation']);
598
-	// Compat ancienne version
599
-	if (!$list) {
600
-		$list = $raw ? [] : $GLOBALS['meta']['plugin_erreur_activation'];
601
-	} elseif (!$raw) {
602
-		foreach ($list as $plug => $msg) {
603
-			$list[$plug] = '<li>' . _T('plugin_impossible_activer', ['plugin' => $plug])
604
-				. '<ul><li>' . implode('</li><li>', $msg) . '</li></ul></li>';
605
-		}
606
-		$list = '<ul>' . join("\n", $list) . '</ul>';
607
-	}
608
-	if ($raz) {
609
-		effacer_meta('plugin_erreur_activation');
610
-	}
611
-
612
-	return $list;
594
+    if (!isset($GLOBALS['meta']['plugin_erreur_activation'])) {
595
+        return $raw ? [] : '';
596
+    }
597
+    $list = @unserialize($GLOBALS['meta']['plugin_erreur_activation']);
598
+    // Compat ancienne version
599
+    if (!$list) {
600
+        $list = $raw ? [] : $GLOBALS['meta']['plugin_erreur_activation'];
601
+    } elseif (!$raw) {
602
+        foreach ($list as $plug => $msg) {
603
+            $list[$plug] = '<li>' . _T('plugin_impossible_activer', ['plugin' => $plug])
604
+                . '<ul><li>' . implode('</li><li>', $msg) . '</li></ul></li>';
605
+        }
606
+        $list = '<ul>' . join("\n", $list) . '</ul>';
607
+    }
608
+    if ($raz) {
609
+        effacer_meta('plugin_erreur_activation');
610
+    }
611
+
612
+    return $list;
613 613
 }
614 614
 
615 615
 /**
@@ -629,21 +629,21 @@  discard block
 block discarded – undo
629 629
  *
630 630
  **/
631 631
 function plugin_necessite($n, $liste, $balise = 'necessite') {
632
-	$msg = [];
633
-	foreach ($n as $need) {
634
-		$id = strtoupper($need['nom']);
635
-		$r = plugin_controler_necessite(
636
-			$liste,
637
-			$id,
638
-			isset($need['compatibilite']) ? $need['compatibilite'] : '',
639
-			$balise
640
-		);
641
-		if ($r) {
642
-			$msg[] = $r;
643
-		}
644
-	}
645
-
646
-	return $msg;
632
+    $msg = [];
633
+    foreach ($n as $need) {
634
+        $id = strtoupper($need['nom']);
635
+        $r = plugin_controler_necessite(
636
+            $liste,
637
+            $id,
638
+            isset($need['compatibilite']) ? $need['compatibilite'] : '',
639
+            $balise
640
+        );
641
+        if ($r) {
642
+            $msg[] = $r;
643
+        }
644
+    }
645
+
646
+    return $msg;
647 647
 }
648 648
 
649 649
 /**
@@ -665,19 +665,19 @@  discard block
 block discarded – undo
665 665
  *    Message d'erreur lorsque la dépendance est absente.
666 666
  **/
667 667
 function plugin_controler_necessite($liste, $nom, $intervalle, $balise) {
668
-	if (isset($liste[$nom]) and plugin_version_compatible($intervalle, $liste[$nom]['version'])) {
669
-		return '';
670
-	}
671
-	// Si l'on a un <utilise="plugin non actif" />, ne pas renvoyer d'erreur
672
-	if ($balise === 'utilise' and !isset($liste[$nom])) {
673
-		return '';
674
-	}
675
-	return plugin_message_incompatibilite(
676
-		$intervalle,
677
-		(isset($liste[$nom]) ? $liste[$nom]['version'] : ''),
678
-		$nom,
679
-		$balise
680
-	);
668
+    if (isset($liste[$nom]) and plugin_version_compatible($intervalle, $liste[$nom]['version'])) {
669
+        return '';
670
+    }
671
+    // Si l'on a un <utilise="plugin non actif" />, ne pas renvoyer d'erreur
672
+    if ($balise === 'utilise' and !isset($liste[$nom])) {
673
+        return '';
674
+    }
675
+    return plugin_message_incompatibilite(
676
+        $intervalle,
677
+        (isset($liste[$nom]) ? $liste[$nom]['version'] : ''),
678
+        $nom,
679
+        $balise
680
+    );
681 681
 }
682 682
 
683 683
 /**
@@ -694,70 +694,70 @@  discard block
 block discarded – undo
694 694
  */
695 695
 function plugin_message_incompatibilite($intervalle, $version, $nom, $balise) {
696 696
 
697
-	// prendre en compte les erreurs de dépendances à PHP
698
-	// ou à une extension PHP avec des messages d'erreurs dédiés.
699
-	$type = 'plugin';
700
-	if ($nom === 'SPIP') {
701
-		$type = 'spip';
702
-	} elseif ($nom === 'PHP') {
703
-		$type = 'php';
704
-	} elseif (strncmp($nom, 'PHP:', 4) === 0) {
705
-		$type = 'extension_php';
706
-		list(,$nom) = explode(':', $nom, 2);
707
-	}
708
-
709
-	if (preg_match(_EXTRAIRE_INTERVALLE, $intervalle, $regs)) {
710
-		$minimum = $regs[1];
711
-		$maximum = $regs[2];
712
-
713
-		$minimum_inclus = $intervalle[0] == '[';
714
-		$maximum_inclus = substr($intervalle, -1) == ']';
715
-
716
-		if (strlen($minimum)) {
717
-			if ($minimum_inclus and spip_version_compare($version, $minimum, '<')) {
718
-				return _T("plugin_${balise}_${type}", [
719
-					'plugin' => $nom,
720
-					'version' => ' &ge; ' . $minimum
721
-				]);
722
-			}
723
-			if (!$minimum_inclus and spip_version_compare($version, $minimum, '<=')) {
724
-				return _T("plugin_${balise}_${type}", [
725
-					'plugin' => $nom,
726
-					'version' => ' &gt; ' . $minimum
727
-				]);
728
-			}
729
-		}
730
-
731
-		if (strlen($maximum)) {
732
-			if ($maximum_inclus and spip_version_compare($version, $maximum, '>')) {
733
-				return _T("plugin_${balise}_${type}", [
734
-					'plugin' => $nom,
735
-					'version' => ' &le; ' . $maximum
736
-				]);
737
-			}
738
-			if (!$maximum_inclus and spip_version_compare($version, $maximum, '>=')) {
739
-				return _T("plugin_${balise}_plugin", [
740
-					'plugin' => $nom,
741
-					'version' => ' &lt; ' . $maximum
742
-				]);
743
-			}
744
-		}
745
-	}
746
-
747
-	// note : il ne peut pas y avoir d'erreur sur
748
-	// - un 'utilise' sans version.
749
-	// - un 'php' sans version.
750
-	return _T("plugin_necessite_${type}_sans_version", ['plugin' => $nom]);
697
+    // prendre en compte les erreurs de dépendances à PHP
698
+    // ou à une extension PHP avec des messages d'erreurs dédiés.
699
+    $type = 'plugin';
700
+    if ($nom === 'SPIP') {
701
+        $type = 'spip';
702
+    } elseif ($nom === 'PHP') {
703
+        $type = 'php';
704
+    } elseif (strncmp($nom, 'PHP:', 4) === 0) {
705
+        $type = 'extension_php';
706
+        list(,$nom) = explode(':', $nom, 2);
707
+    }
708
+
709
+    if (preg_match(_EXTRAIRE_INTERVALLE, $intervalle, $regs)) {
710
+        $minimum = $regs[1];
711
+        $maximum = $regs[2];
712
+
713
+        $minimum_inclus = $intervalle[0] == '[';
714
+        $maximum_inclus = substr($intervalle, -1) == ']';
715
+
716
+        if (strlen($minimum)) {
717
+            if ($minimum_inclus and spip_version_compare($version, $minimum, '<')) {
718
+                return _T("plugin_${balise}_${type}", [
719
+                    'plugin' => $nom,
720
+                    'version' => ' &ge; ' . $minimum
721
+                ]);
722
+            }
723
+            if (!$minimum_inclus and spip_version_compare($version, $minimum, '<=')) {
724
+                return _T("plugin_${balise}_${type}", [
725
+                    'plugin' => $nom,
726
+                    'version' => ' &gt; ' . $minimum
727
+                ]);
728
+            }
729
+        }
730
+
731
+        if (strlen($maximum)) {
732
+            if ($maximum_inclus and spip_version_compare($version, $maximum, '>')) {
733
+                return _T("plugin_${balise}_${type}", [
734
+                    'plugin' => $nom,
735
+                    'version' => ' &le; ' . $maximum
736
+                ]);
737
+            }
738
+            if (!$maximum_inclus and spip_version_compare($version, $maximum, '>=')) {
739
+                return _T("plugin_${balise}_plugin", [
740
+                    'plugin' => $nom,
741
+                    'version' => ' &lt; ' . $maximum
742
+                ]);
743
+            }
744
+        }
745
+    }
746
+
747
+    // note : il ne peut pas y avoir d'erreur sur
748
+    // - un 'utilise' sans version.
749
+    // - un 'php' sans version.
750
+    return _T("plugin_necessite_${type}_sans_version", ['plugin' => $nom]);
751 751
 }
752 752
 
753 753
 
754 754
 function plugin_controler_lib($lib, $url) {
755
-	/* Feature sortie du core, voir STP
755
+    /* Feature sortie du core, voir STP
756 756
 	 * if ($url) {
757 757
 		include_spip('inc/charger_plugin');
758 758
 		$url = '<br />'	. bouton_telechargement_plugin($url, 'lib');
759 759
 	}*/
760
-	return _T('plugin_necessite_lib', ['lib' => $lib]) . " <a href='$url'>$url</a>";
760
+    return _T('plugin_necessite_lib', ['lib' => $lib]) . " <a href='$url'>$url</a>";
761 761
 }
762 762
 
763 763
 
@@ -772,7 +772,7 @@  discard block
 block discarded – undo
772 772
  *     true si il y a eu des modifications sur la liste des plugins actifs, false sinon
773 773
  **/
774 774
 function actualise_plugins_actifs($pipe_recherche = false) {
775
-	return ecrire_plugin_actifs('', $pipe_recherche, 'force');
775
+    return ecrire_plugin_actifs('', $pipe_recherche, 'force');
776 776
 }
777 777
 
778 778
 
@@ -799,116 +799,116 @@  discard block
 block discarded – undo
799 799
  **/
800 800
 function ecrire_plugin_actifs($plugin, $pipe_recherche = false, $operation = 'raz') {
801 801
 
802
-	// creer le repertoire cache/ si necessaire ! (installation notamment)
803
-	$cache = sous_repertoire(_DIR_CACHE, '', false, true);
804
-
805
-	// Si on n'a ni cache accessible, ni connexion SQL, on ne peut pas faire grand chose encore.
806
-	if (!$cache and !spip_connect()) {
807
-		return false;
808
-	}
809
-
810
-	if ($operation != 'raz') {
811
-		$plugin_valides = liste_chemin_plugin_actifs();
812
-		$plugin_valides = is_plugin_dir($plugin_valides);
813
-		if (defined('_DIR_PLUGINS_SUPPL') && _DIR_PLUGINS_SUPPL) {
814
-			$plugin_valides_supp = liste_chemin_plugin_actifs(_DIR_PLUGINS_SUPPL);
815
-			$plugin_valides_supp = is_plugin_dir($plugin_valides_supp, _DIR_PLUGINS_SUPPL);
816
-			$plugin_valides = array_merge($plugin_valides, $plugin_valides_supp);
817
-		}
818
-		// si des plugins sont en attentes (coches mais impossible a activer)
819
-		// on les reinjecte ici
820
-		if (
821
-			isset($GLOBALS['meta']['plugin_attente'])
822
-			and $a = unserialize($GLOBALS['meta']['plugin_attente'])
823
-		) {
824
-			$plugin_valides = $plugin_valides + liste_chemin_plugin($a);
825
-		}
826
-
827
-		if ($operation == 'ajoute') {
828
-			$plugin = array_merge($plugin_valides, $plugin);
829
-		} elseif ($operation == 'enleve') {
830
-			$plugin = array_diff($plugin_valides, $plugin);
831
-		} else {
832
-			$plugin = $plugin_valides;
833
-		}
834
-	}
835
-	$actifs_avant = isset($GLOBALS['meta']['plugin']) ? $GLOBALS['meta']['plugin'] : '';
836
-
837
-	// si une fonction de gestion de dependances existe, l'appeler ici
838
-	if ($ajouter_dependances = charger_fonction('ajouter_dependances', 'plugins', true)) {
839
-		$plugin = $ajouter_dependances($plugin);
840
-	}
841
-
842
-	// recharger le xml des plugins a activer
843
-	// on force le reload ici, meme si le fichier xml n'a pas change
844
-	// pour ne pas rater l'ajout ou la suppression d'un fichier fonctions/options/administrations
845
-	// pourra etre evite quand on ne supportera plus les plugin.xml
846
-	// en deplacant la detection de ces fichiers dans la compilation ci dessous
847
-	list($infos, $liste, $invalides) = liste_plugin_valides($plugin, true);
848
-	// trouver l'ordre d'activation
849
-	list($plugin_valides, $ordre, $reste) = plugin_trier($infos, $liste);
850
-	if ($invalides or $reste) {
851
-		plugins_erreurs(array_merge($invalides, $reste), $liste, $infos);
852
-	}
853
-
854
-	// Ignorer les plugins necessitant une lib absente
855
-	// et preparer la meta d'entete Http
856
-	$err = $msg = $header = [];
857
-	foreach ($plugin_valides as $p => $resume) {
858
-		// Les headers ne doivent pas indiquer les versions des extensions PHP, ni la version PHP
859
-		if (0 !== strpos($p, 'PHP:') and $p !== 'PHP') {
860
-			$header[] = $p . ($resume['version'] ? '(' . $resume['version'] . ')' : '');
861
-		}
862
-		if ($resume['dir']) {
863
-			foreach ($infos[$resume['dir_type']][$resume['dir']]['lib'] as $l) {
864
-				if (!find_in_path($l['nom'], 'lib/')) {
865
-					$err[$p] = $resume;
866
-					$msg[$p][] = $l;
867
-					unset($plugin_valides[$p]);
868
-				}
869
-			}
870
-		}
871
-	}
872
-	if ($err) {
873
-		plugins_erreurs($err, '', $infos, $msg);
874
-	}
875
-
876
-	if (isset($GLOBALS['meta']['message_crash_plugins'])) {
877
-		effacer_meta('message_crash_plugins');
878
-	}
879
-	ecrire_meta('plugin', serialize($plugin_valides));
880
-	$liste = array_diff_key($liste, $plugin_valides);
881
-	ecrire_meta('plugin_attente', serialize($liste));
882
-	$header = strtolower(implode(',', $header));
883
-	if (!isset($GLOBALS['spip_header_silencieux']) or !$GLOBALS['spip_header_silencieux']) {
884
-		ecrire_fichier(
885
-			_DIR_VAR . 'config.txt',
886
-			(defined('_HEADER_COMPOSED_BY') ? _HEADER_COMPOSED_BY : 'Composed-By: SPIP') . ' ' . $GLOBALS['spip_version_affichee'] . ' @ www.spip.net + ' . $header
887
-		);
888
-	} else {
889
-		@unlink(_DIR_VAR . 'config.txt');
890
-	}
891
-	// generer charger_plugins_chemin.php
892
-	plugins_precompile_chemin($plugin_valides, $ordre);
893
-	// generer les fichiers
894
-	// - charger_plugins_options.php
895
-	// - charger_plugins_fonctions.php
896
-	plugins_precompile_xxxtions($plugin_valides, $ordre);
897
-	// charger les chemins des plugins et les fichiers d'options
898
-	// (qui peuvent déclarer / utiliser des pipelines, ajouter d'autres chemins)
899
-	plugins_amorcer_plugins_actifs();
900
-	// mise a jour de la matrice des pipelines
901
-	$prepend_code = pipeline_matrice_precompile($plugin_valides, $ordre, $pipe_recherche);
902
-	// generer le fichier _CACHE_PIPELINE
903
-	pipeline_precompile($prepend_code);
904
-
905
-	if (spip_connect()) {
906
-		// lancer et initialiser les nouveaux crons !
907
-		include_spip('inc/genie');
908
-		genie_queue_watch_dist();
909
-	}
910
-
911
-	return ($GLOBALS['meta']['plugin'] != $actifs_avant);
802
+    // creer le repertoire cache/ si necessaire ! (installation notamment)
803
+    $cache = sous_repertoire(_DIR_CACHE, '', false, true);
804
+
805
+    // Si on n'a ni cache accessible, ni connexion SQL, on ne peut pas faire grand chose encore.
806
+    if (!$cache and !spip_connect()) {
807
+        return false;
808
+    }
809
+
810
+    if ($operation != 'raz') {
811
+        $plugin_valides = liste_chemin_plugin_actifs();
812
+        $plugin_valides = is_plugin_dir($plugin_valides);
813
+        if (defined('_DIR_PLUGINS_SUPPL') && _DIR_PLUGINS_SUPPL) {
814
+            $plugin_valides_supp = liste_chemin_plugin_actifs(_DIR_PLUGINS_SUPPL);
815
+            $plugin_valides_supp = is_plugin_dir($plugin_valides_supp, _DIR_PLUGINS_SUPPL);
816
+            $plugin_valides = array_merge($plugin_valides, $plugin_valides_supp);
817
+        }
818
+        // si des plugins sont en attentes (coches mais impossible a activer)
819
+        // on les reinjecte ici
820
+        if (
821
+            isset($GLOBALS['meta']['plugin_attente'])
822
+            and $a = unserialize($GLOBALS['meta']['plugin_attente'])
823
+        ) {
824
+            $plugin_valides = $plugin_valides + liste_chemin_plugin($a);
825
+        }
826
+
827
+        if ($operation == 'ajoute') {
828
+            $plugin = array_merge($plugin_valides, $plugin);
829
+        } elseif ($operation == 'enleve') {
830
+            $plugin = array_diff($plugin_valides, $plugin);
831
+        } else {
832
+            $plugin = $plugin_valides;
833
+        }
834
+    }
835
+    $actifs_avant = isset($GLOBALS['meta']['plugin']) ? $GLOBALS['meta']['plugin'] : '';
836
+
837
+    // si une fonction de gestion de dependances existe, l'appeler ici
838
+    if ($ajouter_dependances = charger_fonction('ajouter_dependances', 'plugins', true)) {
839
+        $plugin = $ajouter_dependances($plugin);
840
+    }
841
+
842
+    // recharger le xml des plugins a activer
843
+    // on force le reload ici, meme si le fichier xml n'a pas change
844
+    // pour ne pas rater l'ajout ou la suppression d'un fichier fonctions/options/administrations
845
+    // pourra etre evite quand on ne supportera plus les plugin.xml
846
+    // en deplacant la detection de ces fichiers dans la compilation ci dessous
847
+    list($infos, $liste, $invalides) = liste_plugin_valides($plugin, true);
848
+    // trouver l'ordre d'activation
849
+    list($plugin_valides, $ordre, $reste) = plugin_trier($infos, $liste);
850
+    if ($invalides or $reste) {
851
+        plugins_erreurs(array_merge($invalides, $reste), $liste, $infos);
852
+    }
853
+
854
+    // Ignorer les plugins necessitant une lib absente
855
+    // et preparer la meta d'entete Http
856
+    $err = $msg = $header = [];
857
+    foreach ($plugin_valides as $p => $resume) {
858
+        // Les headers ne doivent pas indiquer les versions des extensions PHP, ni la version PHP
859
+        if (0 !== strpos($p, 'PHP:') and $p !== 'PHP') {
860
+            $header[] = $p . ($resume['version'] ? '(' . $resume['version'] . ')' : '');
861
+        }
862
+        if ($resume['dir']) {
863
+            foreach ($infos[$resume['dir_type']][$resume['dir']]['lib'] as $l) {
864
+                if (!find_in_path($l['nom'], 'lib/')) {
865
+                    $err[$p] = $resume;
866
+                    $msg[$p][] = $l;
867
+                    unset($plugin_valides[$p]);
868
+                }
869
+            }
870
+        }
871
+    }
872
+    if ($err) {
873
+        plugins_erreurs($err, '', $infos, $msg);
874
+    }
875
+
876
+    if (isset($GLOBALS['meta']['message_crash_plugins'])) {
877
+        effacer_meta('message_crash_plugins');
878
+    }
879
+    ecrire_meta('plugin', serialize($plugin_valides));
880
+    $liste = array_diff_key($liste, $plugin_valides);
881
+    ecrire_meta('plugin_attente', serialize($liste));
882
+    $header = strtolower(implode(',', $header));
883
+    if (!isset($GLOBALS['spip_header_silencieux']) or !$GLOBALS['spip_header_silencieux']) {
884
+        ecrire_fichier(
885
+            _DIR_VAR . 'config.txt',
886
+            (defined('_HEADER_COMPOSED_BY') ? _HEADER_COMPOSED_BY : 'Composed-By: SPIP') . ' ' . $GLOBALS['spip_version_affichee'] . ' @ www.spip.net + ' . $header
887
+        );
888
+    } else {
889
+        @unlink(_DIR_VAR . 'config.txt');
890
+    }
891
+    // generer charger_plugins_chemin.php
892
+    plugins_precompile_chemin($plugin_valides, $ordre);
893
+    // generer les fichiers
894
+    // - charger_plugins_options.php
895
+    // - charger_plugins_fonctions.php
896
+    plugins_precompile_xxxtions($plugin_valides, $ordre);
897
+    // charger les chemins des plugins et les fichiers d'options
898
+    // (qui peuvent déclarer / utiliser des pipelines, ajouter d'autres chemins)
899
+    plugins_amorcer_plugins_actifs();
900
+    // mise a jour de la matrice des pipelines
901
+    $prepend_code = pipeline_matrice_precompile($plugin_valides, $ordre, $pipe_recherche);
902
+    // generer le fichier _CACHE_PIPELINE
903
+    pipeline_precompile($prepend_code);
904
+
905
+    if (spip_connect()) {
906
+        // lancer et initialiser les nouveaux crons !
907
+        include_spip('inc/genie');
908
+        genie_queue_watch_dist();
909
+    }
910
+
911
+    return ($GLOBALS['meta']['plugin'] != $actifs_avant);
912 912
 }
913 913
 
914 914
 /**
@@ -927,74 +927,74 @@  discard block
 block discarded – undo
927 927
  *     Couples (prefixe => infos complètes) des plugins qui seront actifs, dans l'ordre de leurs dépendances
928 928
 **/
929 929
 function plugins_precompile_chemin($plugin_valides, $ordre) {
930
-	$chemins = [
931
-		'public' => [],
932
-		'prive' => []
933
-	];
934
-	$contenu = '';
935
-	foreach ($ordre as $p => $info) {
936
-		// $ordre peur contenir des plugins en attente et non valides pour ce hit
937
-		if (isset($plugin_valides[$p])) {
938
-			$dir_type = $plugin_valides[$p]['dir_type'];
939
-			$plug = $plugin_valides[$p]['dir'];
940
-			// definir le plugin, donc le path avant l'include du fichier options
941
-			// permet de faire des include_spip pour attraper un inc_ du plugin
942
-
943
-			$dir = $dir_type . ".'" . $plug . "/'";
944
-
945
-			$prefix = strtoupper(preg_replace(',\W,', '_', $info['prefix']));
946
-			if (
947
-				$prefix !== 'SPIP'
948
-				and strpos($dir, ':') === false // exclure le cas des procure:
949
-			) {
950
-				$contenu .= "define('_DIR_PLUGIN_$prefix',$dir);\n";
951
-				if (!$info['chemin']) {
952
-					$chemins['public'][] = "_DIR_PLUGIN_$prefix";
953
-					$chemins['prive'][] = "_DIR_PLUGIN_$prefix";
954
-					if (is_dir(constant($dir_type) . $plug . '/squelettes/')) {
955
-						$chemins['public'][] = "_DIR_PLUGIN_{$prefix}.'squelettes/'";
956
-					}
957
-				}
958
-				else {
959
-					foreach ($info['chemin'] as $chemin) {
960
-						if (
961
-							!isset($chemin['version']) or plugin_version_compatible(
962
-								$chemin['version'],
963
-								$GLOBALS['spip_version_branche'],
964
-								'spip'
965
-							)
966
-						) {
967
-							$dir = $chemin['path'];
968
-							if (strlen($dir) and $dir[0] == '/') {
969
-								$dir = substr($dir, 1);
970
-							}
971
-							if (strlen($dir) and $dir == './') {
972
-								$dir = '';
973
-							}
974
-							if (strlen($dir)) {
975
-								$dir = rtrim($dir, '/') . '/';
976
-							}
977
-							if (!isset($chemin['type']) or $chemin['type'] == 'public') {
978
-								$chemins['public'][] = "_DIR_PLUGIN_$prefix" . (strlen($dir) ? ".'$dir'" : '');
979
-							}
980
-							if (!isset($chemin['type']) or $chemin['type'] == 'prive') {
981
-								$chemins['prive'][] = "_DIR_PLUGIN_$prefix" . (strlen($dir) ? ".'$dir'" : '');
982
-							}
983
-						}
984
-					}
985
-				}
986
-			}
987
-		}
988
-	}
989
-	if (count($chemins['public']) or count($chemins['prive'])) {
990
-		$contenu .= 'if (_DIR_RESTREINT) _chemin([' . implode(
991
-			',',
992
-			array_reverse($chemins['public'])
993
-		) . "]);\n"
994
-			. 'else _chemin([' . implode(',', array_reverse($chemins['prive'])) . "]);\n";
995
-	}
996
-
997
-	ecrire_fichier_php(_CACHE_PLUGINS_PATH, $contenu);
930
+    $chemins = [
931
+        'public' => [],
932
+        'prive' => []
933
+    ];
934
+    $contenu = '';
935
+    foreach ($ordre as $p => $info) {
936
+        // $ordre peur contenir des plugins en attente et non valides pour ce hit
937
+        if (isset($plugin_valides[$p])) {
938
+            $dir_type = $plugin_valides[$p]['dir_type'];
939
+            $plug = $plugin_valides[$p]['dir'];
940
+            // definir le plugin, donc le path avant l'include du fichier options
941
+            // permet de faire des include_spip pour attraper un inc_ du plugin
942
+
943
+            $dir = $dir_type . ".'" . $plug . "/'";
944
+
945
+            $prefix = strtoupper(preg_replace(',\W,', '_', $info['prefix']));
946
+            if (
947
+                $prefix !== 'SPIP'
948
+                and strpos($dir, ':') === false // exclure le cas des procure:
949
+            ) {
950
+                $contenu .= "define('_DIR_PLUGIN_$prefix',$dir);\n";
951
+                if (!$info['chemin']) {
952
+                    $chemins['public'][] = "_DIR_PLUGIN_$prefix";
953
+                    $chemins['prive'][] = "_DIR_PLUGIN_$prefix";
954
+                    if (is_dir(constant($dir_type) . $plug . '/squelettes/')) {
955
+                        $chemins['public'][] = "_DIR_PLUGIN_{$prefix}.'squelettes/'";
956
+                    }
957
+                }
958
+                else {
959
+                    foreach ($info['chemin'] as $chemin) {
960
+                        if (
961
+                            !isset($chemin['version']) or plugin_version_compatible(
962
+                                $chemin['version'],
963
+                                $GLOBALS['spip_version_branche'],
964
+                                'spip'
965
+                            )
966
+                        ) {
967
+                            $dir = $chemin['path'];
968
+                            if (strlen($dir) and $dir[0] == '/') {
969
+                                $dir = substr($dir, 1);
970
+                            }
971
+                            if (strlen($dir) and $dir == './') {
972
+                                $dir = '';
973
+                            }
974
+                            if (strlen($dir)) {
975
+                                $dir = rtrim($dir, '/') . '/';
976
+                            }
977
+                            if (!isset($chemin['type']) or $chemin['type'] == 'public') {
978
+                                $chemins['public'][] = "_DIR_PLUGIN_$prefix" . (strlen($dir) ? ".'$dir'" : '');
979
+                            }
980
+                            if (!isset($chemin['type']) or $chemin['type'] == 'prive') {
981
+                                $chemins['prive'][] = "_DIR_PLUGIN_$prefix" . (strlen($dir) ? ".'$dir'" : '');
982
+                            }
983
+                        }
984
+                    }
985
+                }
986
+            }
987
+        }
988
+    }
989
+    if (count($chemins['public']) or count($chemins['prive'])) {
990
+        $contenu .= 'if (_DIR_RESTREINT) _chemin([' . implode(
991
+            ',',
992
+            array_reverse($chemins['public'])
993
+        ) . "]);\n"
994
+            . 'else _chemin([' . implode(',', array_reverse($chemins['prive'])) . "]);\n";
995
+    }
996
+
997
+    ecrire_fichier_php(_CACHE_PLUGINS_PATH, $contenu);
998 998
 }
999 999
 
1000 1000
 /**
@@ -1012,67 +1012,67 @@  discard block
 block discarded – undo
1012 1012
  *     Couples (prefixe => infos complètes) des plugins qui seront actifs, dans l'ordre de leurs dépendances
1013 1013
 **/
1014 1014
 function plugins_precompile_xxxtions($plugin_valides, $ordre) {
1015
-	$contenu = ['options' => '', 'fonctions' => ''];
1016
-	$boutons = [];
1017
-	$onglets = [];
1018
-	$sign = '';
1019
-
1020
-	foreach ($ordre as $p => $info) {
1021
-		// $ordre peur contenir des plugins en attente et non valides pour ce hit
1022
-		if (isset($plugin_valides[$p])) {
1023
-			$dir_type = $plugin_valides[$p]['dir_type'];
1024
-			$plug = $plugin_valides[$p]['dir'];
1025
-			$dir = constant($dir_type);
1026
-			$root_dir_type = str_replace('_DIR_', '_ROOT_', $dir_type);
1027
-			if ($info['menu']) {
1028
-				$boutons = array_merge($boutons, $info['menu']);
1029
-			}
1030
-			if ($info['onglet']) {
1031
-				$onglets = array_merge($onglets, $info['onglet']);
1032
-			}
1033
-			foreach ($contenu as $charge => $v) {
1034
-				// si pas declare/detecte a la lecture du paquet.xml,
1035
-				// detecer a nouveau ici puisque son ajout ne provoque pas une modif du paquet.xml
1036
-				// donc ni sa relecture, ni sa detection
1037
-				if (
1038
-					!isset($info[$charge])
1039
-					and $dir // exclure le cas du plugin "SPIP"
1040
-					and strpos($dir, ':') === false // exclure le cas des procure:
1041
-					and file_exists("$dir$plug/paquet.xml") // uniquement pour les paquet.xml
1042
-				) {
1043
-					if (is_readable("$dir$plug/" . ($file = $info['prefix'] . '_' . $charge . '.php'))) {
1044
-						$info[$charge] = [$file];
1045
-					}
1046
-				}
1047
-				if (isset($info[$charge])) {
1048
-					$files = $info[$charge];
1049
-					foreach ($files as $k => $file) {
1050
-						// on genere un if file_exists devant chaque include
1051
-						// pour pouvoir garder le meme niveau d'erreur general
1052
-						$file = trim($file);
1053
-						if (
1054
-							!is_readable("$dir$plug/$file")
1055
-							// uniquement pour les paquet.xml
1056
-							and file_exists("$dir$plug/paquet.xml")
1057
-						) {
1058
-							unset($info[$charge][$k]);
1059
-						} else {
1060
-							$_file = $root_dir_type . ".'$plug/$file'";
1061
-							$contenu[$charge] .= "include_once_check($_file);\n";
1062
-						}
1063
-					}
1064
-				}
1065
-			}
1066
-			$sign .= md5(serialize($info));
1067
-		}
1068
-	}
1069
-
1070
-	$contenu['options'] = "define('_PLUGINS_HASH','" . md5($sign) . "');\n" . $contenu['options'];
1071
-	$contenu['fonctions'] .= plugin_ongletbouton('boutons_plugins', $boutons)
1072
-		. plugin_ongletbouton('onglets_plugins', $onglets);
1073
-
1074
-	ecrire_fichier_php(_CACHE_PLUGINS_OPT, $contenu['options']);
1075
-	ecrire_fichier_php(_CACHE_PLUGINS_FCT, $contenu['fonctions']);
1015
+    $contenu = ['options' => '', 'fonctions' => ''];
1016
+    $boutons = [];
1017
+    $onglets = [];
1018
+    $sign = '';
1019
+
1020
+    foreach ($ordre as $p => $info) {
1021
+        // $ordre peur contenir des plugins en attente et non valides pour ce hit
1022
+        if (isset($plugin_valides[$p])) {
1023
+            $dir_type = $plugin_valides[$p]['dir_type'];
1024
+            $plug = $plugin_valides[$p]['dir'];
1025
+            $dir = constant($dir_type);
1026
+            $root_dir_type = str_replace('_DIR_', '_ROOT_', $dir_type);
1027
+            if ($info['menu']) {
1028
+                $boutons = array_merge($boutons, $info['menu']);
1029
+            }
1030
+            if ($info['onglet']) {
1031
+                $onglets = array_merge($onglets, $info['onglet']);
1032
+            }
1033
+            foreach ($contenu as $charge => $v) {
1034
+                // si pas declare/detecte a la lecture du paquet.xml,
1035
+                // detecer a nouveau ici puisque son ajout ne provoque pas une modif du paquet.xml
1036
+                // donc ni sa relecture, ni sa detection
1037
+                if (
1038
+                    !isset($info[$charge])
1039
+                    and $dir // exclure le cas du plugin "SPIP"
1040
+                    and strpos($dir, ':') === false // exclure le cas des procure:
1041
+                    and file_exists("$dir$plug/paquet.xml") // uniquement pour les paquet.xml
1042
+                ) {
1043
+                    if (is_readable("$dir$plug/" . ($file = $info['prefix'] . '_' . $charge . '.php'))) {
1044
+                        $info[$charge] = [$file];
1045
+                    }
1046
+                }
1047
+                if (isset($info[$charge])) {
1048
+                    $files = $info[$charge];
1049
+                    foreach ($files as $k => $file) {
1050
+                        // on genere un if file_exists devant chaque include
1051
+                        // pour pouvoir garder le meme niveau d'erreur general
1052
+                        $file = trim($file);
1053
+                        if (
1054
+                            !is_readable("$dir$plug/$file")
1055
+                            // uniquement pour les paquet.xml
1056
+                            and file_exists("$dir$plug/paquet.xml")
1057
+                        ) {
1058
+                            unset($info[$charge][$k]);
1059
+                        } else {
1060
+                            $_file = $root_dir_type . ".'$plug/$file'";
1061
+                            $contenu[$charge] .= "include_once_check($_file);\n";
1062
+                        }
1063
+                    }
1064
+                }
1065
+            }
1066
+            $sign .= md5(serialize($info));
1067
+        }
1068
+    }
1069
+
1070
+    $contenu['options'] = "define('_PLUGINS_HASH','" . md5($sign) . "');\n" . $contenu['options'];
1071
+    $contenu['fonctions'] .= plugin_ongletbouton('boutons_plugins', $boutons)
1072
+        . plugin_ongletbouton('onglets_plugins', $onglets);
1073
+
1074
+    ecrire_fichier_php(_CACHE_PLUGINS_OPT, $contenu['options']);
1075
+    ecrire_fichier_php(_CACHE_PLUGINS_FCT, $contenu['fonctions']);
1076 1076
 }
1077 1077
 
1078 1078
 /**
@@ -1091,24 +1091,24 @@  discard block
 block discarded – undo
1091 1091
  * @return string Code php
1092 1092
  */
1093 1093
 function plugin_ongletbouton($nom, $val) {
1094
-	if (!$val) {
1095
-		$val = [];
1096
-	}
1097
-
1098
-	$val = serialize($val);
1099
-	$md5 = md5($val);
1100
-
1101
-	if (!defined("_UPDATED_$nom")) {
1102
-		define("_UPDATED_$nom", $val);
1103
-		define("_UPDATED_md5_$nom", $md5);
1104
-	}
1105
-	$val = "unserialize('" . str_replace("'", "\'", $val) . "')";
1106
-
1107
-	return
1108
-		"if (!function_exists('$nom')) {\n"
1109
-		. "function $nom(){return defined('_UPDATED_$nom')?unserialize(_UPDATED_$nom):$val;}\n"
1110
-		. "function md5_$nom(){return defined('_UPDATED_md5_$nom')?_UPDATED_md5_$nom:'" . $md5 . "';}\n"
1111
-		. "}\n";
1094
+    if (!$val) {
1095
+        $val = [];
1096
+    }
1097
+
1098
+    $val = serialize($val);
1099
+    $md5 = md5($val);
1100
+
1101
+    if (!defined("_UPDATED_$nom")) {
1102
+        define("_UPDATED_$nom", $val);
1103
+        define("_UPDATED_md5_$nom", $md5);
1104
+    }
1105
+    $val = "unserialize('" . str_replace("'", "\'", $val) . "')";
1106
+
1107
+    return
1108
+        "if (!function_exists('$nom')) {\n"
1109
+        . "function $nom(){return defined('_UPDATED_$nom')?unserialize(_UPDATED_$nom):$val;}\n"
1110
+        . "function md5_$nom(){return defined('_UPDATED_md5_$nom')?_UPDATED_md5_$nom:'" . $md5 . "';}\n"
1111
+        . "}\n";
1112 1112
 }
1113 1113
 
1114 1114
 /**
@@ -1123,15 +1123,15 @@  discard block
 block discarded – undo
1123 1123
 **/
1124 1124
 function plugins_amorcer_plugins_actifs() {
1125 1125
 
1126
-	if (@is_readable(_CACHE_PLUGINS_PATH)) {
1127
-		include_once(_CACHE_PLUGINS_PATH);
1128
-	}
1126
+    if (@is_readable(_CACHE_PLUGINS_PATH)) {
1127
+        include_once(_CACHE_PLUGINS_PATH);
1128
+    }
1129 1129
 
1130
-	if (@is_readable(_CACHE_PLUGINS_OPT)) {
1131
-		include_once(_CACHE_PLUGINS_OPT);
1132
-	} else {
1133
-		spip_log('pipelines desactives: impossible de produire ' . _CACHE_PLUGINS_OPT);
1134
-	}
1130
+    if (@is_readable(_CACHE_PLUGINS_OPT)) {
1131
+        include_once(_CACHE_PLUGINS_OPT);
1132
+    } else {
1133
+        spip_log('pipelines desactives: impossible de produire ' . _CACHE_PLUGINS_OPT);
1134
+    }
1135 1135
 }
1136 1136
 
1137 1137
 /**
@@ -1154,140 +1154,140 @@  discard block
 block discarded – undo
1154 1154
  *     Couples (nom du pipeline => Code PHP à insérer au début du pipeline)
1155 1155
 **/
1156 1156
 function pipeline_matrice_precompile($plugin_valides, $ordre, $pipe_recherche) {
1157
-	static $liste_pipe_manquants = [];
1158
-	if (($pipe_recherche) && (!in_array($pipe_recherche, $liste_pipe_manquants))) {
1159
-		$liste_pipe_manquants[] = $pipe_recherche;
1160
-	}
1161
-
1162
-	$prepend_code = [];
1163
-
1164
-	foreach ($ordre as $p => $info) {
1165
-		// $ordre peur contenir des plugins en attente et non valides pour ce hit
1166
-		if (isset($plugin_valides[$p])) {
1167
-			$dir_type = $plugin_valides[$p]['dir_type'];
1168
-			$root_dir_type = str_replace('_DIR_', '_ROOT_', $dir_type);
1169
-			$plug = $plugin_valides[$p]['dir'];
1170
-			$prefix = (($info['prefix'] == 'spip') ? '' : $info['prefix'] . '_');
1171
-			if (isset($info['pipeline']) and is_array($info['pipeline'])) {
1172
-				foreach ($info['pipeline'] as $pipe) {
1173
-					$nom = $pipe['nom'];
1174
-					if (isset($pipe['action'])) {
1175
-						$action = $pipe['action'];
1176
-					} else {
1177
-						$action = $nom;
1178
-					}
1179
-					$nomlower = strtolower($nom);
1180
-					if (
1181
-						$nomlower != $nom
1182
-						and isset($GLOBALS['spip_pipeline'][$nom])
1183
-						and !isset($GLOBALS['spip_pipeline'][$nomlower])
1184
-					) {
1185
-						$GLOBALS['spip_pipeline'][$nomlower] = $GLOBALS['spip_pipeline'][$nom];
1186
-						unset($GLOBALS['spip_pipeline'][$nom]);
1187
-					}
1188
-					$nom = $nomlower;
1189
-					// une action vide est une declaration qui ne doit pas etre compilee !
1190
-					if (!isset($GLOBALS['spip_pipeline'][$nom])) { // creer le pipeline eventuel
1191
-					$GLOBALS['spip_pipeline'][$nom] = '';
1192
-					}
1193
-					if ($action) {
1194
-						if (strpos($GLOBALS['spip_pipeline'][$nom], "|$prefix$action") === false) {
1195
-							$GLOBALS['spip_pipeline'][$nom] = preg_replace(
1196
-								',(\|\||$),',
1197
-								"|$prefix$action\\1",
1198
-								$GLOBALS['spip_pipeline'][$nom],
1199
-								1
1200
-							);
1201
-						}
1202
-						if (isset($pipe['inclure'])) {
1203
-							$GLOBALS['spip_matrice']["$prefix$action"] =
1204
-								"$root_dir_type:$plug/" . $pipe['inclure'];
1205
-						}
1206
-					}
1207
-				}
1208
-			}
1209
-			if (isset($info['genie']) and count($info['genie'])) {
1210
-				if (!isset($prepend_code['taches_generales_cron'])) {
1211
-					$prepend_code['taches_generales_cron'] = '';
1212
-				}
1213
-				foreach ($info['genie'] as $genie) {
1214
-					$nom = $prefix . $genie['nom'];
1215
-					$periode = max(60, intval($genie['periode']));
1216
-					if (charger_fonction($nom, 'genie', true)) {
1217
-						$prepend_code['taches_generales_cron'] .= "\$val['$nom'] = $periode;\n";
1218
-					} else {
1219
-						spip_log("Fonction genie_$nom introuvable", _LOG_ERREUR);
1220
-					}
1221
-				}
1222
-			}
1223
-			if (isset($info['style']) and count($info['style'])) {
1224
-				if (!isset($prepend_code['insert_head_css'])) {
1225
-					$prepend_code['insert_head_css'] = '';
1226
-				}
1227
-				if (!isset($prepend_code['header_prive_css'])) {
1228
-					$prepend_code['header_prive_css'] = '';
1229
-				}
1230
-				foreach ($info['style'] as $style) {
1231
-					if (isset($style['path']) and $style['path']) {
1232
-						$code = "if (\$f=timestamp(direction_css(find_in_path('" . addslashes($style['path']) . "')))) ";
1233
-					} else {
1234
-						$code = "if (\$f='" . addslashes($style['url']) . "') ";
1235
-					}
1236
-					$code .= "\$val .= '<link rel=\"stylesheet\" href=\"'.\$f.'\" type=\"text/css\"";
1237
-					if (isset($style['media']) and strlen($style['media'])) {
1238
-						$code .= ' media="' . addslashes($style['media']) . '"';
1239
-					}
1240
-					$code .= "/>';\n";
1241
-					if ($style['type'] != 'prive') {
1242
-						$prepend_code['insert_head_css'] .= $code;
1243
-					}
1244
-					if ($style['type'] != 'public') {
1245
-						$prepend_code['header_prive_css'] .= $code;
1246
-					}
1247
-				}
1248
-			}
1249
-			if (!isset($prepend_code['insert_head'])) {
1250
-				$prepend_code['insert_head'] = '';
1251
-			}
1252
-			if (!isset($prepend_code['header_prive'])) {
1253
-				$prepend_code['header_prive'] = '';
1254
-			}
1255
-			if (isset($info['script']) and count($info['script'])) {
1256
-				foreach ($info['script'] as $script) {
1257
-					if (isset($script['path']) and $script['path']) {
1258
-						$code = "if (\$f=timestamp(find_in_path('" . addslashes($script['path']) . "'))) ";
1259
-					} else {
1260
-						$code = "if (\$f='" . addslashes($script['url']) . "') ";
1261
-					}
1262
-					$code .= "\$val .= '<script src=\"'.\$f.'\" type=\"text/javascript\"></script>';\n";
1263
-					if ($script['type'] != 'prive') {
1264
-						$prepend_code['insert_head'] .= $code;
1265
-					}
1266
-					if ($script['type'] != 'public') {
1267
-						$prepend_code['header_prive'] .= $code;
1268
-					}
1269
-				}
1270
-			}
1271
-		}
1272
-	}
1273
-
1274
-	$prepend_code['insert_head'] =
1275
-		"include_once_check(_DIR_RESTREINT . 'inc/pipelines.php');\n"
1276
-		. "\$val = minipipe('f_jQuery', \$val);\n"
1277
-		. $prepend_code['insert_head'];
1278
-	$prepend_code['header_prive'] =
1279
-		"include_once_check(_DIR_RESTREINT . 'inc/pipelines_ecrire.php');\n"
1280
-		. "\$val = minipipe('f_jQuery_prive', \$val);\n"
1281
-		. $prepend_code['header_prive'];
1282
-
1283
-	// on ajoute les pipe qui ont ete recenses manquants
1284
-	foreach ($liste_pipe_manquants as $add_pipe) {
1285
-		if (!isset($GLOBALS['spip_pipeline'][$add_pipe])) {
1286
-			$GLOBALS['spip_pipeline'][$add_pipe] = '';
1287
-		}
1288
-	}
1289
-
1290
-	return $prepend_code;
1157
+    static $liste_pipe_manquants = [];
1158
+    if (($pipe_recherche) && (!in_array($pipe_recherche, $liste_pipe_manquants))) {
1159
+        $liste_pipe_manquants[] = $pipe_recherche;
1160
+    }
1161
+
1162
+    $prepend_code = [];
1163
+
1164
+    foreach ($ordre as $p => $info) {
1165
+        // $ordre peur contenir des plugins en attente et non valides pour ce hit
1166
+        if (isset($plugin_valides[$p])) {
1167
+            $dir_type = $plugin_valides[$p]['dir_type'];
1168
+            $root_dir_type = str_replace('_DIR_', '_ROOT_', $dir_type);
1169
+            $plug = $plugin_valides[$p]['dir'];
1170
+            $prefix = (($info['prefix'] == 'spip') ? '' : $info['prefix'] . '_');
1171
+            if (isset($info['pipeline']) and is_array($info['pipeline'])) {
1172
+                foreach ($info['pipeline'] as $pipe) {
1173
+                    $nom = $pipe['nom'];
1174
+                    if (isset($pipe['action'])) {
1175
+                        $action = $pipe['action'];
1176
+                    } else {
1177
+                        $action = $nom;
1178
+                    }
1179
+                    $nomlower = strtolower($nom);
1180
+                    if (
1181
+                        $nomlower != $nom
1182
+                        and isset($GLOBALS['spip_pipeline'][$nom])
1183
+                        and !isset($GLOBALS['spip_pipeline'][$nomlower])
1184
+                    ) {
1185
+                        $GLOBALS['spip_pipeline'][$nomlower] = $GLOBALS['spip_pipeline'][$nom];
1186
+                        unset($GLOBALS['spip_pipeline'][$nom]);
1187
+                    }
1188
+                    $nom = $nomlower;
1189
+                    // une action vide est une declaration qui ne doit pas etre compilee !
1190
+                    if (!isset($GLOBALS['spip_pipeline'][$nom])) { // creer le pipeline eventuel
1191
+                    $GLOBALS['spip_pipeline'][$nom] = '';
1192
+                    }
1193
+                    if ($action) {
1194
+                        if (strpos($GLOBALS['spip_pipeline'][$nom], "|$prefix$action") === false) {
1195
+                            $GLOBALS['spip_pipeline'][$nom] = preg_replace(
1196
+                                ',(\|\||$),',
1197
+                                "|$prefix$action\\1",
1198
+                                $GLOBALS['spip_pipeline'][$nom],
1199
+                                1
1200
+                            );
1201
+                        }
1202
+                        if (isset($pipe['inclure'])) {
1203
+                            $GLOBALS['spip_matrice']["$prefix$action"] =
1204
+                                "$root_dir_type:$plug/" . $pipe['inclure'];
1205
+                        }
1206
+                    }
1207
+                }
1208
+            }
1209
+            if (isset($info['genie']) and count($info['genie'])) {
1210
+                if (!isset($prepend_code['taches_generales_cron'])) {
1211
+                    $prepend_code['taches_generales_cron'] = '';
1212
+                }
1213
+                foreach ($info['genie'] as $genie) {
1214
+                    $nom = $prefix . $genie['nom'];
1215
+                    $periode = max(60, intval($genie['periode']));
1216
+                    if (charger_fonction($nom, 'genie', true)) {
1217
+                        $prepend_code['taches_generales_cron'] .= "\$val['$nom'] = $periode;\n";
1218
+                    } else {
1219
+                        spip_log("Fonction genie_$nom introuvable", _LOG_ERREUR);
1220
+                    }
1221
+                }
1222
+            }
1223
+            if (isset($info['style']) and count($info['style'])) {
1224
+                if (!isset($prepend_code['insert_head_css'])) {
1225
+                    $prepend_code['insert_head_css'] = '';
1226
+                }
1227
+                if (!isset($prepend_code['header_prive_css'])) {
1228
+                    $prepend_code['header_prive_css'] = '';
1229
+                }
1230
+                foreach ($info['style'] as $style) {
1231
+                    if (isset($style['path']) and $style['path']) {
1232
+                        $code = "if (\$f=timestamp(direction_css(find_in_path('" . addslashes($style['path']) . "')))) ";
1233
+                    } else {
1234
+                        $code = "if (\$f='" . addslashes($style['url']) . "') ";
1235
+                    }
1236
+                    $code .= "\$val .= '<link rel=\"stylesheet\" href=\"'.\$f.'\" type=\"text/css\"";
1237
+                    if (isset($style['media']) and strlen($style['media'])) {
1238
+                        $code .= ' media="' . addslashes($style['media']) . '"';
1239
+                    }
1240
+                    $code .= "/>';\n";
1241
+                    if ($style['type'] != 'prive') {
1242
+                        $prepend_code['insert_head_css'] .= $code;
1243
+                    }
1244
+                    if ($style['type'] != 'public') {
1245
+                        $prepend_code['header_prive_css'] .= $code;
1246
+                    }
1247
+                }
1248
+            }
1249
+            if (!isset($prepend_code['insert_head'])) {
1250
+                $prepend_code['insert_head'] = '';
1251
+            }
1252
+            if (!isset($prepend_code['header_prive'])) {
1253
+                $prepend_code['header_prive'] = '';
1254
+            }
1255
+            if (isset($info['script']) and count($info['script'])) {
1256
+                foreach ($info['script'] as $script) {
1257
+                    if (isset($script['path']) and $script['path']) {
1258
+                        $code = "if (\$f=timestamp(find_in_path('" . addslashes($script['path']) . "'))) ";
1259
+                    } else {
1260
+                        $code = "if (\$f='" . addslashes($script['url']) . "') ";
1261
+                    }
1262
+                    $code .= "\$val .= '<script src=\"'.\$f.'\" type=\"text/javascript\"></script>';\n";
1263
+                    if ($script['type'] != 'prive') {
1264
+                        $prepend_code['insert_head'] .= $code;
1265
+                    }
1266
+                    if ($script['type'] != 'public') {
1267
+                        $prepend_code['header_prive'] .= $code;
1268
+                    }
1269
+                }
1270
+            }
1271
+        }
1272
+    }
1273
+
1274
+    $prepend_code['insert_head'] =
1275
+        "include_once_check(_DIR_RESTREINT . 'inc/pipelines.php');\n"
1276
+        . "\$val = minipipe('f_jQuery', \$val);\n"
1277
+        . $prepend_code['insert_head'];
1278
+    $prepend_code['header_prive'] =
1279
+        "include_once_check(_DIR_RESTREINT . 'inc/pipelines_ecrire.php');\n"
1280
+        . "\$val = minipipe('f_jQuery_prive', \$val);\n"
1281
+        . $prepend_code['header_prive'];
1282
+
1283
+    // on ajoute les pipe qui ont ete recenses manquants
1284
+    foreach ($liste_pipe_manquants as $add_pipe) {
1285
+        if (!isset($GLOBALS['spip_pipeline'][$add_pipe])) {
1286
+            $GLOBALS['spip_pipeline'][$add_pipe] = '';
1287
+        }
1288
+    }
1289
+
1290
+    return $prepend_code;
1291 1291
 }
1292 1292
 
1293 1293
 /**
@@ -1314,62 +1314,62 @@  discard block
 block discarded – undo
1314 1314
 **/
1315 1315
 function pipeline_precompile($prepend_code = []) {
1316 1316
 
1317
-	$all_pipes = $all_pipes_end = '';
1318
-	if (!empty($GLOBALS['spip_pipeline']['all'])) {
1319
-		$a = explode('||', $GLOBALS['spip_pipeline']['all'], 2);
1320
-		unset($GLOBALS['spip_pipeline']['all']);
1321
-		$all_pipes = trim(array_shift($a));
1322
-		if ($all_pipes) {
1323
-			$all_pipes = '|' . ltrim($all_pipes, '|');
1324
-		}
1325
-		if (count($a)) {
1326
-			$all_pipes_end = '||' . array_shift($a);
1327
-		}
1328
-	}
1329
-	$content = '';
1330
-	foreach ($GLOBALS['spip_pipeline'] as $action => $pipeline) {
1331
-		$s_inc = '';
1332
-		$s_call = '';
1333
-		if ($all_pipes) {
1334
-			$pipeline = preg_replace(',(\|\||$),', "$all_pipes\\1", $pipeline, 1);
1335
-		}
1336
-		if ($all_pipes_end) {
1337
-			$pipeline .= $all_pipes_end;
1338
-		}
1339
-		$pipe = array_filter(explode('|', $pipeline));
1340
-		// Eclater le pipeline en filtres et appliquer chaque filtre
1341
-		foreach ($pipe as $fonc) {
1342
-			$fonc = trim($fonc);
1343
-			$s_call .= '$val = minipipe(\'' . $fonc . '\', $val);' . "\n";
1344
-			if (isset($GLOBALS['spip_matrice'][$fonc])) {
1345
-				$file = $GLOBALS['spip_matrice'][$fonc];
1346
-				$file = "'$file'";
1347
-				// si un _DIR_XXX: est dans la chaine, on extrait la constante
1348
-				if (preg_match(',(_(DIR|ROOT)_[A-Z_]+):,Ums', $file, $regs)) {
1349
-					$dir = $regs[1];
1350
-					$root_dir = str_replace('_DIR_', '_ROOT_', $dir);
1351
-					if (defined($root_dir)) {
1352
-						$dir = $root_dir;
1353
-					}
1354
-					$file = str_replace($regs[0], "'." . $dir . ".'", $file);
1355
-					$file = str_replace("''.", '', $file);
1356
-					$file = str_replace(constant($dir), '', $file);
1357
-				}
1358
-				$s_inc .= "include_once_check($file);\n";
1359
-			}
1360
-		}
1361
-		if (strlen($s_inc)) {
1362
-			$s_inc = "static \$inc=null;\nif (!\$inc){\n$s_inc\$inc=true;\n}\n";
1363
-		}
1364
-		$content .= "// Pipeline $action \n"
1365
-			. "function execute_pipeline_$action(&\$val){\n"
1366
-			. $s_inc
1367
-			. ((isset($prepend_code[$action]) and strlen($prepend_code[$action])) ? trim($prepend_code[$action]) . "\n" : '')
1368
-			. $s_call
1369
-			. "return \$val;\n}\n";
1370
-	}
1371
-	ecrire_fichier_php(_CACHE_PIPELINES, $content);
1372
-	clear_path_cache();
1317
+    $all_pipes = $all_pipes_end = '';
1318
+    if (!empty($GLOBALS['spip_pipeline']['all'])) {
1319
+        $a = explode('||', $GLOBALS['spip_pipeline']['all'], 2);
1320
+        unset($GLOBALS['spip_pipeline']['all']);
1321
+        $all_pipes = trim(array_shift($a));
1322
+        if ($all_pipes) {
1323
+            $all_pipes = '|' . ltrim($all_pipes, '|');
1324
+        }
1325
+        if (count($a)) {
1326
+            $all_pipes_end = '||' . array_shift($a);
1327
+        }
1328
+    }
1329
+    $content = '';
1330
+    foreach ($GLOBALS['spip_pipeline'] as $action => $pipeline) {
1331
+        $s_inc = '';
1332
+        $s_call = '';
1333
+        if ($all_pipes) {
1334
+            $pipeline = preg_replace(',(\|\||$),', "$all_pipes\\1", $pipeline, 1);
1335
+        }
1336
+        if ($all_pipes_end) {
1337
+            $pipeline .= $all_pipes_end;
1338
+        }
1339
+        $pipe = array_filter(explode('|', $pipeline));
1340
+        // Eclater le pipeline en filtres et appliquer chaque filtre
1341
+        foreach ($pipe as $fonc) {
1342
+            $fonc = trim($fonc);
1343
+            $s_call .= '$val = minipipe(\'' . $fonc . '\', $val);' . "\n";
1344
+            if (isset($GLOBALS['spip_matrice'][$fonc])) {
1345
+                $file = $GLOBALS['spip_matrice'][$fonc];
1346
+                $file = "'$file'";
1347
+                // si un _DIR_XXX: est dans la chaine, on extrait la constante
1348
+                if (preg_match(',(_(DIR|ROOT)_[A-Z_]+):,Ums', $file, $regs)) {
1349
+                    $dir = $regs[1];
1350
+                    $root_dir = str_replace('_DIR_', '_ROOT_', $dir);
1351
+                    if (defined($root_dir)) {
1352
+                        $dir = $root_dir;
1353
+                    }
1354
+                    $file = str_replace($regs[0], "'." . $dir . ".'", $file);
1355
+                    $file = str_replace("''.", '', $file);
1356
+                    $file = str_replace(constant($dir), '', $file);
1357
+                }
1358
+                $s_inc .= "include_once_check($file);\n";
1359
+            }
1360
+        }
1361
+        if (strlen($s_inc)) {
1362
+            $s_inc = "static \$inc=null;\nif (!\$inc){\n$s_inc\$inc=true;\n}\n";
1363
+        }
1364
+        $content .= "// Pipeline $action \n"
1365
+            . "function execute_pipeline_$action(&\$val){\n"
1366
+            . $s_inc
1367
+            . ((isset($prepend_code[$action]) and strlen($prepend_code[$action])) ? trim($prepend_code[$action]) . "\n" : '')
1368
+            . $s_call
1369
+            . "return \$val;\n}\n";
1370
+    }
1371
+    ecrire_fichier_php(_CACHE_PIPELINES, $content);
1372
+    clear_path_cache();
1373 1373
 }
1374 1374
 
1375 1375
 
@@ -1382,12 +1382,12 @@  discard block
 block discarded – undo
1382 1382
  *     true si le plugin est actif, false sinon
1383 1383
 **/
1384 1384
 function plugin_est_installe($plug_path) {
1385
-	$plugin_installes = isset($GLOBALS['meta']['plugin_installes']) ? unserialize($GLOBALS['meta']['plugin_installes']) : [];
1386
-	if (!$plugin_installes) {
1387
-		return false;
1388
-	}
1385
+    $plugin_installes = isset($GLOBALS['meta']['plugin_installes']) ? unserialize($GLOBALS['meta']['plugin_installes']) : [];
1386
+    if (!$plugin_installes) {
1387
+        return false;
1388
+    }
1389 1389
 
1390
-	return in_array($plug_path, $plugin_installes);
1390
+    return in_array($plug_path, $plugin_installes);
1391 1391
 }
1392 1392
 
1393 1393
 
@@ -1400,46 +1400,46 @@  discard block
 block discarded – undo
1400 1400
  * @uses plugins_installer_dist()
1401 1401
  **/
1402 1402
 function plugin_installes_meta() {
1403
-	if (isset($GLOBALS['fichier_php_compile_recent'])) {
1404
-		// attendre eventuellement l'invalidation du cache opcode
1405
-		spip_attend_invalidation_opcode_cache($GLOBALS['fichier_php_compile_recent']);
1406
-	}
1407
-
1408
-	$installer_plugins = charger_fonction('installer', 'plugins');
1409
-	$meta_plug_installes = [];
1410
-	foreach (unserialize($GLOBALS['meta']['plugin']) as $prefix => $resume) {
1411
-		if ($plug = $resume['dir']) {
1412
-			$infos = $installer_plugins($plug, 'install', $resume['dir_type']);
1413
-			if ($infos) {
1414
-				if (!is_array($infos) or $infos['install_test'][0]) {
1415
-					$meta_plug_installes[] = $plug;
1416
-				}
1417
-				if (is_array($infos)) {
1418
-					list($ok, $trace) = $infos['install_test'];
1419
-					$titre = _T('plugin_titre_installation', ['plugin' => typo($infos['nom'])]);
1420
-					$result = ($ok ? ((isset($infos['upgrade']) && $infos['upgrade']) ? _T('plugin_info_upgrade_ok') : _T('plugin_info_install_ok')) : _T('avis_operation_echec'));
1421
-					if (_IS_CLI) {
1422
-						include_spip('inc/filtres');
1423
-						$trace = ltrim(textebrut($trace) . "\n" . $result);
1424
-						$trace = '    ' . str_replace("\n", "\n    ", $trace);
1425
-						echo "\n" . ($ok ? 'OK  ' : '/!\ ') . textebrut($titre) . "\n",
1426
-						  $trace,
1427
-						  "\n";
1428
-					}
1429
-					else {
1430
-						include_spip('inc/filtres_boites');
1431
-						echo "<div class='install-plugins svp_retour'>"
1432
-							. boite_ouvrir($titre, ($ok ? 'success' : 'error'))
1433
-							. $trace
1434
-							. "<div class='result'>$result</div>"
1435
-							. boite_fermer()
1436
-							. '</div>';
1437
-					}
1438
-				}
1439
-			}
1440
-		}
1441
-	}
1442
-	ecrire_meta('plugin_installes', serialize($meta_plug_installes), 'non');
1403
+    if (isset($GLOBALS['fichier_php_compile_recent'])) {
1404
+        // attendre eventuellement l'invalidation du cache opcode
1405
+        spip_attend_invalidation_opcode_cache($GLOBALS['fichier_php_compile_recent']);
1406
+    }
1407
+
1408
+    $installer_plugins = charger_fonction('installer', 'plugins');
1409
+    $meta_plug_installes = [];
1410
+    foreach (unserialize($GLOBALS['meta']['plugin']) as $prefix => $resume) {
1411
+        if ($plug = $resume['dir']) {
1412
+            $infos = $installer_plugins($plug, 'install', $resume['dir_type']);
1413
+            if ($infos) {
1414
+                if (!is_array($infos) or $infos['install_test'][0]) {
1415
+                    $meta_plug_installes[] = $plug;
1416
+                }
1417
+                if (is_array($infos)) {
1418
+                    list($ok, $trace) = $infos['install_test'];
1419
+                    $titre = _T('plugin_titre_installation', ['plugin' => typo($infos['nom'])]);
1420
+                    $result = ($ok ? ((isset($infos['upgrade']) && $infos['upgrade']) ? _T('plugin_info_upgrade_ok') : _T('plugin_info_install_ok')) : _T('avis_operation_echec'));
1421
+                    if (_IS_CLI) {
1422
+                        include_spip('inc/filtres');
1423
+                        $trace = ltrim(textebrut($trace) . "\n" . $result);
1424
+                        $trace = '    ' . str_replace("\n", "\n    ", $trace);
1425
+                        echo "\n" . ($ok ? 'OK  ' : '/!\ ') . textebrut($titre) . "\n",
1426
+                            $trace,
1427
+                            "\n";
1428
+                    }
1429
+                    else {
1430
+                        include_spip('inc/filtres_boites');
1431
+                        echo "<div class='install-plugins svp_retour'>"
1432
+                            . boite_ouvrir($titre, ($ok ? 'success' : 'error'))
1433
+                            . $trace
1434
+                            . "<div class='result'>$result</div>"
1435
+                            . boite_fermer()
1436
+                            . '</div>';
1437
+                    }
1438
+                }
1439
+            }
1440
+        }
1441
+    }
1442
+    ecrire_meta('plugin_installes', serialize($meta_plug_installes), 'non');
1443 1443
 }
1444 1444
 
1445 1445
 /**
@@ -1453,29 +1453,29 @@  discard block
 block discarded – undo
1453 1453
  *     Commentaire : code écrit en tout début de fichier, après la balise PHP ouvrante
1454 1454
 **/
1455 1455
 function ecrire_fichier_php($nom, $contenu, $comment = '') {
1456
-	if (!isset($GLOBALS['fichier_php_compile_recent'])) {
1457
-		$GLOBALS['fichier_php_compile_recent'] = 0;
1458
-	}
1459
-
1460
-	$contenu = '<' . '?php' . "\n" . $comment . "\nif (defined('_ECRIRE_INC_VERSION')) {\n" . $contenu . "}\n?" . '>';
1461
-	// si un fichier existe deja on verifie que son contenu change avant de l'ecraser
1462
-	// si pas de modif on ne touche pas au fichier initial
1463
-	if (file_exists($nom)) {
1464
-		if (substr($nom, -4) == '.php') {
1465
-			$fichier_tmp = substr($nom, 0, -4) . '.tmp.php';
1466
-		}
1467
-		else {
1468
-			$fichier_tmp = $nom . '.tmp';
1469
-		}
1470
-		file_put_contents($fichier_tmp, $contenu);
1471
-		if (md5_file($nom) == md5_file($fichier_tmp)) {
1472
-			$GLOBALS['fichier_php_compile_recent'] = max($GLOBALS['fichier_php_compile_recent'], filemtime($nom));
1473
-			@unlink($fichier_tmp);
1474
-			return;
1475
-		}
1476
-		@unlink($fichier_tmp);
1477
-	}
1478
-	ecrire_fichier($nom, $contenu);
1479
-	$GLOBALS['fichier_php_compile_recent'] = max($GLOBALS['fichier_php_compile_recent'], filemtime($nom));
1480
-	spip_clear_opcode_cache(realpath($nom));
1456
+    if (!isset($GLOBALS['fichier_php_compile_recent'])) {
1457
+        $GLOBALS['fichier_php_compile_recent'] = 0;
1458
+    }
1459
+
1460
+    $contenu = '<' . '?php' . "\n" . $comment . "\nif (defined('_ECRIRE_INC_VERSION')) {\n" . $contenu . "}\n?" . '>';
1461
+    // si un fichier existe deja on verifie que son contenu change avant de l'ecraser
1462
+    // si pas de modif on ne touche pas au fichier initial
1463
+    if (file_exists($nom)) {
1464
+        if (substr($nom, -4) == '.php') {
1465
+            $fichier_tmp = substr($nom, 0, -4) . '.tmp.php';
1466
+        }
1467
+        else {
1468
+            $fichier_tmp = $nom . '.tmp';
1469
+        }
1470
+        file_put_contents($fichier_tmp, $contenu);
1471
+        if (md5_file($nom) == md5_file($fichier_tmp)) {
1472
+            $GLOBALS['fichier_php_compile_recent'] = max($GLOBALS['fichier_php_compile_recent'], filemtime($nom));
1473
+            @unlink($fichier_tmp);
1474
+            return;
1475
+        }
1476
+        @unlink($fichier_tmp);
1477
+    }
1478
+    ecrire_fichier($nom, $contenu);
1479
+    $GLOBALS['fichier_php_compile_recent'] = max($GLOBALS['fichier_php_compile_recent'], filemtime($nom));
1480
+    spip_clear_opcode_cache(realpath($nom));
1481 1481
 }
Please login to merge, or discard this patch.
ecrire/inc/filtres_images_mini.php 1 patch
Indentation   +316 added lines, -316 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
  */
19 19
 
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 include_spip('inc/filtres_images_lib_mini'); // par precaution
24 24
 
@@ -31,161 +31,161 @@  discard block
 block discarded – undo
31 31
  *    Le code hexadécimal de la couleur (sans le #) ou le code couleur textuel si non trouvé
32 32
  */
33 33
 function couleur_html_to_hex($couleur) {
34
-	$couleurs_html = [
35
-		'aliceblue' => 'F0F8FF',
36
-		'antiquewhite' => 'FAEBD7',
37
-		'aqua' => '00FFFF',
38
-		'aquamarine' => '7FFFD4',
39
-		'azure' => 'F0FFFF',
40
-		'beige' => 'F5F5DC',
41
-		'bisque' => 'FFE4C4',
42
-		'black' => '000000',
43
-		'blanchedalmond' => 'FFEBCD',
44
-		'blue' => '0000FF',
45
-		'blueviolet' => '8A2BE2',
46
-		'brown' => 'A52A2A',
47
-		'burlywood' => 'DEB887',
48
-		'cadetblue' => '5F9EA0',
49
-		'chartreuse' => '7FFF00',
50
-		'chocolate' => 'D2691E',
51
-		'coral' => 'FF7F50',
52
-		'cornflowerblue' => '6495ED',
53
-		'cornsilk' => 'FFF8DC',
54
-		'crimson' => 'DC143C',
55
-		'cyan' => '00FFFF',
56
-		'darkblue' => '00008B',
57
-		'darkcyan' => '008B8B',
58
-		'darkgoldenrod' => 'B8860B',
59
-		'darkgray' => 'A9A9A9',
60
-		'darkgreen' => '006400',
61
-		'darkgrey' => 'A9A9A9',
62
-		'darkkhaki' => 'BDB76B',
63
-		'darkmagenta' => '8B008B',
64
-		'darkolivegreen' => '556B2F',
65
-		'darkorange' => 'FF8C00',
66
-		'darkorchid' => '9932CC',
67
-		'darkred' => '8B0000',
68
-		'darksalmon' => 'E9967A',
69
-		'darkseagreen' => '8FBC8F',
70
-		'darkslateblue' => '483D8B',
71
-		'darkslategray' => '2F4F4F',
72
-		'darkslategrey' => '2F4F4F',
73
-		'darkturquoise' => '00CED1',
74
-		'darkviolet' => '9400D3',
75
-		'deeppink' => 'FF1493',
76
-		'deepskyblue' => '00BFFF',
77
-		'dimgray' => '696969',
78
-		'dimgrey' => '696969',
79
-		'dodgerblue' => '1E90FF',
80
-		'firebrick' => 'B22222',
81
-		'floralwhite' => 'FFFAF0',
82
-		'forestgreen' => '228B22',
83
-		'fuchsia' => 'FF00FF',
84
-		'gainsboro' => 'DCDCDC',
85
-		'ghostwhite' => 'F8F8FF',
86
-		'gold' => 'FFD700',
87
-		'goldenrod' => 'DAA520',
88
-		'gray' => '808080',
89
-		'green' => '008000',
90
-		'greenyellow' => 'ADFF2F',
91
-		'grey' => '808080',
92
-		'honeydew' => 'F0FFF0',
93
-		'hotpink' => 'FF69B4',
94
-		'indianred' => 'CD5C5C',
95
-		'indigo' => '4B0082',
96
-		'ivory' => 'FFFFF0',
97
-		'khaki' => 'F0E68C',
98
-		'lavender' => 'E6E6FA',
99
-		'lavenderblush' => 'FFF0F5',
100
-		'lawngreen' => '7CFC00',
101
-		'lemonchiffon' => 'FFFACD',
102
-		'lightblue' => 'ADD8E6',
103
-		'lightcoral' => 'F08080',
104
-		'lightcyan' => 'E0FFFF',
105
-		'lightgoldenrodyellow' => 'FAFAD2',
106
-		'lightgray' => 'D3D3D3',
107
-		'lightgreen' => '90EE90',
108
-		'lightgrey' => 'D3D3D3',
109
-		'lightpink' => 'FFB6C1',
110
-		'lightsalmon' => 'FFA07A',
111
-		'lightseagreen' => '20B2AA',
112
-		'lightskyblue' => '87CEFA',
113
-		'lightslategray' => '778899',
114
-		'lightslategrey' => '778899',
115
-		'lightsteelblue' => 'B0C4DE',
116
-		'lightyellow' => 'FFFFE0',
117
-		'lime' => '00FF00',
118
-		'limegreen' => '32CD32',
119
-		'linen' => 'FAF0E6',
120
-		'magenta' => 'FF00FF',
121
-		'maroon' => '800000',
122
-		'mediumaquamarine' => '66CDAA',
123
-		'mediumblue' => '0000CD',
124
-		'mediumorchid' => 'BA55D3',
125
-		'mediumpurple' => '9370DB',
126
-		'mediumseagreen' => '3CB371',
127
-		'mediumslateblue' => '7B68EE',
128
-		'mediumspringgreen' => '00FA9A',
129
-		'mediumturquoise' => '48D1CC',
130
-		'mediumvioletred' => 'C71585',
131
-		'midnightblue' => '191970',
132
-		'mintcream' => 'F5FFFA',
133
-		'mistyrose' => 'FFE4E1',
134
-		'moccasin' => 'FFE4B5',
135
-		'navajowhite' => 'FFDEAD',
136
-		'navy' => '000080',
137
-		'oldlace' => 'FDF5E6',
138
-		'olive' => '808000',
139
-		'olivedrab' => '6B8E23',
140
-		'orange' => 'FFA500',
141
-		'orangered' => 'FF4500',
142
-		'orchid' => 'DA70D6',
143
-		'palegoldenrod' => 'EEE8AA',
144
-		'palegreen' => '98FB98',
145
-		'paleturquoise' => 'AFEEEE',
146
-		'palevioletred' => 'DB7093',
147
-		'papayawhip' => 'FFEFD5',
148
-		'peachpuff' => 'FFDAB9',
149
-		'peru' => 'CD853F',
150
-		'pink' => 'FFC0CB',
151
-		'plum' => 'DDA0DD',
152
-		'powderblue' => 'B0E0E6',
153
-		'purple' => '800080',
154
-		'rebeccapurple' => '663399',
155
-		'red' => 'FF0000',
156
-		'rosybrown' => 'BC8F8F',
157
-		'royalblue' => '4169E1',
158
-		'saddlebrown' => '8B4513',
159
-		'salmon' => 'FA8072',
160
-		'sandybrown' => 'F4A460',
161
-		'seagreen' => '2E8B57',
162
-		'seashell' => 'FFF5EE',
163
-		'sienna' => 'A0522D',
164
-		'silver' => 'C0C0C0',
165
-		'skyblue' => '87CEEB',
166
-		'slateblue' => '6A5ACD',
167
-		'slategray' => '708090',
168
-		'slategrey' => '708090',
169
-		'snow' => 'FFFAFA',
170
-		'springgreen' => '00FF7F',
171
-		'steelblue' => '4682B4',
172
-		'tan' => 'D2B48C',
173
-		'teal' => '008080',
174
-		'thistle' => 'D8BFD8',
175
-		'tomato' => 'FF6347',
176
-		'turquoise' => '40E0D0',
177
-		'violet' => 'EE82EE',
178
-		'wheat' => 'F5DEB3',
179
-		'white' => 'FFFFFF',
180
-		'whitesmoke' => 'F5F5F5',
181
-		'yellow' => 'FFFF00',
182
-		'yellowgreen' => '9ACD32',
183
-	];
184
-	if (isset($couleurs_html[$lc = strtolower($couleur)])) {
185
-		return $couleurs_html[$lc];
186
-	}
187
-
188
-	return $couleur;
34
+    $couleurs_html = [
35
+        'aliceblue' => 'F0F8FF',
36
+        'antiquewhite' => 'FAEBD7',
37
+        'aqua' => '00FFFF',
38
+        'aquamarine' => '7FFFD4',
39
+        'azure' => 'F0FFFF',
40
+        'beige' => 'F5F5DC',
41
+        'bisque' => 'FFE4C4',
42
+        'black' => '000000',
43
+        'blanchedalmond' => 'FFEBCD',
44
+        'blue' => '0000FF',
45
+        'blueviolet' => '8A2BE2',
46
+        'brown' => 'A52A2A',
47
+        'burlywood' => 'DEB887',
48
+        'cadetblue' => '5F9EA0',
49
+        'chartreuse' => '7FFF00',
50
+        'chocolate' => 'D2691E',
51
+        'coral' => 'FF7F50',
52
+        'cornflowerblue' => '6495ED',
53
+        'cornsilk' => 'FFF8DC',
54
+        'crimson' => 'DC143C',
55
+        'cyan' => '00FFFF',
56
+        'darkblue' => '00008B',
57
+        'darkcyan' => '008B8B',
58
+        'darkgoldenrod' => 'B8860B',
59
+        'darkgray' => 'A9A9A9',
60
+        'darkgreen' => '006400',
61
+        'darkgrey' => 'A9A9A9',
62
+        'darkkhaki' => 'BDB76B',
63
+        'darkmagenta' => '8B008B',
64
+        'darkolivegreen' => '556B2F',
65
+        'darkorange' => 'FF8C00',
66
+        'darkorchid' => '9932CC',
67
+        'darkred' => '8B0000',
68
+        'darksalmon' => 'E9967A',
69
+        'darkseagreen' => '8FBC8F',
70
+        'darkslateblue' => '483D8B',
71
+        'darkslategray' => '2F4F4F',
72
+        'darkslategrey' => '2F4F4F',
73
+        'darkturquoise' => '00CED1',
74
+        'darkviolet' => '9400D3',
75
+        'deeppink' => 'FF1493',
76
+        'deepskyblue' => '00BFFF',
77
+        'dimgray' => '696969',
78
+        'dimgrey' => '696969',
79
+        'dodgerblue' => '1E90FF',
80
+        'firebrick' => 'B22222',
81
+        'floralwhite' => 'FFFAF0',
82
+        'forestgreen' => '228B22',
83
+        'fuchsia' => 'FF00FF',
84
+        'gainsboro' => 'DCDCDC',
85
+        'ghostwhite' => 'F8F8FF',
86
+        'gold' => 'FFD700',
87
+        'goldenrod' => 'DAA520',
88
+        'gray' => '808080',
89
+        'green' => '008000',
90
+        'greenyellow' => 'ADFF2F',
91
+        'grey' => '808080',
92
+        'honeydew' => 'F0FFF0',
93
+        'hotpink' => 'FF69B4',
94
+        'indianred' => 'CD5C5C',
95
+        'indigo' => '4B0082',
96
+        'ivory' => 'FFFFF0',
97
+        'khaki' => 'F0E68C',
98
+        'lavender' => 'E6E6FA',
99
+        'lavenderblush' => 'FFF0F5',
100
+        'lawngreen' => '7CFC00',
101
+        'lemonchiffon' => 'FFFACD',
102
+        'lightblue' => 'ADD8E6',
103
+        'lightcoral' => 'F08080',
104
+        'lightcyan' => 'E0FFFF',
105
+        'lightgoldenrodyellow' => 'FAFAD2',
106
+        'lightgray' => 'D3D3D3',
107
+        'lightgreen' => '90EE90',
108
+        'lightgrey' => 'D3D3D3',
109
+        'lightpink' => 'FFB6C1',
110
+        'lightsalmon' => 'FFA07A',
111
+        'lightseagreen' => '20B2AA',
112
+        'lightskyblue' => '87CEFA',
113
+        'lightslategray' => '778899',
114
+        'lightslategrey' => '778899',
115
+        'lightsteelblue' => 'B0C4DE',
116
+        'lightyellow' => 'FFFFE0',
117
+        'lime' => '00FF00',
118
+        'limegreen' => '32CD32',
119
+        'linen' => 'FAF0E6',
120
+        'magenta' => 'FF00FF',
121
+        'maroon' => '800000',
122
+        'mediumaquamarine' => '66CDAA',
123
+        'mediumblue' => '0000CD',
124
+        'mediumorchid' => 'BA55D3',
125
+        'mediumpurple' => '9370DB',
126
+        'mediumseagreen' => '3CB371',
127
+        'mediumslateblue' => '7B68EE',
128
+        'mediumspringgreen' => '00FA9A',
129
+        'mediumturquoise' => '48D1CC',
130
+        'mediumvioletred' => 'C71585',
131
+        'midnightblue' => '191970',
132
+        'mintcream' => 'F5FFFA',
133
+        'mistyrose' => 'FFE4E1',
134
+        'moccasin' => 'FFE4B5',
135
+        'navajowhite' => 'FFDEAD',
136
+        'navy' => '000080',
137
+        'oldlace' => 'FDF5E6',
138
+        'olive' => '808000',
139
+        'olivedrab' => '6B8E23',
140
+        'orange' => 'FFA500',
141
+        'orangered' => 'FF4500',
142
+        'orchid' => 'DA70D6',
143
+        'palegoldenrod' => 'EEE8AA',
144
+        'palegreen' => '98FB98',
145
+        'paleturquoise' => 'AFEEEE',
146
+        'palevioletred' => 'DB7093',
147
+        'papayawhip' => 'FFEFD5',
148
+        'peachpuff' => 'FFDAB9',
149
+        'peru' => 'CD853F',
150
+        'pink' => 'FFC0CB',
151
+        'plum' => 'DDA0DD',
152
+        'powderblue' => 'B0E0E6',
153
+        'purple' => '800080',
154
+        'rebeccapurple' => '663399',
155
+        'red' => 'FF0000',
156
+        'rosybrown' => 'BC8F8F',
157
+        'royalblue' => '4169E1',
158
+        'saddlebrown' => '8B4513',
159
+        'salmon' => 'FA8072',
160
+        'sandybrown' => 'F4A460',
161
+        'seagreen' => '2E8B57',
162
+        'seashell' => 'FFF5EE',
163
+        'sienna' => 'A0522D',
164
+        'silver' => 'C0C0C0',
165
+        'skyblue' => '87CEEB',
166
+        'slateblue' => '6A5ACD',
167
+        'slategray' => '708090',
168
+        'slategrey' => '708090',
169
+        'snow' => 'FFFAFA',
170
+        'springgreen' => '00FF7F',
171
+        'steelblue' => '4682B4',
172
+        'tan' => 'D2B48C',
173
+        'teal' => '008080',
174
+        'thistle' => 'D8BFD8',
175
+        'tomato' => 'FF6347',
176
+        'turquoise' => '40E0D0',
177
+        'violet' => 'EE82EE',
178
+        'wheat' => 'F5DEB3',
179
+        'white' => 'FFFFFF',
180
+        'whitesmoke' => 'F5F5F5',
181
+        'yellow' => 'FFFF00',
182
+        'yellowgreen' => '9ACD32',
183
+    ];
184
+    if (isset($couleurs_html[$lc = strtolower($couleur)])) {
185
+        return $couleurs_html[$lc];
186
+    }
187
+
188
+    return $couleur;
189 189
 }
190 190
 
191 191
 /**
@@ -201,16 +201,16 @@  discard block
 block discarded – undo
201 201
  * @return string Couleur tel que "hsl(200, 40%, 34%)" ou valeur formattée
202 202
  */
203 203
 function couleur_hex_to_hsl($couleur, $format = null) {
204
-	$hsl = _couleur_hex_to_hsl($couleur);
205
-	$hsl = [
206
-		'h' => round($hsl['h'] * 360),
207
-		's' => round($hsl['s'] * 100) . '%',
208
-		'l' => round($hsl['l'] * 100) . '%'
209
-	];
210
-	if ($format === null) {
211
-		return "hsl({$hsl['h']}, {$hsl['s']}, {$hsl['l']})";
212
-	}
213
-	return str_replace(array_keys($hsl), $hsl, $format);
204
+    $hsl = _couleur_hex_to_hsl($couleur);
205
+    $hsl = [
206
+        'h' => round($hsl['h'] * 360),
207
+        's' => round($hsl['s'] * 100) . '%',
208
+        'l' => round($hsl['l'] * 100) . '%'
209
+    ];
210
+    if ($format === null) {
211
+        return "hsl({$hsl['h']}, {$hsl['s']}, {$hsl['l']})";
212
+    }
213
+    return str_replace(array_keys($hsl), $hsl, $format);
214 214
 }
215 215
 
216 216
 
@@ -227,16 +227,16 @@  discard block
 block discarded – undo
227 227
  * @return string Couleur tel que "rgb(200, 40, 84)" ou valeur formattée
228 228
  */
229 229
 function couleur_hex_to_rgb($couleur, $format = null) {
230
-	$rgb = _couleur_hex_to_dec($couleur);
231
-	$rgb = [
232
-		'r' => $rgb['red'],
233
-		'g' => $rgb['green'],
234
-		'b' => $rgb['blue'],
235
-	];
236
-	if ($format === null) {
237
-		return "rgb({$rgb['r']}, {$rgb['g']}, {$rgb['b']})";
238
-	}
239
-	return str_replace(array_keys($rgb), $rgb, $format);
230
+    $rgb = _couleur_hex_to_dec($couleur);
231
+    $rgb = [
232
+        'r' => $rgb['red'],
233
+        'g' => $rgb['green'],
234
+        'b' => $rgb['blue'],
235
+    ];
236
+    if ($format === null) {
237
+        return "rgb({$rgb['r']}, {$rgb['g']}, {$rgb['b']})";
238
+    }
239
+    return str_replace(array_keys($rgb), $rgb, $format);
240 240
 }
241 241
 
242 242
 /**
@@ -252,15 +252,15 @@  discard block
 block discarded – undo
252 252
  *    Code hexadécimal de la couleur plus foncée
253 253
  */
254 254
 function couleur_foncer($couleur, $coeff = 0.5) {
255
-	$couleurs = _couleur_hex_to_dec($couleur);
255
+    $couleurs = _couleur_hex_to_dec($couleur);
256 256
 
257
-	$red = $couleurs['red'] - round(($couleurs['red']) * $coeff);
258
-	$green = $couleurs['green'] - round(($couleurs['green']) * $coeff);
259
-	$blue = $couleurs['blue'] - round(($couleurs['blue']) * $coeff);
257
+    $red = $couleurs['red'] - round(($couleurs['red']) * $coeff);
258
+    $green = $couleurs['green'] - round(($couleurs['green']) * $coeff);
259
+    $blue = $couleurs['blue'] - round(($couleurs['blue']) * $coeff);
260 260
 
261
-	$couleur = _couleur_dec_to_hex($red, $green, $blue);
261
+    $couleur = _couleur_dec_to_hex($red, $green, $blue);
262 262
 
263
-	return $couleur;
263
+    return $couleur;
264 264
 }
265 265
 
266 266
 /**
@@ -276,15 +276,15 @@  discard block
 block discarded – undo
276 276
  *    Code hexadécimal de la couleur éclaircie
277 277
  */
278 278
 function couleur_eclaircir($couleur, $coeff = 0.5) {
279
-	$couleurs = _couleur_hex_to_dec($couleur);
279
+    $couleurs = _couleur_hex_to_dec($couleur);
280 280
 
281
-	$red = $couleurs['red'] + round((255 - $couleurs['red']) * $coeff);
282
-	$green = $couleurs['green'] + round((255 - $couleurs['green']) * $coeff);
283
-	$blue = $couleurs['blue'] + round((255 - $couleurs['blue']) * $coeff);
281
+    $red = $couleurs['red'] + round((255 - $couleurs['red']) * $coeff);
282
+    $green = $couleurs['green'] + round((255 - $couleurs['green']) * $coeff);
283
+    $blue = $couleurs['blue'] + round((255 - $couleurs['blue']) * $coeff);
284 284
 
285
-	$couleur = _couleur_dec_to_hex($red, $green, $blue);
285
+    $couleur = _couleur_dec_to_hex($red, $green, $blue);
286 286
 
287
-	return $couleur;
287
+    return $couleur;
288 288
 }
289 289
 
290 290
 /**
@@ -307,28 +307,28 @@  discard block
 block discarded – undo
307 307
  *    Le tag html `<img src=... />` avec une class `filtre_inactif` ou pas
308 308
  */
309 309
 function image_select($img, $width_min = 0, $height_min = 0, $width_max = 10000, $height_max = 1000) {
310
-	if (!$img) {
311
-		return $img;
312
-	}
313
-	list($h, $l) = taille_image($img);
314
-	$select = true;
315
-	if ($l < $width_min or $l > $width_max or $h < $height_min or $h > $height_max) {
316
-		$select = false;
317
-	}
318
-
319
-	$class = extraire_attribut($img, 'class');
320
-	$p = strpos($class, 'filtre_inactif');
321
-	if (($select == false) and ($p === false)) {
322
-		$class .= ' filtre_inactif';
323
-		$img = inserer_attribut($img, 'class', $class);
324
-	}
325
-	if (($select == true) and ($p !== false)) {
326
-		// no_image_filtrer : historique, a virer
327
-		$class = preg_replace(',\s*(filtre_inactif|no_image_filtrer),', '', $class);
328
-		$img = inserer_attribut($img, 'class', $class);
329
-	}
330
-
331
-	return $img;
310
+    if (!$img) {
311
+        return $img;
312
+    }
313
+    list($h, $l) = taille_image($img);
314
+    $select = true;
315
+    if ($l < $width_min or $l > $width_max or $h < $height_min or $h > $height_max) {
316
+        $select = false;
317
+    }
318
+
319
+    $class = extraire_attribut($img, 'class');
320
+    $p = strpos($class, 'filtre_inactif');
321
+    if (($select == false) and ($p === false)) {
322
+        $class .= ' filtre_inactif';
323
+        $img = inserer_attribut($img, 'class', $class);
324
+    }
325
+    if (($select == true) and ($p !== false)) {
326
+        // no_image_filtrer : historique, a virer
327
+        $class = preg_replace(',\s*(filtre_inactif|no_image_filtrer),', '', $class);
328
+        $img = inserer_attribut($img, 'class', $class);
329
+    }
330
+
331
+    return $img;
332 332
 }
333 333
 
334 334
 /**
@@ -376,45 +376,45 @@  discard block
 block discarded – undo
376 376
  *     Code HTML de l'image ou du texte.
377 377
  **/
378 378
 function image_passe_partout(
379
-	$img,
380
-	$taille_x = -1,
381
-	$taille_y = -1,
382
-	$force = false,
383
-	$cherche_image = false,
384
-	$process = 'AUTO'
379
+    $img,
380
+    $taille_x = -1,
381
+    $taille_y = -1,
382
+    $force = false,
383
+    $cherche_image = false,
384
+    $process = 'AUTO'
385 385
 ) {
386
-	// PHP 7+ type hint
387
-	$img = (string)$img;
388
-	$taille_x = (int)$taille_x;
389
-	$taille_y = (int)$taille_y;
390
-	$force = (bool)$force;
391
-	$process = (string)$process;
392
-
393
-	if (!$img) {
394
-		return '';
395
-	}
396
-	list($hauteur, $largeur) = taille_image($img);
397
-	if ($taille_x === -1) {
398
-		$taille_x = isset($GLOBALS['meta']['taille_preview']) ? $GLOBALS['meta']['taille_preview'] : 150;
399
-	}
400
-	if ($taille_y === -1) {
401
-		$taille_y = $taille_x;
402
-	}
403
-
404
-	if ($taille_x === 0 and $taille_y > 0) {
405
-		$taille_x = 1;
406
-	} # {0,300} -> c'est 300 qui compte
407
-	elseif ($taille_x > 0 and $taille_y === 0) {
408
-		$taille_y = 1;
409
-	} # {300,0} -> c'est 300 qui compte
410
-	elseif ($taille_x == 0 and $taille_y === 0) {
411
-		return '';
412
-	}
413
-
414
-	list($destWidth, $destHeight, $ratio) = ratio_passe_partout($largeur, $hauteur, $taille_x, $taille_y);
415
-	$fonction = ['image_passe_partout', func_get_args()];
416
-
417
-	return process_image_reduire($fonction, $img, $destWidth, $destHeight, $force, $process);
386
+    // PHP 7+ type hint
387
+    $img = (string)$img;
388
+    $taille_x = (int)$taille_x;
389
+    $taille_y = (int)$taille_y;
390
+    $force = (bool)$force;
391
+    $process = (string)$process;
392
+
393
+    if (!$img) {
394
+        return '';
395
+    }
396
+    list($hauteur, $largeur) = taille_image($img);
397
+    if ($taille_x === -1) {
398
+        $taille_x = isset($GLOBALS['meta']['taille_preview']) ? $GLOBALS['meta']['taille_preview'] : 150;
399
+    }
400
+    if ($taille_y === -1) {
401
+        $taille_y = $taille_x;
402
+    }
403
+
404
+    if ($taille_x === 0 and $taille_y > 0) {
405
+        $taille_x = 1;
406
+    } # {0,300} -> c'est 300 qui compte
407
+    elseif ($taille_x > 0 and $taille_y === 0) {
408
+        $taille_y = 1;
409
+    } # {300,0} -> c'est 300 qui compte
410
+    elseif ($taille_x == 0 and $taille_y === 0) {
411
+        return '';
412
+    }
413
+
414
+    list($destWidth, $destHeight, $ratio) = ratio_passe_partout($largeur, $hauteur, $taille_x, $taille_y);
415
+    $fonction = ['image_passe_partout', func_get_args()];
416
+
417
+    return process_image_reduire($fonction, $img, $destWidth, $destHeight, $force, $process);
418 418
 }
419 419
 
420 420
 /**
@@ -457,44 +457,44 @@  discard block
 block discarded – undo
457 457
  *     Code HTML de l'image ou du texte.
458 458
  **/
459 459
 function image_reduire(
460
-	$img,
461
-	$taille = -1,
462
-	$taille_y = -1,
463
-	$force = false,
464
-	$cherche_image = false,
465
-	$process = 'AUTO'
460
+    $img,
461
+    $taille = -1,
462
+    $taille_y = -1,
463
+    $force = false,
464
+    $cherche_image = false,
465
+    $process = 'AUTO'
466 466
 ) {
467
-	// PHP 7+ type hint
468
-	$img = (string)$img;
469
-	$taille = (int)$taille;
470
-	$taille_y = (int)$taille_y;
471
-	$force = (bool)$force;
472
-	$process = (string)$process;
473
-
474
-	// Determiner la taille x,y maxi
475
-	// prendre le reglage de previsu par defaut
476
-	if ($taille === -1) {
477
-		$taille = (isset($GLOBALS['meta']['taille_preview']) and intval($GLOBALS['meta']['taille_preview']))
478
-			? intval($GLOBALS['meta']['taille_preview'])
479
-			: 150;
480
-	}
481
-	if ($taille_y === -1) {
482
-		$taille_y = $taille;
483
-	}
484
-
485
-	if ($taille === 0 and $taille_y > 0) {
486
-		$taille = 10000;
487
-	} # {0,300} -> c'est 300 qui compte
488
-	elseif ($taille > 0 and $taille_y === 0) {
489
-		$taille_y = 10000;
490
-	} # {300,0} -> c'est 300 qui compte
491
-	elseif ($taille == 0 and $taille_y === 0) {
492
-		return '';
493
-	}
494
-
495
-	$fonction = ['image_reduire', func_get_args()];
496
-
497
-	return process_image_reduire($fonction, $img, $taille, $taille_y, $force, $process);
467
+    // PHP 7+ type hint
468
+    $img = (string)$img;
469
+    $taille = (int)$taille;
470
+    $taille_y = (int)$taille_y;
471
+    $force = (bool)$force;
472
+    $process = (string)$process;
473
+
474
+    // Determiner la taille x,y maxi
475
+    // prendre le reglage de previsu par defaut
476
+    if ($taille === -1) {
477
+        $taille = (isset($GLOBALS['meta']['taille_preview']) and intval($GLOBALS['meta']['taille_preview']))
478
+            ? intval($GLOBALS['meta']['taille_preview'])
479
+            : 150;
480
+    }
481
+    if ($taille_y === -1) {
482
+        $taille_y = $taille;
483
+    }
484
+
485
+    if ($taille === 0 and $taille_y > 0) {
486
+        $taille = 10000;
487
+    } # {0,300} -> c'est 300 qui compte
488
+    elseif ($taille > 0 and $taille_y === 0) {
489
+        $taille_y = 10000;
490
+    } # {300,0} -> c'est 300 qui compte
491
+    elseif ($taille == 0 and $taille_y === 0) {
492
+        return '';
493
+    }
494
+
495
+    $fonction = ['image_reduire', func_get_args()];
496
+
497
+    return process_image_reduire($fonction, $img, $taille, $taille_y, $force, $process);
498 498
 }
499 499
 
500 500
 /**
@@ -505,16 +505,16 @@  discard block
 block discarded – undo
505 505
  *
506 506
  **/
507 507
 function image_recadre_avec_fallback(
508
-	$im,
509
-	$width,
510
-	$height = '-',
511
-	$position = 'focus',
512
-	$background_color = 'white'
508
+    $im,
509
+    $width,
510
+    $height = '-',
511
+    $position = 'focus',
512
+    $background_color = 'white'
513 513
 ) {
514
-	if (function_exists('image_recadre') && ($GLOBALS['meta']['image_process'] ?? '') === 'gd2') {
515
-		return image_reduire(image_recadre($im, $width . ':' . $height, '-', $position, $background_color), $width, $height);
516
-	} else { return image_passe_partout($im, $width, $height);
517
-	}
514
+    if (function_exists('image_recadre') && ($GLOBALS['meta']['image_process'] ?? '') === 'gd2') {
515
+        return image_reduire(image_recadre($im, $width . ':' . $height, '-', $position, $background_color), $width, $height);
516
+    } else { return image_passe_partout($im, $width, $height);
517
+    }
518 518
 }
519 519
 
520 520
 /**
@@ -532,25 +532,25 @@  discard block
 block discarded – undo
532 532
  *     Code HTML de l'image ou du texte.
533 533
  **/
534 534
 function image_reduire_par($img, $val = 1, $force = false) {
535
-	// PHP 7+ type hint
536
-	$img = (string)$img;
537
-	$val = (int)$val;
538
-	$force = (bool)$force;
535
+    // PHP 7+ type hint
536
+    $img = (string)$img;
537
+    $val = (int)$val;
538
+    $force = (bool)$force;
539 539
 
540
-	list($hauteur, $largeur) = taille_image($img);
540
+    list($hauteur, $largeur) = taille_image($img);
541 541
 
542
-	$l = round($largeur / $val);
543
-	$h = round($hauteur / $val);
542
+    $l = round($largeur / $val);
543
+    $h = round($hauteur / $val);
544 544
 
545
-	if ($l > $h) {
546
-		$h = 0;
547
-	} else {
548
-		$l = 0;
549
-	}
545
+    if ($l > $h) {
546
+        $h = 0;
547
+    } else {
548
+        $l = 0;
549
+    }
550 550
 
551
-	$img = image_reduire($img, $l, $h, $force);
551
+    $img = image_reduire($img, $l, $h, $force);
552 552
 
553
-	return $img;
553
+    return $img;
554 554
 }
555 555
 
556 556
 /**
@@ -573,10 +573,10 @@  discard block
 block discarded – undo
573 573
  *      Couleur en écriture hexadécimale.
574 574
 **/
575 575
 function filtre_couleur_saturation_dist($couleur, $val, $strict = false) {
576
-	if (function_exists('couleur_saturation')) {
577
-		return couleur_saturation($couleur, $val, $strict);
578
-	}
579
-	return $couleur;
576
+    if (function_exists('couleur_saturation')) {
577
+        return couleur_saturation($couleur, $val, $strict);
578
+    }
579
+    return $couleur;
580 580
 }
581 581
 
582 582
 /**
@@ -597,8 +597,8 @@  discard block
 block discarded – undo
597 597
  *      Couleur en écriture hexadécimale.
598 598
 **/
599 599
 function filtre_couleur_luminance_dist($couleur, $val) {
600
-	if (function_exists('couleur_luminance')) {
601
-		return couleur_luminance($couleur, $val);
602
-	}
603
-	return $couleur;
600
+    if (function_exists('couleur_luminance')) {
601
+        return couleur_luminance($couleur, $val);
602
+    }
603
+    return $couleur;
604 604
 }
Please login to merge, or discard this patch.