Completed
Push — master ( cacd66...717daf )
by cam
02:37 queued 21s
created
ecrire/plugins/verifie_conformite.php 1 patch
Indentation   +213 added lines, -213 removed lines patch added patch discarded remove patch
@@ -11,225 +11,225 @@
 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/xml');
18 18
 include_spip('inc/plugin');
19 19
 
20 20
 function plugins_verifie_conformite_dist($plug, &$arbre, $dir_plugins = _DIR_PLUGINS) {
21
-	$needs = null;
22
-	$compat_spip = null;
23
-	$uses = null;
24
-	$paths = null;
25
-	$trads = null;
26
-	static $etats = ['dev', 'experimental', 'test', 'stable'];
21
+    $needs = null;
22
+    $compat_spip = null;
23
+    $uses = null;
24
+    $paths = null;
25
+    $trads = null;
26
+    static $etats = ['dev', 'experimental', 'test', 'stable'];
27 27
 
28
-	$matches = [];
29
-	$silence = false;
30
-	$p = null;
31
-	// chercher la declaration <plugin spip='...'> a prendre pour cette version de SPIP
32
-	if ($n = spip_xml_match_nodes(',^plugin(\s|$),', $arbre, $matches)) {
33
-		// version de SPIP
34
-		$vspip = $GLOBALS['spip_version_branche'];
35
-		foreach ($matches as $tag => $sous) {
36
-			[$tagname, $atts] = spip_xml_decompose_tag($tag);
37
-			if ($tagname == 'plugin' and is_array($sous)) {
38
-				// On rajoute la condition sur $n :
39
-				// -- en effet si $n==1 on a pas plus a choisir la balise que l'on ait
40
-				//    un attribut spip ou pas. Cela permet de traiter tous les cas mono-balise
41
-				//    de la meme facon.
42
-				if (
43
-					!isset($atts['spip'])
44
-					or $n == 1
45
-					or plugin_version_compatible($atts['spip'], $vspip, 'spip')
46
-				) {
47
-					// on prend la derniere declaration avec ce nom
48
-					$p = end($sous);
49
-					$compat_spip = $atts['spip'] ?? '';
50
-				}
51
-			}
52
-		}
53
-	}
54
-	if (is_null($p)) {
55
-		$arbre = ['erreur' => [_T('erreur_plugin_tag_plugin_absent') . " : $plug"]];
56
-		$silence = true;
57
-	} else {
58
-		$arbre = $p;
59
-	}
60
-	if (!is_array($arbre)) {
61
-		$arbre = [];
62
-	}
63
-	// verification de la conformite du plugin avec quelques
64
-	// precautions elementaires
65
-	if (!isset($arbre['nom'])) {
66
-		if (!$silence) {
67
-			$arbre['erreur'][] = _T('erreur_plugin_nom_manquant');
68
-		}
69
-		$arbre['nom'] = [''];
70
-	}
71
-	if (!isset($arbre['version'])) {
72
-		if (!$silence) {
73
-			$arbre['erreur'][] = _T('erreur_plugin_version_manquant');
74
-		}
75
-		$arbre['version'] = [''];
76
-	}
77
-	if (!isset($arbre['prefix'])) {
78
-		if (!$silence) {
79
-			$arbre['erreur'][] = _T('erreur_plugin_prefix_manquant');
80
-		}
81
-		$arbre['prefix'] = [''];
82
-	} else {
83
-		$prefix = trim(end($arbre['prefix']));
84
-		if (strtoupper($prefix) == 'SPIP' and $plug != './') {
85
-			$arbre['erreur'][] = _T('erreur_plugin_prefix_interdit');
86
-		}
87
-		if (isset($arbre['etat'])) {
88
-			$etat = trim(end($arbre['etat']));
89
-			if (!in_array($etat, $etats)) {
90
-				$arbre['erreur'][] = _T('erreur_plugin_etat_inconnu') . " : '$etat'";
91
-			}
92
-		}
93
-		if (isset($arbre['options'])) {
94
-			foreach ($arbre['options'] as $optfile) {
95
-				$optfile = trim($optfile);
96
-				if (!@is_readable($dir_plugins . "$plug/$optfile")) {
97
-					if (!$silence) {
98
-						$arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile";
99
-					}
100
-				}
101
-			}
102
-		}
103
-		if (isset($arbre['fonctions'])) {
104
-			foreach ($arbre['fonctions'] as $optfile) {
105
-				$optfile = trim($optfile);
106
-				if (!@is_readable($dir_plugins . "$plug/$optfile")) {
107
-					if (!$silence) {
108
-						$arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile";
109
-					}
110
-				}
111
-			}
112
-		}
113
-		$fonctions = [];
114
-		if (isset($arbre['fonctions'])) {
115
-			$fonctions = $arbre['fonctions'];
116
-		}
117
-		$liste_methodes_reservees = [
118
-			'__construct',
119
-			'__destruct',
120
-			'plugin',
121
-			'install',
122
-			'uninstall',
123
-			strtolower($prefix)
124
-		];
28
+    $matches = [];
29
+    $silence = false;
30
+    $p = null;
31
+    // chercher la declaration <plugin spip='...'> a prendre pour cette version de SPIP
32
+    if ($n = spip_xml_match_nodes(',^plugin(\s|$),', $arbre, $matches)) {
33
+        // version de SPIP
34
+        $vspip = $GLOBALS['spip_version_branche'];
35
+        foreach ($matches as $tag => $sous) {
36
+            [$tagname, $atts] = spip_xml_decompose_tag($tag);
37
+            if ($tagname == 'plugin' and is_array($sous)) {
38
+                // On rajoute la condition sur $n :
39
+                // -- en effet si $n==1 on a pas plus a choisir la balise que l'on ait
40
+                //    un attribut spip ou pas. Cela permet de traiter tous les cas mono-balise
41
+                //    de la meme facon.
42
+                if (
43
+                    !isset($atts['spip'])
44
+                    or $n == 1
45
+                    or plugin_version_compatible($atts['spip'], $vspip, 'spip')
46
+                ) {
47
+                    // on prend la derniere declaration avec ce nom
48
+                    $p = end($sous);
49
+                    $compat_spip = $atts['spip'] ?? '';
50
+                }
51
+            }
52
+        }
53
+    }
54
+    if (is_null($p)) {
55
+        $arbre = ['erreur' => [_T('erreur_plugin_tag_plugin_absent') . " : $plug"]];
56
+        $silence = true;
57
+    } else {
58
+        $arbre = $p;
59
+    }
60
+    if (!is_array($arbre)) {
61
+        $arbre = [];
62
+    }
63
+    // verification de la conformite du plugin avec quelques
64
+    // precautions elementaires
65
+    if (!isset($arbre['nom'])) {
66
+        if (!$silence) {
67
+            $arbre['erreur'][] = _T('erreur_plugin_nom_manquant');
68
+        }
69
+        $arbre['nom'] = [''];
70
+    }
71
+    if (!isset($arbre['version'])) {
72
+        if (!$silence) {
73
+            $arbre['erreur'][] = _T('erreur_plugin_version_manquant');
74
+        }
75
+        $arbre['version'] = [''];
76
+    }
77
+    if (!isset($arbre['prefix'])) {
78
+        if (!$silence) {
79
+            $arbre['erreur'][] = _T('erreur_plugin_prefix_manquant');
80
+        }
81
+        $arbre['prefix'] = [''];
82
+    } else {
83
+        $prefix = trim(end($arbre['prefix']));
84
+        if (strtoupper($prefix) == 'SPIP' and $plug != './') {
85
+            $arbre['erreur'][] = _T('erreur_plugin_prefix_interdit');
86
+        }
87
+        if (isset($arbre['etat'])) {
88
+            $etat = trim(end($arbre['etat']));
89
+            if (!in_array($etat, $etats)) {
90
+                $arbre['erreur'][] = _T('erreur_plugin_etat_inconnu') . " : '$etat'";
91
+            }
92
+        }
93
+        if (isset($arbre['options'])) {
94
+            foreach ($arbre['options'] as $optfile) {
95
+                $optfile = trim($optfile);
96
+                if (!@is_readable($dir_plugins . "$plug/$optfile")) {
97
+                    if (!$silence) {
98
+                        $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile";
99
+                    }
100
+                }
101
+            }
102
+        }
103
+        if (isset($arbre['fonctions'])) {
104
+            foreach ($arbre['fonctions'] as $optfile) {
105
+                $optfile = trim($optfile);
106
+                if (!@is_readable($dir_plugins . "$plug/$optfile")) {
107
+                    if (!$silence) {
108
+                        $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $optfile";
109
+                    }
110
+                }
111
+            }
112
+        }
113
+        $fonctions = [];
114
+        if (isset($arbre['fonctions'])) {
115
+            $fonctions = $arbre['fonctions'];
116
+        }
117
+        $liste_methodes_reservees = [
118
+            '__construct',
119
+            '__destruct',
120
+            'plugin',
121
+            'install',
122
+            'uninstall',
123
+            strtolower($prefix)
124
+        ];
125 125
 
126
-		$extraire_pipelines = charger_fonction('extraire_pipelines', 'plugins');
127
-		$arbre['pipeline'] = $extraire_pipelines($arbre);
128
-		foreach ($arbre['pipeline'] as $pipe) {
129
-			if (!isset($pipe['nom'])) {
130
-				if (!$silence) {
131
-					$arbre['erreur'][] = _T('erreur_plugin_nom_pipeline_non_defini');
132
-				}
133
-			}
134
-			if (isset($pipe['action'])) {
135
-				$action = $pipe['action'];
136
-			} else {
137
-				$action = $pipe['nom'];
138
-			}
139
-			// verif que la methode a un nom autorise
140
-			if (in_array(strtolower($action), $liste_methodes_reservees)) {
141
-				if (!$silence) {
142
-					$arbre['erreur'][] = _T('erreur_plugin_nom_fonction_interdit') . " : $action";
143
-				}
144
-			}
145
-			if (isset($pipe['inclure'])) {
146
-				$inclure = $dir_plugins . "$plug/" . $pipe['inclure'];
147
-				if (!@is_readable($inclure)) {
148
-					if (!$silence) {
149
-						$arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $inclure";
150
-					}
151
-				}
152
-			}
153
-		}
154
-		$necessite = [];
155
-		$spip_trouve = false;
156
-		if (spip_xml_match_nodes(',^necessite,', $arbre, $needs)) {
157
-			foreach (array_keys($needs) as $tag) {
158
-				[$tag, $att] = spip_xml_decompose_tag($tag);
159
-				if (!isset($att['id'])) {
160
-					if (!$silence) {
161
-						$arbre['erreur'][] = _T(
162
-							'erreur_plugin_attribut_balise_manquant',
163
-							['attribut' => 'id', 'balise' => $att]
164
-						);
165
-					}
166
-				} else {
167
-					$necessite[] = $att;
168
-				}
169
-				if (strtolower($att['id']) == 'spip') {
170
-					$spip_trouve = true;
171
-				}
172
-			}
173
-		}
174
-		if ($compat_spip and !$spip_trouve) {
175
-			$necessite[] = ['id' => 'spip', 'version' => $compat_spip];
176
-		}
177
-		$arbre['necessite'] = $necessite;
178
-		$utilise = [];
179
-		if (spip_xml_match_nodes(',^utilise,', $arbre, $uses)) {
180
-			foreach (array_keys($uses) as $tag) {
181
-				[$tag, $att] = spip_xml_decompose_tag($tag);
182
-				if (!isset($att['id'])) {
183
-					if (!$silence) {
184
-						$arbre['erreur'][] = _T(
185
-							'erreur_plugin_attribut_balise_manquant',
186
-							['attribut' => 'id', 'balise' => $att]
187
-						);
188
-					}
189
-				} else {
190
-					$utilise[] = $att;
191
-				}
192
-			}
193
-		}
194
-		$arbre['utilise'] = $utilise;
195
-		$procure = [];
196
-		if (spip_xml_match_nodes(',^procure,', $arbre, $uses)) {
197
-			foreach (array_keys($uses) as $tag) {
198
-				[$tag, $att] = spip_xml_decompose_tag($tag);
199
-				$procure[] = $att;
200
-			}
201
-		}
202
-		$arbre['procure'] = $procure;
203
-		$path = [];
204
-		if (spip_xml_match_nodes(',^chemin,', $arbre, $paths)) {
205
-			foreach (array_keys($paths) as $tag) {
206
-				[$tag, $att] = spip_xml_decompose_tag($tag);
207
-				$att['path'] = $att['dir']; // ancienne syntaxe
208
-				$path[] = $att;
209
-			}
210
-		} else {
211
-			$path = [['dir' => '']];
212
-		} // initialiser par defaut
213
-		$arbre['path'] = $path;
214
-		// exposer les noisettes
215
-		if (isset($arbre['noisette'])) {
216
-			foreach ($arbre['noisette'] as $k => $nut) {
217
-				$nut = preg_replace(',[.]html$,uims', '', trim($nut));
218
-				$arbre['noisette'][$k] = $nut;
219
-				if (!@is_readable($dir_plugins . "$plug/$nut.html")) {
220
-					if (!$silence) {
221
-						$arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $nut";
222
-					}
223
-				}
224
-			}
225
-		}
226
-		$traduire = [];
227
-		if (spip_xml_match_nodes(',^traduire,', $arbre, $trads)) {
228
-			foreach (array_keys($trads) as $tag) {
229
-				[$tag, $att] = spip_xml_decompose_tag($tag);
230
-				$traduire[] = $att;
231
-			}
232
-		}
233
-		$arbre['traduire'] = $traduire;
234
-	}
126
+        $extraire_pipelines = charger_fonction('extraire_pipelines', 'plugins');
127
+        $arbre['pipeline'] = $extraire_pipelines($arbre);
128
+        foreach ($arbre['pipeline'] as $pipe) {
129
+            if (!isset($pipe['nom'])) {
130
+                if (!$silence) {
131
+                    $arbre['erreur'][] = _T('erreur_plugin_nom_pipeline_non_defini');
132
+                }
133
+            }
134
+            if (isset($pipe['action'])) {
135
+                $action = $pipe['action'];
136
+            } else {
137
+                $action = $pipe['nom'];
138
+            }
139
+            // verif que la methode a un nom autorise
140
+            if (in_array(strtolower($action), $liste_methodes_reservees)) {
141
+                if (!$silence) {
142
+                    $arbre['erreur'][] = _T('erreur_plugin_nom_fonction_interdit') . " : $action";
143
+                }
144
+            }
145
+            if (isset($pipe['inclure'])) {
146
+                $inclure = $dir_plugins . "$plug/" . $pipe['inclure'];
147
+                if (!@is_readable($inclure)) {
148
+                    if (!$silence) {
149
+                        $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $inclure";
150
+                    }
151
+                }
152
+            }
153
+        }
154
+        $necessite = [];
155
+        $spip_trouve = false;
156
+        if (spip_xml_match_nodes(',^necessite,', $arbre, $needs)) {
157
+            foreach (array_keys($needs) as $tag) {
158
+                [$tag, $att] = spip_xml_decompose_tag($tag);
159
+                if (!isset($att['id'])) {
160
+                    if (!$silence) {
161
+                        $arbre['erreur'][] = _T(
162
+                            'erreur_plugin_attribut_balise_manquant',
163
+                            ['attribut' => 'id', 'balise' => $att]
164
+                        );
165
+                    }
166
+                } else {
167
+                    $necessite[] = $att;
168
+                }
169
+                if (strtolower($att['id']) == 'spip') {
170
+                    $spip_trouve = true;
171
+                }
172
+            }
173
+        }
174
+        if ($compat_spip and !$spip_trouve) {
175
+            $necessite[] = ['id' => 'spip', 'version' => $compat_spip];
176
+        }
177
+        $arbre['necessite'] = $necessite;
178
+        $utilise = [];
179
+        if (spip_xml_match_nodes(',^utilise,', $arbre, $uses)) {
180
+            foreach (array_keys($uses) as $tag) {
181
+                [$tag, $att] = spip_xml_decompose_tag($tag);
182
+                if (!isset($att['id'])) {
183
+                    if (!$silence) {
184
+                        $arbre['erreur'][] = _T(
185
+                            'erreur_plugin_attribut_balise_manquant',
186
+                            ['attribut' => 'id', 'balise' => $att]
187
+                        );
188
+                    }
189
+                } else {
190
+                    $utilise[] = $att;
191
+                }
192
+            }
193
+        }
194
+        $arbre['utilise'] = $utilise;
195
+        $procure = [];
196
+        if (spip_xml_match_nodes(',^procure,', $arbre, $uses)) {
197
+            foreach (array_keys($uses) as $tag) {
198
+                [$tag, $att] = spip_xml_decompose_tag($tag);
199
+                $procure[] = $att;
200
+            }
201
+        }
202
+        $arbre['procure'] = $procure;
203
+        $path = [];
204
+        if (spip_xml_match_nodes(',^chemin,', $arbre, $paths)) {
205
+            foreach (array_keys($paths) as $tag) {
206
+                [$tag, $att] = spip_xml_decompose_tag($tag);
207
+                $att['path'] = $att['dir']; // ancienne syntaxe
208
+                $path[] = $att;
209
+            }
210
+        } else {
211
+            $path = [['dir' => '']];
212
+        } // initialiser par defaut
213
+        $arbre['path'] = $path;
214
+        // exposer les noisettes
215
+        if (isset($arbre['noisette'])) {
216
+            foreach ($arbre['noisette'] as $k => $nut) {
217
+                $nut = preg_replace(',[.]html$,uims', '', trim($nut));
218
+                $arbre['noisette'][$k] = $nut;
219
+                if (!@is_readable($dir_plugins . "$plug/$nut.html")) {
220
+                    if (!$silence) {
221
+                        $arbre['erreur'][] = _T('erreur_plugin_fichier_absent') . " : $nut";
222
+                    }
223
+                }
224
+            }
225
+        }
226
+        $traduire = [];
227
+        if (spip_xml_match_nodes(',^traduire,', $arbre, $trads)) {
228
+            foreach (array_keys($trads) as $tag) {
229
+                [$tag, $att] = spip_xml_decompose_tag($tag);
230
+                $traduire[] = $att;
231
+            }
232
+        }
233
+        $arbre['traduire'] = $traduire;
234
+    }
235 235
 }
Please login to merge, or discard this patch.
ecrire/plugins/afficher_nom_plugin.php 1 patch
Indentation   +40 added lines, -40 removed lines patch added patch discarded remove patch
@@ -11,61 +11,61 @@
 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/charsets');
17 17
 include_spip('inc/texte');
18 18
 include_spip('plugins/afficher_plugin');
19 19
 
20 20
 function plugins_afficher_nom_plugin_dist(
21
-	$url_page,
22
-	$plug_file,
23
-	$checked,
24
-	$actif,
25
-	$expose = false,
26
-	$class_li = 'item',
27
-	$dir_plugins = _DIR_PLUGINS
21
+    $url_page,
22
+    $plug_file,
23
+    $checked,
24
+    $actif,
25
+    $expose = false,
26
+    $class_li = 'item',
27
+    $dir_plugins = _DIR_PLUGINS
28 28
 ) {
29
-	static $id_input = 0;
30
-	static $versions = [];
29
+    static $id_input = 0;
30
+    static $versions = [];
31 31
 
32
-	$erreur = false;
33
-	$s = '';
32
+    $erreur = false;
33
+    $s = '';
34 34
 
35
-	$get_infos = charger_fonction('get_infos', 'plugins');
36
-	$info = $get_infos($plug_file, false, $dir_plugins);
35
+    $get_infos = charger_fonction('get_infos', 'plugins');
36
+    $info = $get_infos($plug_file, false, $dir_plugins);
37 37
 
38
-	// numerotons les occurences d'un meme prefix
39
-	$versions[$info['prefix']] = isset($versions[$info['prefix']]) ? $versions[$info['prefix']] + 1 : '';
40
-	$id = $info['prefix'] . $versions[$info['prefix']];
38
+    // numerotons les occurences d'un meme prefix
39
+    $versions[$info['prefix']] = isset($versions[$info['prefix']]) ? $versions[$info['prefix']] + 1 : '';
40
+    $id = $info['prefix'] . $versions[$info['prefix']];
41 41
 
42
-	$class = $class_li;
43
-	$class .= $actif ? ' actif' : '';
44
-	$class .= $expose ? ' on' : '';
45
-	$erreur = isset($info['erreur']);
46
-	if ($erreur) {
47
-		$class .= ' error';
48
-	}
49
-	$s .= "<li id='$id' class='$class'>";
42
+    $class = $class_li;
43
+    $class .= $actif ? ' actif' : '';
44
+    $class .= $expose ? ' on' : '';
45
+    $erreur = isset($info['erreur']);
46
+    if ($erreur) {
47
+        $class .= ' error';
48
+    }
49
+    $s .= "<li id='$id' class='$class'>";
50 50
 
51
-	// Cartouche Resume
52
-	$s .= "<div class='resume'>";
51
+    // Cartouche Resume
52
+    $s .= "<div class='resume'>";
53 53
 
54
-	$prefix = $info['prefix'];
55
-	$dir = "$dir_plugins$plug_file/lang/$prefix";
56
-	$desc = plugin_propre($info['description'], $dir);
57
-	$url_stat = parametre_url($url_page, 'plugin', $dir_plugins . $plug_file);
54
+    $prefix = $info['prefix'];
55
+    $dir = "$dir_plugins$plug_file/lang/$prefix";
56
+    $desc = plugin_propre($info['description'], $dir);
57
+    $url_stat = parametre_url($url_page, 'plugin', $dir_plugins . $plug_file);
58 58
 
59
-	$s .= "<strong class='nom'>" . typo($info['nom']) . '</strong>';
60
-	$s .= " <span class='version'>" . $info['version'] . '</span>';
61
-	$s .= " <span class='etat'> - " . plugin_etat_en_clair($info['etat']) . '</span>';
62
-	$s .= '</div>';
59
+    $s .= "<strong class='nom'>" . typo($info['nom']) . '</strong>';
60
+    $s .= " <span class='version'>" . $info['version'] . '</span>';
61
+    $s .= " <span class='etat'> - " . plugin_etat_en_clair($info['etat']) . '</span>';
62
+    $s .= '</div>';
63 63
 
64
-	if ($erreur) {
65
-		$s .= "<div class='erreur'>" . join('<br >', $info['erreur']) . '</div>';
66
-	}
64
+    if ($erreur) {
65
+        $s .= "<div class='erreur'>" . join('<br >', $info['erreur']) . '</div>';
66
+    }
67 67
 
68
-	$s .= '</li>';
68
+    $s .= '</li>';
69 69
 
70
-	return $s;
70
+    return $s;
71 71
 }
Please login to merge, or discard this patch.
ecrire/inc/headers.php 1 patch
Indentation   +136 added lines, -136 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
 
@@ -38,133 +38,133 @@  discard block
 block discarded – undo
38 38
  * @param int $status Code de redirection (301 ou 302)
39 39
  **/
40 40
 function redirige_par_entete($url, $equiv = '', $status = 302) {
41
-	if (!in_array($status, [301, 302])) {
42
-		$status = 302;
43
-	}
44
-
45
-	$url = trim(strtr($url, "\n\r", '  '));
46
-	# si l'url de redirection est relative, on la passe en absolue
47
-	if (!preg_match(',^(\w+:)?//,', $url)) {
48
-		include_spip('inc/filtres_mini');
49
-		$url = url_absolue($url);
50
-	}
51
-
52
-	if (defined('_AJAX') and _AJAX) {
53
-		$url = parametre_url($url, 'var_ajax_redir', 1, '&');
54
-	}
55
-
56
-	// ne pas laisser passer n'importe quoi dans l'url
57
-	$url = str_replace(['<', '"'], ['&lt;', '&quot;'], $url);
58
-	$url = str_replace(["\r", "\n", ' '], ['%0D', '%0A', '%20'], $url);
59
-	while (strpos($url, '%0A') !== false) {
60
-		$url = str_replace('%0A', '', $url);
61
-	}
62
-	// interdire les url inline avec des pseudo-protocoles :
63
-	if (
64
-		(preg_match(',data:,i', $url) and preg_match('/base64\s*,/i', $url))
65
-		or preg_match(',(javascript|mailto):,i', $url)
66
-	) {
67
-		$url = './';
68
-	}
69
-
70
-	// Il n'y a que sous Apache que setcookie puis redirection fonctionne
71
-	include_spip('inc/cookie');
72
-	if (!defined('_SERVEUR_SOFTWARE_ACCEPTE_LOCATION_APRES_COOKIE')) {
73
-		define('_SERVEUR_SOFTWARE_ACCEPTE_LOCATION_APRES_COOKIE', '^(Apache|Cherokee|nginx)');
74
-	}
75
-	if (!defined('_SERVEUR_SIGNATURE_ACCEPTE_LOCATION_APRES_COOKIE')) {
76
-		define('_SERVEUR_SIGNATURE_ACCEPTE_LOCATION_APRES_COOKIE', 'Apache|Cherokee|nginx');
77
-	}
78
-	if (
79
-		(!$equiv and !spip_cookie_envoye()) or (
80
-			   (!empty($_SERVER['SERVER_SOFTWARE'])
81
-				   and _SERVEUR_SOFTWARE_ACCEPTE_LOCATION_APRES_COOKIE
82
-				   and preg_match('/' . _SERVEUR_SOFTWARE_ACCEPTE_LOCATION_APRES_COOKIE . '/i', $_SERVER['SERVER_SOFTWARE']))
83
-			or (!empty($_SERVER['SERVER_SIGNATURE'])
84
-				   and _SERVEUR_SIGNATURE_ACCEPTE_LOCATION_APRES_COOKIE
85
-				   and preg_match('/' . _SERVEUR_SIGNATURE_ACCEPTE_LOCATION_APRES_COOKIE . '/i', $_SERVER['SERVER_SIGNATURE']))
86
-			or function_exists('apache_getenv')
87
-			or defined('_SERVER_APACHE')
88
-		)
89
-	) {
90
-		@header('Location: ' . $url);
91
-		$equiv = '';
92
-	} else {
93
-		@header('Refresh: 0; url=' . $url);
94
-		if (isset($GLOBALS['meta']['charset'])) {
95
-			@header('Content-Type: text/html; charset=' . $GLOBALS['meta']['charset']);
96
-		}
97
-		$equiv = "<meta http-equiv='Refresh' content='0; url=$url'>";
98
-	}
99
-	include_spip('inc/lang');
100
-	if ($status != 302) {
101
-		http_status($status);
102
-	}
103
-	echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">', "\n",
104
-	html_lang_attributes(), '
41
+    if (!in_array($status, [301, 302])) {
42
+        $status = 302;
43
+    }
44
+
45
+    $url = trim(strtr($url, "\n\r", '  '));
46
+    # si l'url de redirection est relative, on la passe en absolue
47
+    if (!preg_match(',^(\w+:)?//,', $url)) {
48
+        include_spip('inc/filtres_mini');
49
+        $url = url_absolue($url);
50
+    }
51
+
52
+    if (defined('_AJAX') and _AJAX) {
53
+        $url = parametre_url($url, 'var_ajax_redir', 1, '&');
54
+    }
55
+
56
+    // ne pas laisser passer n'importe quoi dans l'url
57
+    $url = str_replace(['<', '"'], ['&lt;', '&quot;'], $url);
58
+    $url = str_replace(["\r", "\n", ' '], ['%0D', '%0A', '%20'], $url);
59
+    while (strpos($url, '%0A') !== false) {
60
+        $url = str_replace('%0A', '', $url);
61
+    }
62
+    // interdire les url inline avec des pseudo-protocoles :
63
+    if (
64
+        (preg_match(',data:,i', $url) and preg_match('/base64\s*,/i', $url))
65
+        or preg_match(',(javascript|mailto):,i', $url)
66
+    ) {
67
+        $url = './';
68
+    }
69
+
70
+    // Il n'y a que sous Apache que setcookie puis redirection fonctionne
71
+    include_spip('inc/cookie');
72
+    if (!defined('_SERVEUR_SOFTWARE_ACCEPTE_LOCATION_APRES_COOKIE')) {
73
+        define('_SERVEUR_SOFTWARE_ACCEPTE_LOCATION_APRES_COOKIE', '^(Apache|Cherokee|nginx)');
74
+    }
75
+    if (!defined('_SERVEUR_SIGNATURE_ACCEPTE_LOCATION_APRES_COOKIE')) {
76
+        define('_SERVEUR_SIGNATURE_ACCEPTE_LOCATION_APRES_COOKIE', 'Apache|Cherokee|nginx');
77
+    }
78
+    if (
79
+        (!$equiv and !spip_cookie_envoye()) or (
80
+                (!empty($_SERVER['SERVER_SOFTWARE'])
81
+                   and _SERVEUR_SOFTWARE_ACCEPTE_LOCATION_APRES_COOKIE
82
+                   and preg_match('/' . _SERVEUR_SOFTWARE_ACCEPTE_LOCATION_APRES_COOKIE . '/i', $_SERVER['SERVER_SOFTWARE']))
83
+            or (!empty($_SERVER['SERVER_SIGNATURE'])
84
+                   and _SERVEUR_SIGNATURE_ACCEPTE_LOCATION_APRES_COOKIE
85
+                   and preg_match('/' . _SERVEUR_SIGNATURE_ACCEPTE_LOCATION_APRES_COOKIE . '/i', $_SERVER['SERVER_SIGNATURE']))
86
+            or function_exists('apache_getenv')
87
+            or defined('_SERVER_APACHE')
88
+        )
89
+    ) {
90
+        @header('Location: ' . $url);
91
+        $equiv = '';
92
+    } else {
93
+        @header('Refresh: 0; url=' . $url);
94
+        if (isset($GLOBALS['meta']['charset'])) {
95
+            @header('Content-Type: text/html; charset=' . $GLOBALS['meta']['charset']);
96
+        }
97
+        $equiv = "<meta http-equiv='Refresh' content='0; url=$url'>";
98
+    }
99
+    include_spip('inc/lang');
100
+    if ($status != 302) {
101
+        http_status($status);
102
+    }
103
+    echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">', "\n",
104
+    html_lang_attributes(), '
105 105
 <head>',
106
-	$equiv, '
106
+    $equiv, '
107 107
 <title>HTTP ' . $status . '</title>
108 108
 ' . ((isset($GLOBALS['meta']['charset'])) ? '<meta http-equiv="Content-Type" content="text/html;charset=' . $GLOBALS['meta']['charset'] . '">' : '') . '
109 109
 </head>
110 110
 <body>
111 111
 <h1>HTTP ' . $status . '</h1>
112 112
 <a href="',
113
-	quote_amp($url),
114
-	'">',
115
-	_T('navigateur_pas_redirige'),
116
-	'</a></body></html>';
113
+    quote_amp($url),
114
+    '">',
115
+    _T('navigateur_pas_redirige'),
116
+    '</a></body></html>';
117 117
 
118
-	spip_log("redirige $status: $url");
118
+    spip_log("redirige $status: $url");
119 119
 
120
-	exit;
120
+    exit;
121 121
 }
122 122
 
123 123
 function redirige_formulaire($url, $equiv = '', $format = 'message') {
124
-	if (
125
-		!_AJAX
126
-		and !headers_sent()
127
-		and !_request('var_ajax')
128
-	) {
129
-		redirige_par_entete(str_replace('&amp;', '&', $url), $equiv);
130
-	} // si c'est une ancre, fixer simplement le window.location.hash
131
-	elseif ($format == 'ajaxform' and preg_match(',^#[0-9a-z\-_]+$,i', $url)) {
132
-		return [
133
-			// on renvoie un lien masque qui sera traite par ajaxCallback.js
134
-			"<a href='$url' name='ajax_ancre' style='display:none;'>anchor</a>",
135
-			// et rien dans le message ok
136
-			''
137
-		];
138
-	} else {
139
-		// ne pas laisser passer n'importe quoi dans l'url
140
-		$url = str_replace(['<', '"'], ['&lt;', '&quot;'], $url);
141
-
142
-		$url = strtr($url, "\n\r", '  ');
143
-		# en theorie on devrait faire ca tout le temps, mais quand la chaine
144
-		# commence par ? c'est imperatif, sinon l'url finale n'est pas la bonne
145
-		if ($url[0] == '?') {
146
-			$url = url_de_base() . $url;
147
-		}
148
-		$url = str_replace('&amp;', '&', $url);
149
-		spip_log("redirige formulaire ajax: $url");
150
-		include_spip('inc/filtres');
151
-		if ($format == 'ajaxform') {
152
-			return [
153
-				// on renvoie un lien masque qui sera traite par ajaxCallback.js
154
-				'<a href="' . quote_amp($url) . '" name="ajax_redirect"  style="display:none;">' . _T('navigateur_pas_redirige') . '</a>',
155
-				// et un message au cas ou
156
-				'<br /><a href="' . quote_amp($url) . '">' . _T('navigateur_pas_redirige') . '</a>'
157
-			];
158
-		} else // format message texte, tout en js inline
159
-		{
160
-			return
161
-				// ie poste les formulaires dans une iframe, il faut donc rediriger son parent
162
-				"<script type='text/javascript'>if (parent.window){parent.window.document.location.replace(\"$url\");} else {document.location.replace(\"$url\");}</script>"
163
-				. http_img_pack('loader.svg', '', " class='loader'")
164
-				. '<br />'
165
-				. '<a href="' . quote_amp($url) . '">' . _T('navigateur_pas_redirige') . '</a>';
166
-		}
167
-	}
124
+    if (
125
+        !_AJAX
126
+        and !headers_sent()
127
+        and !_request('var_ajax')
128
+    ) {
129
+        redirige_par_entete(str_replace('&amp;', '&', $url), $equiv);
130
+    } // si c'est une ancre, fixer simplement le window.location.hash
131
+    elseif ($format == 'ajaxform' and preg_match(',^#[0-9a-z\-_]+$,i', $url)) {
132
+        return [
133
+            // on renvoie un lien masque qui sera traite par ajaxCallback.js
134
+            "<a href='$url' name='ajax_ancre' style='display:none;'>anchor</a>",
135
+            // et rien dans le message ok
136
+            ''
137
+        ];
138
+    } else {
139
+        // ne pas laisser passer n'importe quoi dans l'url
140
+        $url = str_replace(['<', '"'], ['&lt;', '&quot;'], $url);
141
+
142
+        $url = strtr($url, "\n\r", '  ');
143
+        # en theorie on devrait faire ca tout le temps, mais quand la chaine
144
+        # commence par ? c'est imperatif, sinon l'url finale n'est pas la bonne
145
+        if ($url[0] == '?') {
146
+            $url = url_de_base() . $url;
147
+        }
148
+        $url = str_replace('&amp;', '&', $url);
149
+        spip_log("redirige formulaire ajax: $url");
150
+        include_spip('inc/filtres');
151
+        if ($format == 'ajaxform') {
152
+            return [
153
+                // on renvoie un lien masque qui sera traite par ajaxCallback.js
154
+                '<a href="' . quote_amp($url) . '" name="ajax_redirect"  style="display:none;">' . _T('navigateur_pas_redirige') . '</a>',
155
+                // et un message au cas ou
156
+                '<br /><a href="' . quote_amp($url) . '">' . _T('navigateur_pas_redirige') . '</a>'
157
+            ];
158
+        } else // format message texte, tout en js inline
159
+        {
160
+            return
161
+                // ie poste les formulaires dans une iframe, il faut donc rediriger son parent
162
+                "<script type='text/javascript'>if (parent.window){parent.window.document.location.replace(\"$url\");} else {document.location.replace(\"$url\");}</script>"
163
+                . http_img_pack('loader.svg', '', " class='loader'")
164
+                . '<br />'
165
+                . '<a href="' . quote_amp($url) . '">' . _T('navigateur_pas_redirige') . '</a>';
166
+        }
167
+    }
168 168
 }
169 169
 
170 170
 /**
@@ -185,7 +185,7 @@  discard block
 block discarded – undo
185 185
  * @return void
186 186
  **/
187 187
 function redirige_url_ecrire($script = '', $args = '', $equiv = '') {
188
-	return redirige_par_entete(generer_url_ecrire($script, $args, true), $equiv);
188
+    return redirige_par_entete(generer_url_ecrire($script, $args, true), $equiv);
189 189
 }
190 190
 /**
191 191
  * Renvoie au client le header HTTP avec le message correspondant au code indiqué.
@@ -200,27 +200,27 @@  discard block
 block discarded – undo
200 200
  *     Code d'erreur
201 201
  **/
202 202
 function http_status($status) {
203
-	http_response_code($status);
203
+    http_response_code($status);
204 204
 }
205 205
 
206 206
 // Retourne ce qui va bien pour que le navigateur ne mette pas la page en cache
207 207
 function http_no_cache() {
208
-	if (headers_sent()) {
209
-		spip_log('http_no_cache arrive trop tard');
210
-
211
-		return;
212
-	}
213
-	$charset = empty($GLOBALS['meta']['charset']) ? 'utf-8' : $GLOBALS['meta']['charset'];
214
-
215
-	// selon http://developer.apple.com/internet/safari/faq.html#anchor5
216
-	// il faudrait aussi pour Safari
217
-	// header("Cache-Control: post-check=0, pre-check=0", false)
218
-	// mais ca ne respecte pas
219
-	// http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
220
-
221
-	header("Content-Type: text/html; charset=$charset");
222
-	header('Expires: 0');
223
-	header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
224
-	header('Cache-Control: no-cache, must-revalidate');
225
-	header('Pragma: no-cache');
208
+    if (headers_sent()) {
209
+        spip_log('http_no_cache arrive trop tard');
210
+
211
+        return;
212
+    }
213
+    $charset = empty($GLOBALS['meta']['charset']) ? 'utf-8' : $GLOBALS['meta']['charset'];
214
+
215
+    // selon http://developer.apple.com/internet/safari/faq.html#anchor5
216
+    // il faudrait aussi pour Safari
217
+    // header("Cache-Control: post-check=0, pre-check=0", false)
218
+    // mais ca ne respecte pas
219
+    // http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
220
+
221
+    header("Content-Type: text/html; charset=$charset");
222
+    header('Expires: 0');
223
+    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
224
+    header('Cache-Control: no-cache, must-revalidate');
225
+    header('Pragma: no-cache');
226 226
 }
Please login to merge, or discard this patch.
ecrire/inc/plonger.php 1 patch
Indentation   +88 added lines, -88 removed lines patch added patch discarded remove patch
@@ -11,112 +11,112 @@
 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/texte');
18 18
 
19 19
 function inc_plonger_dist($id_rubrique, $idom = '', $list = [], $col = 1, $exclu = 0, $do = 'aff') {
20 20
 
21
-	if ($list) {
22
-		$id_rubrique = $list[$col - 1];
23
-	}
21
+    if ($list) {
22
+        $id_rubrique = $list[$col - 1];
23
+    }
24 24
 
25
-	$ret = '';
25
+    $ret = '';
26 26
 
27
-	# recherche les filles et petites-filles de la rubrique donnee
28
-	# en excluant une eventuelle rubrique interdite (par exemple, lorsqu'on
29
-	# deplace une rubrique, on peut la deplacer partout a partir de la
30
-	# racine... sauf vers elle-meme ou sa propre branche)
31
-	$ordre = [];
32
-	$rub = [];
27
+    # recherche les filles et petites-filles de la rubrique donnee
28
+    # en excluant une eventuelle rubrique interdite (par exemple, lorsqu'on
29
+    # deplace une rubrique, on peut la deplacer partout a partir de la
30
+    # racine... sauf vers elle-meme ou sa propre branche)
31
+    $ordre = [];
32
+    $rub = [];
33 33
 
34
-	$res = sql_select(
35
-		'rub1.id_rubrique, rub1.titre, rub1.id_parent, rub1.lang, rub1.langue_choisie, rub2.id_rubrique AS id_enfant',
36
-		'spip_rubriques AS rub1 LEFT JOIN spip_rubriques AS rub2 ON (rub1.id_rubrique = rub2.id_parent)',
37
-		'rub1.id_parent = ' . sql_quote($id_rubrique) . '
34
+    $res = sql_select(
35
+        'rub1.id_rubrique, rub1.titre, rub1.id_parent, rub1.lang, rub1.langue_choisie, rub2.id_rubrique AS id_enfant',
36
+        'spip_rubriques AS rub1 LEFT JOIN spip_rubriques AS rub2 ON (rub1.id_rubrique = rub2.id_parent)',
37
+        'rub1.id_parent = ' . sql_quote($id_rubrique) . '
38 38
 			AND rub1.id_rubrique!=' . sql_quote($exclu) . '
39 39
 			AND (rub2.id_rubrique IS NULL OR rub2.id_rubrique!=' . sql_quote($exclu) . ')',
40
-		'',
41
-		'0+rub1.titre,rub1.titre'
42
-	);
40
+        '',
41
+        '0+rub1.titre,rub1.titre'
42
+    );
43 43
 
44
-	while ($row = sql_fetch($res)) {
45
-		if (autoriser('voir', 'rubrique', $row['id_rubrique'])) {
46
-			$rub[$row['id_rubrique']]['enfants'] = $row['id_enfant'];
47
-			if ($row['id_parent'] == $id_rubrique) {
48
-				$t = trim(typo(supprimer_numero($row['titre'])));
49
-				if ($row['langue_choisie'] != 'oui') {
50
-					$t .= ' <small title="'
51
-						. traduire_nom_langue($row['lang'])
52
-						. '">[' . $row['lang'] . ']</small>';
53
-				}
54
-				$ordre[$row['id_rubrique']] = $t;
55
-			}
56
-		}
57
-	}
58
-	$next = $list[$col] ?? 0;
59
-	if ($ordre) {
60
-		$rec = generer_url_ecrire('plonger', "rac=$idom&exclus=$exclu&do=$do&col=" . ($col + 1));
61
-		$info = generer_url_ecrire('informer', "type=rubrique&rac=$idom&do=$do&id=");
62
-		$args = "'$idom',this,$col,'" . $GLOBALS['spip_lang_left'] . "','$info',event";
44
+    while ($row = sql_fetch($res)) {
45
+        if (autoriser('voir', 'rubrique', $row['id_rubrique'])) {
46
+            $rub[$row['id_rubrique']]['enfants'] = $row['id_enfant'];
47
+            if ($row['id_parent'] == $id_rubrique) {
48
+                $t = trim(typo(supprimer_numero($row['titre'])));
49
+                if ($row['langue_choisie'] != 'oui') {
50
+                    $t .= ' <small title="'
51
+                        . traduire_nom_langue($row['lang'])
52
+                        . '">[' . $row['lang'] . ']</small>';
53
+                }
54
+                $ordre[$row['id_rubrique']] = $t;
55
+            }
56
+        }
57
+    }
58
+    $next = $list[$col] ?? 0;
59
+    if ($ordre) {
60
+        $rec = generer_url_ecrire('plonger', "rac=$idom&exclus=$exclu&do=$do&col=" . ($col + 1));
61
+        $info = generer_url_ecrire('informer', "type=rubrique&rac=$idom&do=$do&id=");
62
+        $args = "'$idom',this,$col,'" . $GLOBALS['spip_lang_left'] . "','$info',event";
63 63
 
64
-		foreach ($ordre as $id => $titrebrut) {
65
-			$titre = supprimer_numero($titrebrut);
64
+        foreach ($ordre as $id => $titrebrut) {
65
+            $titre = supprimer_numero($titrebrut);
66 66
 
67
-			$classe1 = 'petit-item ' . ($id_rubrique ? 'petite-rubrique' : 'petit-secteur');
68
-			if (isset($rub[$id]['enfants'])) {
69
-				$classe2 = " class='rub-ouverte'";
70
-				$url = "\nhref='$rec&amp;id=$id'";
71
-			} else {
72
-				$classe2 = $url = '';
73
-				$url = "\nhref='javascript:void(0)'";
74
-			}
67
+            $classe1 = 'petit-item ' . ($id_rubrique ? 'petite-rubrique' : 'petit-secteur');
68
+            if (isset($rub[$id]['enfants'])) {
69
+                $classe2 = " class='rub-ouverte'";
70
+                $url = "\nhref='$rec&amp;id=$id'";
71
+            } else {
72
+                $classe2 = $url = '';
73
+                $url = "\nhref='javascript:void(0)'";
74
+            }
75 75
 
76
-			$js_func = $do . '_selection_titre';
77
-			$click = "\nonclick=\"changerhighlight(this.parentNode.parentNode.parentNode);\nreturn "
78
-				. (!is_array($list) ? ' false'
79
-					: "aff_selection_provisoire($id,$args)")
76
+            $js_func = $do . '_selection_titre';
77
+            $click = "\nonclick=\"changerhighlight(this.parentNode.parentNode.parentNode);\nreturn "
78
+                . (!is_array($list) ? ' false'
79
+                    : "aff_selection_provisoire($id,$args)")
80 80
 # ce lien provoque la selection (directe) de la rubrique cliquee
81 81
 # et l'affichage de son titre dans le bandeau
82
-				. "\"\nondblclick=\""
83
-				. "$js_func(this."
84
-				. 'firstChild.nodeValue,'
85
-				. $id
86
-				. ",'selection_rubrique','id_parent');"
87
-				. "\nreturn aff_selection_provisoire($id,$args);"
88
-				. '"';
82
+                . "\"\nondblclick=\""
83
+                . "$js_func(this."
84
+                . 'firstChild.nodeValue,'
85
+                . $id
86
+                . ",'selection_rubrique','id_parent');"
87
+                . "\nreturn aff_selection_provisoire($id,$args);"
88
+                . '"';
89 89
 
90
-			$ret .= "<div class='"
91
-				. (($id == $next) ? 'item on' : 'item')
92
-				. "'><div class='"
93
-				. $classe1
94
-				. "'><div$classe2><a"
95
-				. $url
96
-				. $click
97
-				. '>'
98
-				. $titre
99
-				. '</a></div></div></div>';
100
-		}
101
-	}
90
+            $ret .= "<div class='"
91
+                . (($id == $next) ? 'item on' : 'item')
92
+                . "'><div class='"
93
+                . $classe1
94
+                . "'><div$classe2><a"
95
+                . $url
96
+                . $click
97
+                . '>'
98
+                . $titre
99
+                . '</a></div></div></div>';
100
+        }
101
+    }
102 102
 
103
-	$idom2 = $idom . '_col_' . ($col + 1);
104
-	$left = ($col * 250);
103
+    $idom2 = $idom . '_col_' . ($col + 1);
104
+    $left = ($col * 250);
105 105
 
106
-	return http_img_pack(
107
-		'loader.svg',
108
-		'',
109
-		"class='loader' style='visibility: hidden; position: absolute; " . $GLOBALS['spip_lang_left'] . ': '
110
-		. ($left - 30)
111
-		. "px; top: 2px; z-index: 2;' id='img_$idom2'"
112
-	)
113
-	. "<div style='width: 250px; height: 100%; overflow: auto; position: absolute; top: 0px; " . $GLOBALS['spip_lang_left'] . ': '
114
-	. ($left - 250)
115
-	. "px;'>"
116
-	. $ret
117
-	. "\n</div>\n<div id='$idom2'>"
118
-	. ($next
119
-		? inc_plonger_dist($id_rubrique, $idom, $list, $col + 1, $exclu)
120
-		: '')
121
-	. "\n</div>";
106
+    return http_img_pack(
107
+        'loader.svg',
108
+        '',
109
+        "class='loader' style='visibility: hidden; position: absolute; " . $GLOBALS['spip_lang_left'] . ': '
110
+        . ($left - 30)
111
+        . "px; top: 2px; z-index: 2;' id='img_$idom2'"
112
+    )
113
+    . "<div style='width: 250px; height: 100%; overflow: auto; position: absolute; top: 0px; " . $GLOBALS['spip_lang_left'] . ': '
114
+    . ($left - 250)
115
+    . "px;'>"
116
+    . $ret
117
+    . "\n</div>\n<div id='$idom2'>"
118
+    . ($next
119
+        ? inc_plonger_dist($id_rubrique, $idom, $list, $col + 1, $exclu)
120
+        : '')
121
+    . "\n</div>";
122 122
 }
Please login to merge, or discard this patch.
ecrire/inc/presentation.php 1 patch
Indentation   +113 added lines, -113 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  * @package SPIP\Core\Presentation
17 17
  **/
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 include_spip('inc/presentation_mini');
@@ -31,141 +31,141 @@  discard block
 block discarded – undo
31 31
 include_spip('inc/filtres_alertes');
32 32
 
33 33
 function debut_cadre($style, $icone = '', $fonction = '', $titre = '', $id = '', $class = '', $padding = true) {
34
-	$fond = null;
35
-	$style_mapping = [
36
-		'r' => 'simple',
37
-		'e' => 'raccourcis',
38
-		'couleur' => 'basic highlight',
39
-		'couleur-foncee' => 'basic highlight',
40
-		'trait-couleur' => 'important',
41
-		'alerte' => 'notice',
42
-		'info' => 'info',
43
-		'sous_rub' => 'simple sous-rub'
44
-	];
45
-	$style_titre_mapping = ['couleur' => 'topper', 'trait-couleur' => 'section'];
46
-	$c = $style_mapping[$style] ?? 'simple';
47
-	$class = $c . ($class ? " $class" : '');
48
-	if (!$padding) {
49
-		$class .= ($class ? ' ' : '') . 'no-padding';
50
-	}
51
-
52
-	//($id?"id='$id' ":"")
53
-	if (strlen($icone) > 1) {
54
-		if ($icone_renommer = charger_fonction('icone_renommer', 'inc', true)) {
55
-			[$fond, $fonction] = $icone_renommer($icone, $fonction);
56
-		}
57
-		$size = 24;
58
-		if (preg_match('/-([0-9]{1,3})[.](gif|png)$/i', $fond, $match)) {
59
-			$size = $match[1];
60
-		}
61
-		if ($fonction) {
62
-			// 2 images pour composer l'icone : le fond (article) en background,
63
-			// la fonction (new) en image
64
-			$icone = http_img_pack($fonction, '', "class='cadre-icone' width='$size' height='$size'\n" .
65
-				http_style_background($fond, 'no-repeat center center', $size));
66
-		} else {
67
-			$icone = http_img_pack($fond, '', "class='cadre-icone' width='$size' height='$size'");
68
-		}
69
-		$titre = $icone . $titre;
70
-	}
71
-
72
-	return boite_ouvrir($titre, $class, $style_titre_mapping[$style] ?? '', $id);
34
+    $fond = null;
35
+    $style_mapping = [
36
+        'r' => 'simple',
37
+        'e' => 'raccourcis',
38
+        'couleur' => 'basic highlight',
39
+        'couleur-foncee' => 'basic highlight',
40
+        'trait-couleur' => 'important',
41
+        'alerte' => 'notice',
42
+        'info' => 'info',
43
+        'sous_rub' => 'simple sous-rub'
44
+    ];
45
+    $style_titre_mapping = ['couleur' => 'topper', 'trait-couleur' => 'section'];
46
+    $c = $style_mapping[$style] ?? 'simple';
47
+    $class = $c . ($class ? " $class" : '');
48
+    if (!$padding) {
49
+        $class .= ($class ? ' ' : '') . 'no-padding';
50
+    }
51
+
52
+    //($id?"id='$id' ":"")
53
+    if (strlen($icone) > 1) {
54
+        if ($icone_renommer = charger_fonction('icone_renommer', 'inc', true)) {
55
+            [$fond, $fonction] = $icone_renommer($icone, $fonction);
56
+        }
57
+        $size = 24;
58
+        if (preg_match('/-([0-9]{1,3})[.](gif|png)$/i', $fond, $match)) {
59
+            $size = $match[1];
60
+        }
61
+        if ($fonction) {
62
+            // 2 images pour composer l'icone : le fond (article) en background,
63
+            // la fonction (new) en image
64
+            $icone = http_img_pack($fonction, '', "class='cadre-icone' width='$size' height='$size'\n" .
65
+                http_style_background($fond, 'no-repeat center center', $size));
66
+        } else {
67
+            $icone = http_img_pack($fond, '', "class='cadre-icone' width='$size' height='$size'");
68
+        }
69
+        $titre = $icone . $titre;
70
+    }
71
+
72
+    return boite_ouvrir($titre, $class, $style_titre_mapping[$style] ?? '', $id);
73 73
 }
74 74
 
75 75
 function fin_cadre() {
76
- return boite_fermer();
76
+    return boite_fermer();
77 77
 }
78 78
 
79 79
 
80 80
 function debut_cadre_relief(
81
-	$icone = '',
82
-	$dummy = '',
83
-	$fonction = '',
84
-	$titre = '',
85
-	$id = '',
86
-	$class = ''
81
+    $icone = '',
82
+    $dummy = '',
83
+    $fonction = '',
84
+    $titre = '',
85
+    $id = '',
86
+    $class = ''
87 87
 ) {
88
-	return debut_cadre('r', $icone, $fonction, $titre, $id, $class);
88
+    return debut_cadre('r', $icone, $fonction, $titre, $id, $class);
89 89
 }
90 90
 
91 91
 function fin_cadre_relief() {
92
- return fin_cadre();
92
+    return fin_cadre();
93 93
 }
94 94
 
95 95
 function debut_cadre_enfonce(
96
-	$icone = '',
97
-	$dummy = '',
98
-	$fonction = '',
99
-	$titre = '',
100
-	$id = '',
101
-	$class = ''
96
+    $icone = '',
97
+    $dummy = '',
98
+    $fonction = '',
99
+    $titre = '',
100
+    $id = '',
101
+    $class = ''
102 102
 ) {
103
-	return debut_cadre('e', $icone, $fonction, $titre, $id, $class);
103
+    return debut_cadre('e', $icone, $fonction, $titre, $id, $class);
104 104
 }
105 105
 
106 106
 function fin_cadre_enfonce() {
107
- return fin_cadre();
107
+    return fin_cadre();
108 108
 }
109 109
 
110 110
 function debut_cadre_sous_rub(
111
-	$icone = '',
112
-	$dummy = '',
113
-	$fonction = '',
114
-	$titre = '',
115
-	$id = '',
116
-	$class = ''
111
+    $icone = '',
112
+    $dummy = '',
113
+    $fonction = '',
114
+    $titre = '',
115
+    $id = '',
116
+    $class = ''
117 117
 ) {
118
-	return debut_cadre('sous_rub', $icone, $fonction, $titre, $id, $class);
118
+    return debut_cadre('sous_rub', $icone, $fonction, $titre, $id, $class);
119 119
 }
120 120
 
121 121
 function fin_cadre_sous_rub() {
122
- return fin_cadre();
122
+    return fin_cadre();
123 123
 }
124 124
 
125 125
 function debut_cadre_couleur(
126
-	$icone = '',
127
-	$dummy = '',
128
-	$fonction = '',
129
-	$titre = '',
130
-	$id = '',
131
-	$class = ''
126
+    $icone = '',
127
+    $dummy = '',
128
+    $fonction = '',
129
+    $titre = '',
130
+    $id = '',
131
+    $class = ''
132 132
 ) {
133
-	return debut_cadre('couleur', $icone, $fonction, $titre, $id, $class);
133
+    return debut_cadre('couleur', $icone, $fonction, $titre, $id, $class);
134 134
 }
135 135
 
136 136
 function fin_cadre_couleur() {
137
- return fin_cadre();
137
+    return fin_cadre();
138 138
 }
139 139
 
140 140
 function debut_cadre_trait_couleur(
141
-	$icone = '',
142
-	$dummy = '',
143
-	$fonction = '',
144
-	$titre = '',
145
-	$id = '',
146
-	$class = ''
141
+    $icone = '',
142
+    $dummy = '',
143
+    $fonction = '',
144
+    $titre = '',
145
+    $id = '',
146
+    $class = ''
147 147
 ) {
148
-	return debut_cadre('trait-couleur', $icone, $fonction, $titre, $id, $class);
148
+    return debut_cadre('trait-couleur', $icone, $fonction, $titre, $id, $class);
149 149
 }
150 150
 
151 151
 function fin_cadre_trait_couleur() {
152
- return fin_cadre();
152
+    return fin_cadre();
153 153
 }
154 154
 
155 155
 function debut_boite_alerte() {
156
- return debut_cadre('alerte', '', '', '', '', '');
156
+    return debut_cadre('alerte', '', '', '', '', '');
157 157
 }
158 158
 
159 159
 function fin_boite_alerte() {
160
- return fin_cadre();
160
+    return fin_cadre();
161 161
 }
162 162
 
163 163
 function debut_boite_info() {
164
- return debut_cadre('info', '', '', '', '', '');
164
+    return debut_cadre('info', '', '', '', '', '');
165 165
 }
166 166
 
167 167
 function fin_boite_info() {
168
- return fin_cadre();
168
+    return fin_cadre();
169 169
 }
170 170
 
171 171
 /**
@@ -176,17 +176,17 @@  discard block
 block discarded – undo
176 176
  * @return string Code PHP.
177 177
  **/
178 178
 function gros_titre(
179
-	$titre,
180
-	$ze_logo = ''
179
+    $titre,
180
+    $ze_logo = ''
181 181
 ) {
182
-	return "<h1 class = 'grostitre'>" . $ze_logo . ' ' . typo($titre) . "</h1>\n";
182
+    return "<h1 class = 'grostitre'>" . $ze_logo . ' ' . typo($titre) . "</h1>\n";
183 183
 }
184 184
 
185 185
 // La boite des raccourcis
186 186
 // Se place a droite si l'ecran est en mode panoramique.
187 187
 function bloc_des_raccourcis($bloc) {
188
-	return creer_colonne_droite()
189
-	. boite_ouvrir(_T('titre_cadre_raccourcis'), 'raccourcis') . $bloc . boite_fermer();
188
+    return creer_colonne_droite()
189
+    . boite_ouvrir(_T('titre_cadre_raccourcis'), 'raccourcis') . $bloc . boite_fermer();
190 190
 }
191 191
 
192 192
 //
@@ -196,18 +196,18 @@  discard block
 block discarded – undo
196 196
 // Fonctions onglets
197 197
 // @param string $sous_classe	prend la valeur second pour definir les onglet de deuxieme niveau
198 198
 function debut_onglet($classe = 'barre_onglet') {
199
- return "<div class = '$classe clearfix'><ul>\n";
199
+    return "<div class = '$classe clearfix'><ul>\n";
200 200
 }
201 201
 
202 202
 function fin_onglet() {
203
- return "</ul></div>\n";
203
+    return "</ul></div>\n";
204 204
 }
205 205
 
206 206
 function onglet($texte, $lien, $onglet_ref, $onglet, $icone = '') {
207
-	return '<li>'
208
-	. ($icone ? http_img_pack($icone, '', " class='cadre-icone'") : '')
209
-	. lien_ou_expose($lien, $texte, $onglet == $onglet_ref)
210
-	. '</li>';
207
+    return '<li>'
208
+    . ($icone ? http_img_pack($icone, '', " class='cadre-icone'") : '')
209
+    . lien_ou_expose($lien, $texte, $onglet == $onglet_ref)
210
+    . '</li>';
211 211
 }
212 212
 
213 213
 /**
@@ -239,14 +239,14 @@  discard block
 block discarded – undo
239 239
  *     Code HTML du lien
240 240
  **/
241 241
 function icone_verticale($texte, $lien, $fond, $fonction = '', $align = '', $javascript = '') {
242
-	// cas d'ajax_action_auteur: faut defaire le boulot
243
-	// (il faudrait fusionner avec le cas $javascript)
244
-	if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
245
-		[$x, $lien, $atts, $texte] = $r;
246
-		$javascript .= $atts;
247
-	}
248
-
249
-	return icone_base($lien, $texte, $fond, $fonction, "verticale $align", $javascript);
242
+    // cas d'ajax_action_auteur: faut defaire le boulot
243
+    // (il faudrait fusionner avec le cas $javascript)
244
+    if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
245
+        [$x, $lien, $atts, $texte] = $r;
246
+        $javascript .= $atts;
247
+    }
248
+
249
+    return icone_base($lien, $texte, $fond, $fonction, "verticale $align", $javascript);
250 250
 }
251 251
 
252 252
 /**
@@ -271,15 +271,15 @@  discard block
 block discarded – undo
271 271
  *     Code HTML du lien
272 272
  **/
273 273
 function icone_horizontale($texte, $lien, $fond, $fonction = '', $dummy = '', $javascript = '') {
274
-	$retour = '';
275
-	// cas d'ajax_action_auteur: faut defaire le boulot
276
-	// (il faudrait fusionner avec le cas $javascript)
277
-	if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
278
-		[$x, $lien, $atts, $texte] = $r;
279
-		$javascript .= $atts;
280
-	}
274
+    $retour = '';
275
+    // cas d'ajax_action_auteur: faut defaire le boulot
276
+    // (il faudrait fusionner avec le cas $javascript)
277
+    if (preg_match(",^<a\shref='([^']*)'([^>]*)>(.*)</a>$,i", $lien, $r)) {
278
+        [$x, $lien, $atts, $texte] = $r;
279
+        $javascript .= $atts;
280
+    }
281 281
 
282
-	$retour = icone_base($lien, $texte, $fond, $fonction, 'horizontale', $javascript);
282
+    $retour = icone_base($lien, $texte, $fond, $fonction, 'horizontale', $javascript);
283 283
 
284
-	return $retour;
284
+    return $retour;
285 285
 }
Please login to merge, or discard this patch.
ecrire/inc/rechercher.php 1 patch
Indentation   +317 added lines, -317 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
 defined('_RECHERCHE_LOCK_KEY') || define('_RECHERCHE_LOCK_KEY', 'fulltext');
@@ -35,198 +35,198 @@  discard block
 block discarded – undo
35 35
  * @return array Couples (type d'objet => Couples (champ => score))
36 36
  */
37 37
 function liste_des_champs() {
38
-	static $liste = null;
39
-	if (is_null($liste)) {
40
-		$liste = [];
41
-		// recuperer les tables_objets_sql declarees
42
-		include_spip('base/objets');
43
-		$tables_objets = lister_tables_objets_sql();
44
-		foreach ($tables_objets as $t => $infos) {
45
-			if ($infos['rechercher_champs']) {
46
-				$liste[$infos['type']] = $infos['rechercher_champs'];
47
-			}
48
-		}
49
-		// puis passer dans le pipeline
50
-		$liste = pipeline('rechercher_liste_des_champs', $liste);
51
-	}
52
-
53
-	return $liste;
38
+    static $liste = null;
39
+    if (is_null($liste)) {
40
+        $liste = [];
41
+        // recuperer les tables_objets_sql declarees
42
+        include_spip('base/objets');
43
+        $tables_objets = lister_tables_objets_sql();
44
+        foreach ($tables_objets as $t => $infos) {
45
+            if ($infos['rechercher_champs']) {
46
+                $liste[$infos['type']] = $infos['rechercher_champs'];
47
+            }
48
+        }
49
+        // puis passer dans le pipeline
50
+        $liste = pipeline('rechercher_liste_des_champs', $liste);
51
+    }
52
+
53
+    return $liste;
54 54
 }
55 55
 
56 56
 
57 57
 // Recherche des auteurs et mots-cles associes
58 58
 // en ne regardant que le titre ou le nom
59 59
 function liste_des_jointures() {
60
-	static $liste = null;
61
-	if (is_null($liste)) {
62
-		$liste = [];
63
-		// recuperer les tables_objets_sql declarees
64
-		include_spip('base/objets');
65
-		$tables_objets = lister_tables_objets_sql();
66
-		foreach ($tables_objets as $t => $infos) {
67
-			if ($infos['rechercher_jointures']) {
68
-				$liste[$infos['type']] = $infos['rechercher_jointures'];
69
-			}
70
-		}
71
-		// puis passer dans le pipeline
72
-		$liste = pipeline('rechercher_liste_des_jointures', $liste);
73
-	}
74
-
75
-	return $liste;
60
+    static $liste = null;
61
+    if (is_null($liste)) {
62
+        $liste = [];
63
+        // recuperer les tables_objets_sql declarees
64
+        include_spip('base/objets');
65
+        $tables_objets = lister_tables_objets_sql();
66
+        foreach ($tables_objets as $t => $infos) {
67
+            if ($infos['rechercher_jointures']) {
68
+                $liste[$infos['type']] = $infos['rechercher_jointures'];
69
+            }
70
+        }
71
+        // puis passer dans le pipeline
72
+        $liste = pipeline('rechercher_liste_des_jointures', $liste);
73
+    }
74
+
75
+    return $liste;
76 76
 }
77 77
 
78 78
 function expression_recherche($recherche, $options) {
79
-	// ne calculer qu'une seule fois l'expression par hit
80
-	// (meme si utilisee dans plusieurs boucles)
81
-	static $expression = [];
82
-	$key = serialize([$recherche, $options['preg_flags']]);
83
-	if (isset($expression[$key])) {
84
-		return $expression[$key];
85
-	}
86
-
87
-	$u = $GLOBALS['meta']['pcre_u'];
88
-	if ($u and strpos($options['preg_flags'], (string) $u) === false) {
89
-		$options['preg_flags'] .= $u;
90
-	}
91
-	include_spip('inc/charsets');
92
-	$recherche = trim($recherche);
93
-
94
-	// retirer les + de +truc et les * de truc*
95
-	$recherche = preg_replace(',(^|\s)\+(\w),Uims', '$1$2', $recherche);
96
-	$recherche = preg_replace(',(\w)\*($|\s),Uims', '$1$2', $recherche);
97
-
98
-	$is_preg = false;
99
-	if (substr($recherche, 0, 1) == '/' and substr($recherche, -1, 1) == '/' and strlen($recherche) > 2) {
100
-		// c'est une preg
101
-		$recherche_trans = translitteration($recherche);
102
-		$preg = $recherche_trans . $options['preg_flags'];
103
-		$is_preg = true;
104
-	} else {
105
-		// s'il y a plusieurs mots il faut les chercher tous : oblige REGEXP,
106
-		// sauf ceux de moins de 4 lettres (on supprime ainsi 'le', 'les', 'un',
107
-		// 'une', 'des' ...)
108
-
109
-		// attention : plusieurs mots entre guillemets sont a rechercher tels quels
110
-		$recherche_trans = $recherche_mod = $recherche_org = $recherche;
111
-
112
-		// les expressions entre " " sont un mot a chercher tel quel
113
-		// -> on remplace les espaces par un \x1 et on enleve les guillemets
114
-		if (preg_match(',["][^"]+["],Uims', $recherche_mod, $matches)) {
115
-			foreach ($matches as $match) {
116
-				$word = preg_replace(',\s+,Uims', "\x1", $match);
117
-				$word = trim($word, '"');
118
-				$recherche_mod = str_replace($match, $word, $recherche_mod);
119
-			}
120
-		}
121
-
122
-		if (preg_match(',\s+,' . $u, $recherche_mod)) {
123
-			$is_preg = true;
124
-
125
-			$recherche_inter = '|';
126
-			$recherche_mots = explode(' ', $recherche_mod);
127
-			$min_long = defined('_RECHERCHE_MIN_CAR') ? _RECHERCHE_MIN_CAR : 4;
128
-			$petits_mots = true;
129
-			foreach ($recherche_mots as $mot) {
130
-				if (strlen($mot) >= $min_long) {
131
-					// echapper les caracteres de regexp qui sont eventuellement dans la recherche
132
-					$recherche_inter .= preg_quote($mot) . ' ';
133
-					$petits_mots = false;
134
-				}
135
-			}
136
-			$recherche_inter = str_replace("\x1", '\s', $recherche_inter);
137
-
138
-			// mais on cherche quand même l'expression complète, même si elle
139
-			// comporte des mots de moins de quatre lettres
140
-			$recherche = trim(preg_replace(',\s+,' . $u, '|', $recherche_inter), '|');
141
-			if (!$recherche or $petits_mots) {
142
-				$recherche = preg_quote($recherche_org);
143
-			}
144
-			$recherche_trans = translitteration($recherche);
145
-		}
146
-
147
-		$preg = '/' . str_replace('/', '\\/', $recherche_trans) . '/' . $options['preg_flags'];
148
-	}
149
-
150
-	// Si la chaine est inactive, on va utiliser LIKE pour aller plus vite
151
-	// ou si l'expression reguliere est invalide
152
-	if (
153
-		!$is_preg
154
-		or (@preg_match($preg, '') === false)
155
-	) {
156
-		$methode = 'LIKE';
157
-		$u = $GLOBALS['meta']['pcre_u'];
158
-
159
-		// echapper les % et _
160
-		$q = str_replace(['%', '_'], ['\%', '\_'], trim($recherche));
161
-
162
-		// eviter les parentheses et autres caractères qui interferent avec pcre par la suite (dans le preg_match_all) s'il y a des reponses
163
-		$recherche = preg_quote($recherche, '/');
164
-		$recherche_trans = translitteration($recherche);
165
-		$recherche_mod = $recherche_trans;
166
-
167
-		// les expressions entre " " sont un mot a chercher tel quel
168
-		// -> on remplace les espaces par un _ et on enleve les guillemets
169
-		// corriger le like dans le $q
170
-		if (preg_match(',["][^"]+["],Uims', $q, $matches)) {
171
-			foreach ($matches as $match) {
172
-				$word = preg_replace(',\s+,Uims', '_', $match);
173
-				$word = trim($word, '"');
174
-				$q = str_replace($match, $word, $q);
175
-			}
176
-		}
177
-		// corriger la regexp
178
-		if (preg_match(',["][^"]+["],Uims', $recherche_mod, $matches)) {
179
-			foreach ($matches as $match) {
180
-				$word = preg_replace(',\s+,Uims', '[\s]', $match);
181
-				$word = trim($word, '"');
182
-				$recherche_mod = str_replace($match, $word, $recherche_mod);
183
-			}
184
-		}
185
-		$q = sql_quote(
186
-			'%'
187
-			. preg_replace(',\s+,' . $u, '%', $q)
188
-			. '%'
189
-		);
190
-
191
-		$preg = '/' . preg_replace(',\s+,' . $u, '.+', trim($recherche_mod)) . '/' . $options['preg_flags'];
192
-	} else {
193
-		$methode = 'REGEXP';
194
-		$q = sql_quote(trim($recherche, '/'));
195
-	}
196
-
197
-	// tous les caracteres transliterables de $q sont remplaces par un joker
198
-	// permet de matcher en SQL meme si on est sensible aux accents (SQLite)
199
-	$q_t = $q;
200
-	for ($i = 0; $i < spip_strlen($q); $i++) {
201
-		$char = spip_substr($q, $i, 1);
202
-		if (
203
-			!is_ascii($char)
204
-			and $char_t = translitteration($char)
205
-			and $char_t !== $char
206
-		) {
207
-			// on utilise ..?.? car le char utf peut etre encode sur 1, 2 ou 3 bytes
208
-			// mais c'est un pis aller cf #4354
209
-			$q_t = str_replace($char, $is_preg ? '..?.?' : '_', $q_t);
210
-		}
211
-	}
212
-
213
-	$q = $q_t;
214
-
215
-	// fix : SQLite 3 est sensible aux accents, on jokerise les caracteres
216
-	// les plus frequents qui peuvent etre accentues
217
-	// (oui c'est tres dicustable...)
218
-	if (
219
-		isset($GLOBALS['connexions'][$options['serveur'] ?: 0]['type'])
220
-		and strncmp($GLOBALS['connexions'][$options['serveur'] ?: 0]['type'], 'sqlite', 6) == 0
221
-	) {
222
-		$q_t = strtr($q, 'aeuioc', $is_preg ? '......' : '______');
223
-		// si il reste au moins un char significatif...
224
-		if (preg_match(",[^'%_.],", $q_t)) {
225
-			$q = $q_t;
226
-		}
227
-	}
228
-
229
-	return $expression[$key] = [$methode, $q, $preg];
79
+    // ne calculer qu'une seule fois l'expression par hit
80
+    // (meme si utilisee dans plusieurs boucles)
81
+    static $expression = [];
82
+    $key = serialize([$recherche, $options['preg_flags']]);
83
+    if (isset($expression[$key])) {
84
+        return $expression[$key];
85
+    }
86
+
87
+    $u = $GLOBALS['meta']['pcre_u'];
88
+    if ($u and strpos($options['preg_flags'], (string) $u) === false) {
89
+        $options['preg_flags'] .= $u;
90
+    }
91
+    include_spip('inc/charsets');
92
+    $recherche = trim($recherche);
93
+
94
+    // retirer les + de +truc et les * de truc*
95
+    $recherche = preg_replace(',(^|\s)\+(\w),Uims', '$1$2', $recherche);
96
+    $recherche = preg_replace(',(\w)\*($|\s),Uims', '$1$2', $recherche);
97
+
98
+    $is_preg = false;
99
+    if (substr($recherche, 0, 1) == '/' and substr($recherche, -1, 1) == '/' and strlen($recherche) > 2) {
100
+        // c'est une preg
101
+        $recherche_trans = translitteration($recherche);
102
+        $preg = $recherche_trans . $options['preg_flags'];
103
+        $is_preg = true;
104
+    } else {
105
+        // s'il y a plusieurs mots il faut les chercher tous : oblige REGEXP,
106
+        // sauf ceux de moins de 4 lettres (on supprime ainsi 'le', 'les', 'un',
107
+        // 'une', 'des' ...)
108
+
109
+        // attention : plusieurs mots entre guillemets sont a rechercher tels quels
110
+        $recherche_trans = $recherche_mod = $recherche_org = $recherche;
111
+
112
+        // les expressions entre " " sont un mot a chercher tel quel
113
+        // -> on remplace les espaces par un \x1 et on enleve les guillemets
114
+        if (preg_match(',["][^"]+["],Uims', $recherche_mod, $matches)) {
115
+            foreach ($matches as $match) {
116
+                $word = preg_replace(',\s+,Uims', "\x1", $match);
117
+                $word = trim($word, '"');
118
+                $recherche_mod = str_replace($match, $word, $recherche_mod);
119
+            }
120
+        }
121
+
122
+        if (preg_match(',\s+,' . $u, $recherche_mod)) {
123
+            $is_preg = true;
124
+
125
+            $recherche_inter = '|';
126
+            $recherche_mots = explode(' ', $recherche_mod);
127
+            $min_long = defined('_RECHERCHE_MIN_CAR') ? _RECHERCHE_MIN_CAR : 4;
128
+            $petits_mots = true;
129
+            foreach ($recherche_mots as $mot) {
130
+                if (strlen($mot) >= $min_long) {
131
+                    // echapper les caracteres de regexp qui sont eventuellement dans la recherche
132
+                    $recherche_inter .= preg_quote($mot) . ' ';
133
+                    $petits_mots = false;
134
+                }
135
+            }
136
+            $recherche_inter = str_replace("\x1", '\s', $recherche_inter);
137
+
138
+            // mais on cherche quand même l'expression complète, même si elle
139
+            // comporte des mots de moins de quatre lettres
140
+            $recherche = trim(preg_replace(',\s+,' . $u, '|', $recherche_inter), '|');
141
+            if (!$recherche or $petits_mots) {
142
+                $recherche = preg_quote($recherche_org);
143
+            }
144
+            $recherche_trans = translitteration($recherche);
145
+        }
146
+
147
+        $preg = '/' . str_replace('/', '\\/', $recherche_trans) . '/' . $options['preg_flags'];
148
+    }
149
+
150
+    // Si la chaine est inactive, on va utiliser LIKE pour aller plus vite
151
+    // ou si l'expression reguliere est invalide
152
+    if (
153
+        !$is_preg
154
+        or (@preg_match($preg, '') === false)
155
+    ) {
156
+        $methode = 'LIKE';
157
+        $u = $GLOBALS['meta']['pcre_u'];
158
+
159
+        // echapper les % et _
160
+        $q = str_replace(['%', '_'], ['\%', '\_'], trim($recherche));
161
+
162
+        // eviter les parentheses et autres caractères qui interferent avec pcre par la suite (dans le preg_match_all) s'il y a des reponses
163
+        $recherche = preg_quote($recherche, '/');
164
+        $recherche_trans = translitteration($recherche);
165
+        $recherche_mod = $recherche_trans;
166
+
167
+        // les expressions entre " " sont un mot a chercher tel quel
168
+        // -> on remplace les espaces par un _ et on enleve les guillemets
169
+        // corriger le like dans le $q
170
+        if (preg_match(',["][^"]+["],Uims', $q, $matches)) {
171
+            foreach ($matches as $match) {
172
+                $word = preg_replace(',\s+,Uims', '_', $match);
173
+                $word = trim($word, '"');
174
+                $q = str_replace($match, $word, $q);
175
+            }
176
+        }
177
+        // corriger la regexp
178
+        if (preg_match(',["][^"]+["],Uims', $recherche_mod, $matches)) {
179
+            foreach ($matches as $match) {
180
+                $word = preg_replace(',\s+,Uims', '[\s]', $match);
181
+                $word = trim($word, '"');
182
+                $recherche_mod = str_replace($match, $word, $recherche_mod);
183
+            }
184
+        }
185
+        $q = sql_quote(
186
+            '%'
187
+            . preg_replace(',\s+,' . $u, '%', $q)
188
+            . '%'
189
+        );
190
+
191
+        $preg = '/' . preg_replace(',\s+,' . $u, '.+', trim($recherche_mod)) . '/' . $options['preg_flags'];
192
+    } else {
193
+        $methode = 'REGEXP';
194
+        $q = sql_quote(trim($recherche, '/'));
195
+    }
196
+
197
+    // tous les caracteres transliterables de $q sont remplaces par un joker
198
+    // permet de matcher en SQL meme si on est sensible aux accents (SQLite)
199
+    $q_t = $q;
200
+    for ($i = 0; $i < spip_strlen($q); $i++) {
201
+        $char = spip_substr($q, $i, 1);
202
+        if (
203
+            !is_ascii($char)
204
+            and $char_t = translitteration($char)
205
+            and $char_t !== $char
206
+        ) {
207
+            // on utilise ..?.? car le char utf peut etre encode sur 1, 2 ou 3 bytes
208
+            // mais c'est un pis aller cf #4354
209
+            $q_t = str_replace($char, $is_preg ? '..?.?' : '_', $q_t);
210
+        }
211
+    }
212
+
213
+    $q = $q_t;
214
+
215
+    // fix : SQLite 3 est sensible aux accents, on jokerise les caracteres
216
+    // les plus frequents qui peuvent etre accentues
217
+    // (oui c'est tres dicustable...)
218
+    if (
219
+        isset($GLOBALS['connexions'][$options['serveur'] ?: 0]['type'])
220
+        and strncmp($GLOBALS['connexions'][$options['serveur'] ?: 0]['type'], 'sqlite', 6) == 0
221
+    ) {
222
+        $q_t = strtr($q, 'aeuioc', $is_preg ? '......' : '______');
223
+        // si il reste au moins un char significatif...
224
+        if (preg_match(",[^'%_.],", $q_t)) {
225
+            $q = $q_t;
226
+        }
227
+    }
228
+
229
+    return $expression[$key] = [$methode, $q, $preg];
230 230
 }
231 231
 
232 232
 
@@ -253,142 +253,142 @@  discard block
 block discarded – undo
253 253
  * @return array
254 254
  */
255 255
 function recherche_en_base($recherche = '', $tables = null, $options = [], $serveur = '') {
256
-	include_spip('base/abstract_sql');
257
-
258
-	if (!is_array($tables)) {
259
-		$liste = liste_des_champs();
260
-
261
-		if (
262
-			is_string($tables)
263
-			and $tables != ''
264
-		) {
265
-			$toutes = [];
266
-			foreach (explode(',', $tables) as $t) {
267
-				$t = trim($t);
268
-				if (isset($liste[$t])) {
269
-					$toutes[$t] = $liste[$t];
270
-				}
271
-			}
272
-			$tables = $toutes;
273
-			unset($toutes);
274
-		} else {
275
-			$tables = $liste;
276
-		}
277
-	}
278
-
279
-	if (!strlen($recherche) or !count($tables)) {
280
-		return [];
281
-	}
282
-
283
-	include_spip('inc/autoriser');
284
-
285
-	// options par defaut
286
-	$options = array_merge(
287
-		[
288
-		'preg_flags' => 'UimsS',
289
-		'toutvoir' => false,
290
-		'champs' => false,
291
-		'score' => false,
292
-		'matches' => false,
293
-		'jointures' => false,
294
-		'serveur' => $serveur
295
-		],
296
-		$options
297
-	);
298
-
299
-	$results = [];
300
-
301
-	// Utiliser l'iterateur (DATA:recherche)
302
-	// pour recuperer les couples (id_objet, score)
303
-	// Le resultat est au format {
304
-	//      id1 = { 'score' => x, attrs => { } },
305
-	//      id2 = { 'score' => x, attrs => { } },
306
-	// }
307
-
308
-	include_spip('inc/recherche_to_array');
309
-
310
-	foreach ($tables as $table => $champs) {
311
-		# lock via memoization, si dispo
312
-		if (function_exists('cache_lock')) {
313
-			cache_lock($lock = _RECHERCHE_LOCK_KEY . ' ' . $table . ' ' . $recherche);
314
-		}
315
-
316
-		spip_timer('rech');
317
-
318
-		# TODO : ici plutot charger un iterateur via l'API iterateurs
319
-		$to_array = charger_fonction('recherche_to_array', 'inc');
320
-		$results[$table] = $to_array(
321
-			$recherche,
322
-			array_merge($options, ['table' => $table, 'champs' => $champs])
323
-		);
324
-		##var_dump($results[$table]);
325
-
326
-
327
-		spip_log(
328
-			"recherche $table ($recherche) : " . (is_countable($results[$table]) ? count($results[$table]) : 0) . ' resultats ' . spip_timer('rech'),
329
-			'recherche'
330
-		);
331
-
332
-		if (isset($lock)) {
333
-			cache_unlock($lock);
334
-		}
335
-	}
336
-
337
-	return $results;
256
+    include_spip('base/abstract_sql');
257
+
258
+    if (!is_array($tables)) {
259
+        $liste = liste_des_champs();
260
+
261
+        if (
262
+            is_string($tables)
263
+            and $tables != ''
264
+        ) {
265
+            $toutes = [];
266
+            foreach (explode(',', $tables) as $t) {
267
+                $t = trim($t);
268
+                if (isset($liste[$t])) {
269
+                    $toutes[$t] = $liste[$t];
270
+                }
271
+            }
272
+            $tables = $toutes;
273
+            unset($toutes);
274
+        } else {
275
+            $tables = $liste;
276
+        }
277
+    }
278
+
279
+    if (!strlen($recherche) or !count($tables)) {
280
+        return [];
281
+    }
282
+
283
+    include_spip('inc/autoriser');
284
+
285
+    // options par defaut
286
+    $options = array_merge(
287
+        [
288
+        'preg_flags' => 'UimsS',
289
+        'toutvoir' => false,
290
+        'champs' => false,
291
+        'score' => false,
292
+        'matches' => false,
293
+        'jointures' => false,
294
+        'serveur' => $serveur
295
+        ],
296
+        $options
297
+    );
298
+
299
+    $results = [];
300
+
301
+    // Utiliser l'iterateur (DATA:recherche)
302
+    // pour recuperer les couples (id_objet, score)
303
+    // Le resultat est au format {
304
+    //      id1 = { 'score' => x, attrs => { } },
305
+    //      id2 = { 'score' => x, attrs => { } },
306
+    // }
307
+
308
+    include_spip('inc/recherche_to_array');
309
+
310
+    foreach ($tables as $table => $champs) {
311
+        # lock via memoization, si dispo
312
+        if (function_exists('cache_lock')) {
313
+            cache_lock($lock = _RECHERCHE_LOCK_KEY . ' ' . $table . ' ' . $recherche);
314
+        }
315
+
316
+        spip_timer('rech');
317
+
318
+        # TODO : ici plutot charger un iterateur via l'API iterateurs
319
+        $to_array = charger_fonction('recherche_to_array', 'inc');
320
+        $results[$table] = $to_array(
321
+            $recherche,
322
+            array_merge($options, ['table' => $table, 'champs' => $champs])
323
+        );
324
+        ##var_dump($results[$table]);
325
+
326
+
327
+        spip_log(
328
+            "recherche $table ($recherche) : " . (is_countable($results[$table]) ? count($results[$table]) : 0) . ' resultats ' . spip_timer('rech'),
329
+            'recherche'
330
+        );
331
+
332
+        if (isset($lock)) {
333
+            cache_unlock($lock);
334
+        }
335
+    }
336
+
337
+    return $results;
338 338
 }
339 339
 
340 340
 
341 341
 // Effectue une recherche sur toutes les tables de la base de donnees
342 342
 function remplace_en_base($recherche = '', $remplace = null, $tables = null, $options = []) {
343
-	include_spip('inc/modifier');
344
-
345
-	// options par defaut
346
-	$options = array_merge(
347
-		[
348
-		'preg_flags' => 'UimsS',
349
-		'toutmodifier' => false
350
-		],
351
-		$options
352
-	);
353
-	$options['champs'] = true;
354
-
355
-
356
-	if (!is_array($tables)) {
357
-		$tables = liste_des_champs();
358
-	}
359
-
360
-	$results = recherche_en_base($recherche, $tables, $options);
361
-
362
-	$preg = '/' . str_replace('/', '\\/', $recherche) . '/' . $options['preg_flags'];
363
-
364
-	foreach ($results as $table => $r) {
365
-		$_id_table = id_table_objet($table);
366
-		foreach ($r as $id => $x) {
367
-			if (
368
-				$options['toutmodifier']
369
-				or autoriser('modifier', $table, $id)
370
-			) {
371
-				$modifs = [];
372
-				foreach ($x['champs'] as $key => $val) {
373
-					if ($key == $_id_table) {
374
-						continue;
375
-					}
376
-					$repl = preg_replace($preg, $remplace, $val);
377
-					if ($repl <> $val) {
378
-						$modifs[$key] = $repl;
379
-					}
380
-				}
381
-				if ($modifs) {
382
-					objet_modifier_champs(
383
-						$table,
384
-						$id,
385
-						[
386
-							'champs' => array_keys($modifs),
387
-						],
388
-						$modifs
389
-					);
390
-				}
391
-			}
392
-		}
393
-	}
343
+    include_spip('inc/modifier');
344
+
345
+    // options par defaut
346
+    $options = array_merge(
347
+        [
348
+        'preg_flags' => 'UimsS',
349
+        'toutmodifier' => false
350
+        ],
351
+        $options
352
+    );
353
+    $options['champs'] = true;
354
+
355
+
356
+    if (!is_array($tables)) {
357
+        $tables = liste_des_champs();
358
+    }
359
+
360
+    $results = recherche_en_base($recherche, $tables, $options);
361
+
362
+    $preg = '/' . str_replace('/', '\\/', $recherche) . '/' . $options['preg_flags'];
363
+
364
+    foreach ($results as $table => $r) {
365
+        $_id_table = id_table_objet($table);
366
+        foreach ($r as $id => $x) {
367
+            if (
368
+                $options['toutmodifier']
369
+                or autoriser('modifier', $table, $id)
370
+            ) {
371
+                $modifs = [];
372
+                foreach ($x['champs'] as $key => $val) {
373
+                    if ($key == $_id_table) {
374
+                        continue;
375
+                    }
376
+                    $repl = preg_replace($preg, $remplace, $val);
377
+                    if ($repl <> $val) {
378
+                        $modifs[$key] = $repl;
379
+                    }
380
+                }
381
+                if ($modifs) {
382
+                    objet_modifier_champs(
383
+                        $table,
384
+                        $id,
385
+                        [
386
+                            'champs' => array_keys($modifs),
387
+                        ],
388
+                        $modifs
389
+                    );
390
+                }
391
+            }
392
+        }
393
+    }
394 394
 }
Please login to merge, or discard this patch.
ecrire/inc/math.php 1 patch
Indentation   +97 added lines, -97 removed lines patch added patch discarded remove patch
@@ -12,7 +12,7 @@  discard block
 block discarded – undo
12 12
 
13 13
 //
14 14
 if (!defined('_ECRIRE_INC_VERSION')) {
15
-	return;
15
+    return;
16 16
 }
17 17
 
18 18
 //
@@ -21,54 +21,54 @@  discard block
 block discarded – undo
21 21
 
22 22
 function produire_image_math($tex) {
23 23
 
24
-	switch ($GLOBALS['traiter_math']) {
25
-		// Attention: mathml desactiv'e pour l'instant
26
-		case 'mathml':
27
-			$ext = '.xhtml';
28
-			$server = $GLOBALS['mathml_server'];
29
-			break;
30
-		case 'tex':
31
-			$ext = '.png';
32
-			$server = $GLOBALS['tex_server'];
33
-			break;
34
-		default:
35
-			return $tex;
36
-	}
37
-
38
-	// Regarder dans le repertoire local des images TeX et blocs MathML
39
-	if (!@is_dir($dir_tex = _DIR_VAR . 'cache-TeX/')) {
40
-		@mkdir($dir_tex, _SPIP_CHMOD);
41
-	}
42
-	$fichier = $dir_tex . md5(trim($tex)) . $ext;
43
-
44
-
45
-	if (!@file_exists($fichier)) {
46
-		// Aller chercher l'image sur le serveur
47
-		if ($server) {
48
-			spip_log($url = $server . '?' . rawurlencode($tex));
49
-			include_spip('inc/distant');
50
-			recuperer_url($url, ['file' => $fichier]);
51
-		}
52
-	}
53
-
54
-
55
-	// Composer la reponse selon presence ou non de l'image
56
-	$tex = entites_html($tex);
57
-	if (@file_exists($fichier)) {
58
-		// MathML
59
-		if ($GLOBALS['traiter_math'] == 'mathml') {
60
-			return implode('', file($fichier));
61
-		} // TeX
62
-		else {
63
-			[, , , $size] = @spip_getimagesize($fichier);
64
-			$alt = "alt=\"$tex\" title=\"$tex\"";
65
-
66
-			return "<img src=\"$fichier\" style=\"vertical-align:middle;\" $size $alt />";
67
-		}
68
-	} else // pas de fichier
69
-	{
70
-		return "<tt><span class='spip_code' dir='ltr'>$tex</span></tt>";
71
-	}
24
+    switch ($GLOBALS['traiter_math']) {
25
+        // Attention: mathml desactiv'e pour l'instant
26
+        case 'mathml':
27
+            $ext = '.xhtml';
28
+            $server = $GLOBALS['mathml_server'];
29
+            break;
30
+        case 'tex':
31
+            $ext = '.png';
32
+            $server = $GLOBALS['tex_server'];
33
+            break;
34
+        default:
35
+            return $tex;
36
+    }
37
+
38
+    // Regarder dans le repertoire local des images TeX et blocs MathML
39
+    if (!@is_dir($dir_tex = _DIR_VAR . 'cache-TeX/')) {
40
+        @mkdir($dir_tex, _SPIP_CHMOD);
41
+    }
42
+    $fichier = $dir_tex . md5(trim($tex)) . $ext;
43
+
44
+
45
+    if (!@file_exists($fichier)) {
46
+        // Aller chercher l'image sur le serveur
47
+        if ($server) {
48
+            spip_log($url = $server . '?' . rawurlencode($tex));
49
+            include_spip('inc/distant');
50
+            recuperer_url($url, ['file' => $fichier]);
51
+        }
52
+    }
53
+
54
+
55
+    // Composer la reponse selon presence ou non de l'image
56
+    $tex = entites_html($tex);
57
+    if (@file_exists($fichier)) {
58
+        // MathML
59
+        if ($GLOBALS['traiter_math'] == 'mathml') {
60
+            return implode('', file($fichier));
61
+        } // TeX
62
+        else {
63
+            [, , , $size] = @spip_getimagesize($fichier);
64
+            $alt = "alt=\"$tex\" title=\"$tex\"";
65
+
66
+            return "<img src=\"$fichier\" style=\"vertical-align:middle;\" $size $alt />";
67
+        }
68
+    } else // pas de fichier
69
+    {
70
+        return "<tt><span class='spip_code' dir='ltr'>$tex</span></tt>";
71
+    }
72 72
 }
73 73
 
74 74
 
@@ -103,52 +103,52 @@  discard block
 block discarded – undo
103 103
  */
104 104
 function traiter_math($letexte, $source = '', $defaire_amp = false) {
105 105
 
106
-	$texte_a_voir = $letexte;
107
-	while (($debut = strpos($texte_a_voir, '<math>')) !== false) {
108
-		if (!$fin = strpos($texte_a_voir, '</math>')) {
109
-			$fin = strlen($texte_a_voir);
110
-		}
111
-
112
-		$texte_debut = substr($texte_a_voir, 0, $debut);
113
-		$texte_milieu = substr(
114
-			$texte_a_voir,
115
-			$debut + strlen('<math>'),
116
-			$fin - $debut - strlen('<math>')
117
-		);
118
-		$texte_fin = substr(
119
-			$texte_a_voir,
120
-			$fin + strlen('</math>'),
121
-			strlen($texte_a_voir)
122
-		);
123
-
124
-		// Les doubles $$x^2$$ en mode 'div'
125
-		while ((preg_match(',[$][$]([^$]+)[$][$],', $texte_milieu, $regs))) {
126
-			$expression = $regs[1];
127
-			if ($defaire_amp) {
128
-				$expression = str_replace('&amp;', '&', $expression);
129
-			}
130
-			$echap = "\n<p class=\"spip\" style=\"text-align: center;\">" . produire_image_math($expression) . "</p>\n";
131
-			$pos = strpos($texte_milieu, (string) $regs[0]);
132
-			$texte_milieu = substr($texte_milieu, 0, $pos)
133
-				. code_echappement($echap, $source)
134
-				. substr($texte_milieu, $pos + strlen($regs[0]));
135
-		}
136
-
137
-		// Les simples $x^2$ en mode 'span'
138
-		while ((preg_match(',[$]([^$]+)[$],', $texte_milieu, $regs))) {
139
-			$expression = $regs[1];
140
-			if ($defaire_amp) {
141
-				$expression = str_replace('&amp;', '&', $expression);
142
-			}
143
-			$echap = produire_image_math($expression);
144
-			$pos = strpos($texte_milieu, (string) $regs[0]);
145
-			$texte_milieu = substr($texte_milieu, 0, $pos)
146
-				. code_echappement($echap, $source)
147
-				. substr($texte_milieu, $pos + strlen($regs[0]));
148
-		}
149
-
150
-		$texte_a_voir = $texte_debut . $texte_milieu . $texte_fin;
151
-	}
152
-
153
-	return $texte_a_voir;
106
+    $texte_a_voir = $letexte;
107
+    while (($debut = strpos($texte_a_voir, '<math>')) !== false) {
108
+        if (!$fin = strpos($texte_a_voir, '</math>')) {
109
+            $fin = strlen($texte_a_voir);
110
+        }
111
+
112
+        $texte_debut = substr($texte_a_voir, 0, $debut);
113
+        $texte_milieu = substr(
114
+            $texte_a_voir,
115
+            $debut + strlen('<math>'),
116
+            $fin - $debut - strlen('<math>')
117
+        );
118
+        $texte_fin = substr(
119
+            $texte_a_voir,
120
+            $fin + strlen('</math>'),
121
+            strlen($texte_a_voir)
122
+        );
123
+
124
+        // Les doubles $$x^2$$ en mode 'div'
125
+        while ((preg_match(',[$][$]([^$]+)[$][$],', $texte_milieu, $regs))) {
126
+            $expression = $regs[1];
127
+            if ($defaire_amp) {
128
+                $expression = str_replace('&amp;', '&', $expression);
129
+            }
130
+            $echap = "\n<p class=\"spip\" style=\"text-align: center;\">" . produire_image_math($expression) . "</p>\n";
131
+            $pos = strpos($texte_milieu, (string) $regs[0]);
132
+            $texte_milieu = substr($texte_milieu, 0, $pos)
133
+                . code_echappement($echap, $source)
134
+                . substr($texte_milieu, $pos + strlen($regs[0]));
135
+        }
136
+
137
+        // Les simples $x^2$ en mode 'span'
138
+        while ((preg_match(',[$]([^$]+)[$],', $texte_milieu, $regs))) {
139
+            $expression = $regs[1];
140
+            if ($defaire_amp) {
141
+                $expression = str_replace('&amp;', '&', $expression);
142
+            }
143
+            $echap = produire_image_math($expression);
144
+            $pos = strpos($texte_milieu, (string) $regs[0]);
145
+            $texte_milieu = substr($texte_milieu, 0, $pos)
146
+                . code_echappement($echap, $source)
147
+                . substr($texte_milieu, $pos + strlen($regs[0]));
148
+        }
149
+
150
+        $texte_a_voir = $texte_debut . $texte_milieu . $texte_fin;
151
+    }
152
+
153
+    return $texte_a_voir;
154 154
 }
Please login to merge, or discard this patch.
ecrire/inc/layer.php 1 patch
Indentation   +109 added lines, -109 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
 /**
@@ -26,70 +26,70 @@  discard block
 block discarded – undo
26 26
  * @return string Code HTML du cadre dépliable
27 27
  **/
28 28
 function cadre_depliable($icone, $titre, $deplie, $contenu, $ids = '', $style_cadre = 'r') {
29
-	$bouton = bouton_block_depliable($titre, $deplie, $ids);
30
-
31
-	return
32
-		debut_cadre($style_cadre, $icone, '', $bouton, '', '', false)
33
-		. debut_block_depliable($deplie, $ids)
34
-		. "<div class='cadre_padding'>\n"
35
-		. $contenu
36
-		. "</div>\n"
37
-		. fin_block()
38
-		. fin_cadre();
29
+    $bouton = bouton_block_depliable($titre, $deplie, $ids);
30
+
31
+    return
32
+        debut_cadre($style_cadre, $icone, '', $bouton, '', '', false)
33
+        . debut_block_depliable($deplie, $ids)
34
+        . "<div class='cadre_padding'>\n"
35
+        . $contenu
36
+        . "</div>\n"
37
+        . fin_block()
38
+        . fin_cadre();
39 39
 }
40 40
 
41 41
 function block_parfois_visible($nom, $invite, $masque, $style = '', $visible = false) {
42
-	return "\n"
43
-	. bouton_block_depliable($invite, $visible, $nom)
44
-	. debut_block_depliable($visible, $nom)
45
-	. $masque
46
-	. fin_block();
42
+    return "\n"
43
+    . bouton_block_depliable($invite, $visible, $nom)
44
+    . debut_block_depliable($visible, $nom)
45
+    . $masque
46
+    . fin_block();
47 47
 }
48 48
 
49 49
 function debut_block_depliable($deplie, $id = '') {
50
-	$class = ' blocdeplie';
51
-	// si on n'accepte pas js, ne pas fermer
52
-	if (!$deplie) {
53
-		$class = ' blocreplie';
54
-	}
50
+    $class = ' blocdeplie';
51
+    // si on n'accepte pas js, ne pas fermer
52
+    if (!$deplie) {
53
+        $class = ' blocreplie';
54
+    }
55 55
 
56
-	return '<div ' . ($id ? "id='$id' " : '') . "class='bloc_depliable$class'>";
56
+    return '<div ' . ($id ? "id='$id' " : '') . "class='bloc_depliable$class'>";
57 57
 }
58 58
 
59 59
 function fin_block() {
60
-	return "<div class='nettoyeur'></div>\n</div>";
60
+    return "<div class='nettoyeur'></div>\n</div>";
61 61
 }
62 62
 
63 63
 // $texte : texte du bouton
64 64
 // $deplie : true (deplie) ou false (plie) ou -1 (inactif) ou 'incertain' pour que le bouton s'auto init au chargement de la page
65 65
 // $ids : id des div lies au bouton (facultatif, par defaut c'est le div.bloc_depliable qui suit)
66 66
 function bouton_block_depliable($texte, $deplie, $ids = '') {
67
-	$bouton_id = 'b' . substr(md5($texte . microtime()), 0, 8);
68
-
69
-	$class = ($deplie === true) ? ' deplie' : (($deplie == -1) ? ' impliable' : ' replie');
70
-	if (strlen($ids)) {
71
-		$cible = explode(',', $ids);
72
-		$cible = '#' . implode(',#', $cible);
73
-	} else {
74
-		$cible = "#$bouton_id + div.bloc_depliable";
75
-	}
76
-
77
-	$b = (strpos($texte, '<h') === false ? 'h3' : 'div');
78
-
79
-	return "<$b "
80
-	. ($bouton_id ? "id='$bouton_id' " : '')
81
-	. "class='titrem$class'"
82
-	. (($deplie === -1)
83
-		? ''
84
-		: " onmouseover=\"jQuery(this).depliant('$cible');\""
85
-	)
86
-	. '>'
87
-	// une ancre pour rendre accessible au clavier le depliage du sous bloc
88
-	. "<a href='#' onclick=\"return jQuery(this).depliant_clicancre('$cible');\" class='titremancre'></a>"
89
-	. "$texte</$b>"
90
-	. http_script(($deplie === 'incertain')
91
-		? "jQuery(function($){if ($('$cible').is(':visible')) { $('#$bouton_id').addClass('deplie').removeClass('replie'); }});"
92
-		: '');
67
+    $bouton_id = 'b' . substr(md5($texte . microtime()), 0, 8);
68
+
69
+    $class = ($deplie === true) ? ' deplie' : (($deplie == -1) ? ' impliable' : ' replie');
70
+    if (strlen($ids)) {
71
+        $cible = explode(',', $ids);
72
+        $cible = '#' . implode(',#', $cible);
73
+    } else {
74
+        $cible = "#$bouton_id + div.bloc_depliable";
75
+    }
76
+
77
+    $b = (strpos($texte, '<h') === false ? 'h3' : 'div');
78
+
79
+    return "<$b "
80
+    . ($bouton_id ? "id='$bouton_id' " : '')
81
+    . "class='titrem$class'"
82
+    . (($deplie === -1)
83
+        ? ''
84
+        : " onmouseover=\"jQuery(this).depliant('$cible');\""
85
+    )
86
+    . '>'
87
+    // une ancre pour rendre accessible au clavier le depliage du sous bloc
88
+    . "<a href='#' onclick=\"return jQuery(this).depliant_clicancre('$cible');\" class='titremancre'></a>"
89
+    . "$texte</$b>"
90
+    . http_script(($deplie === 'incertain')
91
+        ? "jQuery(function($){if ($('$cible').is(':visible')) { $('#$bouton_id').addClass('deplie').removeClass('replie'); }});"
92
+        : '');
93 93
 }
94 94
 
95 95
 //
@@ -97,66 +97,66 @@  discard block
 block discarded – undo
97 97
 //
98 98
 function verif_butineur() {
99 99
 
100
-	preg_match(',^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$,', $_SERVER['HTTP_USER_AGENT'], $match);
101
-	$GLOBALS['browser_name'] = $match[1];
102
-	$GLOBALS['browser_version'] = $match[2];
103
-	$GLOBALS['browser_description'] = $match[3];
104
-	$GLOBALS['browser_layer'] = ' '; // compat avec vieux scripts qui testent la valeur
105
-	$GLOBALS['browser_barre'] = '';
106
-
107
-	if (!preg_match(',opera,i', $GLOBALS['browser_description']) && preg_match(',opera,i', $GLOBALS['browser_name'])) {
108
-		$GLOBALS['browser_name'] = 'Opera';
109
-		$GLOBALS['browser_version'] = $match[2];
110
-		$GLOBALS['browser_barre'] = ($GLOBALS['browser_version'] >= 8.5);
111
-	} else {
112
-		if (preg_match(',opera,i', $GLOBALS['browser_description'])) {
113
-			preg_match(',Opera ([^\ ]*),i', $GLOBALS['browser_description'], $match);
114
-			$GLOBALS['browser_name'] = 'Opera';
115
-			$GLOBALS['browser_version'] = $match[1];
116
-			$GLOBALS['browser_barre'] = ($GLOBALS['browser_version'] >= 8.5);
117
-		} else {
118
-			if (preg_match(',msie,i', $GLOBALS['browser_description'])) {
119
-				preg_match(',MSIE ([^;]*),i', $GLOBALS['browser_description'], $match);
120
-				$GLOBALS['browser_name'] = 'MSIE';
121
-				$GLOBALS['browser_version'] = $match[1];
122
-				$GLOBALS['browser_barre'] = ($GLOBALS['browser_version'] >= 5.5);
123
-			} else {
124
-				if (
125
-					preg_match(',KHTML,i', $GLOBALS['browser_description']) &&
126
-					preg_match(',Safari/([^;]*),', $GLOBALS['browser_description'], $match)
127
-				) {
128
-					$GLOBALS['browser_name'] = 'Safari';
129
-					$GLOBALS['browser_version'] = $match[1];
130
-					$GLOBALS['browser_barre'] = ($GLOBALS['browser_version'] >= 5.0);
131
-				} else {
132
-					if (preg_match(',mozilla,i', $GLOBALS['browser_name']) and $GLOBALS['browser_version'] >= 5) {
133
-						// Numero de version pour Mozilla "authentique"
134
-						if (preg_match(',rv:([0-9]+\.[0-9]+),', $GLOBALS['browser_description'], $match)) {
135
-							$GLOBALS['browser_rev'] = doubleval($match[1]);
136
-						} // Autres Gecko => equivalents 1.4 par defaut (Galeon, etc.)
137
-						else {
138
-							if (
139
-								strpos($GLOBALS['browser_description'], 'Gecko') and !strpos(
140
-									$GLOBALS['browser_description'],
141
-									'KHTML'
142
-								)
143
-							) {
144
-								$GLOBALS['browser_rev'] = 1.4;
145
-							} // Machins quelconques => equivalents 1.0 par defaut (Konqueror, etc.)
146
-							else {
147
-								$GLOBALS['browser_rev'] = 1.0;
148
-							}
149
-						}
150
-						$GLOBALS['browser_barre'] = $GLOBALS['browser_rev'] >= 1.3;
151
-					}
152
-				}
153
-			}
154
-		}
155
-	}
156
-
157
-	if (!$GLOBALS['browser_name']) {
158
-		$GLOBALS['browser_name'] = 'Mozilla';
159
-	}
100
+    preg_match(',^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$,', $_SERVER['HTTP_USER_AGENT'], $match);
101
+    $GLOBALS['browser_name'] = $match[1];
102
+    $GLOBALS['browser_version'] = $match[2];
103
+    $GLOBALS['browser_description'] = $match[3];
104
+    $GLOBALS['browser_layer'] = ' '; // compat avec vieux scripts qui testent la valeur
105
+    $GLOBALS['browser_barre'] = '';
106
+
107
+    if (!preg_match(',opera,i', $GLOBALS['browser_description']) && preg_match(',opera,i', $GLOBALS['browser_name'])) {
108
+        $GLOBALS['browser_name'] = 'Opera';
109
+        $GLOBALS['browser_version'] = $match[2];
110
+        $GLOBALS['browser_barre'] = ($GLOBALS['browser_version'] >= 8.5);
111
+    } else {
112
+        if (preg_match(',opera,i', $GLOBALS['browser_description'])) {
113
+            preg_match(',Opera ([^\ ]*),i', $GLOBALS['browser_description'], $match);
114
+            $GLOBALS['browser_name'] = 'Opera';
115
+            $GLOBALS['browser_version'] = $match[1];
116
+            $GLOBALS['browser_barre'] = ($GLOBALS['browser_version'] >= 8.5);
117
+        } else {
118
+            if (preg_match(',msie,i', $GLOBALS['browser_description'])) {
119
+                preg_match(',MSIE ([^;]*),i', $GLOBALS['browser_description'], $match);
120
+                $GLOBALS['browser_name'] = 'MSIE';
121
+                $GLOBALS['browser_version'] = $match[1];
122
+                $GLOBALS['browser_barre'] = ($GLOBALS['browser_version'] >= 5.5);
123
+            } else {
124
+                if (
125
+                    preg_match(',KHTML,i', $GLOBALS['browser_description']) &&
126
+                    preg_match(',Safari/([^;]*),', $GLOBALS['browser_description'], $match)
127
+                ) {
128
+                    $GLOBALS['browser_name'] = 'Safari';
129
+                    $GLOBALS['browser_version'] = $match[1];
130
+                    $GLOBALS['browser_barre'] = ($GLOBALS['browser_version'] >= 5.0);
131
+                } else {
132
+                    if (preg_match(',mozilla,i', $GLOBALS['browser_name']) and $GLOBALS['browser_version'] >= 5) {
133
+                        // Numero de version pour Mozilla "authentique"
134
+                        if (preg_match(',rv:([0-9]+\.[0-9]+),', $GLOBALS['browser_description'], $match)) {
135
+                            $GLOBALS['browser_rev'] = doubleval($match[1]);
136
+                        } // Autres Gecko => equivalents 1.4 par defaut (Galeon, etc.)
137
+                        else {
138
+                            if (
139
+                                strpos($GLOBALS['browser_description'], 'Gecko') and !strpos(
140
+                                    $GLOBALS['browser_description'],
141
+                                    'KHTML'
142
+                                )
143
+                            ) {
144
+                                $GLOBALS['browser_rev'] = 1.4;
145
+                            } // Machins quelconques => equivalents 1.0 par defaut (Konqueror, etc.)
146
+                            else {
147
+                                $GLOBALS['browser_rev'] = 1.0;
148
+                            }
149
+                        }
150
+                        $GLOBALS['browser_barre'] = $GLOBALS['browser_rev'] >= 1.3;
151
+                    }
152
+                }
153
+            }
154
+        }
155
+    }
156
+
157
+    if (!$GLOBALS['browser_name']) {
158
+        $GLOBALS['browser_name'] = 'Mozilla';
159
+    }
160 160
 }
161 161
 
162 162
 verif_butineur();
Please login to merge, or discard this patch.
ecrire/inc/meta.php 1 patch
Indentation   +197 added lines, -197 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
 // Les parametres generaux du site sont dans une table SQL;
@@ -27,51 +27,51 @@  discard block
 block discarded – undo
27 27
 define('_META_CACHE_TIME', 1 << 24);
28 28
 
29 29
 function inc_meta_dist($table = 'meta') {
30
-	$new = null;
31
-	// Lire les meta, en cache si present, valide et lisible
32
-	// en cas d'install ne pas faire confiance au meta_cache eventuel
33
-	$cache = cache_meta($table);
30
+    $new = null;
31
+    // Lire les meta, en cache si present, valide et lisible
32
+    // en cas d'install ne pas faire confiance au meta_cache eventuel
33
+    $cache = cache_meta($table);
34 34
 
35
-	if (
36
-		(!$exec = _request('exec') or !autoriser_sans_cookie($exec))
37
-		and $new = jeune_fichier($cache, _META_CACHE_TIME)
38
-		and lire_fichier_securise($cache, $meta)
39
-		and $meta = @unserialize($meta)
40
-	) {
41
-		$GLOBALS[$table] = $meta;
42
-	}
35
+    if (
36
+        (!$exec = _request('exec') or !autoriser_sans_cookie($exec))
37
+        and $new = jeune_fichier($cache, _META_CACHE_TIME)
38
+        and lire_fichier_securise($cache, $meta)
39
+        and $meta = @unserialize($meta)
40
+    ) {
41
+        $GLOBALS[$table] = $meta;
42
+    }
43 43
 
44
-	if (
45
-		isset($GLOBALS[$table]['touch'])
46
-		and ($GLOBALS[$table]['touch'] < time() - _META_CACHE_TIME)
47
-	) {
48
-		$GLOBALS[$table] = [];
49
-	}
50
-	// sinon lire en base
51
-	if (!$GLOBALS[$table]) {
52
-		$new = !lire_metas($table);
53
-	}
44
+    if (
45
+        isset($GLOBALS[$table]['touch'])
46
+        and ($GLOBALS[$table]['touch'] < time() - _META_CACHE_TIME)
47
+    ) {
48
+        $GLOBALS[$table] = [];
49
+    }
50
+    // sinon lire en base
51
+    if (!$GLOBALS[$table]) {
52
+        $new = !lire_metas($table);
53
+    }
54 54
 
55
-	// renouveller l'alea general si trop vieux ou sur demande explicite
56
-	if (
57
-		(test_espace_prive() || isset($_GET['renouvelle_alea']))
58
-		and $GLOBALS[$table]
59
-		and (time() > _RENOUVELLE_ALEA + ($GLOBALS['meta']['alea_ephemere_date'] ?? 0))
60
-	) {
61
-		// si on n'a pas l'acces en ecriture sur le cache,
62
-		// ne pas renouveller l'alea sinon le cache devient faux
63
-		if (supprimer_fichier($cache)) {
64
-			include_spip('inc/acces');
65
-			renouvelle_alea();
66
-			$new = false;
67
-		} else {
68
-			spip_log("impossible d'ecrire dans " . $cache);
69
-		}
70
-	}
71
-	// et refaire le cache si on a du lire en base
72
-	if (!$new) {
73
-		touch_meta(false, $table);
74
-	}
55
+    // renouveller l'alea general si trop vieux ou sur demande explicite
56
+    if (
57
+        (test_espace_prive() || isset($_GET['renouvelle_alea']))
58
+        and $GLOBALS[$table]
59
+        and (time() > _RENOUVELLE_ALEA + ($GLOBALS['meta']['alea_ephemere_date'] ?? 0))
60
+    ) {
61
+        // si on n'a pas l'acces en ecriture sur le cache,
62
+        // ne pas renouveller l'alea sinon le cache devient faux
63
+        if (supprimer_fichier($cache)) {
64
+            include_spip('inc/acces');
65
+            renouvelle_alea();
66
+            $new = false;
67
+        } else {
68
+            spip_log("impossible d'ecrire dans " . $cache);
69
+        }
70
+    }
71
+    // et refaire le cache si on a du lire en base
72
+    if (!$new) {
73
+        touch_meta(false, $table);
74
+    }
75 75
 }
76 76
 
77 77
 // fonctions aussi appelees a l'install ==> spip_query en premiere requete
@@ -79,39 +79,39 @@  discard block
 block discarded – undo
79 79
 
80 80
 function lire_metas($table = 'meta') {
81 81
 
82
-	if ($result = spip_query("SELECT nom,valeur FROM spip_$table")) {
83
-		include_spip('base/abstract_sql');
84
-		$GLOBALS[$table] = [];
85
-		while ($row = sql_fetch($result)) {
86
-			$GLOBALS[$table][$row['nom']] = $row['valeur'];
87
-		}
88
-		sql_free($result);
82
+    if ($result = spip_query("SELECT nom,valeur FROM spip_$table")) {
83
+        include_spip('base/abstract_sql');
84
+        $GLOBALS[$table] = [];
85
+        while ($row = sql_fetch($result)) {
86
+            $GLOBALS[$table][$row['nom']] = $row['valeur'];
87
+        }
88
+        sql_free($result);
89 89
 
90
-		if (
91
-			!isset($GLOBALS[$table]['charset'])
92
-			or !$GLOBALS[$table]['charset']
93
-			or $GLOBALS[$table]['charset'] == '_DEFAULT_CHARSET' // hum, correction d'un bug ayant abime quelques install
94
-		) {
95
-			ecrire_meta('charset', _DEFAULT_CHARSET, null, $table);
96
-		}
90
+        if (
91
+            !isset($GLOBALS[$table]['charset'])
92
+            or !$GLOBALS[$table]['charset']
93
+            or $GLOBALS[$table]['charset'] == '_DEFAULT_CHARSET' // hum, correction d'un bug ayant abime quelques install
94
+        ) {
95
+            ecrire_meta('charset', _DEFAULT_CHARSET, null, $table);
96
+        }
97 97
 
98
-		// noter cette table de configuration dans les meta de SPIP
99
-		if ($table !== 'meta') {
100
-			$liste = [];
101
-			if (isset($GLOBALS['meta']['tables_config'])) {
102
-				$liste = unserialize($GLOBALS['meta']['tables_config']);
103
-			}
104
-			if (!$liste) {
105
-				$liste = [];
106
-			}
107
-			if (!in_array($table, $liste)) {
108
-				$liste[] = $table;
109
-				ecrire_meta('tables_config', serialize($liste));
110
-			}
111
-		}
112
-	}
98
+        // noter cette table de configuration dans les meta de SPIP
99
+        if ($table !== 'meta') {
100
+            $liste = [];
101
+            if (isset($GLOBALS['meta']['tables_config'])) {
102
+                $liste = unserialize($GLOBALS['meta']['tables_config']);
103
+            }
104
+            if (!$liste) {
105
+                $liste = [];
106
+            }
107
+            if (!in_array($table, $liste)) {
108
+                $liste[] = $table;
109
+                ecrire_meta('tables_config', serialize($liste));
110
+            }
111
+        }
112
+    }
113 113
 
114
-	return $GLOBALS[$table] ?? null;
114
+    return $GLOBALS[$table] ?? null;
115 115
 }
116 116
 
117 117
 
@@ -125,22 +125,22 @@  discard block
 block discarded – undo
125 125
  *      Table SQL d'enregistrement des meta.
126 126
  **/
127 127
 function touch_meta($antidate = false, $table = 'meta') {
128
-	$file = cache_meta($table);
129
-	if (!$antidate or !@touch($file, $antidate)) {
130
-		$r = $GLOBALS[$table] ?? [];
131
-		if ($table == 'meta') {
132
-			unset($r['alea_ephemere']);
133
-			unset($r['alea_ephemere_ancien']);
134
-			// le secret du site est utilise pour encoder les contextes ajax que l'on considere fiables
135
-			// mais le sortir deu cache meta implique une requete sql des qu'on a un form dynamique
136
-			// meme si son squelette est en cache
137
-			//unset($r['secret_du_site']);
138
-			if ($antidate) {
139
-				$r['touch'] = $antidate;
140
-			}
141
-		}
142
-		ecrire_fichier_securise($file, serialize($r));
143
-	}
128
+    $file = cache_meta($table);
129
+    if (!$antidate or !@touch($file, $antidate)) {
130
+        $r = $GLOBALS[$table] ?? [];
131
+        if ($table == 'meta') {
132
+            unset($r['alea_ephemere']);
133
+            unset($r['alea_ephemere_ancien']);
134
+            // le secret du site est utilise pour encoder les contextes ajax que l'on considere fiables
135
+            // mais le sortir deu cache meta implique une requete sql des qu'on a un form dynamique
136
+            // meme si son squelette est en cache
137
+            //unset($r['secret_du_site']);
138
+            if ($antidate) {
139
+                $r['touch'] = $antidate;
140
+            }
141
+        }
142
+        ecrire_fichier_securise($file, serialize($r));
143
+    }
144 144
 }
145 145
 
146 146
 /**
@@ -156,21 +156,21 @@  discard block
 block discarded – undo
156 156
  *     Table SQL d'enregistrement de la meta.
157 157
  **/
158 158
 function effacer_meta($nom, $table = 'meta') {
159
-	// section critique sur le cache:
160
-	// l'invalider avant et apres la MAJ de la BD
161
-	// c'est un peu moins bien qu'un vrai verrou mais ca suffira
162
-	// et utiliser une statique pour eviter des acces disques a repetition
163
-	static $touch = [];
164
-	$antidate = time() - (_META_CACHE_TIME << 4);
165
-	if (!isset($touch[$table])) {
166
-		touch_meta($antidate, $table);
167
-	}
168
-	sql_delete('spip_' . $table, "nom='$nom'", '', 'continue');
169
-	unset($GLOBALS[$table][$nom]);
170
-	if (!isset($touch[$table])) {
171
-		touch_meta($antidate, $table);
172
-		$touch[$table] = false;
173
-	}
159
+    // section critique sur le cache:
160
+    // l'invalider avant et apres la MAJ de la BD
161
+    // c'est un peu moins bien qu'un vrai verrou mais ca suffira
162
+    // et utiliser une statique pour eviter des acces disques a repetition
163
+    static $touch = [];
164
+    $antidate = time() - (_META_CACHE_TIME << 4);
165
+    if (!isset($touch[$table])) {
166
+        touch_meta($antidate, $table);
167
+    }
168
+    sql_delete('spip_' . $table, "nom='$nom'", '', 'continue');
169
+    unset($GLOBALS[$table][$nom]);
170
+    if (!isset($touch[$table])) {
171
+        touch_meta($antidate, $table);
172
+        $touch[$table] = false;
173
+    }
174 174
 }
175 175
 
176 176
 /**
@@ -191,53 +191,53 @@  discard block
 block discarded – undo
191 191
  **/
192 192
 function ecrire_meta($nom, $valeur, $importable = null, $table = 'meta') {
193 193
 
194
-	static $touch = [];
195
-	if (!$nom) {
196
-		return;
197
-	}
198
-	include_spip('base/abstract_sql');
199
-	$res = sql_select('*', 'spip_' . $table, 'nom=' . sql_quote($nom), '', '', '', '', '', 'continue');
200
-	// table pas encore installee, travailler en php seulement
201
-	if (!$res) {
202
-		$GLOBALS[$table][$nom] = $valeur;
194
+    static $touch = [];
195
+    if (!$nom) {
196
+        return;
197
+    }
198
+    include_spip('base/abstract_sql');
199
+    $res = sql_select('*', 'spip_' . $table, 'nom=' . sql_quote($nom), '', '', '', '', '', 'continue');
200
+    // table pas encore installee, travailler en php seulement
201
+    if (!$res) {
202
+        $GLOBALS[$table][$nom] = $valeur;
203 203
 
204
-		return;
205
-	}
206
-	$row = sql_fetch($res);
207
-	sql_free($res);
204
+        return;
205
+    }
206
+    $row = sql_fetch($res);
207
+    sql_free($res);
208 208
 
209
-	// ne pas invalider le cache si affectation a l'identique
210
-	// (tant pis si impt aurait du changer)
211
-	if (
212
-		$row and $valeur == $row['valeur']
213
-		and isset($GLOBALS[$table][$nom])
214
-		and $GLOBALS[$table][$nom] == $valeur
215
-	) {
216
-		return;
217
-	}
209
+    // ne pas invalider le cache si affectation a l'identique
210
+    // (tant pis si impt aurait du changer)
211
+    if (
212
+        $row and $valeur == $row['valeur']
213
+        and isset($GLOBALS[$table][$nom])
214
+        and $GLOBALS[$table][$nom] == $valeur
215
+    ) {
216
+        return;
217
+    }
218 218
 
219
-	$GLOBALS[$table][$nom] = $valeur;
220
-	// cf effacer pour comprendre le double touch
221
-	$antidate = time() - (_META_CACHE_TIME << 1);
222
-	if (!isset($touch[$table])) {
223
-		touch_meta($antidate, $table);
224
-	}
225
-	$r = ['nom' => sql_quote($nom, '', 'text'), 'valeur' => sql_quote($valeur, '', 'text')];
226
-	// Gaffe aux tables sans impt (vieilles versions de SPIP notamment)
227
-	// ici on utilise pas sql_updateq et sql_insertq pour ne pas provoquer trop tot
228
-	// de lecture des descriptions des tables
229
-	if ($importable and isset($row['impt'])) {
230
-		$r['impt'] = sql_quote($importable, '', 'text');
231
-	}
232
-	if ($row) {
233
-		sql_update('spip_' . $table, $r, 'nom=' . sql_quote($nom));
234
-	} else {
235
-		sql_insert('spip_' . $table, '(' . join(',', array_keys($r)) . ')', '(' . join(',', array_values($r)) . ')');
236
-	}
237
-	if (!isset($touch[$table])) {
238
-		touch_meta($antidate, $table);
239
-		$touch[$table] = false;
240
-	}
219
+    $GLOBALS[$table][$nom] = $valeur;
220
+    // cf effacer pour comprendre le double touch
221
+    $antidate = time() - (_META_CACHE_TIME << 1);
222
+    if (!isset($touch[$table])) {
223
+        touch_meta($antidate, $table);
224
+    }
225
+    $r = ['nom' => sql_quote($nom, '', 'text'), 'valeur' => sql_quote($valeur, '', 'text')];
226
+    // Gaffe aux tables sans impt (vieilles versions de SPIP notamment)
227
+    // ici on utilise pas sql_updateq et sql_insertq pour ne pas provoquer trop tot
228
+    // de lecture des descriptions des tables
229
+    if ($importable and isset($row['impt'])) {
230
+        $r['impt'] = sql_quote($importable, '', 'text');
231
+    }
232
+    if ($row) {
233
+        sql_update('spip_' . $table, $r, 'nom=' . sql_quote($nom));
234
+    } else {
235
+        sql_insert('spip_' . $table, '(' . join(',', array_keys($r)) . ')', '(' . join(',', array_values($r)) . ')');
236
+    }
237
+    if (!isset($touch[$table])) {
238
+        touch_meta($antidate, $table);
239
+        $touch[$table] = false;
240
+    }
241 241
 }
242 242
 
243 243
 /**
@@ -249,7 +249,7 @@  discard block
 block discarded – undo
249 249
  *     Nom du fichier cache
250 250
  **/
251 251
 function cache_meta($table = 'meta') {
252
-	return ($table == 'meta') ? _FILE_META : (_DIR_CACHE . $table . '.php');
252
+    return ($table == 'meta') ? _FILE_META : (_DIR_CACHE . $table . '.php');
253 253
 }
254 254
 
255 255
 /**
@@ -258,14 +258,14 @@  discard block
 block discarded – undo
258 258
  * @param string $table
259 259
  */
260 260
 function installer_table_meta($table) {
261
-	$trouver_table = charger_fonction('trouver_table', 'base');
262
-	if (!$trouver_table("spip_$table")) {
263
-		include_spip('base/auxiliaires');
264
-		include_spip('base/create');
265
-		creer_ou_upgrader_table("spip_$table", $GLOBALS['tables_auxiliaires']['spip_meta'], false, false);
266
-		$trouver_table('');
267
-	}
268
-	lire_metas($table);
261
+    $trouver_table = charger_fonction('trouver_table', 'base');
262
+    if (!$trouver_table("spip_$table")) {
263
+        include_spip('base/auxiliaires');
264
+        include_spip('base/create');
265
+        creer_ou_upgrader_table("spip_$table", $GLOBALS['tables_auxiliaires']['spip_meta'], false, false);
266
+        $trouver_table('');
267
+    }
268
+    lire_metas($table);
269 269
 }
270 270
 
271 271
 /**
@@ -277,47 +277,47 @@  discard block
 block discarded – undo
277 277
  * @param bool $force
278 278
  */
279 279
 function supprimer_table_meta($table, $force = false) {
280
-	if ($table !== 'meta') {
281
-		// Vérifier le contenu restant de la table
282
-		$nb_variables = sql_countsel("spip_$table");
280
+    if ($table !== 'meta') {
281
+        // Vérifier le contenu restant de la table
282
+        $nb_variables = sql_countsel("spip_$table");
283 283
 
284
-		// Supprimer si :
285
-		// - la table est vide
286
-		// - ou limitée à la variable charset
287
-		// - ou qu'on force la suppression
288
-		if (
289
-			$force
290
-			or !$nb_variables
291
-			or (
292
-				($nb_variables == 1)
293
-				and isset($GLOBALS[$table]['charset'])
294
-			)
295
-		) {
296
-			// Supprimer la table des globaleset de la base
297
-			unset($GLOBALS[$table]);
298
-			sql_drop_table("spip_$table");
299
-			// Supprimer le fichier cache
300
-			include_spip('inc/flock');
301
-			$cache = cache_meta($table);
302
-			supprimer_fichier($cache);
284
+        // Supprimer si :
285
+        // - la table est vide
286
+        // - ou limitée à la variable charset
287
+        // - ou qu'on force la suppression
288
+        if (
289
+            $force
290
+            or !$nb_variables
291
+            or (
292
+                ($nb_variables == 1)
293
+                and isset($GLOBALS[$table]['charset'])
294
+            )
295
+        ) {
296
+            // Supprimer la table des globaleset de la base
297
+            unset($GLOBALS[$table]);
298
+            sql_drop_table("spip_$table");
299
+            // Supprimer le fichier cache
300
+            include_spip('inc/flock');
301
+            $cache = cache_meta($table);
302
+            supprimer_fichier($cache);
303 303
 
304
-			// vider le cache des tables
305
-			$trouver_table = charger_fonction('trouver_table', 'base');
306
-			$trouver_table('');
304
+            // vider le cache des tables
305
+            $trouver_table = charger_fonction('trouver_table', 'base');
306
+            $trouver_table('');
307 307
 
308
-			// Supprimer la table de la liste des tables de configuration autres que spip_meta
309
-			if (isset($GLOBALS['meta']['tables_config'])) {
310
-				$liste = unserialize($GLOBALS['meta']['tables_config']);
311
-				$cle = array_search($table, $liste);
312
-				if ($cle !== false) {
313
-					unset($liste[$cle]);
314
-					if ($liste) {
315
-						ecrire_meta('tables_config', serialize($liste));
316
-					} else {
317
-						effacer_meta('tables_config');
318
-					}
319
-				}
320
-			}
321
-		}
322
-	}
308
+            // Supprimer la table de la liste des tables de configuration autres que spip_meta
309
+            if (isset($GLOBALS['meta']['tables_config'])) {
310
+                $liste = unserialize($GLOBALS['meta']['tables_config']);
311
+                $cle = array_search($table, $liste);
312
+                if ($cle !== false) {
313
+                    unset($liste[$cle]);
314
+                    if ($liste) {
315
+                        ecrire_meta('tables_config', serialize($liste));
316
+                    } else {
317
+                        effacer_meta('tables_config');
318
+                    }
319
+                }
320
+            }
321
+        }
322
+    }
323 323
 }
Please login to merge, or discard this patch.