Completed
Push — master ( a5da4e...51674a )
by cam
01:27
created
ecrire/balise/menu_lang_ecrire.php 2 patches
Indentation   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -36,7 +36,7 @@  discard block
 block discarded – undo
36 36
  *     Pile complétée du code compilé
37 37
  **/
38 38
 function balise_MENU_LANG_ECRIRE($p) {
39
-	return calculer_balise_dynamique($p, 'MENU_LANG_ECRIRE', ['lang']);
39
+    return calculer_balise_dynamique($p, 'MENU_LANG_ECRIRE', ['lang']);
40 40
 }
41 41
 
42 42
 /**
@@ -55,12 +55,12 @@  discard block
 block discarded – undo
55 55
  *   - string: Si pas de multilinguisme
56 56
  */
57 57
 function balise_MENU_LANG_ECRIRE_stat($args, $context_compil) {
58
-	include_spip('inc/lang');
59
-	if (!str_contains((string) $GLOBALS['meta']['langues_proposees'], ',')) {
60
-		return '';
61
-	}
58
+    include_spip('inc/lang');
59
+    if (!str_contains((string) $GLOBALS['meta']['langues_proposees'], ',')) {
60
+        return '';
61
+    }
62 62
 
63
-	return $args;
63
+    return $args;
64 64
 }
65 65
 
66 66
 /**
@@ -76,7 +76,7 @@  discard block
 block discarded – undo
76 76
  *     Liste : Chemin du squelette, durée du cache, contexte
77 77
  **/
78 78
 function balise_MENU_LANG_ECRIRE_dyn($opt) {
79
-	return menu_lang_pour_tous('var_lang_ecrire', $opt);
79
+    return menu_lang_pour_tous('var_lang_ecrire', $opt);
80 80
 }
81 81
 
82 82
 /**
@@ -96,30 +96,30 @@  discard block
 block discarded – undo
96 96
  *     Liste : Chemin du squelette, durée du cache, contexte
97 97
  **/
98 98
 function menu_lang_pour_tous($nom, $default) {
99
-	include_spip('inc/lang');
99
+    include_spip('inc/lang');
100 100
 
101
-	if ($GLOBALS['spip_lang'] != $default) {
102
-		$opt = lang_select($default);  # et remplace
103
-		if ($GLOBALS['spip_lang'] != $default) {
104
-			$default = '';  # annule tout choix par defaut
105
-			if ($opt) {
106
-				lang_select();
107
-			}
108
-		}
109
-	}
101
+    if ($GLOBALS['spip_lang'] != $default) {
102
+        $opt = lang_select($default);  # et remplace
103
+        if ($GLOBALS['spip_lang'] != $default) {
104
+            $default = '';  # annule tout choix par defaut
105
+            if ($opt) {
106
+                lang_select();
107
+            }
108
+        }
109
+    }
110 110
 
111
-	# lien a partir de /
112
-	$cible = parametre_url(self(), 'lang', '', '&');
113
-	$post = generer_url_action('converser', 'redirect=' . rawurlencode((string) $cible), true);
111
+    # lien a partir de /
112
+    $cible = parametre_url(self(), 'lang', '', '&');
113
+    $post = generer_url_action('converser', 'redirect=' . rawurlencode((string) $cible), true);
114 114
 
115
-	return [
116
-		'formulaires/menu_lang',
117
-		3600,
118
-		[
119
-			'nom' => $nom,
120
-			'url' => $post,
121
-			'name' => $nom,
122
-			'default' => $default,
123
-		]
124
-	];
115
+    return [
116
+        'formulaires/menu_lang',
117
+        3600,
118
+        [
119
+            'nom' => $nom,
120
+            'url' => $post,
121
+            'name' => $nom,
122
+            'default' => $default,
123
+        ]
124
+    ];
125 125
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -99,9 +99,9 @@  discard block
 block discarded – undo
99 99
 	include_spip('inc/lang');
100 100
 
101 101
 	if ($GLOBALS['spip_lang'] != $default) {
102
-		$opt = lang_select($default);  # et remplace
102
+		$opt = lang_select($default); # et remplace
103 103
 		if ($GLOBALS['spip_lang'] != $default) {
104
-			$default = '';  # annule tout choix par defaut
104
+			$default = ''; # annule tout choix par defaut
105 105
 			if ($opt) {
106 106
 				lang_select();
107 107
 			}
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
 
111 111
 	# lien a partir de /
112 112
 	$cible = parametre_url(self(), 'lang', '', '&');
113
-	$post = generer_url_action('converser', 'redirect=' . rawurlencode((string) $cible), true);
113
+	$post = generer_url_action('converser', 'redirect='.rawurlencode((string) $cible), true);
114 114
 
115 115
 	return [
116 116
 		'formulaires/menu_lang',
Please login to merge, or discard this patch.
ecrire/balise/formulaire_admin.php 2 patches
Indentation   +141 added lines, -141 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 /**
@@ -41,7 +41,7 @@  discard block
 block discarded – undo
41 41
  *     Pile complétée du code compilé
42 42
  **/
43 43
 function balise_FORMULAIRE_ADMIN($p) {
44
-	return calculer_balise_dynamique($p, 'FORMULAIRE_ADMIN', []);
44
+    return calculer_balise_dynamique($p, 'FORMULAIRE_ADMIN', []);
45 45
 }
46 46
 
47 47
 /**
@@ -58,7 +58,7 @@  discard block
 block discarded – undo
58 58
  *   - chaîne vide sinon.
59 59
  */
60 60
 function balise_FORMULAIRE_ADMIN_stat($args, $context_compil) {
61
-	return $args;
61
+    return $args;
62 62
 }
63 63
 
64 64
 
@@ -83,64 +83,64 @@  discard block
 block discarded – undo
83 83
  **/
84 84
 function balise_FORMULAIRE_ADMIN_dyn($float = '', $debug = '') {
85 85
 
86
-	static $dejafait = false;
86
+    static $dejafait = false;
87 87
 
88
-	if (empty($_COOKIE['spip_admin'])) {
89
-		return '';
90
-	}
88
+    if (empty($_COOKIE['spip_admin'])) {
89
+        return '';
90
+    }
91 91
 
92
-	if (!is_array($debug)) {
93
-		if ($dejafait) {
94
-			return '';
95
-		}
96
-	} else {
97
-		if ($dejafait) {
98
-			if (empty($debug['sourcefile'])) {
99
-				return '';
100
-			}
101
-			foreach ($debug['sourcefile'] as $k => $v) {
102
-				if (str_contains((string) $v, 'administration.') && isset($debug['resultat'][$k . 'tout'])) {
103
-					return $debug['resultat'][$k . 'tout'];
104
-				}
105
-			}
92
+    if (!is_array($debug)) {
93
+        if ($dejafait) {
94
+            return '';
95
+        }
96
+    } else {
97
+        if ($dejafait) {
98
+            if (empty($debug['sourcefile'])) {
99
+                return '';
100
+            }
101
+            foreach ($debug['sourcefile'] as $k => $v) {
102
+                if (str_contains((string) $v, 'administration.') && isset($debug['resultat'][$k . 'tout'])) {
103
+                    return $debug['resultat'][$k . 'tout'];
104
+                }
105
+            }
106 106
 
107
-			return '';
108
-		}
109
-	}
107
+            return '';
108
+        }
109
+    }
110 110
 
111
-	include_spip('inc/autoriser');
112
-	include_spip('base/abstract_sql');
111
+    include_spip('inc/autoriser');
112
+    include_spip('base/abstract_sql');
113 113
 
114 114
 
115
-	$dejafait = true;
115
+    $dejafait = true;
116 116
 
117
-	// Preparer le #ENV des boutons
117
+    // Preparer le #ENV des boutons
118 118
 
119
-	$env = admin_objet();
119
+    $env = admin_objet();
120 120
 
121
-	// Pas de "modifier ce..." ? -> donner "acces a l'espace prive"
122
-	if (!$env) {
123
-		$env['ecrire'] = _DIR_RESTREINT_ABS;
124
-	}
121
+    // Pas de "modifier ce..." ? -> donner "acces a l'espace prive"
122
+    if (!$env) {
123
+        $env['ecrire'] = _DIR_RESTREINT_ABS;
124
+    }
125 125
 
126
-	$env['divclass'] = $float;
127
-	$env['lang'] = admin_lang();
128
-	$env['calcul'] = (_request('var_mode') ? 'recalcul' : 'calcul');
129
-	$env['debug'] = ((defined('_VAR_PREVIEW') && _VAR_PREVIEW) ? '' : admin_debug());
130
-	$env['analyser'] = (!$env['debug'] && !$GLOBALS['xhtml']) ? '' : admin_valider();
131
-	$env['inclure'] = ((defined('_VAR_INCLURE') && _VAR_INCLURE) ? 'inclure' : '');
126
+    $env['divclass'] = $float;
127
+    $env['lang'] = admin_lang();
128
+    $env['calcul'] = (_request('var_mode') ? 'recalcul' : 'calcul');
129
+    $env['debug'] = ((defined('_VAR_PREVIEW') && _VAR_PREVIEW) ? '' : admin_debug());
130
+    $env['analyser'] = (!$env['debug'] && !$GLOBALS['xhtml']) ? '' : admin_valider();
131
+    $env['inclure'] = ((defined('_VAR_INCLURE') && _VAR_INCLURE) ? 'inclure' : '');
132 132
 
133
-	if (empty($GLOBALS['use_cache'])) {
134
-		$env['use_cache'] = ' *';
135
-	}
133
+    if (empty($GLOBALS['use_cache'])) {
134
+        $env['use_cache'] = ' *';
135
+    }
136 136
 
137
-	if (isset($debug['validation'])) {
138
-		$env['xhtml_error'] = $debug['validation'];
139
-	}
137
+    if (isset($debug['validation'])) {
138
+        $env['xhtml_error'] = $debug['validation'];
139
+    }
140 140
 
141
-	$env['_pipelines']['formulaire_admin'] = [];
141
+    $env['_pipelines']['formulaire_admin'] = [];
142 142
 
143
-	return ['formulaires/administration', 0, $env];
143
+    return ['formulaires/administration', 0, $env];
144 144
 }
145 145
 
146 146
 
@@ -158,46 +158,46 @@  discard block
 block discarded – undo
158 158
  *     Tableau de l'environnement calculé
159 159
  **/
160 160
 function admin_objet() {
161
-	include_spip('inc/urls');
162
-	$env = [];
163
-
164
-	$trouver_table = charger_fonction('trouver_table', 'base');
165
-	$objets = urls_liste_objets(false);
166
-	$objets = array_diff($objets, ['rubrique']);
167
-	$objets = array_reverse($objets);
168
-	array_unshift($objets, 'rubrique');
169
-	foreach ($objets as $obj) {
170
-		$type = $obj;
171
-		if (
172
-			$type == objet_type($type, false)
173
-			&& ($_id_type = id_table_objet($type))
174
-			&& isset($GLOBALS['contexte'][$_id_type])
175
-			&& ($id = $GLOBALS['contexte'][$_id_type])
176
-			&& !is_array($id)
177
-			&& ($id = (int) $id)
178
-			&& ($desc = $trouver_table(table_objet_sql($type)))
179
-		) {
180
-			$id = sql_getfetsel($_id_type, table_objet_sql($type), "$_id_type=" . (int) $id);
181
-			if ($id) {
182
-				$env[$_id_type] = $id;
183
-				$env['objet'] = $type;
184
-				$env['id_objet'] = $id;
185
-				$env['voir_' . $obj] = str_replace('&', '&', (string) generer_objet_url($id, $obj, '', '', false));
186
-				if (
187
-					isset($desc['field']['id_rubrique'])
188
-					&& $type != 'rubrique'
189
-				) {
190
-					unset($env['id_rubrique']);
191
-					unset($env['voir_rubrique']);
192
-					if (admin_preview($type, $id, $desc)) {
193
-						$env['preview'] = parametre_url(self(), 'var_mode', 'preview', '&');
194
-					}
195
-				}
196
-			}
197
-		}
198
-	}
199
-
200
-	return $env;
161
+    include_spip('inc/urls');
162
+    $env = [];
163
+
164
+    $trouver_table = charger_fonction('trouver_table', 'base');
165
+    $objets = urls_liste_objets(false);
166
+    $objets = array_diff($objets, ['rubrique']);
167
+    $objets = array_reverse($objets);
168
+    array_unshift($objets, 'rubrique');
169
+    foreach ($objets as $obj) {
170
+        $type = $obj;
171
+        if (
172
+            $type == objet_type($type, false)
173
+            && ($_id_type = id_table_objet($type))
174
+            && isset($GLOBALS['contexte'][$_id_type])
175
+            && ($id = $GLOBALS['contexte'][$_id_type])
176
+            && !is_array($id)
177
+            && ($id = (int) $id)
178
+            && ($desc = $trouver_table(table_objet_sql($type)))
179
+        ) {
180
+            $id = sql_getfetsel($_id_type, table_objet_sql($type), "$_id_type=" . (int) $id);
181
+            if ($id) {
182
+                $env[$_id_type] = $id;
183
+                $env['objet'] = $type;
184
+                $env['id_objet'] = $id;
185
+                $env['voir_' . $obj] = str_replace('&', '&', (string) generer_objet_url($id, $obj, '', '', false));
186
+                if (
187
+                    isset($desc['field']['id_rubrique'])
188
+                    && $type != 'rubrique'
189
+                ) {
190
+                    unset($env['id_rubrique']);
191
+                    unset($env['voir_rubrique']);
192
+                    if (admin_preview($type, $id, $desc)) {
193
+                        $env['preview'] = parametre_url(self(), 'var_mode', 'preview', '&');
194
+                    }
195
+                }
196
+            }
197
+        }
198
+    }
199
+
200
+    return $env;
201 201
 }
202 202
 
203 203
 
@@ -215,30 +215,30 @@  discard block
 block discarded – undo
215 215
  *     - Tableau d'un élément sinon.
216 216
  **/
217 217
 function admin_preview($type, $id, $desc = null) {
218
-	if (defined('_VAR_PREVIEW') && _VAR_PREVIEW) {
219
-		return '';
220
-	}
221
-
222
-	if (!$desc) {
223
-		$trouver_table = charger_fonction('trouver_table', 'base');
224
-		$desc = $trouver_table(table_objet_sql($type));
225
-	}
226
-	if (!$desc || !isset($desc['field']['statut'])) {
227
-		return '';
228
-	}
229
-
230
-	include_spip('inc/autoriser');
231
-	if (!autoriser('previsualiser')) {
232
-		return '';
233
-	}
234
-
235
-	$notpub = sql_in('statut', ['prop', 'prive']);
236
-
237
-	if ($type == 'article' && $GLOBALS['meta']['post_dates'] != 'oui') {
238
-		$notpub .= " OR (statut='publie' AND date>" . sql_quote(date('Y-m-d H:i:s')) . ')';
239
-	}
240
-
241
-	return sql_fetsel('1', table_objet_sql($type), id_table_objet($type) . '=' . $id . " AND ($notpub)");
218
+    if (defined('_VAR_PREVIEW') && _VAR_PREVIEW) {
219
+        return '';
220
+    }
221
+
222
+    if (!$desc) {
223
+        $trouver_table = charger_fonction('trouver_table', 'base');
224
+        $desc = $trouver_table(table_objet_sql($type));
225
+    }
226
+    if (!$desc || !isset($desc['field']['statut'])) {
227
+        return '';
228
+    }
229
+
230
+    include_spip('inc/autoriser');
231
+    if (!autoriser('previsualiser')) {
232
+        return '';
233
+    }
234
+
235
+    $notpub = sql_in('statut', ['prop', 'prive']);
236
+
237
+    if ($type == 'article' && $GLOBALS['meta']['post_dates'] != 'oui') {
238
+        $notpub .= " OR (statut='publie' AND date>" . sql_quote(date('Y-m-d H:i:s')) . ')';
239
+    }
240
+
241
+    return sql_fetsel('1', table_objet_sql($type), id_table_objet($type) . '=' . $id . " AND ($notpub)");
242 242
 }
243 243
 
244 244
 
@@ -249,25 +249,25 @@  discard block
 block discarded – undo
249 249
  *     Code de langue
250 250
  **/
251 251
 function admin_lang() {
252
-	$alang = '';
253
-	if (!empty($_COOKIE['spip_admin'])) {
254
-		$email_or_login = preg_replace(',^@,', '', (string) $_COOKIE['spip_admin']);
255
-		$alang = sql_getfetsel('lang', 'spip_auteurs', 'email=' . sql_quote($email_or_login));
256
-		if (!$alang) {
257
-			$alang = sql_getfetsel('lang', 'spip_auteurs', 'login=' . sql_quote($email_or_login));
258
-		}
259
-	}
260
-	if (!$alang) {
261
-		return '';
262
-	}
263
-
264
-	$l = lang_select($alang);
265
-	$alang = $GLOBALS['spip_lang'];
266
-	if ($l) {
267
-		lang_select();
268
-	}
269
-
270
-	return $alang;
252
+    $alang = '';
253
+    if (!empty($_COOKIE['spip_admin'])) {
254
+        $email_or_login = preg_replace(',^@,', '', (string) $_COOKIE['spip_admin']);
255
+        $alang = sql_getfetsel('lang', 'spip_auteurs', 'email=' . sql_quote($email_or_login));
256
+        if (!$alang) {
257
+            $alang = sql_getfetsel('lang', 'spip_auteurs', 'login=' . sql_quote($email_or_login));
258
+        }
259
+    }
260
+    if (!$alang) {
261
+        return '';
262
+    }
263
+
264
+    $l = lang_select($alang);
265
+    $alang = $GLOBALS['spip_lang'];
266
+    if ($l) {
267
+        lang_select();
268
+    }
269
+
270
+    return $alang;
271 271
 }
272 272
 
273 273
 /**
@@ -277,11 +277,11 @@  discard block
 block discarded – undo
277 277
  **/
278 278
 function admin_valider() {
279 279
 
280
-	return ((!isset($GLOBALS['xhtml']) || $GLOBALS['xhtml'] !== 'true') ?
281
-		(parametre_url(self(), 'var_mode', 'debug', '&')
282
-			. '&var_mode_affiche=validation') :
283
-		('http://validator.w3.org/check?uri='
284
-			. rawurlencode('http://' . $_SERVER['HTTP_HOST'] . nettoyer_uri())));
280
+    return ((!isset($GLOBALS['xhtml']) || $GLOBALS['xhtml'] !== 'true') ?
281
+        (parametre_url(self(), 'var_mode', 'debug', '&')
282
+            . '&var_mode_affiche=validation') :
283
+        ('http://validator.w3.org/check?uri='
284
+            . rawurlencode('http://' . $_SERVER['HTTP_HOST'] . nettoyer_uri())));
285 285
 }
286 286
 
287 287
 /**
@@ -290,10 +290,10 @@  discard block
 block discarded – undo
290 290
  * @return string
291 291
  **/
292 292
 function admin_debug() {
293
-	return (
294
-		(isset($GLOBALS['forcer_debug']) && $GLOBALS['forcer_debug']
295
-		|| isset($GLOBALS['bouton_admin_debug']) && $GLOBALS['bouton_admin_debug']
296
-		|| defined('_VAR_MODE') && _VAR_MODE == 'debug' && isset($_COOKIE['spip_debug']) && $_COOKIE['spip_debug']) && autoriser('debug')
297
-	)
298
-		? parametre_url(self(), 'var_mode', 'debug', '&') : '';
293
+    return (
294
+        (isset($GLOBALS['forcer_debug']) && $GLOBALS['forcer_debug']
295
+        || isset($GLOBALS['bouton_admin_debug']) && $GLOBALS['bouton_admin_debug']
296
+        || defined('_VAR_MODE') && _VAR_MODE == 'debug' && isset($_COOKIE['spip_debug']) && $_COOKIE['spip_debug']) && autoriser('debug')
297
+    )
298
+        ? parametre_url(self(), 'var_mode', 'debug', '&') : '';
299 299
 }
Please login to merge, or discard this patch.
Spacing   +10 added lines, -11 removed lines patch added patch discarded remove patch
@@ -99,8 +99,8 @@  discard block
 block discarded – undo
99 99
 				return '';
100 100
 			}
101 101
 			foreach ($debug['sourcefile'] as $k => $v) {
102
-				if (str_contains((string) $v, 'administration.') && isset($debug['resultat'][$k . 'tout'])) {
103
-					return $debug['resultat'][$k . 'tout'];
102
+				if (str_contains((string) $v, 'administration.') && isset($debug['resultat'][$k.'tout'])) {
103
+					return $debug['resultat'][$k.'tout'];
104 104
 				}
105 105
 			}
106 106
 
@@ -177,12 +177,12 @@  discard block
 block discarded – undo
177 177
 			&& ($id = (int) $id)
178 178
 			&& ($desc = $trouver_table(table_objet_sql($type)))
179 179
 		) {
180
-			$id = sql_getfetsel($_id_type, table_objet_sql($type), "$_id_type=" . (int) $id);
180
+			$id = sql_getfetsel($_id_type, table_objet_sql($type), "$_id_type=".(int) $id);
181 181
 			if ($id) {
182 182
 				$env[$_id_type] = $id;
183 183
 				$env['objet'] = $type;
184 184
 				$env['id_objet'] = $id;
185
-				$env['voir_' . $obj] = str_replace('&', '&', (string) generer_objet_url($id, $obj, '', '', false));
185
+				$env['voir_'.$obj] = str_replace('&', '&', (string) generer_objet_url($id, $obj, '', '', false));
186 186
 				if (
187 187
 					isset($desc['field']['id_rubrique'])
188 188
 					&& $type != 'rubrique'
@@ -235,10 +235,10 @@  discard block
 block discarded – undo
235 235
 	$notpub = sql_in('statut', ['prop', 'prive']);
236 236
 
237 237
 	if ($type == 'article' && $GLOBALS['meta']['post_dates'] != 'oui') {
238
-		$notpub .= " OR (statut='publie' AND date>" . sql_quote(date('Y-m-d H:i:s')) . ')';
238
+		$notpub .= " OR (statut='publie' AND date>".sql_quote(date('Y-m-d H:i:s')).')';
239 239
 	}
240 240
 
241
-	return sql_fetsel('1', table_objet_sql($type), id_table_objet($type) . '=' . $id . " AND ($notpub)");
241
+	return sql_fetsel('1', table_objet_sql($type), id_table_objet($type).'='.$id." AND ($notpub)");
242 242
 }
243 243
 
244 244
 
@@ -252,9 +252,9 @@  discard block
 block discarded – undo
252 252
 	$alang = '';
253 253
 	if (!empty($_COOKIE['spip_admin'])) {
254 254
 		$email_or_login = preg_replace(',^@,', '', (string) $_COOKIE['spip_admin']);
255
-		$alang = sql_getfetsel('lang', 'spip_auteurs', 'email=' . sql_quote($email_or_login));
255
+		$alang = sql_getfetsel('lang', 'spip_auteurs', 'email='.sql_quote($email_or_login));
256 256
 		if (!$alang) {
257
-			$alang = sql_getfetsel('lang', 'spip_auteurs', 'login=' . sql_quote($email_or_login));
257
+			$alang = sql_getfetsel('lang', 'spip_auteurs', 'login='.sql_quote($email_or_login));
258 258
 		}
259 259
 	}
260 260
 	if (!$alang) {
@@ -279,9 +279,8 @@  discard block
 block discarded – undo
279 279
 
280 280
 	return ((!isset($GLOBALS['xhtml']) || $GLOBALS['xhtml'] !== 'true') ?
281 281
 		(parametre_url(self(), 'var_mode', 'debug', '&')
282
-			. '&var_mode_affiche=validation') :
283
-		('http://validator.w3.org/check?uri='
284
-			. rawurlencode('http://' . $_SERVER['HTTP_HOST'] . nettoyer_uri())));
282
+			. '&var_mode_affiche=validation') : ('http://validator.w3.org/check?uri='
283
+			. rawurlencode('http://'.$_SERVER['HTTP_HOST'].nettoyer_uri())));
285 284
 }
286 285
 
287 286
 /**
Please login to merge, or discard this patch.
ecrire/maj/legacy/v21.php 1 patch
Indentation   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  * @package SPIP\Core\SQL\Upgrade
18 18
  **/
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('base/medias');
@@ -26,27 +26,27 @@  discard block
 block discarded – undo
26 26
 
27 27
 // http://archives.rezo.net/archives/spip-zone.mbox/C6RZKNBUNJYN42IOEOC4QKVCA233AMLI/
28 28
 $GLOBALS['maj'][13833] = [
29
-	['sql_alter', 'TABLE spip_documents_liens ADD INDEX objet(id_objet,objet)']
29
+    ['sql_alter', 'TABLE spip_documents_liens ADD INDEX objet(id_objet,objet)']
30 30
 ];
31 31
 
32 32
 // 2.1
33 33
 
34 34
 $GLOBALS['maj'][13904] = [
35
-	['sql_alter', "TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL"],
36
-	[
37
-		'sql_update',
38
-		'spip_auteurs',
39
-		['webmestre' => "'oui'"],
40
-		sql_in('id_auteur', defined('_ID_WEBMESTRES') ? explode(
41
-			':',
42
-			(string) _ID_WEBMESTRES
43
-		) : (autoriser('configurer') ? [$GLOBALS['visiteur_session']['id_auteur']] : [0]))
44
-	] // le webmestre est celui qui fait l'upgrade si rien de defini
35
+    ['sql_alter', "TABLE spip_auteurs ADD webmestre varchar(3)  DEFAULT 'non' NOT NULL"],
36
+    [
37
+        'sql_update',
38
+        'spip_auteurs',
39
+        ['webmestre' => "'oui'"],
40
+        sql_in('id_auteur', defined('_ID_WEBMESTRES') ? explode(
41
+            ':',
42
+            (string) _ID_WEBMESTRES
43
+        ) : (autoriser('configurer') ? [$GLOBALS['visiteur_session']['id_auteur']] : [0]))
44
+    ] // le webmestre est celui qui fait l'upgrade si rien de defini
45 45
 ];
46 46
 
47 47
 // sites plantes en mode "'su" au lieu de "sus"
48 48
 $GLOBALS['maj'][13929] = [
49
-	['sql_update', 'spip_syndic', ['syndication' => "'sus'"], "syndication LIKE '\\'%'"]
49
+    ['sql_update', 'spip_syndic', ['syndication' => "'sus'"], "syndication LIKE '\\'%'"]
50 50
 ];
51 51
 
52 52
 // Types de fichiers m4a/m4b/m4p/m4u/m4v/dv
@@ -60,24 +60,24 @@  discard block
 block discarded – undo
60 60
 // La version 14588 etait une mauvaise piste:
61 61
 // Retour en arriere pour ceux qui l'ont subi, ne rien faire sinon
62 62
 if (@$GLOBALS['meta']['version_installee'] >= 14588) {
63
-	// "mode" est un mot-cle d'Oracle
64
-	$GLOBALS['maj'][14588] = [
65
-		['sql_alter', 'TABLE spip_documents  DROP INDEX mode'],
66
-		[
67
-			'sql_alter',
68
-			"TABLE spip_documents  CHANGE mode genre ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL"
69
-		],
70
-		['sql_alter', 'TABLE spip_documents  ADD INDEX genre(genre)']
71
-	];
72
-	// solution moins intrusive au pb de mot-cle d'Oracle, retour avant 14588
73
-	$GLOBALS['maj'][14598] = [
74
-		['sql_alter', 'TABLE spip_documents  DROP INDEX genre'],
75
-		[
76
-			'sql_alter',
77
-			"TABLE spip_documents  CHANGE genre mode ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL"
78
-		],
79
-		['sql_alter', 'TABLE spip_documents  ADD INDEX mode(mode)']
80
-	];
63
+    // "mode" est un mot-cle d'Oracle
64
+    $GLOBALS['maj'][14588] = [
65
+        ['sql_alter', 'TABLE spip_documents  DROP INDEX mode'],
66
+        [
67
+            'sql_alter',
68
+            "TABLE spip_documents  CHANGE mode genre ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL"
69
+        ],
70
+        ['sql_alter', 'TABLE spip_documents  ADD INDEX genre(genre)']
71
+    ];
72
+    // solution moins intrusive au pb de mot-cle d'Oracle, retour avant 14588
73
+    $GLOBALS['maj'][14598] = [
74
+        ['sql_alter', 'TABLE spip_documents  DROP INDEX genre'],
75
+        [
76
+            'sql_alter',
77
+            "TABLE spip_documents  CHANGE genre mode ENUM('vignette', 'image', 'document') DEFAULT 'document' NOT NULL"
78
+        ],
79
+        ['sql_alter', 'TABLE spip_documents  ADD INDEX mode(mode)']
80
+    ];
81 81
 }
82 82
 
83 83
 // Restauration correcte des types mime des fichiers Ogg
Please login to merge, or discard this patch.
ecrire/maj/legacy/v30.php 2 patches
Indentation   +230 added lines, -230 removed lines patch added patch discarded remove patch
@@ -17,18 +17,18 @@  discard block
 block discarded – undo
17 17
  * @package SPIP\Core\SQL\Upgrade
18 18
  **/
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 
24 24
 $GLOBALS['maj'][16428] = [
25
-	['maj_liens', 'auteur'], // creer la table liens
26
-	['maj_liens', 'auteur', 'article'],
27
-	['sql_drop_table', 'spip_auteurs_articles'],
28
-	['maj_liens', 'auteur', 'rubrique'],
29
-	['sql_drop_table', 'spip_auteurs_rubriques'],
30
-	['maj_liens', 'auteur', 'message'],
31
-	['sql_drop_table', 'spip_auteurs_messages'],
25
+    ['maj_liens', 'auteur'], // creer la table liens
26
+    ['maj_liens', 'auteur', 'article'],
27
+    ['sql_drop_table', 'spip_auteurs_articles'],
28
+    ['maj_liens', 'auteur', 'rubrique'],
29
+    ['sql_drop_table', 'spip_auteurs_rubriques'],
30
+    ['maj_liens', 'auteur', 'message'],
31
+    ['sql_drop_table', 'spip_auteurs_messages'],
32 32
 ];
33 33
 
34 34
 /**
@@ -54,89 +54,89 @@  discard block
 block discarded – undo
54 54
  */
55 55
 function maj_liens($pivot, $l = '') {
56 56
 
57
-	@define('_LOG_FILTRE_GRAVITE', 8);
58
-
59
-	$exceptions_pluriel = ['forum' => 'forum', 'syndic' => 'syndic'];
60
-
61
-	$pivot = preg_replace(',[^\w],', '', $pivot); // securite
62
-	$pivots = ($exceptions_pluriel[$pivot] ?? $pivot . 's');
63
-	$liens = 'spip_' . $pivots . '_liens';
64
-	$id_pivot = 'id_' . $pivot;
65
-	// Creer spip_auteurs_liens
66
-	global $tables_auxiliaires;
67
-	if (!$l) {
68
-		include_spip('base/auxiliaires');
69
-		include_spip('base/create');
70
-		creer_ou_upgrader_table($liens, $tables_auxiliaires[$liens], false);
71
-	} else {
72
-		// Preparer
73
-		$l = preg_replace(',[^\w],', '', $l); // securite
74
-		$primary = "id_$l";
75
-		$objet = ($l == 'syndic' ? 'site' : $l);
76
-		$ls = ($exceptions_pluriel[$l] ?? $l . 's');
77
-		$ancienne_table = 'spip_' . $pivots . '_' . $ls;
78
-		$pool = 400;
79
-
80
-		$trouver_table = charger_fonction('trouver_table', 'base');
81
-		if (!$desc = $trouver_table($ancienne_table)) {
82
-			return;
83
-		}
84
-
85
-		// securite pour ne pas perdre de donnees
86
-		if (!$trouver_table($liens)) {
87
-			return;
88
-		}
89
-
90
-		$champs = $desc['field'];
91
-		if (isset($champs['maj'])) {
92
-			unset($champs['maj']);
93
-		}
94
-		if (isset($champs[$primary])) {
95
-			unset($champs[$primary]);
96
-		}
97
-
98
-		$champs = array_keys($champs);
99
-		// ne garder que les champs qui existent sur la table destination
100
-		if ($desc_cible = $trouver_table($liens)) {
101
-			$champs = array_intersect($champs, array_keys($desc_cible['field']));
102
-		}
103
-
104
-		$champs[] = "$primary as id_objet";
105
-		$champs[] = "'$objet' as objet";
106
-		$champs = implode(', ', $champs);
107
-
108
-		// Recopier les donnees
109
-		$sub_pool = 100;
110
-		while ($ids = array_map('reset', sql_allfetsel("$primary", $ancienne_table, '', '', '', "0,$sub_pool"))) {
111
-			$insert = [];
112
-			foreach ($ids as $id) {
113
-				$n = sql_countsel($liens, "objet='$objet' AND id_objet=" . (int) $id);
114
-				while ($t = sql_allfetsel($champs, $ancienne_table, "$primary=" . (int) $id, '', $id_pivot, "$n,$pool")) {
115
-					$n += is_countable($t) ? count($t) : 0;
116
-					// empiler en s'assurant a minima de l'unicite
117
-					while ($r = array_shift($t)) {
118
-						$insert[$r[$id_pivot] . ':' . $r['id_objet']] = $r;
119
-					}
120
-					if (count($insert) >= $sub_pool) {
121
-						maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
122
-						$insert = [];
123
-					}
124
-					// si timeout, sortir, la relance nous ramenera dans cette fonction
125
-					// et on verifiera/repartira de la
126
-					if (time() >= _TIME_OUT) {
127
-						return;
128
-					}
129
-				}
130
-				if (time() >= _TIME_OUT) {
131
-					return;
132
-				}
133
-			}
134
-			if ($insert !== []) {
135
-				maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
136
-			}
137
-			sql_delete($ancienne_table, sql_in($primary, $ids));
138
-		}
139
-	}
57
+    @define('_LOG_FILTRE_GRAVITE', 8);
58
+
59
+    $exceptions_pluriel = ['forum' => 'forum', 'syndic' => 'syndic'];
60
+
61
+    $pivot = preg_replace(',[^\w],', '', $pivot); // securite
62
+    $pivots = ($exceptions_pluriel[$pivot] ?? $pivot . 's');
63
+    $liens = 'spip_' . $pivots . '_liens';
64
+    $id_pivot = 'id_' . $pivot;
65
+    // Creer spip_auteurs_liens
66
+    global $tables_auxiliaires;
67
+    if (!$l) {
68
+        include_spip('base/auxiliaires');
69
+        include_spip('base/create');
70
+        creer_ou_upgrader_table($liens, $tables_auxiliaires[$liens], false);
71
+    } else {
72
+        // Preparer
73
+        $l = preg_replace(',[^\w],', '', $l); // securite
74
+        $primary = "id_$l";
75
+        $objet = ($l == 'syndic' ? 'site' : $l);
76
+        $ls = ($exceptions_pluriel[$l] ?? $l . 's');
77
+        $ancienne_table = 'spip_' . $pivots . '_' . $ls;
78
+        $pool = 400;
79
+
80
+        $trouver_table = charger_fonction('trouver_table', 'base');
81
+        if (!$desc = $trouver_table($ancienne_table)) {
82
+            return;
83
+        }
84
+
85
+        // securite pour ne pas perdre de donnees
86
+        if (!$trouver_table($liens)) {
87
+            return;
88
+        }
89
+
90
+        $champs = $desc['field'];
91
+        if (isset($champs['maj'])) {
92
+            unset($champs['maj']);
93
+        }
94
+        if (isset($champs[$primary])) {
95
+            unset($champs[$primary]);
96
+        }
97
+
98
+        $champs = array_keys($champs);
99
+        // ne garder que les champs qui existent sur la table destination
100
+        if ($desc_cible = $trouver_table($liens)) {
101
+            $champs = array_intersect($champs, array_keys($desc_cible['field']));
102
+        }
103
+
104
+        $champs[] = "$primary as id_objet";
105
+        $champs[] = "'$objet' as objet";
106
+        $champs = implode(', ', $champs);
107
+
108
+        // Recopier les donnees
109
+        $sub_pool = 100;
110
+        while ($ids = array_map('reset', sql_allfetsel("$primary", $ancienne_table, '', '', '', "0,$sub_pool"))) {
111
+            $insert = [];
112
+            foreach ($ids as $id) {
113
+                $n = sql_countsel($liens, "objet='$objet' AND id_objet=" . (int) $id);
114
+                while ($t = sql_allfetsel($champs, $ancienne_table, "$primary=" . (int) $id, '', $id_pivot, "$n,$pool")) {
115
+                    $n += is_countable($t) ? count($t) : 0;
116
+                    // empiler en s'assurant a minima de l'unicite
117
+                    while ($r = array_shift($t)) {
118
+                        $insert[$r[$id_pivot] . ':' . $r['id_objet']] = $r;
119
+                    }
120
+                    if (count($insert) >= $sub_pool) {
121
+                        maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
122
+                        $insert = [];
123
+                    }
124
+                    // si timeout, sortir, la relance nous ramenera dans cette fonction
125
+                    // et on verifiera/repartira de la
126
+                    if (time() >= _TIME_OUT) {
127
+                        return;
128
+                    }
129
+                }
130
+                if (time() >= _TIME_OUT) {
131
+                    return;
132
+                }
133
+            }
134
+            if ($insert !== []) {
135
+                maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
136
+            }
137
+            sql_delete($ancienne_table, sql_in($primary, $ids));
138
+        }
139
+    }
140 140
 }
141 141
 
142 142
 /**
@@ -150,86 +150,86 @@  discard block
 block discarded – undo
150 150
  * @return void
151 151
  **/
152 152
 function maj_liens_insertq_multi_check($table, $couples, $desc = []) {
153
-	$n_before = sql_countsel($table);
154
-	sql_insertq_multi($table, $couples, $desc);
155
-	$n_after = sql_countsel($table);
156
-	if (($n_after - $n_before) == count($couples)) {
157
-		return;
158
-	}
159
-	// si ecart, on recommence l'insertion ligne par ligne...
160
-	// moins rapide mais secure : seul le couple en doublon echouera, et non toute la serie
161
-	foreach ($couples as $c) {
162
-		sql_insertq($table, $c, $desc);
163
-	}
153
+    $n_before = sql_countsel($table);
154
+    sql_insertq_multi($table, $couples, $desc);
155
+    $n_after = sql_countsel($table);
156
+    if (($n_after - $n_before) == count($couples)) {
157
+        return;
158
+    }
159
+    // si ecart, on recommence l'insertion ligne par ligne...
160
+    // moins rapide mais secure : seul le couple en doublon echouera, et non toute la serie
161
+    foreach ($couples as $c) {
162
+        sql_insertq($table, $c, $desc);
163
+    }
164 164
 }
165 165
 
166 166
 $GLOBALS['maj'][17311] = [
167
-	[
168
-		'ecrire_meta',
169
-		'multi_objets',
170
-		implode(
171
-			',',
172
-			array_diff(
173
-				[
174
-					(isset($GLOBALS['meta']['multi_rubriques']) && $GLOBALS['meta']['multi_rubriques'] == 'oui')
175
-						? 'spip_rubriques' : '',
176
-					(isset($GLOBALS['meta']['multi_articles']) && $GLOBALS['meta']['multi_articles'] == 'oui')
177
-						? 'spip_articles' : ''
178
-				],
179
-				['']
180
-			)
181
-		)
182
-	],
183
-	[
184
-		'ecrire_meta',
185
-		'gerer_trad_objets',
186
-		implode(
187
-			',',
188
-			array_diff(
189
-				[
190
-					(isset($GLOBALS['meta']['gerer_trad']) && $GLOBALS['meta']['gerer_trad'] == 'oui')
191
-						? 'spip_articles' : ''
192
-				],
193
-				['']
194
-			)
195
-		)
196
-	],
167
+    [
168
+        'ecrire_meta',
169
+        'multi_objets',
170
+        implode(
171
+            ',',
172
+            array_diff(
173
+                [
174
+                    (isset($GLOBALS['meta']['multi_rubriques']) && $GLOBALS['meta']['multi_rubriques'] == 'oui')
175
+                        ? 'spip_rubriques' : '',
176
+                    (isset($GLOBALS['meta']['multi_articles']) && $GLOBALS['meta']['multi_articles'] == 'oui')
177
+                        ? 'spip_articles' : ''
178
+                ],
179
+                ['']
180
+            )
181
+        )
182
+    ],
183
+    [
184
+        'ecrire_meta',
185
+        'gerer_trad_objets',
186
+        implode(
187
+            ',',
188
+            array_diff(
189
+                [
190
+                    (isset($GLOBALS['meta']['gerer_trad']) && $GLOBALS['meta']['gerer_trad'] == 'oui')
191
+                        ? 'spip_articles' : ''
192
+                ],
193
+                ['']
194
+            )
195
+        )
196
+    ],
197 197
 ];
198 198
 $GLOBALS['maj'][17555] = [
199
-	['sql_alter', "TABLE spip_resultats ADD table_objet varchar(30) DEFAULT '' NOT NULL"],
200
-	['sql_alter', "TABLE spip_resultats ADD serveur char(16) DEFAULT '' NOT NULL"],
199
+    ['sql_alter', "TABLE spip_resultats ADD table_objet varchar(30) DEFAULT '' NOT NULL"],
200
+    ['sql_alter', "TABLE spip_resultats ADD serveur char(16) DEFAULT '' NOT NULL"],
201 201
 ];
202 202
 
203 203
 $GLOBALS['maj'][17563] = [
204
-	['sql_alter', "TABLE spip_articles ADD virtuel VARCHAR(255) DEFAULT '' NOT NULL"],
205
-	['sql_update', 'spip_articles', ['virtuel' => 'SUBSTRING(chapo,2)', 'chapo' => "''"], "chapo LIKE '=_%'"],
204
+    ['sql_alter', "TABLE spip_articles ADD virtuel VARCHAR(255) DEFAULT '' NOT NULL"],
205
+    ['sql_update', 'spip_articles', ['virtuel' => 'SUBSTRING(chapo,2)', 'chapo' => "''"], "chapo LIKE '=_%'"],
206 206
 ];
207 207
 
208 208
 $GLOBALS['maj'][17577] = [
209
-	['maj_tables', ['spip_jobs', 'spip_jobs_liens']],
209
+    ['maj_tables', ['spip_jobs', 'spip_jobs_liens']],
210 210
 ];
211 211
 
212 212
 $GLOBALS['maj'][17743] = [
213
-	['sql_update', 'spip_auteurs', ['prefs' => 'bio', 'bio' => "''"], "statut='nouveau' AND bio<>''"],
213
+    ['sql_update', 'spip_auteurs', ['prefs' => 'bio', 'bio' => "''"], "statut='nouveau' AND bio<>''"],
214 214
 ];
215 215
 
216 216
 $GLOBALS['maj'][18219] = [
217
-	['sql_alter', 'TABLE spip_rubriques DROP id_import'],
218
-	['sql_alter', 'TABLE spip_rubriques DROP export'],
217
+    ['sql_alter', 'TABLE spip_rubriques DROP id_import'],
218
+    ['sql_alter', 'TABLE spip_rubriques DROP export'],
219 219
 ];
220 220
 
221 221
 $GLOBALS['maj'][18310] = [
222
-	['sql_alter', "TABLE spip_auteurs_liens CHANGE vu vu VARCHAR(6) DEFAULT 'non' NOT NULL"],
222
+    ['sql_alter', "TABLE spip_auteurs_liens CHANGE vu vu VARCHAR(6) DEFAULT 'non' NOT NULL"],
223 223
 ];
224 224
 
225 225
 $GLOBALS['maj'][18597] = [
226
-	['sql_alter', "TABLE spip_rubriques ADD profondeur smallint(5) DEFAULT '0' NOT NULL"],
227
-	['maj_propager_les_secteurs'],
226
+    ['sql_alter', "TABLE spip_rubriques ADD profondeur smallint(5) DEFAULT '0' NOT NULL"],
227
+    ['maj_propager_les_secteurs'],
228 228
 ];
229 229
 
230 230
 $GLOBALS['maj'][18955] = [
231
-	['sql_alter', 'TABLE spip_auteurs_liens ADD INDEX id_objet (id_objet)'],
232
-	['sql_alter', 'TABLE spip_auteurs_liens ADD INDEX objet (objet)'],
231
+    ['sql_alter', 'TABLE spip_auteurs_liens ADD INDEX id_objet (id_objet)'],
232
+    ['sql_alter', 'TABLE spip_auteurs_liens ADD INDEX objet (objet)'],
233 233
 ];
234 234
 
235 235
 /**
@@ -238,8 +238,8 @@  discard block
 block discarded – undo
238 238
  * @uses propager_les_secteurs()
239 239
  **/
240 240
 function maj_propager_les_secteurs() {
241
-	include_spip('inc/rubriques');
242
-	propager_les_secteurs();
241
+    include_spip('inc/rubriques');
242
+    propager_les_secteurs();
243 243
 }
244 244
 
245 245
 /**
@@ -252,87 +252,87 @@  discard block
 block discarded – undo
252 252
 function maj_collation_sqlite() {
253 253
 
254 254
 
255
-	include_spip('base/dump');
256
-	$tables = base_lister_toutes_tables();
257
-
258
-	// rien a faire si base non sqlite
259
-	if (!str_starts_with((string) $GLOBALS['connexions'][0]['type'], 'sqlite')) {
260
-		return;
261
-	}
262
-
263
-	$trouver_table = charger_fonction('trouver_table', 'base');
264
-	// forcer le vidage de cache
265
-	$trouver_table('');
266
-
267
-	// cas particulier spip_auteurs : retablir le collate binary sur le login
268
-	$desc = $trouver_table('spip_auteurs');
269
-	spip_log('spip_auteurs : ' . var_export($desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE);
270
-	if (stripos((string) $desc['field']['login'], 'BINARY') === false) {
271
-		spip_log('Retablir champ login BINARY sur table spip_auteurs', 'maj');
272
-		sql_alter('table spip_auteurs change login login VARCHAR(255) BINARY');
273
-		$trouver_table('');
274
-		$new_desc = $trouver_table('spip_auteurs');
275
-		spip_log('Apres conversion spip_auteurs : ' . var_export($new_desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE);
276
-	}
277
-
278
-	foreach ($tables as $table) {
279
-		if (time() >= _TIME_OUT) {
280
-			return;
281
-		}
282
-		if ($desc = $trouver_table($table)) {
283
-			$desc_collate = _sqlite_remplacements_definitions_table($desc['field']);
284
-			if ($d = array_diff($desc['field'], $desc_collate)) {
285
-				spip_log("Table $table COLLATE incorrects", 'maj');
286
-
287
-				// cas particulier spip_urls :
288
-				// supprimer les doublons avant conversion sinon echec (on garde les urls les plus recentes)
289
-				if ($table == 'spip_urls') {
290
-					// par date DESC pour conserver les urls les plus recentes
291
-					$data = sql_allfetsel('*', 'spip_urls', '', '', 'date DESC');
292
-					$urls = [];
293
-					foreach ($data as $d) {
294
-						$key = $d['id_parent'] . '::' . strtolower((string) $d['url']);
295
-						if (!isset($urls[$key])) {
296
-							$urls[$key] = true;
297
-						} else {
298
-							spip_log(
299
-								'Suppression doublon dans spip_urls avant conversion : ' . serialize($d),
300
-								'maj.' . _LOG_INFO_IMPORTANTE
301
-							);
302
-							sql_delete('spip_urls', 'id_parent=' . sql_quote($d['id_parent']) . ' AND url=' . sql_quote($d['url']));
303
-						}
304
-					}
305
-				}
306
-				foreach ($desc['field'] as $field => $type) {
307
-					if ($desc['field'][$field] !== $desc_collate[$field]) {
308
-						spip_log("Conversion COLLATE table $table", 'maj.' . _LOG_INFO_IMPORTANTE);
309
-						sql_alter("table $table change $field $field " . $desc_collate[$field]);
310
-						$trouver_table('');
311
-						$new_desc = $trouver_table($table);
312
-						spip_log(
313
-							"Apres conversion $table : " . var_export($new_desc['field'], true),
314
-							'maj.' . _LOG_INFO_IMPORTANTE
315
-						);
316
-						continue 2; // inutile de continuer pour cette table : un seul alter remet tout a jour en sqlite
317
-					}
318
-				}
319
-			}
320
-		}
321
-	}
322
-
323
-	// forcer le vidage de cache
324
-	$trouver_table('');
255
+    include_spip('base/dump');
256
+    $tables = base_lister_toutes_tables();
257
+
258
+    // rien a faire si base non sqlite
259
+    if (!str_starts_with((string) $GLOBALS['connexions'][0]['type'], 'sqlite')) {
260
+        return;
261
+    }
262
+
263
+    $trouver_table = charger_fonction('trouver_table', 'base');
264
+    // forcer le vidage de cache
265
+    $trouver_table('');
266
+
267
+    // cas particulier spip_auteurs : retablir le collate binary sur le login
268
+    $desc = $trouver_table('spip_auteurs');
269
+    spip_log('spip_auteurs : ' . var_export($desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE);
270
+    if (stripos((string) $desc['field']['login'], 'BINARY') === false) {
271
+        spip_log('Retablir champ login BINARY sur table spip_auteurs', 'maj');
272
+        sql_alter('table spip_auteurs change login login VARCHAR(255) BINARY');
273
+        $trouver_table('');
274
+        $new_desc = $trouver_table('spip_auteurs');
275
+        spip_log('Apres conversion spip_auteurs : ' . var_export($new_desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE);
276
+    }
277
+
278
+    foreach ($tables as $table) {
279
+        if (time() >= _TIME_OUT) {
280
+            return;
281
+        }
282
+        if ($desc = $trouver_table($table)) {
283
+            $desc_collate = _sqlite_remplacements_definitions_table($desc['field']);
284
+            if ($d = array_diff($desc['field'], $desc_collate)) {
285
+                spip_log("Table $table COLLATE incorrects", 'maj');
286
+
287
+                // cas particulier spip_urls :
288
+                // supprimer les doublons avant conversion sinon echec (on garde les urls les plus recentes)
289
+                if ($table == 'spip_urls') {
290
+                    // par date DESC pour conserver les urls les plus recentes
291
+                    $data = sql_allfetsel('*', 'spip_urls', '', '', 'date DESC');
292
+                    $urls = [];
293
+                    foreach ($data as $d) {
294
+                        $key = $d['id_parent'] . '::' . strtolower((string) $d['url']);
295
+                        if (!isset($urls[$key])) {
296
+                            $urls[$key] = true;
297
+                        } else {
298
+                            spip_log(
299
+                                'Suppression doublon dans spip_urls avant conversion : ' . serialize($d),
300
+                                'maj.' . _LOG_INFO_IMPORTANTE
301
+                            );
302
+                            sql_delete('spip_urls', 'id_parent=' . sql_quote($d['id_parent']) . ' AND url=' . sql_quote($d['url']));
303
+                        }
304
+                    }
305
+                }
306
+                foreach ($desc['field'] as $field => $type) {
307
+                    if ($desc['field'][$field] !== $desc_collate[$field]) {
308
+                        spip_log("Conversion COLLATE table $table", 'maj.' . _LOG_INFO_IMPORTANTE);
309
+                        sql_alter("table $table change $field $field " . $desc_collate[$field]);
310
+                        $trouver_table('');
311
+                        $new_desc = $trouver_table($table);
312
+                        spip_log(
313
+                            "Apres conversion $table : " . var_export($new_desc['field'], true),
314
+                            'maj.' . _LOG_INFO_IMPORTANTE
315
+                        );
316
+                        continue 2; // inutile de continuer pour cette table : un seul alter remet tout a jour en sqlite
317
+                    }
318
+                }
319
+            }
320
+        }
321
+    }
322
+
323
+    // forcer le vidage de cache
324
+    $trouver_table('');
325 325
 }
326 326
 
327 327
 
328 328
 $GLOBALS['maj'][19236] = [
329
-	['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom='version_installee'"], // version base principale
330
-	['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom LIKE '%_base_version'"],  // version base plugins
331
-	['maj_collation_sqlite'],
329
+    ['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom='version_installee'"], // version base principale
330
+    ['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom LIKE '%_base_version'"],  // version base plugins
331
+    ['maj_collation_sqlite'],
332 332
 ];
333 333
 
334 334
 $GLOBALS['maj'][19268] = [
335
-	['supprimer_toutes_sessions'],
335
+    ['supprimer_toutes_sessions'],
336 336
 ];
337 337
 
338 338
 /**
@@ -341,13 +341,13 @@  discard block
 block discarded – undo
341 341
  * Obligera tous les auteurs à se reconnecter !
342 342
  **/
343 343
 function supprimer_toutes_sessions() {
344
-	spip_log('supprimer sessions auteur');
345
-	if ($dir = opendir(_DIR_SESSIONS)) {
346
-		while (($f = readdir($dir)) !== false) {
347
-			spip_unlink(_DIR_SESSIONS . $f);
348
-			if (time() >= _TIME_OUT) {
349
-				return;
350
-			}
351
-		}
352
-	}
344
+    spip_log('supprimer sessions auteur');
345
+    if ($dir = opendir(_DIR_SESSIONS)) {
346
+        while (($f = readdir($dir)) !== false) {
347
+            spip_unlink(_DIR_SESSIONS . $f);
348
+            if (time() >= _TIME_OUT) {
349
+                return;
350
+            }
351
+        }
352
+    }
353 353
 }
Please login to merge, or discard this patch.
Spacing   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -59,9 +59,9 @@  discard block
 block discarded – undo
59 59
 	$exceptions_pluriel = ['forum' => 'forum', 'syndic' => 'syndic'];
60 60
 
61 61
 	$pivot = preg_replace(',[^\w],', '', $pivot); // securite
62
-	$pivots = ($exceptions_pluriel[$pivot] ?? $pivot . 's');
63
-	$liens = 'spip_' . $pivots . '_liens';
64
-	$id_pivot = 'id_' . $pivot;
62
+	$pivots = ($exceptions_pluriel[$pivot] ?? $pivot.'s');
63
+	$liens = 'spip_'.$pivots.'_liens';
64
+	$id_pivot = 'id_'.$pivot;
65 65
 	// Creer spip_auteurs_liens
66 66
 	global $tables_auxiliaires;
67 67
 	if (!$l) {
@@ -73,8 +73,8 @@  discard block
 block discarded – undo
73 73
 		$l = preg_replace(',[^\w],', '', $l); // securite
74 74
 		$primary = "id_$l";
75 75
 		$objet = ($l == 'syndic' ? 'site' : $l);
76
-		$ls = ($exceptions_pluriel[$l] ?? $l . 's');
77
-		$ancienne_table = 'spip_' . $pivots . '_' . $ls;
76
+		$ls = ($exceptions_pluriel[$l] ?? $l.'s');
77
+		$ancienne_table = 'spip_'.$pivots.'_'.$ls;
78 78
 		$pool = 400;
79 79
 
80 80
 		$trouver_table = charger_fonction('trouver_table', 'base');
@@ -110,12 +110,12 @@  discard block
 block discarded – undo
110 110
 		while ($ids = array_map('reset', sql_allfetsel("$primary", $ancienne_table, '', '', '', "0,$sub_pool"))) {
111 111
 			$insert = [];
112 112
 			foreach ($ids as $id) {
113
-				$n = sql_countsel($liens, "objet='$objet' AND id_objet=" . (int) $id);
114
-				while ($t = sql_allfetsel($champs, $ancienne_table, "$primary=" . (int) $id, '', $id_pivot, "$n,$pool")) {
113
+				$n = sql_countsel($liens, "objet='$objet' AND id_objet=".(int) $id);
114
+				while ($t = sql_allfetsel($champs, $ancienne_table, "$primary=".(int) $id, '', $id_pivot, "$n,$pool")) {
115 115
 					$n += is_countable($t) ? count($t) : 0;
116 116
 					// empiler en s'assurant a minima de l'unicite
117 117
 					while ($r = array_shift($t)) {
118
-						$insert[$r[$id_pivot] . ':' . $r['id_objet']] = $r;
118
+						$insert[$r[$id_pivot].':'.$r['id_objet']] = $r;
119 119
 					}
120 120
 					if (count($insert) >= $sub_pool) {
121 121
 						maj_liens_insertq_multi_check($liens, $insert, $tables_auxiliaires[$liens]);
@@ -266,13 +266,13 @@  discard block
 block discarded – undo
266 266
 
267 267
 	// cas particulier spip_auteurs : retablir le collate binary sur le login
268 268
 	$desc = $trouver_table('spip_auteurs');
269
-	spip_log('spip_auteurs : ' . var_export($desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE);
269
+	spip_log('spip_auteurs : '.var_export($desc['field'], true), 'maj.'._LOG_INFO_IMPORTANTE);
270 270
 	if (stripos((string) $desc['field']['login'], 'BINARY') === false) {
271 271
 		spip_log('Retablir champ login BINARY sur table spip_auteurs', 'maj');
272 272
 		sql_alter('table spip_auteurs change login login VARCHAR(255) BINARY');
273 273
 		$trouver_table('');
274 274
 		$new_desc = $trouver_table('spip_auteurs');
275
-		spip_log('Apres conversion spip_auteurs : ' . var_export($new_desc['field'], true), 'maj.' . _LOG_INFO_IMPORTANTE);
275
+		spip_log('Apres conversion spip_auteurs : '.var_export($new_desc['field'], true), 'maj.'._LOG_INFO_IMPORTANTE);
276 276
 	}
277 277
 
278 278
 	foreach ($tables as $table) {
@@ -291,27 +291,27 @@  discard block
 block discarded – undo
291 291
 					$data = sql_allfetsel('*', 'spip_urls', '', '', 'date DESC');
292 292
 					$urls = [];
293 293
 					foreach ($data as $d) {
294
-						$key = $d['id_parent'] . '::' . strtolower((string) $d['url']);
294
+						$key = $d['id_parent'].'::'.strtolower((string) $d['url']);
295 295
 						if (!isset($urls[$key])) {
296 296
 							$urls[$key] = true;
297 297
 						} else {
298 298
 							spip_log(
299
-								'Suppression doublon dans spip_urls avant conversion : ' . serialize($d),
300
-								'maj.' . _LOG_INFO_IMPORTANTE
299
+								'Suppression doublon dans spip_urls avant conversion : '.serialize($d),
300
+								'maj.'._LOG_INFO_IMPORTANTE
301 301
 							);
302
-							sql_delete('spip_urls', 'id_parent=' . sql_quote($d['id_parent']) . ' AND url=' . sql_quote($d['url']));
302
+							sql_delete('spip_urls', 'id_parent='.sql_quote($d['id_parent']).' AND url='.sql_quote($d['url']));
303 303
 						}
304 304
 					}
305 305
 				}
306 306
 				foreach ($desc['field'] as $field => $type) {
307 307
 					if ($desc['field'][$field] !== $desc_collate[$field]) {
308
-						spip_log("Conversion COLLATE table $table", 'maj.' . _LOG_INFO_IMPORTANTE);
309
-						sql_alter("table $table change $field $field " . $desc_collate[$field]);
308
+						spip_log("Conversion COLLATE table $table", 'maj.'._LOG_INFO_IMPORTANTE);
309
+						sql_alter("table $table change $field $field ".$desc_collate[$field]);
310 310
 						$trouver_table('');
311 311
 						$new_desc = $trouver_table($table);
312 312
 						spip_log(
313
-							"Apres conversion $table : " . var_export($new_desc['field'], true),
314
-							'maj.' . _LOG_INFO_IMPORTANTE
313
+							"Apres conversion $table : ".var_export($new_desc['field'], true),
314
+							'maj.'._LOG_INFO_IMPORTANTE
315 315
 						);
316 316
 						continue 2; // inutile de continuer pour cette table : un seul alter remet tout a jour en sqlite
317 317
 					}
@@ -327,7 +327,7 @@  discard block
 block discarded – undo
327 327
 
328 328
 $GLOBALS['maj'][19236] = [
329 329
 	['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom='version_installee'"], // version base principale
330
-	['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom LIKE '%_base_version'"],  // version base plugins
330
+	['sql_updateq', 'spip_meta', ['impt' => 'oui'], "nom LIKE '%_base_version'"], // version base plugins
331 331
 	['maj_collation_sqlite'],
332 332
 ];
333 333
 
@@ -344,7 +344,7 @@  discard block
 block discarded – undo
344 344
 	spip_log('supprimer sessions auteur');
345 345
 	if ($dir = opendir(_DIR_SESSIONS)) {
346 346
 		while (($f = readdir($dir)) !== false) {
347
-			spip_unlink(_DIR_SESSIONS . $f);
347
+			spip_unlink(_DIR_SESSIONS.$f);
348 348
 			if (time() >= _TIME_OUT) {
349 349
 				return;
350 350
 			}
Please login to merge, or discard this patch.
ecrire/auth/ldap.php 2 patches
Indentation   +174 added lines, -174 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 // Authentifie via LDAP et retourne la ligne SQL decrivant l'utilisateur si ok
@@ -24,12 +24,12 @@  discard block
 block discarded – undo
24 24
 // Attributs LDAP correspondants a ceux de SPIP, notamment pour le login
25 25
 // ne pas ecraser une definition perso dans mes_options
26 26
 if (!isset($GLOBALS['ldap_attributes']) || !is_array($GLOBALS['ldap_attributes'])) {
27
-	$GLOBALS['ldap_attributes'] = [
28
-		'login' => ['sAMAccountName', 'uid', 'login', 'userid', 'cn', 'sn'],
29
-		'nom' => 'cn',
30
-		'email' => 'mail',
31
-		'bio' => 'description'
32
-	];
27
+    $GLOBALS['ldap_attributes'] = [
28
+        'login' => ['sAMAccountName', 'uid', 'login', 'userid', 'cn', 'sn'],
29
+        'nom' => 'cn',
30
+        'email' => 'mail',
31
+        'bio' => 'description'
32
+    ];
33 33
 }
34 34
 
35 35
 /**
@@ -55,49 +55,49 @@  discard block
 block discarded – undo
55 55
  */
56 56
 function auth_ldap_dist($login, #[\SensitiveParameter] $pass, $serveur = '', $phpauth = false) {
57 57
 
58
-	#spip_log("ldap $login " . ($pass ? "mdp fourni" : "mdp absent"));
59
-
60
-	// Utilisateur connu ?
61
-	// si http auth, inutile de reauthentifier: cela
62
-	// ne marchera pas avec auth http autre que basic.
63
-	$checkpass = !isset($_SERVER['REMOTE_USER']);
64
-	if (!($dn = auth_ldap_search($login, $pass, $checkpass, $serveur))) {
65
-		return [];
66
-	}
67
-	$credentials_ldap = ['ldap_dn' => $dn, 'ldap_password' => $pass];
68
-
69
-	// Si l'utilisateur figure deja dans la base, y recuperer les infos
70
-	$r = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login) . " AND source='ldap'", '', '', '', '', $serveur);
71
-
72
-	if ($r) {
73
-		return array_merge($r, $credentials_ldap);
74
-	}
75
-
76
-	// sinon importer les infos depuis LDAP,
77
-
78
-	if (
79
-		$GLOBALS['meta']['ldap_statut_import'] && ($desc = auth_ldap_retrouver($dn, [], $serveur))
80
-	) {
81
-		// rajouter le statut indique  a l'install
82
-		$desc['statut'] = $GLOBALS['meta']['ldap_statut_import'];
83
-		$desc['login'] = $login;
84
-		$desc['source'] = 'ldap';
85
-		$desc['pass'] = '';
86
-
87
-		$r = sql_insertq('spip_auteurs', $desc, [], $serveur);
88
-	}
89
-
90
-	if ($r) {
91
-		return array_merge(
92
-			$credentials_ldap,
93
-			sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . (int) $r, '', '', '', '', $serveur)
94
-		);
95
-	}
96
-
97
-	// sinon echec
98
-	spip_log("Creation de l'auteur '$login' impossible");
99
-
100
-	return [];
58
+    #spip_log("ldap $login " . ($pass ? "mdp fourni" : "mdp absent"));
59
+
60
+    // Utilisateur connu ?
61
+    // si http auth, inutile de reauthentifier: cela
62
+    // ne marchera pas avec auth http autre que basic.
63
+    $checkpass = !isset($_SERVER['REMOTE_USER']);
64
+    if (!($dn = auth_ldap_search($login, $pass, $checkpass, $serveur))) {
65
+        return [];
66
+    }
67
+    $credentials_ldap = ['ldap_dn' => $dn, 'ldap_password' => $pass];
68
+
69
+    // Si l'utilisateur figure deja dans la base, y recuperer les infos
70
+    $r = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login) . " AND source='ldap'", '', '', '', '', $serveur);
71
+
72
+    if ($r) {
73
+        return array_merge($r, $credentials_ldap);
74
+    }
75
+
76
+    // sinon importer les infos depuis LDAP,
77
+
78
+    if (
79
+        $GLOBALS['meta']['ldap_statut_import'] && ($desc = auth_ldap_retrouver($dn, [], $serveur))
80
+    ) {
81
+        // rajouter le statut indique  a l'install
82
+        $desc['statut'] = $GLOBALS['meta']['ldap_statut_import'];
83
+        $desc['login'] = $login;
84
+        $desc['source'] = 'ldap';
85
+        $desc['pass'] = '';
86
+
87
+        $r = sql_insertq('spip_auteurs', $desc, [], $serveur);
88
+    }
89
+
90
+    if ($r) {
91
+        return array_merge(
92
+            $credentials_ldap,
93
+            sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . (int) $r, '', '', '', '', $serveur)
94
+        );
95
+    }
96
+
97
+    // sinon echec
98
+    spip_log("Creation de l'auteur '$login' impossible");
99
+
100
+    return [];
101 101
 }
102 102
 
103 103
 /**
@@ -111,36 +111,36 @@  discard block
 block discarded – undo
111 111
  * @return array
112 112
  */
113 113
 function auth_ldap_connect($serveur = '') {
114
-	include_spip('base/connect_sql');
115
-	static $connexions_ldap = [];
116
-	if (isset($connexions_ldap[$serveur])) {
117
-		return $connexions_ldap[$serveur];
118
-	}
119
-	$connexion = spip_connect($serveur);
120
-	if (!is_array($connexion['ldap'])) {
121
-		if ($connexion['authentification']['ldap']) {
122
-			$f = _DIR_CONNECT . $connexion['authentification']['ldap'];
123
-			unset($GLOBALS['ldap_link']);
124
-			if (is_readable($f)) {
125
-				include_once($f);
126
-			};
127
-			if (isset($GLOBALS['ldap_link'])) {
128
-				$connexion['ldap'] = [
129
-					'link' => $GLOBALS['ldap_link'],
130
-					'base' => $GLOBALS['ldap_base']
131
-				];
132
-			} else {
133
-				spip_log("connection LDAP $serveur mal definie dans $f");
134
-			}
135
-			if (isset($GLOBALS['ldap_champs'])) {
136
-				$connexion['ldap']['attributes'] = $GLOBALS['ldap_champs'];
137
-			}
138
-		} else {
139
-			spip_log("connection LDAP $serveur inconnue");
140
-		}
141
-	}
142
-
143
-	return $connexions_ldap[$serveur] = $connexion['ldap'];
114
+    include_spip('base/connect_sql');
115
+    static $connexions_ldap = [];
116
+    if (isset($connexions_ldap[$serveur])) {
117
+        return $connexions_ldap[$serveur];
118
+    }
119
+    $connexion = spip_connect($serveur);
120
+    if (!is_array($connexion['ldap'])) {
121
+        if ($connexion['authentification']['ldap']) {
122
+            $f = _DIR_CONNECT . $connexion['authentification']['ldap'];
123
+            unset($GLOBALS['ldap_link']);
124
+            if (is_readable($f)) {
125
+                include_once($f);
126
+            };
127
+            if (isset($GLOBALS['ldap_link'])) {
128
+                $connexion['ldap'] = [
129
+                    'link' => $GLOBALS['ldap_link'],
130
+                    'base' => $GLOBALS['ldap_base']
131
+                ];
132
+            } else {
133
+                spip_log("connection LDAP $serveur mal definie dans $f");
134
+            }
135
+            if (isset($GLOBALS['ldap_champs'])) {
136
+                $connexion['ldap']['attributes'] = $GLOBALS['ldap_champs'];
137
+            }
138
+        } else {
139
+            spip_log("connection LDAP $serveur inconnue");
140
+        }
141
+    }
142
+
143
+    return $connexions_ldap[$serveur] = $connexion['ldap'];
144 144
 }
145 145
 
146 146
 /**
@@ -154,52 +154,52 @@  discard block
 block discarded – undo
154 154
  *    Le login trouvé ou chaine vide si non trouvé
155 155
  */
156 156
 function auth_ldap_search($login, #[\SensitiveParameter] $pass, $checkpass = true, $serveur = '') {
157
-	// Securite anti-injection et contre un serveur LDAP laxiste
158
-	$login_search = preg_replace('/[^-@._\s\d\w]/', '', $login);
159
-	if (!strlen($login_search) || $checkpass && !strlen($pass)) {
160
-		return '';
161
-	}
162
-
163
-	// verifier la connexion
164
-	if (!$ldap = auth_ldap_connect($serveur)) {
165
-		return '';
166
-	}
167
-
168
-	$ldap_link = $ldap['link'] ?? null;
169
-	$ldap_base = $ldap['base'] ?? null;
170
-	$desc = empty($ldap['attributes']) ? $GLOBALS['ldap_attributes'] : $ldap['attributes'];
171
-
172
-	$logins = is_array($desc['login']) ? $desc['login'] : [$desc['login']];
173
-
174
-	// Tenter une recherche pour essayer de retrouver le DN
175
-	foreach ($logins as $att) {
176
-		$result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", ['dn']);
177
-		$info = @ldap_get_entries($ldap_link, $result);
178
-		// Ne pas accepter les resultats si plus d'une entree
179
-		// (on veut un attribut unique)
180
-
181
-		if (is_array($info) && $info['count'] == 1) {
182
-			$dn = $info[0]['dn'];
183
-			if (!$checkpass) {
184
-				return $dn;
185
-			}
186
-			if (@ldap_bind($ldap_link, $dn, $pass)) {
187
-				return $dn;
188
-			}
189
-		}
190
-	}
191
-
192
-	if ($checkpass && !isset($dn)) {
193
-		// Si echec, essayer de deviner le DN
194
-		foreach ($logins as $att) {
195
-			$dn = "$att=$login_search, $ldap_base";
196
-			if (@ldap_bind($ldap_link, $dn, $pass)) {
197
-				return "$att=$login_search, $ldap_base";
198
-			}
199
-		}
200
-	}
201
-
202
-	return '';
157
+    // Securite anti-injection et contre un serveur LDAP laxiste
158
+    $login_search = preg_replace('/[^-@._\s\d\w]/', '', $login);
159
+    if (!strlen($login_search) || $checkpass && !strlen($pass)) {
160
+        return '';
161
+    }
162
+
163
+    // verifier la connexion
164
+    if (!$ldap = auth_ldap_connect($serveur)) {
165
+        return '';
166
+    }
167
+
168
+    $ldap_link = $ldap['link'] ?? null;
169
+    $ldap_base = $ldap['base'] ?? null;
170
+    $desc = empty($ldap['attributes']) ? $GLOBALS['ldap_attributes'] : $ldap['attributes'];
171
+
172
+    $logins = is_array($desc['login']) ? $desc['login'] : [$desc['login']];
173
+
174
+    // Tenter une recherche pour essayer de retrouver le DN
175
+    foreach ($logins as $att) {
176
+        $result = @ldap_search($ldap_link, $ldap_base, "$att=$login_search", ['dn']);
177
+        $info = @ldap_get_entries($ldap_link, $result);
178
+        // Ne pas accepter les resultats si plus d'une entree
179
+        // (on veut un attribut unique)
180
+
181
+        if (is_array($info) && $info['count'] == 1) {
182
+            $dn = $info[0]['dn'];
183
+            if (!$checkpass) {
184
+                return $dn;
185
+            }
186
+            if (@ldap_bind($ldap_link, $dn, $pass)) {
187
+                return $dn;
188
+            }
189
+        }
190
+    }
191
+
192
+    if ($checkpass && !isset($dn)) {
193
+        // Si echec, essayer de deviner le DN
194
+        foreach ($logins as $att) {
195
+            $dn = "$att=$login_search, $ldap_base";
196
+            if (@ldap_bind($ldap_link, $dn, $pass)) {
197
+                return "$att=$login_search, $ldap_base";
198
+            }
199
+        }
200
+    }
201
+
202
+    return '';
203 203
 }
204 204
 
205 205
 /**
@@ -211,40 +211,40 @@  discard block
 block discarded – undo
211 211
  * @return array
212 212
  */
213 213
 function auth_ldap_retrouver($dn, $desc = [], $serveur = '') {
214
-	// Lire les infos sur l'utilisateur a partir de son DN depuis LDAP
214
+    // Lire les infos sur l'utilisateur a partir de son DN depuis LDAP
215 215
 
216
-	if (!$ldap = auth_ldap_connect($serveur)) {
217
-		spip_log("ldap $serveur injoignable");
216
+    if (!$ldap = auth_ldap_connect($serveur)) {
217
+        spip_log("ldap $serveur injoignable");
218 218
 
219
-		return [];
220
-	}
219
+        return [];
220
+    }
221 221
 
222
-	$ldap_link = $ldap['link'];
223
-	if (!$desc) {
224
-		$desc = $ldap['attributes'] ?: $GLOBALS['ldap_attributes'];
225
-		unset($desc['login']);
226
-	}
227
-	$result = @ldap_read($ldap_link, $dn, 'objectClass=*', array_values($desc));
222
+    $ldap_link = $ldap['link'];
223
+    if (!$desc) {
224
+        $desc = $ldap['attributes'] ?: $GLOBALS['ldap_attributes'];
225
+        unset($desc['login']);
226
+    }
227
+    $result = @ldap_read($ldap_link, $dn, 'objectClass=*', array_values($desc));
228 228
 
229
-	if (!$result) {
230
-		return [];
231
-	}
229
+    if (!$result) {
230
+        return [];
231
+    }
232 232
 
233
-	// Recuperer les donnees du premier (unique?) compte de l'auteur
234
-	$val = @ldap_get_entries($ldap_link, $result);
235
-	if (!is_array($val) || !is_array($val[0])) {
236
-		return [];
237
-	}
238
-	$val = $val[0];
233
+    // Recuperer les donnees du premier (unique?) compte de l'auteur
234
+    $val = @ldap_get_entries($ldap_link, $result);
235
+    if (!is_array($val) || !is_array($val[0])) {
236
+        return [];
237
+    }
238
+    $val = $val[0];
239 239
 
240
-	// Convertir depuis UTF-8 (jeu de caracteres par defaut)
241
-	include_spip('inc/charsets');
240
+    // Convertir depuis UTF-8 (jeu de caracteres par defaut)
241
+    include_spip('inc/charsets');
242 242
 
243
-	foreach ($desc as $k => $v) {
244
-		$desc[$k] = importer_charset($val[strtolower((string) $v)][0], 'utf-8');
245
-	}
243
+    foreach ($desc as $k => $v) {
244
+        $desc[$k] = importer_charset($val[strtolower((string) $v)][0], 'utf-8');
245
+    }
246 246
 
247
-	return $desc;
247
+    return $desc;
248 248
 }
249 249
 
250 250
 
@@ -256,7 +256,7 @@  discard block
 block discarded – undo
256 256
  * @return string
257 257
  */
258 258
 function auth_ldap_retrouver_login($login, $serveur = '') {
259
-	return auth_ldap_search($login, '', false, $serveur) ? $login : '';
259
+    return auth_ldap_search($login, '', false, $serveur) ? $login : '';
260 260
 }
261 261
 
262 262
 /**
@@ -276,9 +276,9 @@  discard block
 block discarded – undo
276 276
  *   Message d'erreur si login non valide, chaîne vide sinon
277 277
  */
278 278
 function auth_ldap_verifier_pass($login, #[\SensitiveParameter] $new_pass, $id_auteur = 0, $serveur = '') {
279
-	include_spip('auth/spip');
279
+    include_spip('auth/spip');
280 280
 
281
-	return auth_spip_verifier_pass($login, $new_pass, $id_auteur, $serveur);
281
+    return auth_spip_verifier_pass($login, $new_pass, $id_auteur, $serveur);
282 282
 }
283 283
 
284 284
 /**
@@ -299,7 +299,7 @@  discard block
 block discarded – undo
299 299
  *   ```
300 300
  */
301 301
 function auth_ldap_autoriser_modifier_pass($serveur = '') {
302
-	return true;
302
+    return true;
303 303
 }
304 304
 
305 305
 /**
@@ -317,22 +317,22 @@  discard block
 block discarded – undo
317 317
  *    Informe du succès ou de l'echec du changement du mot de passe
318 318
  */
319 319
 function auth_ldap_modifier_pass($login, #[\SensitiveParameter] $new_pass, $id_auteur, $serveur = '') {
320
-	if (is_null($new_pass) || auth_ldap_verifier_pass($login, $new_pass, $id_auteur, $serveur) != '') {
321
-		return false;
322
-	}
323
-	if (!$ldap = auth_ldap_connect($serveur)) {
324
-		return false;
325
-	}
326
-	$link = $ldap['link'];
327
-	include_spip('inc/session');
328
-	$dn = session_get('ldap_dn');
329
-	if ('' == $dn) {
330
-		return false;
331
-	}
332
-	if (!ldap_bind($link, $dn, session_get('ldap_password'))) {
333
-		return false;
334
-	}
335
-	$encoded_pass = '{MD5}' . base64_encode(pack('H*', md5((string) $new_pass)));
336
-
337
-	return ldap_mod_replace($link, $dn, ['userPassword' => $encoded_pass]);
320
+    if (is_null($new_pass) || auth_ldap_verifier_pass($login, $new_pass, $id_auteur, $serveur) != '') {
321
+        return false;
322
+    }
323
+    if (!$ldap = auth_ldap_connect($serveur)) {
324
+        return false;
325
+    }
326
+    $link = $ldap['link'];
327
+    include_spip('inc/session');
328
+    $dn = session_get('ldap_dn');
329
+    if ('' == $dn) {
330
+        return false;
331
+    }
332
+    if (!ldap_bind($link, $dn, session_get('ldap_password'))) {
333
+        return false;
334
+    }
335
+    $encoded_pass = '{MD5}' . base64_encode(pack('H*', md5((string) $new_pass)));
336
+
337
+    return ldap_mod_replace($link, $dn, ['userPassword' => $encoded_pass]);
338 338
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -67,7 +67,7 @@  discard block
 block discarded – undo
67 67
 	$credentials_ldap = ['ldap_dn' => $dn, 'ldap_password' => $pass];
68 68
 
69 69
 	// Si l'utilisateur figure deja dans la base, y recuperer les infos
70
-	$r = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login) . " AND source='ldap'", '', '', '', '', $serveur);
70
+	$r = sql_fetsel('*', 'spip_auteurs', 'login='.sql_quote($login)." AND source='ldap'", '', '', '', '', $serveur);
71 71
 
72 72
 	if ($r) {
73 73
 		return array_merge($r, $credentials_ldap);
@@ -90,7 +90,7 @@  discard block
 block discarded – undo
90 90
 	if ($r) {
91 91
 		return array_merge(
92 92
 			$credentials_ldap,
93
-			sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . (int) $r, '', '', '', '', $serveur)
93
+			sql_fetsel('*', 'spip_auteurs', 'id_auteur='.(int) $r, '', '', '', '', $serveur)
94 94
 		);
95 95
 	}
96 96
 
@@ -119,7 +119,7 @@  discard block
 block discarded – undo
119 119
 	$connexion = spip_connect($serveur);
120 120
 	if (!is_array($connexion['ldap'])) {
121 121
 		if ($connexion['authentification']['ldap']) {
122
-			$f = _DIR_CONNECT . $connexion['authentification']['ldap'];
122
+			$f = _DIR_CONNECT.$connexion['authentification']['ldap'];
123 123
 			unset($GLOBALS['ldap_link']);
124 124
 			if (is_readable($f)) {
125 125
 				include_once($f);
@@ -332,7 +332,7 @@  discard block
 block discarded – undo
332 332
 	if (!ldap_bind($link, $dn, session_get('ldap_password'))) {
333 333
 		return false;
334 334
 	}
335
-	$encoded_pass = '{MD5}' . base64_encode(pack('H*', md5((string) $new_pass)));
335
+	$encoded_pass = '{MD5}'.base64_encode(pack('H*', md5((string) $new_pass)));
336 336
 
337 337
 	return ldap_mod_replace($link, $dn, ['userPassword' => $encoded_pass]);
338 338
 }
Please login to merge, or discard this patch.
ecrire/auth/spip.php 3 patches
Braces   +5 added lines, -10 removed lines patch added patch discarded remove patch
@@ -110,14 +110,12 @@  discard block
 block discarded – undo
110 110
 					spip_log('Les cles secretes ont ete restaurées avec le backup du webmestre #' . $row['id_auteur'], 'auth' . _LOG_INFO_IMPORTANTE);
111 111
 					if ($cles->save()) {
112 112
 						$secret = $cles->getSecretAuth();
113
-					}
114
-					else {
113
+					} else {
115 114
 						spip_log("Echec restauration des cles : verifier les droits d'ecriture ?", 'auth' . _LOG_ERREUR);
116 115
 						// et on echoue car on ne veut pas que la situation reste telle quelle
117 116
 						raler_fichier(_DIR_ETC . 'cles.php');
118 117
 					}
119
-				}
120
-				else {
118
+				} else {
121 119
 					spip_log('Pas de cle secrete disponible (fichier config/cle.php absent ?) mais le backup du webmestre #' . $row['id_auteur'] . " n'est pas valide", 'auth' . _LOG_ERREUR);
122 120
 					sql_updateq('spip_auteurs', ['backup_cles' => ''], 'id_auteur=' . (int) $row['id_auteur']);
123 121
 				}
@@ -125,8 +123,7 @@  discard block
 block discarded – undo
125 123
 
126 124
 			if (!$secret || !Password::verifier($pass, $row['pass'], $secret)) {
127 125
 				unset($row);
128
-			}
129
-			else {
126
+			} else {
130 127
 				spip_log("validation du mot de passe pour l'auteur #" . $row['id_auteur'] . " $login via Password::verifier", 'auth' . _LOG_DEBUG);
131 128
 			}
132 129
 			break;
@@ -234,8 +231,7 @@  discard block
 block discarded – undo
234 231
 		spip_log("Echec generation d'une nouvelle cle : verifier les droits d'ecriture ?", 'auth' . _LOG_ERREUR);
235 232
 		// et on echoue car on ne veut pas que la situation reste telle quelle
236 233
 		raler_fichier(_DIR_ETC . 'cles.php');
237
-	}
238
-	else {
234
+	} else {
239 235
 		spip_log('Pas de cle secrete disponible (fichier config/cle.php absent ?) un des webmestres #' . implode(', #', $has_backup) . ' doit se connecter pour restaurer son backup des cles', 'auth' . _LOG_ERREUR);
240 236
 	}
241 237
 	return false;
@@ -468,8 +464,7 @@  discard block
 block discarded – undo
468 464
 	if (!$secret) {
469 465
 		if (auth_spip_initialiser_secret()) {
470 466
 			$secret = $cles->getSecretAuth();
471
-		}
472
-		else {
467
+		} else {
473 468
 			return false;
474 469
 		}
475 470
 	}
Please login to merge, or discard this patch.
Indentation   +397 added lines, -397 removed lines patch added patch discarded remove patch
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
 use Spip\Chiffrer\SpipCles;
19 19
 
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 
24 24
 /**
@@ -33,167 +33,167 @@  discard block
 block discarded – undo
33 33
  */
34 34
 function auth_spip_dist($login, #[\SensitiveParameter] $pass, $serveur = '', $phpauth = false) {
35 35
 
36
-	$methode = null;
37
-	// retrouver le login
38
-	$login = auth_spip_retrouver_login($login);
39
-	// login inconnu, n'allons pas plus loin
40
-	if (!$login) {
41
-		return [];
42
-	}
43
-
44
-	$md5pass = '';
45
-	$shapass = $shanext = '';
46
-	$auteur_peut_sauver_cles = false;
47
-
48
-	if ($pass) {
49
-		$row = sql_fetsel(
50
-			'*',
51
-			'spip_auteurs',
52
-			'login=' . sql_quote($login, $serveur, 'text') . " AND statut<>'5poubelle'",
53
-			'',
54
-			'',
55
-			'',
56
-			'',
57
-			$serveur
58
-		);
59
-
60
-		// lever un flag si cet auteur peut sauver les cles
61
-		if ($row['statut'] === '0minirezo' && $row['webmestre'] === 'oui' && isset($row['backup_cles'])) {
62
-			$auteur_peut_sauver_cles = true;
63
-		}
64
-	}
65
-
66
-	// login inexistant ou mot de passe vide
67
-	if (!$pass || !$row) {
68
-		return [];
69
-	}
70
-
71
-	$cles = SpipCles::instance();
72
-	$secret = $cles->getSecretAuth();
73
-
74
-	$hash = null;
75
-	switch (strlen((string) $row['pass'])) {
76
-		// legacy = md5 ou sha256
77
-		case 32:
78
-			// tres anciens mots de passe encodes en md5(alea.pass)
79
-			$hash = md5($row['alea_actuel'] . $pass);
80
-			$methode = 'md5';
81
-		case 64:
82
-			if (empty($hash)) {
83
-				// anciens mots de passe encodes en sha256(alea.pass)
84
-				$hash =  hash('sha256', $row['alea_actuel'] . $pass);
85
-				$methode = 'sha256';
86
-			}
87
-			if ($row['pass'] === $hash) {
88
-				spip_log("validation du mot de passe pour l'auteur #" . $row['id_auteur'] . " $login via $methode", 'auth' . _LOG_DEBUG);
89
-				// ce n'est pas cense arriver, mais si jamais c'est un backup inutilisable, il faut le nettoyer pour ne pas bloquer la creation d'une nouvelle cle d'auth
90
-				if (!empty($row['backup_cles'])) {
91
-					sql_updateq('spip_auteurs', ['backup_cles' => ''], 'id_auteur=' . (int) $row['id_auteur']);
92
-				}
93
-				break;
94
-			}
95
-
96
-		// on teste la methode par defaut, au cas ou ce serait un pass moderne qui a la malchance d'etre en 64char de long
97
-
98
-		case 60:
99
-		case 98:
100
-		default:
101
-			// doit-on restaurer un backup des cles ?
102
-			// si on a le bon pass on peut decoder le backup, retrouver la cle, et du coup valider le pass
103
-			if (
104
-				!$secret
105
-				&& $auteur_peut_sauver_cles
106
-				&& !empty($row['backup_cles'])
107
-			) {
108
-				if ($cles->restore($row['backup_cles'], $pass, $row['pass'], $row['id_auteur'])) {
109
-					spip_log('Les cles secretes ont ete restaurées avec le backup du webmestre #' . $row['id_auteur'], 'auth' . _LOG_INFO_IMPORTANTE);
110
-					if ($cles->save()) {
111
-						$secret = $cles->getSecretAuth();
112
-					}
113
-					else {
114
-						spip_log("Echec restauration des cles : verifier les droits d'ecriture ?", 'auth' . _LOG_ERREUR);
115
-						// et on echoue car on ne veut pas que la situation reste telle quelle
116
-						raler_fichier(_DIR_ETC . 'cles.php');
117
-					}
118
-				}
119
-				else {
120
-					spip_log('Pas de cle secrete disponible (fichier config/cle.php absent ?) mais le backup du webmestre #' . $row['id_auteur'] . " n'est pas valide", 'auth' . _LOG_ERREUR);
121
-					sql_updateq('spip_auteurs', ['backup_cles' => ''], 'id_auteur=' . (int) $row['id_auteur']);
122
-				}
123
-			}
124
-
125
-			if (!$secret || !Password::verifier($pass, $row['pass'], $secret)) {
126
-				unset($row);
127
-			}
128
-			else {
129
-				spip_log("validation du mot de passe pour l'auteur #" . $row['id_auteur'] . " $login via Password::verifier", 'auth' . _LOG_DEBUG);
130
-			}
131
-			break;
132
-	}
133
-
134
-	// Migration depuis ancienne version : si on a pas encore de cle
135
-	// ET si c'est le login d'un auteur qui peut sauver la cle
136
-	// créer la clé (en s'assurant bien que personne n'a de backup d'un precedent fichier cle.php)
137
-	// si c'est un auteur normal, on ne fait rien, il garde son ancien pass hashé en sha256 en attendant le login d'un webmestre
138
-	if (!$secret && $auteur_peut_sauver_cles && auth_spip_initialiser_secret()) {
139
-		$secret = $cles->getSecretAuth();
140
-	}
141
-
142
-	// login/mot de passe incorrect
143
-	if (empty($row)) {
144
-		return [];
145
-	}
146
-
147
-	// fait tourner le codage du pass dans la base
148
-	// sauf si phpauth : cela reviendrait a changer l'alea a chaque hit, et aucune action verifiable par securiser_action()
149
-	if (!$phpauth && $secret) {
150
-		include_spip('inc/acces'); // pour creer_uniqid et verifier_htaccess
151
-		$pass_hash_next = Password::hacher($pass, $secret);
152
-		if ($pass_hash_next) {
153
-			$set = [
154
-				'alea_actuel' => 'alea_futur', // @deprecated 4.1
155
-				'alea_futur' => sql_quote(creer_uniqid(), $serveur, 'text'), // @deprecated 4.1
156
-				'pass' => sql_quote($pass_hash_next, $serveur, 'text'),
157
-			];
158
-
159
-			// regenerer un htpass si on a active/desactive le plugin htpasswd
160
-			// et/ou que l'algo a change - pour etre certain de toujours utiliser le bon algo
161
-			$htpass = generer_htpass($pass);
162
-			if (strlen((string) $htpass) !== strlen((string) $row['htpass'])) {
163
-				$set['htpass'] = sql_quote($htpass, $serveur, 'text');
164
-			}
165
-
166
-			// a chaque login de webmestre : sauvegarde chiffree des clés du site (avec les pass du webmestre)
167
-			if ($auteur_peut_sauver_cles) {
168
-				$set['backup_cles'] = sql_quote($cles->backup($pass), $serveur, 'text');
169
-			}
170
-
171
-			@sql_update(
172
-				'spip_auteurs',
173
-				$set,
174
-				'id_auteur=' . (int) $row['id_auteur'] . ' AND pass=' . sql_quote(
175
-					$row['pass'],
176
-					$serveur,
177
-					'text'
178
-				),
179
-				[],
180
-				$serveur
181
-			);
182
-
183
-			// si on a change le htpass car changement d'algo, regenerer les fichiers htpasswd
184
-			if (isset($set['htpass'])) {
185
-				ecrire_acces();
186
-			}
187
-		}
188
-
189
-		// En profiter pour verifier la securite de tmp/
190
-		// Si elle ne fonctionne pas a l'installation, prevenir
191
-		if (!verifier_htaccess(_DIR_TMP) && defined('_ECRIRE_INSTALL')) {
192
-			return false;
193
-		}
194
-	}
195
-
196
-	return $row;
36
+    $methode = null;
37
+    // retrouver le login
38
+    $login = auth_spip_retrouver_login($login);
39
+    // login inconnu, n'allons pas plus loin
40
+    if (!$login) {
41
+        return [];
42
+    }
43
+
44
+    $md5pass = '';
45
+    $shapass = $shanext = '';
46
+    $auteur_peut_sauver_cles = false;
47
+
48
+    if ($pass) {
49
+        $row = sql_fetsel(
50
+            '*',
51
+            'spip_auteurs',
52
+            'login=' . sql_quote($login, $serveur, 'text') . " AND statut<>'5poubelle'",
53
+            '',
54
+            '',
55
+            '',
56
+            '',
57
+            $serveur
58
+        );
59
+
60
+        // lever un flag si cet auteur peut sauver les cles
61
+        if ($row['statut'] === '0minirezo' && $row['webmestre'] === 'oui' && isset($row['backup_cles'])) {
62
+            $auteur_peut_sauver_cles = true;
63
+        }
64
+    }
65
+
66
+    // login inexistant ou mot de passe vide
67
+    if (!$pass || !$row) {
68
+        return [];
69
+    }
70
+
71
+    $cles = SpipCles::instance();
72
+    $secret = $cles->getSecretAuth();
73
+
74
+    $hash = null;
75
+    switch (strlen((string) $row['pass'])) {
76
+        // legacy = md5 ou sha256
77
+        case 32:
78
+            // tres anciens mots de passe encodes en md5(alea.pass)
79
+            $hash = md5($row['alea_actuel'] . $pass);
80
+            $methode = 'md5';
81
+        case 64:
82
+            if (empty($hash)) {
83
+                // anciens mots de passe encodes en sha256(alea.pass)
84
+                $hash =  hash('sha256', $row['alea_actuel'] . $pass);
85
+                $methode = 'sha256';
86
+            }
87
+            if ($row['pass'] === $hash) {
88
+                spip_log("validation du mot de passe pour l'auteur #" . $row['id_auteur'] . " $login via $methode", 'auth' . _LOG_DEBUG);
89
+                // ce n'est pas cense arriver, mais si jamais c'est un backup inutilisable, il faut le nettoyer pour ne pas bloquer la creation d'une nouvelle cle d'auth
90
+                if (!empty($row['backup_cles'])) {
91
+                    sql_updateq('spip_auteurs', ['backup_cles' => ''], 'id_auteur=' . (int) $row['id_auteur']);
92
+                }
93
+                break;
94
+            }
95
+
96
+        // on teste la methode par defaut, au cas ou ce serait un pass moderne qui a la malchance d'etre en 64char de long
97
+
98
+        case 60:
99
+        case 98:
100
+        default:
101
+            // doit-on restaurer un backup des cles ?
102
+            // si on a le bon pass on peut decoder le backup, retrouver la cle, et du coup valider le pass
103
+            if (
104
+                !$secret
105
+                && $auteur_peut_sauver_cles
106
+                && !empty($row['backup_cles'])
107
+            ) {
108
+                if ($cles->restore($row['backup_cles'], $pass, $row['pass'], $row['id_auteur'])) {
109
+                    spip_log('Les cles secretes ont ete restaurées avec le backup du webmestre #' . $row['id_auteur'], 'auth' . _LOG_INFO_IMPORTANTE);
110
+                    if ($cles->save()) {
111
+                        $secret = $cles->getSecretAuth();
112
+                    }
113
+                    else {
114
+                        spip_log("Echec restauration des cles : verifier les droits d'ecriture ?", 'auth' . _LOG_ERREUR);
115
+                        // et on echoue car on ne veut pas que la situation reste telle quelle
116
+                        raler_fichier(_DIR_ETC . 'cles.php');
117
+                    }
118
+                }
119
+                else {
120
+                    spip_log('Pas de cle secrete disponible (fichier config/cle.php absent ?) mais le backup du webmestre #' . $row['id_auteur'] . " n'est pas valide", 'auth' . _LOG_ERREUR);
121
+                    sql_updateq('spip_auteurs', ['backup_cles' => ''], 'id_auteur=' . (int) $row['id_auteur']);
122
+                }
123
+            }
124
+
125
+            if (!$secret || !Password::verifier($pass, $row['pass'], $secret)) {
126
+                unset($row);
127
+            }
128
+            else {
129
+                spip_log("validation du mot de passe pour l'auteur #" . $row['id_auteur'] . " $login via Password::verifier", 'auth' . _LOG_DEBUG);
130
+            }
131
+            break;
132
+    }
133
+
134
+    // Migration depuis ancienne version : si on a pas encore de cle
135
+    // ET si c'est le login d'un auteur qui peut sauver la cle
136
+    // créer la clé (en s'assurant bien que personne n'a de backup d'un precedent fichier cle.php)
137
+    // si c'est un auteur normal, on ne fait rien, il garde son ancien pass hashé en sha256 en attendant le login d'un webmestre
138
+    if (!$secret && $auteur_peut_sauver_cles && auth_spip_initialiser_secret()) {
139
+        $secret = $cles->getSecretAuth();
140
+    }
141
+
142
+    // login/mot de passe incorrect
143
+    if (empty($row)) {
144
+        return [];
145
+    }
146
+
147
+    // fait tourner le codage du pass dans la base
148
+    // sauf si phpauth : cela reviendrait a changer l'alea a chaque hit, et aucune action verifiable par securiser_action()
149
+    if (!$phpauth && $secret) {
150
+        include_spip('inc/acces'); // pour creer_uniqid et verifier_htaccess
151
+        $pass_hash_next = Password::hacher($pass, $secret);
152
+        if ($pass_hash_next) {
153
+            $set = [
154
+                'alea_actuel' => 'alea_futur', // @deprecated 4.1
155
+                'alea_futur' => sql_quote(creer_uniqid(), $serveur, 'text'), // @deprecated 4.1
156
+                'pass' => sql_quote($pass_hash_next, $serveur, 'text'),
157
+            ];
158
+
159
+            // regenerer un htpass si on a active/desactive le plugin htpasswd
160
+            // et/ou que l'algo a change - pour etre certain de toujours utiliser le bon algo
161
+            $htpass = generer_htpass($pass);
162
+            if (strlen((string) $htpass) !== strlen((string) $row['htpass'])) {
163
+                $set['htpass'] = sql_quote($htpass, $serveur, 'text');
164
+            }
165
+
166
+            // a chaque login de webmestre : sauvegarde chiffree des clés du site (avec les pass du webmestre)
167
+            if ($auteur_peut_sauver_cles) {
168
+                $set['backup_cles'] = sql_quote($cles->backup($pass), $serveur, 'text');
169
+            }
170
+
171
+            @sql_update(
172
+                'spip_auteurs',
173
+                $set,
174
+                'id_auteur=' . (int) $row['id_auteur'] . ' AND pass=' . sql_quote(
175
+                    $row['pass'],
176
+                    $serveur,
177
+                    'text'
178
+                ),
179
+                [],
180
+                $serveur
181
+            );
182
+
183
+            // si on a change le htpass car changement d'algo, regenerer les fichiers htpasswd
184
+            if (isset($set['htpass'])) {
185
+                ecrire_acces();
186
+            }
187
+        }
188
+
189
+        // En profiter pour verifier la securite de tmp/
190
+        // Si elle ne fonctionne pas a l'installation, prevenir
191
+        if (!verifier_htaccess(_DIR_TMP) && defined('_ECRIRE_INSTALL')) {
192
+            return false;
193
+        }
194
+    }
195
+
196
+    return $row;
197 197
 }
198 198
 
199 199
 /**
@@ -208,36 +208,36 @@  discard block
 block discarded – undo
208 208
  * @return bool
209 209
  */
210 210
 function auth_spip_initialiser_secret(bool $force = false): bool {
211
-	$cles = SpipCles::instance();
212
-	$secret = $cles->getSecretAuth();
213
-
214
-	// on ne fait rien si on a un secret dispo
215
-	if ($secret) {
216
-		return false;
217
-	}
218
-
219
-	// si force, on ne verifie pas la presence d'un backup chez un webmestre
220
-	if ($force) {
221
-		spip_log('Pas de cle secrete disponible, on regenere une nouvelle cle forcee - tous les mots de passe sont invalides', 'auth' . _LOG_INFO_IMPORTANTE);
222
-		$secret = $cles->getSecretAuth(true);
223
-		return true;
224
-	}
225
-
226
-	$has_backup = sql_allfetsel('id_auteur', 'spip_auteurs', 'statut=' . sql_quote('0minirezo') . ' AND webmestre=' . sql_quote('oui') . " AND backup_cles!=''");
227
-	$has_backup = array_column($has_backup, 'id_auteur');
228
-	if ($has_backup === []) {
229
-		spip_log("Pas de cle secrete disponible, et aucun webmestre n'a de backup, on regenere une nouvelle cle - tous les mots de passe sont invalides", 'auth' . _LOG_INFO_IMPORTANTE);
230
-		if ($secret = $cles->getSecretAuth(true)) {
231
-			return true;
232
-		}
233
-		spip_log("Echec generation d'une nouvelle cle : verifier les droits d'ecriture ?", 'auth' . _LOG_ERREUR);
234
-		// et on echoue car on ne veut pas que la situation reste telle quelle
235
-		raler_fichier(_DIR_ETC . 'cles.php');
236
-	}
237
-	else {
238
-		spip_log('Pas de cle secrete disponible (fichier config/cle.php absent ?) un des webmestres #' . implode(', #', $has_backup) . ' doit se connecter pour restaurer son backup des cles', 'auth' . _LOG_ERREUR);
239
-	}
240
-	return false;
211
+    $cles = SpipCles::instance();
212
+    $secret = $cles->getSecretAuth();
213
+
214
+    // on ne fait rien si on a un secret dispo
215
+    if ($secret) {
216
+        return false;
217
+    }
218
+
219
+    // si force, on ne verifie pas la presence d'un backup chez un webmestre
220
+    if ($force) {
221
+        spip_log('Pas de cle secrete disponible, on regenere une nouvelle cle forcee - tous les mots de passe sont invalides', 'auth' . _LOG_INFO_IMPORTANTE);
222
+        $secret = $cles->getSecretAuth(true);
223
+        return true;
224
+    }
225
+
226
+    $has_backup = sql_allfetsel('id_auteur', 'spip_auteurs', 'statut=' . sql_quote('0minirezo') . ' AND webmestre=' . sql_quote('oui') . " AND backup_cles!=''");
227
+    $has_backup = array_column($has_backup, 'id_auteur');
228
+    if ($has_backup === []) {
229
+        spip_log("Pas de cle secrete disponible, et aucun webmestre n'a de backup, on regenere une nouvelle cle - tous les mots de passe sont invalides", 'auth' . _LOG_INFO_IMPORTANTE);
230
+        if ($secret = $cles->getSecretAuth(true)) {
231
+            return true;
232
+        }
233
+        spip_log("Echec generation d'une nouvelle cle : verifier les droits d'ecriture ?", 'auth' . _LOG_ERREUR);
234
+        // et on echoue car on ne veut pas que la situation reste telle quelle
235
+        raler_fichier(_DIR_ETC . 'cles.php');
236
+    }
237
+    else {
238
+        spip_log('Pas de cle secrete disponible (fichier config/cle.php absent ?) un des webmestres #' . implode(', #', $has_backup) . ' doit se connecter pour restaurer son backup des cles', 'auth' . _LOG_ERREUR);
239
+    }
240
+    return false;
241 241
 }
242 242
 
243 243
 /**
@@ -247,19 +247,19 @@  discard block
 block discarded – undo
247 247
  * @return array
248 248
  */
249 249
 function auth_spip_formulaire_login($flux) {
250
-	// javascript qui gere la securite du login en evitant de faire circuler le pass en clair
251
-	$js = file_get_contents(find_in_path('prive/javascript/login.js'));
252
-	$flux['data'] .=
253
-		  '<script type="text/javascript">/*<![CDATA[*/'
254
-		. "$js\n"
255
-		. "var login_info={'login':'" . $flux['args']['contexte']['var_login'] . "',"
256
-		. "'page_auteur': '" . generer_url_public('informer_auteur') . "',"
257
-		. "'informe_auteur_en_cours':false,"
258
-		. "'attente_informe':0};"
259
-		. "jQuery(function(){jQuery('#var_login').change(actualise_auteur);});"
260
-		. '/*]]>*/</script>';
261
-
262
-	return $flux;
250
+    // javascript qui gere la securite du login en evitant de faire circuler le pass en clair
251
+    $js = file_get_contents(find_in_path('prive/javascript/login.js'));
252
+    $flux['data'] .=
253
+            '<script type="text/javascript">/*<![CDATA[*/'
254
+        . "$js\n"
255
+        . "var login_info={'login':'" . $flux['args']['contexte']['var_login'] . "',"
256
+        . "'page_auteur': '" . generer_url_public('informer_auteur') . "',"
257
+        . "'informe_auteur_en_cours':false,"
258
+        . "'attente_informe':0};"
259
+        . "jQuery(function(){jQuery('#var_login').change(actualise_auteur);});"
260
+        . '/*]]>*/</script>';
261
+
262
+    return $flux;
263 263
 }
264 264
 
265 265
 
@@ -271,8 +271,8 @@  discard block
 block discarded – undo
271 271
  *   toujours true pour un auteur cree dans SPIP
272 272
  */
273 273
 function auth_spip_autoriser_modifier_login(string $serveur = ''): bool {
274
-	// les fonctions d'ecriture sur base distante sont encore incompletes
275
-	return !strlen($serveur);
274
+    // les fonctions d'ecriture sur base distante sont encore incompletes
275
+    return !strlen($serveur);
276 276
 }
277 277
 
278 278
 /**
@@ -286,25 +286,25 @@  discard block
 block discarded – undo
286 286
  *  message d'erreur si login non valide, chaine vide sinon
287 287
  */
288 288
 function auth_spip_verifier_login($new_login, $id_auteur = 0, $serveur = '') {
289
-	// login et mot de passe
290
-	if (strlen($new_login)) {
291
-		if (strlen($new_login) < _LOGIN_TROP_COURT) {
292
-			return _T('info_login_trop_court_car_pluriel', ['nb' => _LOGIN_TROP_COURT]);
293
-		} else {
294
-			$n = sql_countsel(
295
-				'spip_auteurs',
296
-				'login=' . sql_quote($new_login) . ' AND id_auteur!=' . (int) $id_auteur . " AND statut!='5poubelle'",
297
-				'',
298
-				'',
299
-				$serveur
300
-			);
301
-			if ($n) {
302
-				return _T('info_login_existant');
303
-			}
304
-		}
305
-	}
306
-
307
-	return '';
289
+    // login et mot de passe
290
+    if (strlen($new_login)) {
291
+        if (strlen($new_login) < _LOGIN_TROP_COURT) {
292
+            return _T('info_login_trop_court_car_pluriel', ['nb' => _LOGIN_TROP_COURT]);
293
+        } else {
294
+            $n = sql_countsel(
295
+                'spip_auteurs',
296
+                'login=' . sql_quote($new_login) . ' AND id_auteur!=' . (int) $id_auteur . " AND statut!='5poubelle'",
297
+                '',
298
+                '',
299
+                $serveur
300
+            );
301
+            if ($n) {
302
+                return _T('info_login_existant');
303
+            }
304
+        }
305
+    }
306
+
307
+    return '';
308 308
 }
309 309
 
310 310
 /**
@@ -316,41 +316,41 @@  discard block
 block discarded – undo
316 316
  * @return bool
317 317
  */
318 318
 function auth_spip_modifier_login($new_login, $id_auteur, $serveur = '') {
319
-	if (is_null($new_login) || auth_spip_verifier_login($new_login, $id_auteur, $serveur) != '') {
320
-		return false;
321
-	}
322
-	if (
323
-		!($id_auteur = (int) $id_auteur)
324
-		|| !$auteur = sql_fetsel('login', 'spip_auteurs', 'id_auteur=' . (int) $id_auteur, '', '', '', '', $serveur)
325
-	) {
326
-		return false;
327
-	}
328
-	if ($new_login == $auteur['login']) {
329
-		return true;
330
-	} // on a rien fait mais c'est bon !
331
-
332
-	include_spip('action/editer_auteur');
333
-
334
-	// vider le login des auteurs a la poubelle qui avaient ce meme login
335
-	if (strlen($new_login)) {
336
-		$anciens = sql_allfetsel(
337
-			'id_auteur',
338
-			'spip_auteurs',
339
-			'login=' . sql_quote($new_login, $serveur, 'text') . " AND statut='5poubelle'",
340
-			'',
341
-			'',
342
-			'',
343
-			'',
344
-			$serveur
345
-		);
346
-		while ($row = array_pop($anciens)) {
347
-			auteur_modifier($row['id_auteur'], ['login' => ''], true); // manque la gestion de $serveur
348
-		}
349
-	}
350
-
351
-	auteur_modifier($id_auteur, ['login' => $new_login], true); // manque la gestion de $serveur
352
-
353
-	return true;
319
+    if (is_null($new_login) || auth_spip_verifier_login($new_login, $id_auteur, $serveur) != '') {
320
+        return false;
321
+    }
322
+    if (
323
+        !($id_auteur = (int) $id_auteur)
324
+        || !$auteur = sql_fetsel('login', 'spip_auteurs', 'id_auteur=' . (int) $id_auteur, '', '', '', '', $serveur)
325
+    ) {
326
+        return false;
327
+    }
328
+    if ($new_login == $auteur['login']) {
329
+        return true;
330
+    } // on a rien fait mais c'est bon !
331
+
332
+    include_spip('action/editer_auteur');
333
+
334
+    // vider le login des auteurs a la poubelle qui avaient ce meme login
335
+    if (strlen($new_login)) {
336
+        $anciens = sql_allfetsel(
337
+            'id_auteur',
338
+            'spip_auteurs',
339
+            'login=' . sql_quote($new_login, $serveur, 'text') . " AND statut='5poubelle'",
340
+            '',
341
+            '',
342
+            '',
343
+            '',
344
+            $serveur
345
+        );
346
+        while ($row = array_pop($anciens)) {
347
+            auteur_modifier($row['id_auteur'], ['login' => ''], true); // manque la gestion de $serveur
348
+        }
349
+    }
350
+
351
+    auteur_modifier($id_auteur, ['login' => $new_login], true); // manque la gestion de $serveur
352
+
353
+    return true;
354 354
 }
355 355
 
356 356
 /**
@@ -362,44 +362,44 @@  discard block
 block discarded – undo
362 362
  * @return string
363 363
  */
364 364
 function auth_spip_retrouver_login($login, $serveur = '') {
365
-	if (!strlen($login)) {
366
-		return null;
367
-	} // pas la peine de requeter
368
-	$l = sql_quote($login, $serveur, 'text');
369
-	if (
370
-		$r = sql_getfetsel(
371
-			'login',
372
-			'spip_auteurs',
373
-			"statut<>'5poubelle'" .
374
-			' AND (length(pass)>0)' .
375
-			" AND (login=$l)",
376
-			'',
377
-			'',
378
-			'',
379
-			'',
380
-			$serveur
381
-		)
382
-	) {
383
-		return $r;
384
-	}
385
-	// Si pas d'auteur avec ce login
386
-	// regarder s'il a saisi son nom ou son mail.
387
-	// Ne pas fusionner avec la requete precedente
388
-	// car un nom peut etre homonyme d'un autre login
389
-	else {
390
-		return sql_getfetsel(
391
-			'login',
392
-			'spip_auteurs',
393
-			"statut<>'5poubelle'" .
394
-			' AND (length(pass)>0)' .
395
-			" AND (login<>'' AND (nom=$l OR email=$l))",
396
-			'',
397
-			'',
398
-			'',
399
-			'',
400
-			$serveur
401
-		);
402
-	}
365
+    if (!strlen($login)) {
366
+        return null;
367
+    } // pas la peine de requeter
368
+    $l = sql_quote($login, $serveur, 'text');
369
+    if (
370
+        $r = sql_getfetsel(
371
+            'login',
372
+            'spip_auteurs',
373
+            "statut<>'5poubelle'" .
374
+            ' AND (length(pass)>0)' .
375
+            " AND (login=$l)",
376
+            '',
377
+            '',
378
+            '',
379
+            '',
380
+            $serveur
381
+        )
382
+    ) {
383
+        return $r;
384
+    }
385
+    // Si pas d'auteur avec ce login
386
+    // regarder s'il a saisi son nom ou son mail.
387
+    // Ne pas fusionner avec la requete precedente
388
+    // car un nom peut etre homonyme d'un autre login
389
+    else {
390
+        return sql_getfetsel(
391
+            'login',
392
+            'spip_auteurs',
393
+            "statut<>'5poubelle'" .
394
+            ' AND (length(pass)>0)' .
395
+            " AND (login<>'' AND (nom=$l OR email=$l))",
396
+            '',
397
+            '',
398
+            '',
399
+            '',
400
+            $serveur
401
+        );
402
+    }
403 403
 }
404 404
 
405 405
 /**
@@ -410,8 +410,8 @@  discard block
 block discarded – undo
410 410
  *  toujours true pour un auteur cree dans SPIP
411 411
  */
412 412
 function auth_spip_autoriser_modifier_pass(string $serveur = ''): bool {
413
-	// les fonctions d'ecriture sur base distante sont encore incompletes
414
-	return !strlen($serveur);
413
+    // les fonctions d'ecriture sur base distante sont encore incompletes
414
+    return !strlen($serveur);
415 415
 }
416 416
 
417 417
 
@@ -432,12 +432,12 @@  discard block
 block discarded – undo
432 432
  *  message d'erreur si login non valide, chaine vide sinon
433 433
  */
434 434
 function auth_spip_verifier_pass($login, #[\SensitiveParameter] $new_pass, $id_auteur = 0, $serveur = '') {
435
-	// login et mot de passe
436
-	if (strlen($new_pass) < _PASS_LONGUEUR_MINI) {
437
-		return _T('info_passe_trop_court_car_pluriel', ['nb' => _PASS_LONGUEUR_MINI]);
438
-	}
435
+    // login et mot de passe
436
+    if (strlen($new_pass) < _PASS_LONGUEUR_MINI) {
437
+        return _T('info_passe_trop_court_car_pluriel', ['nb' => _PASS_LONGUEUR_MINI]);
438
+    }
439 439
 
440
-	return '';
440
+    return '';
441 441
 }
442 442
 
443 443
 /**
@@ -451,47 +451,47 @@  discard block
 block discarded – undo
451 451
  * @return bool
452 452
  */
453 453
 function auth_spip_modifier_pass($login, #[\SensitiveParameter] $new_pass, $id_auteur, $serveur = '') {
454
-	if (is_null($new_pass) || auth_spip_verifier_pass($login, $new_pass, $id_auteur, $serveur) != '') {
455
-		return false;
456
-	}
457
-
458
-	if (
459
-		!($id_auteur = (int) $id_auteur)
460
-		|| !($auteur = sql_fetsel('login, statut, webmestre', 'spip_auteurs', 'id_auteur=' . (int) $id_auteur, '', '', '', '', $serveur))
461
-	) {
462
-		return false;
463
-	}
464
-
465
-	$cles = SpipCles::instance();
466
-	$secret = $cles->getSecretAuth();
467
-	if (!$secret) {
468
-		if (auth_spip_initialiser_secret()) {
469
-			$secret = $cles->getSecretAuth();
470
-		}
471
-		else {
472
-			return false;
473
-		}
474
-	}
475
-
476
-
477
-	include_spip('inc/acces');
478
-	$set = [
479
-		'pass' => Password::hacher($new_pass, $secret),
480
-		'htpass' => generer_htpass($new_pass),
481
-		'alea_actuel' => creer_uniqid(), // @deprecated 4.1
482
-		'alea_futur' => creer_uniqid(), // @deprecated 4.1
483
-		'low_sec' => '',
484
-	];
485
-
486
-	// si c'est un webmestre, on met a jour son backup des cles
487
-	if ($auteur['statut'] === '0minirezo' && $auteur['webmestre'] === 'oui') {
488
-		$set['backup_cles'] = $cles->backup($new_pass);
489
-	}
490
-
491
-	include_spip('action/editer_auteur');
492
-	auteur_modifier($id_auteur, $set, true); // manque la gestion de $serveur
493
-
494
-	return true; // on a bien modifie le pass
454
+    if (is_null($new_pass) || auth_spip_verifier_pass($login, $new_pass, $id_auteur, $serveur) != '') {
455
+        return false;
456
+    }
457
+
458
+    if (
459
+        !($id_auteur = (int) $id_auteur)
460
+        || !($auteur = sql_fetsel('login, statut, webmestre', 'spip_auteurs', 'id_auteur=' . (int) $id_auteur, '', '', '', '', $serveur))
461
+    ) {
462
+        return false;
463
+    }
464
+
465
+    $cles = SpipCles::instance();
466
+    $secret = $cles->getSecretAuth();
467
+    if (!$secret) {
468
+        if (auth_spip_initialiser_secret()) {
469
+            $secret = $cles->getSecretAuth();
470
+        }
471
+        else {
472
+            return false;
473
+        }
474
+    }
475
+
476
+
477
+    include_spip('inc/acces');
478
+    $set = [
479
+        'pass' => Password::hacher($new_pass, $secret),
480
+        'htpass' => generer_htpass($new_pass),
481
+        'alea_actuel' => creer_uniqid(), // @deprecated 4.1
482
+        'alea_futur' => creer_uniqid(), // @deprecated 4.1
483
+        'low_sec' => '',
484
+    ];
485
+
486
+    // si c'est un webmestre, on met a jour son backup des cles
487
+    if ($auteur['statut'] === '0minirezo' && $auteur['webmestre'] === 'oui') {
488
+        $set['backup_cles'] = $cles->backup($new_pass);
489
+    }
490
+
491
+    include_spip('action/editer_auteur');
492
+    auteur_modifier($id_auteur, $set, true); // manque la gestion de $serveur
493
+
494
+    return true; // on a bien modifie le pass
495 495
 }
496 496
 
497 497
 /**
@@ -505,54 +505,54 @@  discard block
 block discarded – undo
505 505
  * @return void
506 506
  */
507 507
 function auth_spip_synchroniser_distant($id_auteur, $champs, $options = [], string $serveur = ''): void {
508
-	// ne rien faire pour une base distante : on ne sait pas regenerer les htaccess
509
-	if (strlen($serveur)) {
510
-		return;
511
-	}
512
-	// si un login, pass ou statut a ete modifie
513
-	// regenerer les fichier htpass
514
-	if (
515
-		isset($champs['login']) || isset($champs['pass']) || isset($champs['statut']) || isset($options['all']) && $options['all']
516
-	) {
517
-		$htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
518
-		$htpasswd = _DIR_TMP . _AUTH_USER_FILE;
519
-
520
-		// Cette variable de configuration peut etre posee par un plugin
521
-		// par exemple acces_restreint ;
522
-		// si .htaccess existe, outrepasser spip_meta
523
-		if (
524
-			(!isset($GLOBALS['meta']['creer_htpasswd']) || $GLOBALS['meta']['creer_htpasswd'] != 'oui') && !@file_exists($htaccess)
525
-		) {
526
-			spip_unlink($htpasswd);
527
-			spip_unlink($htpasswd . '-admin');
528
-
529
-			return;
530
-		}
531
-
532
-		# remarque : ici on laisse passer les "nouveau" de maniere a leur permettre
533
-		# de devenir redacteur le cas echeant (auth http)... a nettoyer
534
-		// attention, il faut au prealable se connecter a la base (necessaire car utilise par install)
535
-
536
-		$p1 = ''; // login:htpass pour tous
537
-		$p2 = ''; // login:htpass pour les admins
538
-		$s = sql_select(
539
-			'login, htpass, statut',
540
-			'spip_auteurs',
541
-			sql_in('statut', ['1comite', '0minirezo', 'nouveau'])
542
-		);
543
-		while ($t = sql_fetch($s)) {
544
-			if (strlen((string) $t['login']) && strlen((string) $t['htpass'])) {
545
-				$p1 .= $t['login'] . ':' . $t['htpass'] . "\n";
546
-				if ($t['statut'] == '0minirezo') {
547
-					$p2 .= $t['login'] . ':' . $t['htpass'] . "\n";
548
-				}
549
-			}
550
-		}
551
-		sql_free($s);
552
-		if ($p1) {
553
-			ecrire_fichier($htpasswd, $p1);
554
-			ecrire_fichier($htpasswd . '-admin', $p2);
555
-			spip_log("Ecriture de $htpasswd et $htpasswd-admin");
556
-		}
557
-	}
508
+    // ne rien faire pour une base distante : on ne sait pas regenerer les htaccess
509
+    if (strlen($serveur)) {
510
+        return;
511
+    }
512
+    // si un login, pass ou statut a ete modifie
513
+    // regenerer les fichier htpass
514
+    if (
515
+        isset($champs['login']) || isset($champs['pass']) || isset($champs['statut']) || isset($options['all']) && $options['all']
516
+    ) {
517
+        $htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
518
+        $htpasswd = _DIR_TMP . _AUTH_USER_FILE;
519
+
520
+        // Cette variable de configuration peut etre posee par un plugin
521
+        // par exemple acces_restreint ;
522
+        // si .htaccess existe, outrepasser spip_meta
523
+        if (
524
+            (!isset($GLOBALS['meta']['creer_htpasswd']) || $GLOBALS['meta']['creer_htpasswd'] != 'oui') && !@file_exists($htaccess)
525
+        ) {
526
+            spip_unlink($htpasswd);
527
+            spip_unlink($htpasswd . '-admin');
528
+
529
+            return;
530
+        }
531
+
532
+        # remarque : ici on laisse passer les "nouveau" de maniere a leur permettre
533
+        # de devenir redacteur le cas echeant (auth http)... a nettoyer
534
+        // attention, il faut au prealable se connecter a la base (necessaire car utilise par install)
535
+
536
+        $p1 = ''; // login:htpass pour tous
537
+        $p2 = ''; // login:htpass pour les admins
538
+        $s = sql_select(
539
+            'login, htpass, statut',
540
+            'spip_auteurs',
541
+            sql_in('statut', ['1comite', '0minirezo', 'nouveau'])
542
+        );
543
+        while ($t = sql_fetch($s)) {
544
+            if (strlen((string) $t['login']) && strlen((string) $t['htpass'])) {
545
+                $p1 .= $t['login'] . ':' . $t['htpass'] . "\n";
546
+                if ($t['statut'] == '0minirezo') {
547
+                    $p2 .= $t['login'] . ':' . $t['htpass'] . "\n";
548
+                }
549
+            }
550
+        }
551
+        sql_free($s);
552
+        if ($p1) {
553
+            ecrire_fichier($htpasswd, $p1);
554
+            ecrire_fichier($htpasswd . '-admin', $p2);
555
+            spip_log("Ecriture de $htpasswd et $htpasswd-admin");
556
+        }
557
+    }
558 558
 }
Please login to merge, or discard this patch.
Spacing   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -49,7 +49,7 @@  discard block
 block discarded – undo
49 49
 		$row = sql_fetsel(
50 50
 			'*',
51 51
 			'spip_auteurs',
52
-			'login=' . sql_quote($login, $serveur, 'text') . " AND statut<>'5poubelle'",
52
+			'login='.sql_quote($login, $serveur, 'text')." AND statut<>'5poubelle'",
53 53
 			'',
54 54
 			'',
55 55
 			'',
@@ -76,19 +76,19 @@  discard block
 block discarded – undo
76 76
 		// legacy = md5 ou sha256
77 77
 		case 32:
78 78
 			// tres anciens mots de passe encodes en md5(alea.pass)
79
-			$hash = md5($row['alea_actuel'] . $pass);
79
+			$hash = md5($row['alea_actuel'].$pass);
80 80
 			$methode = 'md5';
81 81
 		case 64:
82 82
 			if (empty($hash)) {
83 83
 				// anciens mots de passe encodes en sha256(alea.pass)
84
-				$hash =  hash('sha256', $row['alea_actuel'] . $pass);
84
+				$hash = hash('sha256', $row['alea_actuel'].$pass);
85 85
 				$methode = 'sha256';
86 86
 			}
87 87
 			if ($row['pass'] === $hash) {
88
-				spip_log("validation du mot de passe pour l'auteur #" . $row['id_auteur'] . " $login via $methode", 'auth' . _LOG_DEBUG);
88
+				spip_log("validation du mot de passe pour l'auteur #".$row['id_auteur']." $login via $methode", 'auth'._LOG_DEBUG);
89 89
 				// ce n'est pas cense arriver, mais si jamais c'est un backup inutilisable, il faut le nettoyer pour ne pas bloquer la creation d'une nouvelle cle d'auth
90 90
 				if (!empty($row['backup_cles'])) {
91
-					sql_updateq('spip_auteurs', ['backup_cles' => ''], 'id_auteur=' . (int) $row['id_auteur']);
91
+					sql_updateq('spip_auteurs', ['backup_cles' => ''], 'id_auteur='.(int) $row['id_auteur']);
92 92
 				}
93 93
 				break;
94 94
 			}
@@ -106,19 +106,19 @@  discard block
 block discarded – undo
106 106
 				&& !empty($row['backup_cles'])
107 107
 			) {
108 108
 				if ($cles->restore($row['backup_cles'], $pass, $row['pass'], $row['id_auteur'])) {
109
-					spip_log('Les cles secretes ont ete restaurées avec le backup du webmestre #' . $row['id_auteur'], 'auth' . _LOG_INFO_IMPORTANTE);
109
+					spip_log('Les cles secretes ont ete restaurées avec le backup du webmestre #'.$row['id_auteur'], 'auth'._LOG_INFO_IMPORTANTE);
110 110
 					if ($cles->save()) {
111 111
 						$secret = $cles->getSecretAuth();
112 112
 					}
113 113
 					else {
114
-						spip_log("Echec restauration des cles : verifier les droits d'ecriture ?", 'auth' . _LOG_ERREUR);
114
+						spip_log("Echec restauration des cles : verifier les droits d'ecriture ?", 'auth'._LOG_ERREUR);
115 115
 						// et on echoue car on ne veut pas que la situation reste telle quelle
116
-						raler_fichier(_DIR_ETC . 'cles.php');
116
+						raler_fichier(_DIR_ETC.'cles.php');
117 117
 					}
118 118
 				}
119 119
 				else {
120
-					spip_log('Pas de cle secrete disponible (fichier config/cle.php absent ?) mais le backup du webmestre #' . $row['id_auteur'] . " n'est pas valide", 'auth' . _LOG_ERREUR);
121
-					sql_updateq('spip_auteurs', ['backup_cles' => ''], 'id_auteur=' . (int) $row['id_auteur']);
120
+					spip_log('Pas de cle secrete disponible (fichier config/cle.php absent ?) mais le backup du webmestre #'.$row['id_auteur']." n'est pas valide", 'auth'._LOG_ERREUR);
121
+					sql_updateq('spip_auteurs', ['backup_cles' => ''], 'id_auteur='.(int) $row['id_auteur']);
122 122
 				}
123 123
 			}
124 124
 
@@ -126,7 +126,7 @@  discard block
 block discarded – undo
126 126
 				unset($row);
127 127
 			}
128 128
 			else {
129
-				spip_log("validation du mot de passe pour l'auteur #" . $row['id_auteur'] . " $login via Password::verifier", 'auth' . _LOG_DEBUG);
129
+				spip_log("validation du mot de passe pour l'auteur #".$row['id_auteur']." $login via Password::verifier", 'auth'._LOG_DEBUG);
130 130
 			}
131 131
 			break;
132 132
 	}
@@ -171,7 +171,7 @@  discard block
 block discarded – undo
171 171
 			@sql_update(
172 172
 				'spip_auteurs',
173 173
 				$set,
174
-				'id_auteur=' . (int) $row['id_auteur'] . ' AND pass=' . sql_quote(
174
+				'id_auteur='.(int) $row['id_auteur'].' AND pass='.sql_quote(
175 175
 					$row['pass'],
176 176
 					$serveur,
177 177
 					'text'
@@ -218,24 +218,24 @@  discard block
 block discarded – undo
218 218
 
219 219
 	// si force, on ne verifie pas la presence d'un backup chez un webmestre
220 220
 	if ($force) {
221
-		spip_log('Pas de cle secrete disponible, on regenere une nouvelle cle forcee - tous les mots de passe sont invalides', 'auth' . _LOG_INFO_IMPORTANTE);
221
+		spip_log('Pas de cle secrete disponible, on regenere une nouvelle cle forcee - tous les mots de passe sont invalides', 'auth'._LOG_INFO_IMPORTANTE);
222 222
 		$secret = $cles->getSecretAuth(true);
223 223
 		return true;
224 224
 	}
225 225
 
226
-	$has_backup = sql_allfetsel('id_auteur', 'spip_auteurs', 'statut=' . sql_quote('0minirezo') . ' AND webmestre=' . sql_quote('oui') . " AND backup_cles!=''");
226
+	$has_backup = sql_allfetsel('id_auteur', 'spip_auteurs', 'statut='.sql_quote('0minirezo').' AND webmestre='.sql_quote('oui')." AND backup_cles!=''");
227 227
 	$has_backup = array_column($has_backup, 'id_auteur');
228 228
 	if ($has_backup === []) {
229
-		spip_log("Pas de cle secrete disponible, et aucun webmestre n'a de backup, on regenere une nouvelle cle - tous les mots de passe sont invalides", 'auth' . _LOG_INFO_IMPORTANTE);
229
+		spip_log("Pas de cle secrete disponible, et aucun webmestre n'a de backup, on regenere une nouvelle cle - tous les mots de passe sont invalides", 'auth'._LOG_INFO_IMPORTANTE);
230 230
 		if ($secret = $cles->getSecretAuth(true)) {
231 231
 			return true;
232 232
 		}
233
-		spip_log("Echec generation d'une nouvelle cle : verifier les droits d'ecriture ?", 'auth' . _LOG_ERREUR);
233
+		spip_log("Echec generation d'une nouvelle cle : verifier les droits d'ecriture ?", 'auth'._LOG_ERREUR);
234 234
 		// et on echoue car on ne veut pas que la situation reste telle quelle
235
-		raler_fichier(_DIR_ETC . 'cles.php');
235
+		raler_fichier(_DIR_ETC.'cles.php');
236 236
 	}
237 237
 	else {
238
-		spip_log('Pas de cle secrete disponible (fichier config/cle.php absent ?) un des webmestres #' . implode(', #', $has_backup) . ' doit se connecter pour restaurer son backup des cles', 'auth' . _LOG_ERREUR);
238
+		spip_log('Pas de cle secrete disponible (fichier config/cle.php absent ?) un des webmestres #'.implode(', #', $has_backup).' doit se connecter pour restaurer son backup des cles', 'auth'._LOG_ERREUR);
239 239
 	}
240 240
 	return false;
241 241
 }
@@ -252,8 +252,8 @@  discard block
 block discarded – undo
252 252
 	$flux['data'] .=
253 253
 		  '<script type="text/javascript">/*<![CDATA[*/'
254 254
 		. "$js\n"
255
-		. "var login_info={'login':'" . $flux['args']['contexte']['var_login'] . "',"
256
-		. "'page_auteur': '" . generer_url_public('informer_auteur') . "',"
255
+		. "var login_info={'login':'".$flux['args']['contexte']['var_login']."',"
256
+		. "'page_auteur': '".generer_url_public('informer_auteur')."',"
257 257
 		. "'informe_auteur_en_cours':false,"
258 258
 		. "'attente_informe':0};"
259 259
 		. "jQuery(function(){jQuery('#var_login').change(actualise_auteur);});"
@@ -293,7 +293,7 @@  discard block
 block discarded – undo
293 293
 		} else {
294 294
 			$n = sql_countsel(
295 295
 				'spip_auteurs',
296
-				'login=' . sql_quote($new_login) . ' AND id_auteur!=' . (int) $id_auteur . " AND statut!='5poubelle'",
296
+				'login='.sql_quote($new_login).' AND id_auteur!='.(int) $id_auteur." AND statut!='5poubelle'",
297 297
 				'',
298 298
 				'',
299 299
 				$serveur
@@ -321,7 +321,7 @@  discard block
 block discarded – undo
321 321
 	}
322 322
 	if (
323 323
 		!($id_auteur = (int) $id_auteur)
324
-		|| !$auteur = sql_fetsel('login', 'spip_auteurs', 'id_auteur=' . (int) $id_auteur, '', '', '', '', $serveur)
324
+		|| !$auteur = sql_fetsel('login', 'spip_auteurs', 'id_auteur='.(int) $id_auteur, '', '', '', '', $serveur)
325 325
 	) {
326 326
 		return false;
327 327
 	}
@@ -336,7 +336,7 @@  discard block
 block discarded – undo
336 336
 		$anciens = sql_allfetsel(
337 337
 			'id_auteur',
338 338
 			'spip_auteurs',
339
-			'login=' . sql_quote($new_login, $serveur, 'text') . " AND statut='5poubelle'",
339
+			'login='.sql_quote($new_login, $serveur, 'text')." AND statut='5poubelle'",
340 340
 			'',
341 341
 			'',
342 342
 			'',
@@ -370,8 +370,8 @@  discard block
 block discarded – undo
370 370
 		$r = sql_getfetsel(
371 371
 			'login',
372 372
 			'spip_auteurs',
373
-			"statut<>'5poubelle'" .
374
-			' AND (length(pass)>0)' .
373
+			"statut<>'5poubelle'".
374
+			' AND (length(pass)>0)'.
375 375
 			" AND (login=$l)",
376 376
 			'',
377 377
 			'',
@@ -390,8 +390,8 @@  discard block
 block discarded – undo
390 390
 		return sql_getfetsel(
391 391
 			'login',
392 392
 			'spip_auteurs',
393
-			"statut<>'5poubelle'" .
394
-			' AND (length(pass)>0)' .
393
+			"statut<>'5poubelle'".
394
+			' AND (length(pass)>0)'.
395 395
 			" AND (login<>'' AND (nom=$l OR email=$l))",
396 396
 			'',
397 397
 			'',
@@ -457,7 +457,7 @@  discard block
 block discarded – undo
457 457
 
458 458
 	if (
459 459
 		!($id_auteur = (int) $id_auteur)
460
-		|| !($auteur = sql_fetsel('login, statut, webmestre', 'spip_auteurs', 'id_auteur=' . (int) $id_auteur, '', '', '', '', $serveur))
460
+		|| !($auteur = sql_fetsel('login, statut, webmestre', 'spip_auteurs', 'id_auteur='.(int) $id_auteur, '', '', '', '', $serveur))
461 461
 	) {
462 462
 		return false;
463 463
 	}
@@ -514,8 +514,8 @@  discard block
 block discarded – undo
514 514
 	if (
515 515
 		isset($champs['login']) || isset($champs['pass']) || isset($champs['statut']) || isset($options['all']) && $options['all']
516 516
 	) {
517
-		$htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME;
518
-		$htpasswd = _DIR_TMP . _AUTH_USER_FILE;
517
+		$htaccess = _DIR_RESTREINT._ACCESS_FILE_NAME;
518
+		$htpasswd = _DIR_TMP._AUTH_USER_FILE;
519 519
 
520 520
 		// Cette variable de configuration peut etre posee par un plugin
521 521
 		// par exemple acces_restreint ;
@@ -524,7 +524,7 @@  discard block
 block discarded – undo
524 524
 			(!isset($GLOBALS['meta']['creer_htpasswd']) || $GLOBALS['meta']['creer_htpasswd'] != 'oui') && !@file_exists($htaccess)
525 525
 		) {
526 526
 			spip_unlink($htpasswd);
527
-			spip_unlink($htpasswd . '-admin');
527
+			spip_unlink($htpasswd.'-admin');
528 528
 
529 529
 			return;
530 530
 		}
@@ -542,16 +542,16 @@  discard block
 block discarded – undo
542 542
 		);
543 543
 		while ($t = sql_fetch($s)) {
544 544
 			if (strlen((string) $t['login']) && strlen((string) $t['htpass'])) {
545
-				$p1 .= $t['login'] . ':' . $t['htpass'] . "\n";
545
+				$p1 .= $t['login'].':'.$t['htpass']."\n";
546 546
 				if ($t['statut'] == '0minirezo') {
547
-					$p2 .= $t['login'] . ':' . $t['htpass'] . "\n";
547
+					$p2 .= $t['login'].':'.$t['htpass']."\n";
548 548
 				}
549 549
 			}
550 550
 		}
551 551
 		sql_free($s);
552 552
 		if ($p1) {
553 553
 			ecrire_fichier($htpasswd, $p1);
554
-			ecrire_fichier($htpasswd . '-admin', $p2);
554
+			ecrire_fichier($htpasswd.'-admin', $p2);
555 555
 			spip_log("Ecriture de $htpasswd et $htpasswd-admin");
556 556
 		}
557 557
 	}
Please login to merge, or discard this patch.
ecrire/iterateur/data.php 2 patches
Indentation   +124 added lines, -124 removed lines patch added patch discarded remove patch
@@ -18,11 +18,11 @@  discard block
 block discarded – undo
18 18
  **/
19 19
 
20 20
 if (!defined('_ECRIRE_INC_VERSION')) {
21
-	return;
21
+    return;
22 22
 }
23 23
 
24 24
 if (!defined('_DATA_SOURCE_MAX_SIZE')) {
25
-	define('_DATA_SOURCE_MAX_SIZE', 2 * 1_048_576);
25
+    define('_DATA_SOURCE_MAX_SIZE', 2 * 1_048_576);
26 26
 }
27 27
 
28 28
 
@@ -43,17 +43,17 @@  discard block
 block discarded – undo
43 43
  *     Description de la boucle complétée des champs
44 44
  */
45 45
 function iterateur_DATA_dist($b) {
46
-	$b->iterateur = 'DATA'; # designe la classe d'iterateur
47
-	$b->show = [
48
-		'field' => [
49
-			'cle' => 'STRING',
50
-			'valeur' => 'STRING',
51
-			'*' => 'ALL' // Champ joker *
52
-		]
53
-	];
54
-	$b->select[] = '.valeur';
55
-
56
-	return $b;
46
+    $b->iterateur = 'DATA'; # designe la classe d'iterateur
47
+    $b->show = [
48
+        'field' => [
49
+            'cle' => 'STRING',
50
+            'valeur' => 'STRING',
51
+            '*' => 'ALL' // Champ joker *
52
+        ]
53
+    ];
54
+    $b->select[] = '.valeur';
55
+
56
+    return $b;
57 57
 }
58 58
 
59 59
 
@@ -68,7 +68,7 @@  discard block
 block discarded – undo
68 68
  * @return array
69 69
  */
70 70
 function inc_file_to_array_dist($data) {
71
-	return preg_split('/\r?\n/', $data);
71
+    return preg_split('/\r?\n/', $data);
72 72
 }
73 73
 
74 74
 /**
@@ -77,9 +77,9 @@  discard block
 block discarded – undo
77 77
  * @return array
78 78
  */
79 79
 function inc_plugins_to_array_dist() {
80
-	include_spip('inc/plugin');
80
+    include_spip('inc/plugin');
81 81
 
82
-	return liste_chemin_plugin_actifs();
82
+    return liste_chemin_plugin_actifs();
83 83
 }
84 84
 
85 85
 /**
@@ -89,7 +89,7 @@  discard block
 block discarded – undo
89 89
  * @return array
90 90
  */
91 91
 function inc_xml_to_array_dist($data) {
92
-	return @XMLObjectToArray(new SimpleXmlIterator($data));
92
+    return @XMLObjectToArray(new SimpleXmlIterator($data));
93 93
 }
94 94
 
95 95
 /**
@@ -101,14 +101,14 @@  discard block
 block discarded – undo
101 101
  *
102 102
  */
103 103
 function inc_object_to_array($object) {
104
-	if (!is_object($object) && !is_array($object)) {
105
-		return $object;
106
-	}
107
-	if (is_object($object)) {
108
-		$object = get_object_vars($object);
109
-	}
110
-
111
-	return array_map('inc_object_to_array', $object);
104
+    if (!is_object($object) && !is_array($object)) {
105
+        return $object;
106
+    }
107
+    if (is_object($object)) {
108
+        $object = get_object_vars($object);
109
+    }
110
+
111
+    return array_map('inc_object_to_array', $object);
112 112
 }
113 113
 
114 114
 /**
@@ -118,20 +118,20 @@  discard block
 block discarded – undo
118 118
  * @return array|bool
119 119
  */
120 120
 function inc_sql_to_array_dist($data) {
121
-	# sortir le connecteur de $data
122
-	preg_match(',^(?:(\w+):)?(.*)$,Sm', $data, $v);
123
-	$serveur = (string)$v[1];
124
-	$req = trim($v[2]);
125
-	if ($s = sql_query($req, $serveur)) {
126
-		$r = [];
127
-		while ($t = sql_fetch($s)) {
128
-			$r[] = $t;
129
-		}
130
-
131
-		return $r;
132
-	}
133
-
134
-	return false;
121
+    # sortir le connecteur de $data
122
+    preg_match(',^(?:(\w+):)?(.*)$,Sm', $data, $v);
123
+    $serveur = (string)$v[1];
124
+    $req = trim($v[2]);
125
+    if ($s = sql_query($req, $serveur)) {
126
+        $r = [];
127
+        while ($t = sql_fetch($s)) {
128
+            $r[] = $t;
129
+        }
130
+
131
+        return $r;
132
+    }
133
+
134
+    return false;
135 135
 }
136 136
 
137 137
 /**
@@ -141,13 +141,13 @@  discard block
 block discarded – undo
141 141
  * @return array|bool
142 142
  */
143 143
 function inc_json_to_array_dist($data) {
144
-	try {
145
-		$json = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
146
-	} catch (JsonException $e) {
147
-		$json = null;
148
-		spip_log('Failed to parse Json data : ' . $e->getMessage(), _LOG_INFO);
149
-	}
150
-	return is_array($json) ? (array) $json : [];
144
+    try {
145
+        $json = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
146
+    } catch (JsonException $e) {
147
+        $json = null;
148
+        spip_log('Failed to parse Json data : ' . $e->getMessage(), _LOG_INFO);
149
+    }
150
+    return is_array($json) ? (array) $json : [];
151 151
 }
152 152
 
153 153
 /**
@@ -157,30 +157,30 @@  discard block
 block discarded – undo
157 157
  * @return array|bool
158 158
  */
159 159
 function inc_csv_to_array_dist($data) {
160
-	include_spip('inc/csv');
161
-	[$entete, $csv] = analyse_csv($data);
162
-	array_unshift($csv, $entete);
163
-
164
-	include_spip('inc/charsets');
165
-	$i = 1;
166
-	foreach ($entete as $k => $v) {
167
-		if (trim((string) $v) == '') {
168
-			$v = 'col' . $i;
169
-		} // reperer des eventuelles cases vides
170
-		if (is_numeric($v) && $v < 0) {
171
-			$v = '__' . $v;
172
-		} // ne pas risquer d'ecraser une cle numerique
173
-		if (is_numeric($v)) {
174
-			$v = '_' . $v;
175
-		} // ne pas risquer d'ecraser une cle numerique
176
-		$v = strtolower(preg_replace(',\W+,', '_', (string) translitteration($v)));
177
-		foreach ($csv as &$item) {
178
-			$item[$v] = &$item[$k];
179
-		}
180
-		$i++;
181
-	}
182
-
183
-	return $csv;
160
+    include_spip('inc/csv');
161
+    [$entete, $csv] = analyse_csv($data);
162
+    array_unshift($csv, $entete);
163
+
164
+    include_spip('inc/charsets');
165
+    $i = 1;
166
+    foreach ($entete as $k => $v) {
167
+        if (trim((string) $v) == '') {
168
+            $v = 'col' . $i;
169
+        } // reperer des eventuelles cases vides
170
+        if (is_numeric($v) && $v < 0) {
171
+            $v = '__' . $v;
172
+        } // ne pas risquer d'ecraser une cle numerique
173
+        if (is_numeric($v)) {
174
+            $v = '_' . $v;
175
+        } // ne pas risquer d'ecraser une cle numerique
176
+        $v = strtolower(preg_replace(',\W+,', '_', (string) translitteration($v)));
177
+        foreach ($csv as &$item) {
178
+            $item[$v] = &$item[$k];
179
+        }
180
+        $i++;
181
+    }
182
+
183
+    return $csv;
184 184
 }
185 185
 
186 186
 /**
@@ -190,13 +190,13 @@  discard block
 block discarded – undo
190 190
  * @return array|bool
191 191
  */
192 192
 function inc_rss_to_array_dist($data) {
193
-	$tableau = null;
194
-	include_spip('inc/syndic');
195
-	if (is_array($rss = analyser_backend($data))) {
196
-		$tableau = $rss;
197
-	}
193
+    $tableau = null;
194
+    include_spip('inc/syndic');
195
+    if (is_array($rss = analyser_backend($data))) {
196
+        $tableau = $rss;
197
+    }
198 198
 
199
-	return $tableau;
199
+    return $tableau;
200 200
 }
201 201
 
202 202
 /**
@@ -206,9 +206,9 @@  discard block
 block discarded – undo
206 206
  * @return array|bool
207 207
  */
208 208
 function inc_atom_to_array_dist($data) {
209
-	$rss_to_array = charger_fonction('rss_to_array', 'inc');
209
+    $rss_to_array = charger_fonction('rss_to_array', 'inc');
210 210
 
211
-	return $rss_to_array($data);
211
+    return $rss_to_array($data);
212 212
 }
213 213
 
214 214
 /**
@@ -219,12 +219,12 @@  discard block
 block discarded – undo
219 219
  * @return array|bool
220 220
  */
221 221
 function inc_glob_to_array_dist($data) {
222
-	$a = glob(
223
-		$data,
224
-		GLOB_MARK | GLOB_NOSORT | GLOB_BRACE
225
-	);
222
+    $a = glob(
223
+        $data,
224
+        GLOB_MARK | GLOB_NOSORT | GLOB_BRACE
225
+    );
226 226
 
227
-	return $a ?: [];
227
+    return $a ?: [];
228 228
 }
229 229
 
230 230
 /**
@@ -235,14 +235,14 @@  discard block
 block discarded – undo
235 235
  * @throws Exception
236 236
  */
237 237
 function inc_yaml_to_array_dist($data) {
238
-	include_spip('inc/yaml-mini');
239
-	if (!function_exists('yaml_decode')) {
240
-		throw new Exception('YAML: impossible de trouver la fonction yaml_decode');
238
+    include_spip('inc/yaml-mini');
239
+    if (!function_exists('yaml_decode')) {
240
+        throw new Exception('YAML: impossible de trouver la fonction yaml_decode');
241 241
 
242
-		return false;
243
-	}
242
+        return false;
243
+    }
244 244
 
245
-	return yaml_decode($data);
245
+    return yaml_decode($data);
246 246
 }
247 247
 
248 248
 
@@ -257,7 +257,7 @@  discard block
 block discarded – undo
257 257
  * @return array|bool
258 258
  */
259 259
 function inc_pregfiles_to_array_dist($dir, $regexp = -1, $limit = 10000) {
260
-	return (array)preg_files($dir, $regexp, $limit);
260
+    return (array)preg_files($dir, $regexp, $limit);
261 261
 }
262 262
 
263 263
 /**
@@ -269,23 +269,23 @@  discard block
 block discarded – undo
269 269
  * @return array|bool
270 270
  */
271 271
 function inc_ls_to_array_dist($data) {
272
-	$glob_to_array = charger_fonction('glob_to_array', 'inc');
273
-	$a = $glob_to_array($data);
274
-	foreach ($a as &$v) {
275
-		$b = (array)@stat($v);
276
-		foreach (array_keys($b) as $k) {
277
-			if (is_numeric($k)) {
278
-				unset($b[$k]);
279
-			}
280
-		}
281
-		$b['file'] = preg_replace('`/$`', '', (string) $v) ;
282
-		$v = array_merge(
283
-			pathinfo((string) $v),
284
-			$b
285
-		);
286
-	}
287
-
288
-	return $a;
272
+    $glob_to_array = charger_fonction('glob_to_array', 'inc');
273
+    $a = $glob_to_array($data);
274
+    foreach ($a as &$v) {
275
+        $b = (array)@stat($v);
276
+        foreach (array_keys($b) as $k) {
277
+            if (is_numeric($k)) {
278
+                unset($b[$k]);
279
+            }
280
+        }
281
+        $b['file'] = preg_replace('`/$`', '', (string) $v) ;
282
+        $v = array_merge(
283
+            pathinfo((string) $v),
284
+            $b
285
+        );
286
+    }
287
+
288
+    return $a;
289 289
 }
290 290
 
291 291
 /**
@@ -295,21 +295,21 @@  discard block
 block discarded – undo
295 295
  * @return array|bool
296 296
  */
297 297
 function XMLObjectToArray($object) {
298
-	$xml_array = [];
299
-	for ($object->rewind(); $object->valid(); $object->next()) {
300
-		if (array_key_exists($key = $object->key(), $xml_array)) {
301
-			$key .= '-' . uniqid();
302
-		}
303
-		$vars = get_object_vars($object->current());
304
-		if (isset($vars['@attributes'])) {
305
-			foreach ($vars['@attributes'] as $k => $v) {
306
-				$xml_array[$key][$k] = $v;
307
-			}
308
-		}
309
-		$xml_array[$key][] = $object->hasChildren()
310
-			? XMLObjectToArray($object->current())
311
-			: (string) $object->current();
312
-	}
313
-
314
-	return $xml_array;
298
+    $xml_array = [];
299
+    for ($object->rewind(); $object->valid(); $object->next()) {
300
+        if (array_key_exists($key = $object->key(), $xml_array)) {
301
+            $key .= '-' . uniqid();
302
+        }
303
+        $vars = get_object_vars($object->current());
304
+        if (isset($vars['@attributes'])) {
305
+            foreach ($vars['@attributes'] as $k => $v) {
306
+                $xml_array[$key][$k] = $v;
307
+            }
308
+        }
309
+        $xml_array[$key][] = $object->hasChildren()
310
+            ? XMLObjectToArray($object->current())
311
+            : (string) $object->current();
312
+    }
313
+
314
+    return $xml_array;
315 315
 }
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -120,7 +120,7 @@  discard block
 block discarded – undo
120 120
 function inc_sql_to_array_dist($data) {
121 121
 	# sortir le connecteur de $data
122 122
 	preg_match(',^(?:(\w+):)?(.*)$,Sm', $data, $v);
123
-	$serveur = (string)$v[1];
123
+	$serveur = (string) $v[1];
124 124
 	$req = trim($v[2]);
125 125
 	if ($s = sql_query($req, $serveur)) {
126 126
 		$r = [];
@@ -145,7 +145,7 @@  discard block
 block discarded – undo
145 145
 		$json = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
146 146
 	} catch (JsonException $e) {
147 147
 		$json = null;
148
-		spip_log('Failed to parse Json data : ' . $e->getMessage(), _LOG_INFO);
148
+		spip_log('Failed to parse Json data : '.$e->getMessage(), _LOG_INFO);
149 149
 	}
150 150
 	return is_array($json) ? (array) $json : [];
151 151
 }
@@ -165,13 +165,13 @@  discard block
 block discarded – undo
165 165
 	$i = 1;
166 166
 	foreach ($entete as $k => $v) {
167 167
 		if (trim((string) $v) == '') {
168
-			$v = 'col' . $i;
168
+			$v = 'col'.$i;
169 169
 		} // reperer des eventuelles cases vides
170 170
 		if (is_numeric($v) && $v < 0) {
171
-			$v = '__' . $v;
171
+			$v = '__'.$v;
172 172
 		} // ne pas risquer d'ecraser une cle numerique
173 173
 		if (is_numeric($v)) {
174
-			$v = '_' . $v;
174
+			$v = '_'.$v;
175 175
 		} // ne pas risquer d'ecraser une cle numerique
176 176
 		$v = strtolower(preg_replace(',\W+,', '_', (string) translitteration($v)));
177 177
 		foreach ($csv as &$item) {
@@ -257,7 +257,7 @@  discard block
 block discarded – undo
257 257
  * @return array|bool
258 258
  */
259 259
 function inc_pregfiles_to_array_dist($dir, $regexp = -1, $limit = 10000) {
260
-	return (array)preg_files($dir, $regexp, $limit);
260
+	return (array) preg_files($dir, $regexp, $limit);
261 261
 }
262 262
 
263 263
 /**
@@ -272,13 +272,13 @@  discard block
 block discarded – undo
272 272
 	$glob_to_array = charger_fonction('glob_to_array', 'inc');
273 273
 	$a = $glob_to_array($data);
274 274
 	foreach ($a as &$v) {
275
-		$b = (array)@stat($v);
275
+		$b = (array) @stat($v);
276 276
 		foreach (array_keys($b) as $k) {
277 277
 			if (is_numeric($k)) {
278 278
 				unset($b[$k]);
279 279
 			}
280 280
 		}
281
-		$b['file'] = preg_replace('`/$`', '', (string) $v) ;
281
+		$b['file'] = preg_replace('`/$`', '', (string) $v);
282 282
 		$v = array_merge(
283 283
 			pathinfo((string) $v),
284 284
 			$b
@@ -298,7 +298,7 @@  discard block
 block discarded – undo
298 298
 	$xml_array = [];
299 299
 	for ($object->rewind(); $object->valid(); $object->next()) {
300 300
 		if (array_key_exists($key = $object->key(), $xml_array)) {
301
-			$key .= '-' . uniqid();
301
+			$key .= '-'.uniqid();
302 302
 		}
303 303
 		$vars = get_object_vars($object->current());
304 304
 		if (isset($vars['@attributes'])) {
Please login to merge, or discard this patch.
ecrire/inc/pipelines.php 2 patches
Indentation   +129 added lines, -129 removed lines patch added patch discarded remove patch
@@ -15,10 +15,10 @@  discard block
 block discarded – undo
15 15
  * @package SPIP\Core\Pipelines
16 16
  **/
17 17
 if (!defined('_ECRIRE_INC_VERSION')) {
18
-	return;
18
+    return;
19 19
 }
20 20
 if (test_espace_prive()) {
21
-	include_spip('inc/pipelines_ecrire');
21
+    include_spip('inc/pipelines_ecrire');
22 22
 }
23 23
 
24 24
 
@@ -44,26 +44,26 @@  discard block
 block discarded – undo
44 44
  * @return string          Contenu qui sera inséré dans le head HTML
45 45
  **/
46 46
 function f_jQuery($texte) {
47
-	$x = '';
48
-	$jquery_plugins = pipeline(
49
-		'jquery_plugins',
50
-		[
51
-			'javascript/jquery.js',
52
-			'javascript/jquery.form.js',
53
-			'javascript/jquery.autosave.js',
54
-			'javascript/jquery.placeholder-label.js',
55
-			'javascript/ajaxCallback.js',
56
-			'javascript/js.cookie.js',
57
-		]
58
-	);
59
-	foreach (array_unique($jquery_plugins) as $script) {
60
-		if ($script = find_in_path(supprimer_timestamp($script))) {
61
-			$script = timestamp($script);
62
-			$x .= "\n<script src=\"$script\" type=\"text/javascript\"></script>\n";
63
-		}
64
-	}
47
+    $x = '';
48
+    $jquery_plugins = pipeline(
49
+        'jquery_plugins',
50
+        [
51
+            'javascript/jquery.js',
52
+            'javascript/jquery.form.js',
53
+            'javascript/jquery.autosave.js',
54
+            'javascript/jquery.placeholder-label.js',
55
+            'javascript/ajaxCallback.js',
56
+            'javascript/js.cookie.js',
57
+        ]
58
+    );
59
+    foreach (array_unique($jquery_plugins) as $script) {
60
+        if ($script = find_in_path(supprimer_timestamp($script))) {
61
+            $script = timestamp($script);
62
+            $x .= "\n<script src=\"$script\" type=\"text/javascript\"></script>\n";
63
+        }
64
+    }
65 65
 
66
-	return $x . $texte;
66
+    return $x . $texte;
67 67
 }
68 68
 
69 69
 
@@ -82,26 +82,26 @@  discard block
 block discarded – undo
82 82
  * @return string         Contenu de la page envoyée au navigateur
83 83
  **/
84 84
 function f_surligne($texte) {
85
-	if (!$GLOBALS['html']) {
86
-		return $texte;
87
-	}
88
-	$rech = _request('var_recherche');
89
-	if (
90
-		!$rech
91
-		&& (!defined('_SURLIGNE_RECHERCHE_REFERERS') || !_SURLIGNE_RECHERCHE_REFERERS || !isset($_SERVER['HTTP_REFERER']))
92
-	) {
93
-		return $texte;
94
-	}
95
-	include_spip('inc/surligne');
85
+    if (!$GLOBALS['html']) {
86
+        return $texte;
87
+    }
88
+    $rech = _request('var_recherche');
89
+    if (
90
+        !$rech
91
+        && (!defined('_SURLIGNE_RECHERCHE_REFERERS') || !_SURLIGNE_RECHERCHE_REFERERS || !isset($_SERVER['HTTP_REFERER']))
92
+    ) {
93
+        return $texte;
94
+    }
95
+    include_spip('inc/surligne');
96 96
 
97
-	if (isset($_SERVER['HTTP_REFERER'])) {
98
-		$_SERVER['HTTP_REFERER'] = preg_replace(',[^\w\,/#&;:-]+,', ' ', (string) $_SERVER['HTTP_REFERER']);
99
-	}
100
-	if ($rech) {
101
-		$rech = preg_replace(',[^\w\,/#&;:-]+,', ' ', (string) $rech);
102
-	}
97
+    if (isset($_SERVER['HTTP_REFERER'])) {
98
+        $_SERVER['HTTP_REFERER'] = preg_replace(',[^\w\,/#&;:-]+,', ' ', (string) $_SERVER['HTTP_REFERER']);
99
+    }
100
+    if ($rech) {
101
+        $rech = preg_replace(',[^\w\,/#&;:-]+,', ' ', (string) $rech);
102
+    }
103 103
 
104
-	return surligner_mots($texte, $rech);
104
+    return surligner_mots($texte, $rech);
105 105
 }
106 106
 
107 107
 /**
@@ -118,33 +118,33 @@  discard block
 block discarded – undo
118 118
  * @return string         Contenu de la page envoyée au navigateur
119 119
  **/
120 120
 function f_tidy($texte) {
121
-	/**
122
-	 * Indentation à faire ?
123
-	 *
124
-	 * - true : actif.
125
-	 * - false par défaut.
126
-	 */
121
+    /**
122
+     * Indentation à faire ?
123
+     *
124
+     * - true : actif.
125
+     * - false par défaut.
126
+     */
127 127
 
128
-	if (
129
-		$GLOBALS['xhtml']
130
-		&& $GLOBALS['html']
131
-		&& strlen($texte)
132
-		&& !headers_sent()
133
-	) {
134
-		# Compatibilite ascendante
135
-		if (!is_string($GLOBALS['xhtml'])) {
136
-			$GLOBALS['xhtml'] = 'tidy';
137
-		}
128
+    if (
129
+        $GLOBALS['xhtml']
130
+        && $GLOBALS['html']
131
+        && strlen($texte)
132
+        && !headers_sent()
133
+    ) {
134
+        # Compatibilite ascendante
135
+        if (!is_string($GLOBALS['xhtml'])) {
136
+            $GLOBALS['xhtml'] = 'tidy';
137
+        }
138 138
 
139
-		if (!$f = charger_fonction($GLOBALS['xhtml'], 'inc', true)) {
140
-			spip_log("tidy absent, l'indenteur SPIP le remplace");
141
-			$f = charger_fonction('sax', 'xml');
142
-		}
139
+        if (!$f = charger_fonction($GLOBALS['xhtml'], 'inc', true)) {
140
+            spip_log("tidy absent, l'indenteur SPIP le remplace");
141
+            $f = charger_fonction('sax', 'xml');
142
+        }
143 143
 
144
-		return $f($texte);
145
-	}
144
+        return $f($texte);
145
+    }
146 146
 
147
-	return $texte;
147
+    return $texte;
148 148
 }
149 149
 
150 150
 
@@ -163,24 +163,24 @@  discard block
 block discarded – undo
163 163
  * @return string         Contenu de la page envoyée au navigateur
164 164
  **/
165 165
 function f_insert_head($texte) {
166
-	if (!$GLOBALS['html']) {
167
-		return $texte;
168
-	}
169
-	include_spip('public/admin'); // pour strripos
166
+    if (!$GLOBALS['html']) {
167
+        return $texte;
168
+    }
169
+    include_spip('public/admin'); // pour strripos
170 170
 
171
-	if (
172
-		!($pos = stripos($texte, '</head>'))
173
-		&& !($pos = stripos($texte, '<body>'))
174
-	) {
175
-		$pos = 0;
176
-	}
171
+    if (
172
+        !($pos = stripos($texte, '</head>'))
173
+        && !($pos = stripos($texte, '<body>'))
174
+    ) {
175
+        $pos = 0;
176
+    }
177 177
 
178
-	if (!str_contains(substr($texte, 0, $pos), '<!-- insert_head -->')) {
179
-		$insert = "\n" . pipeline('insert_head', '<!-- f_insert_head -->') . "\n";
180
-		$texte = substr_replace($texte, $insert, $pos, 0);
181
-	}
178
+    if (!str_contains(substr($texte, 0, $pos), '<!-- insert_head -->')) {
179
+        $insert = "\n" . pipeline('insert_head', '<!-- f_insert_head -->') . "\n";
180
+        $texte = substr_replace($texte, $insert, $pos, 0);
181
+    }
182 182
 
183
-	return $texte;
183
+    return $texte;
184 184
 }
185 185
 
186 186
 
@@ -196,34 +196,34 @@  discard block
 block discarded – undo
196 196
  * @return string         Contenu de la page envoyée au navigateur
197 197
  **/
198 198
 function f_admin($texte) {
199
-	if (defined('_VAR_PREVIEW') && _VAR_PREVIEW && $GLOBALS['html']) {
200
-		include_spip('inc/filtres'); // pour http_img_pack
201
-		$x = "<div class='spip-previsu' "
202
-			. http_style_background('preview-32.png', '', 32)
203
-			. '>'
204
-			. _T('previsualisation')
205
-			. '</div>';
206
-		if (!$pos = stripos($texte, '</body>')) {
207
-			$pos = strlen($texte);
208
-		}
209
-		$texte = substr_replace($texte, $x, $pos, 0);
210
-		// pas de preview en fenetre enfant
211
-		$x = "<script type='text/javascript'>const frameEl = window.frameElement;if (frameEl) {frameEl.sandbox='sandbox';window.location.href='" . addslashes((string) $GLOBALS['meta']['adresse_site']) . "';}</script>";
212
-		if (!$pos = stripos($texte, '<head') || !$pos = strpos($texte, '>', $pos)) {
213
-			$pos = -1;
214
-		}
215
-		$texte = substr_replace($texte, $x, $pos + 1, 0);
216
-	}
199
+    if (defined('_VAR_PREVIEW') && _VAR_PREVIEW && $GLOBALS['html']) {
200
+        include_spip('inc/filtres'); // pour http_img_pack
201
+        $x = "<div class='spip-previsu' "
202
+            . http_style_background('preview-32.png', '', 32)
203
+            . '>'
204
+            . _T('previsualisation')
205
+            . '</div>';
206
+        if (!$pos = stripos($texte, '</body>')) {
207
+            $pos = strlen($texte);
208
+        }
209
+        $texte = substr_replace($texte, $x, $pos, 0);
210
+        // pas de preview en fenetre enfant
211
+        $x = "<script type='text/javascript'>const frameEl = window.frameElement;if (frameEl) {frameEl.sandbox='sandbox';window.location.href='" . addslashes((string) $GLOBALS['meta']['adresse_site']) . "';}</script>";
212
+        if (!$pos = stripos($texte, '<head') || !$pos = strpos($texte, '>', $pos)) {
213
+            $pos = -1;
214
+        }
215
+        $texte = substr_replace($texte, $x, $pos + 1, 0);
216
+    }
217 217
 
218
-	if (isset($GLOBALS['affiche_boutons_admin']) && $GLOBALS['affiche_boutons_admin']) {
219
-		include_spip('public/admin');
220
-		$texte = affiche_boutons_admin($texte);
221
-	}
222
-	if (_request('var_mode') == 'noajax') {
223
-		$texte = preg_replace(',(class=[\'"][^\'"]*)ajax([^\'"]*[\'"]),Uims', "\\1\\2", $texte);
224
-	}
218
+    if (isset($GLOBALS['affiche_boutons_admin']) && $GLOBALS['affiche_boutons_admin']) {
219
+        include_spip('public/admin');
220
+        $texte = affiche_boutons_admin($texte);
221
+    }
222
+    if (_request('var_mode') == 'noajax') {
223
+        $texte = preg_replace(',(class=[\'"][^\'"]*)ajax([^\'"]*[\'"]),Uims', "\\1\\2", $texte);
224
+    }
225 225
 
226
-	return $texte;
226
+    return $texte;
227 227
 }
228 228
 
229 229
 /**
@@ -241,11 +241,11 @@  discard block
 block discarded – undo
241 241
  * @return array $flux  Description et contenu de l'inclusion
242 242
  **/
243 243
 function f_recuperer_fond($flux) {
244
-	if (!test_espace_prive()) {
245
-		return $flux;
246
-	}
244
+    if (!test_espace_prive()) {
245
+        return $flux;
246
+    }
247 247
 
248
-	return f_afficher_blocs_ecrire($flux);
248
+    return f_afficher_blocs_ecrire($flux);
249 249
 }
250 250
 
251 251
 /**
@@ -259,30 +259,30 @@  discard block
 block discarded – undo
259 259
  * @return string         Contenu de la page envoyée au navigateur
260 260
  */
261 261
 function f_queue($texte) {
262
-	// eviter une inclusion si rien a faire
263
-	if (
264
-		_request('action') == 'cron'
265
-		|| queue_sleep_time_to_next_job() > 0
266
-		|| defined('_DEBUG_BLOCK_QUEUE')
267
-	) {
268
-		return $texte;
269
-	}
262
+    // eviter une inclusion si rien a faire
263
+    if (
264
+        _request('action') == 'cron'
265
+        || queue_sleep_time_to_next_job() > 0
266
+        || defined('_DEBUG_BLOCK_QUEUE')
267
+    ) {
268
+        return $texte;
269
+    }
270 270
 
271
-	include_spip('inc/queue');
272
-	$code = queue_affichage_cron();
271
+    include_spip('inc/queue');
272
+    $code = queue_affichage_cron();
273 273
 
274
-	// si rien a afficher
275
-	// ou si on est pas dans une page html, on ne sait rien faire de mieux
276
-	if (!$code || !isset($GLOBALS['html']) || !$GLOBALS['html']) {
277
-		return $texte;
278
-	}
274
+    // si rien a afficher
275
+    // ou si on est pas dans une page html, on ne sait rien faire de mieux
276
+    if (!$code || !isset($GLOBALS['html']) || !$GLOBALS['html']) {
277
+        return $texte;
278
+    }
279 279
 
280
-	// inserer avant le </body> fermant si on peut, a la fin de la page sinon
281
-	if (($p = strpos($texte, '</body>')) !== false) {
282
-		$texte = substr($texte, 0, $p) . $code . substr($texte, $p);
283
-	} else {
284
-		$texte .= $code;
285
-	}
280
+    // inserer avant le </body> fermant si on peut, a la fin de la page sinon
281
+    if (($p = strpos($texte, '</body>')) !== false) {
282
+        $texte = substr($texte, 0, $p) . $code . substr($texte, $p);
283
+    } else {
284
+        $texte .= $code;
285
+    }
286 286
 
287
-	return $texte;
287
+    return $texte;
288 288
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -63,7 +63,7 @@  discard block
 block discarded – undo
63 63
 		}
64 64
 	}
65 65
 
66
-	return $x . $texte;
66
+	return $x.$texte;
67 67
 }
68 68
 
69 69
 
@@ -176,7 +176,7 @@  discard block
 block discarded – undo
176 176
 	}
177 177
 
178 178
 	if (!str_contains(substr($texte, 0, $pos), '<!-- insert_head -->')) {
179
-		$insert = "\n" . pipeline('insert_head', '<!-- f_insert_head -->') . "\n";
179
+		$insert = "\n".pipeline('insert_head', '<!-- f_insert_head -->')."\n";
180 180
 		$texte = substr_replace($texte, $insert, $pos, 0);
181 181
 	}
182 182
 
@@ -208,7 +208,7 @@  discard block
 block discarded – undo
208 208
 		}
209 209
 		$texte = substr_replace($texte, $x, $pos, 0);
210 210
 		// pas de preview en fenetre enfant
211
-		$x = "<script type='text/javascript'>const frameEl = window.frameElement;if (frameEl) {frameEl.sandbox='sandbox';window.location.href='" . addslashes((string) $GLOBALS['meta']['adresse_site']) . "';}</script>";
211
+		$x = "<script type='text/javascript'>const frameEl = window.frameElement;if (frameEl) {frameEl.sandbox='sandbox';window.location.href='".addslashes((string) $GLOBALS['meta']['adresse_site'])."';}</script>";
212 212
 		if (!$pos = stripos($texte, '<head') || !$pos = strpos($texte, '>', $pos)) {
213 213
 			$pos = -1;
214 214
 		}
@@ -279,7 +279,7 @@  discard block
 block discarded – undo
279 279
 
280 280
 	// inserer avant le </body> fermant si on peut, a la fin de la page sinon
281 281
 	if (($p = strpos($texte, '</body>')) !== false) {
282
-		$texte = substr($texte, 0, $p) . $code . substr($texte, $p);
282
+		$texte = substr($texte, 0, $p).$code.substr($texte, $p);
283 283
 	} else {
284 284
 		$texte .= $code;
285 285
 	}
Please login to merge, or discard this patch.
ecrire/inc/exporter_csv.php 3 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
 	$champ = preg_replace(',[\s]+,ms', ' ', $champ);
38 38
 	$champ = str_replace('"', '""', $champ);
39 39
 
40
-	return '"' . $champ . '"';
40
+	return '"'.$champ.'"';
41 41
 }
42 42
 
43 43
 /**
@@ -57,7 +57,7 @@  discard block
 block discarded – undo
57 57
 	if ($callback) {
58 58
 		$ligne = $callback($nb, $ligne, $delim, $importer_charset);
59 59
 	}
60
-	$output = implode($delim, array_map('exporter_csv_champ', $ligne)) . "\r\n";
60
+	$output = implode($delim, array_map('exporter_csv_champ', $ligne))."\r\n";
61 61
 	if ($importer_charset) {
62 62
 		$output = str_replace('’', '\'', $output);
63 63
 		$output = unicode2charset(html2unicode(charset2unicode($output)), $importer_charset);
@@ -184,7 +184,7 @@  discard block
 block discarded – undo
184 184
 		$fichier = 'php://output';
185 185
 	}
186 186
 	else {
187
-		$fichier = sous_repertoire(_DIR_CACHE, 'export') . $basename;
187
+		$fichier = sous_repertoire(_DIR_CACHE, 'export').$basename;
188 188
 	}
189 189
 
190 190
 	$fp = fopen($fichier, 'w');
Please login to merge, or discard this patch.
Braces   +1 added lines, -2 removed lines patch added patch discarded remove patch
@@ -182,8 +182,7 @@
 block discarded – undo
182 182
 	// sinon on ecrit directement sur stdout
183 183
 	if ($options['envoyer'] && $options['envoyer'] !== 'attachment') {
184 184
 		$fichier = 'php://output';
185
-	}
186
-	else {
185
+	} else {
187 186
 		$fichier = sous_repertoire(_DIR_CACHE, 'export') . $basename;
188 187
 	}
189 188
 
Please login to merge, or discard this patch.
Indentation   +119 added lines, -119 removed lines patch added patch discarded remove patch
@@ -16,7 +16,7 @@  discard block
 block discarded – undo
16 16
  **/
17 17
 
18 18
 if (!defined('_ECRIRE_INC_VERSION')) {
19
-	return;
19
+    return;
20 20
 }
21 21
 
22 22
 include_spip('inc/charsets');
@@ -31,13 +31,13 @@  discard block
 block discarded – undo
31 31
  * @return string
32 32
  */
33 33
 function exporter_csv_champ($champ) {
34
-	#$champ = str_replace("\r", "\n", $champ);
35
-	#$champ = preg_replace(",[\n]+,ms", "\n", $champ);
36
-	#$champ = str_replace("\n", ", ", $champ);
37
-	$champ = preg_replace(',[\s]+,ms', ' ', $champ);
38
-	$champ = str_replace('"', '""', $champ);
34
+    #$champ = str_replace("\r", "\n", $champ);
35
+    #$champ = preg_replace(",[\n]+,ms", "\n", $champ);
36
+    #$champ = str_replace("\n", ", ", $champ);
37
+    $champ = preg_replace(',[\s]+,ms', ' ', $champ);
38
+    $champ = str_replace('"', '""', $champ);
39 39
 
40
-	return '"' . $champ . '"';
40
+    return '"' . $champ . '"';
41 41
 }
42 42
 
43 43
 /**
@@ -54,15 +54,15 @@  discard block
 block discarded – undo
54 54
  * @return string
55 55
  */
56 56
 function exporter_csv_ligne_numerotee($nb, $ligne, $delim = ',', $importer_charset = null, ?callable $callback = null) {
57
-	if ($callback) {
58
-		$ligne = $callback($nb, $ligne, $delim, $importer_charset);
59
-	}
60
-	$output = implode($delim, array_map('exporter_csv_champ', $ligne)) . "\r\n";
61
-	if ($importer_charset) {
62
-		$output = str_replace('’', '\'', $output);
63
-		$output = unicode2charset(html2unicode(charset2unicode($output)), $importer_charset);
64
-	}
65
-	return $output;
57
+    if ($callback) {
58
+        $ligne = $callback($nb, $ligne, $delim, $importer_charset);
59
+    }
60
+    $output = implode($delim, array_map('exporter_csv_champ', $ligne)) . "\r\n";
61
+    if ($importer_charset) {
62
+        $output = str_replace('’', '\'', $output);
63
+        $output = unicode2charset(html2unicode(charset2unicode($output)), $importer_charset);
64
+    }
65
+    return $output;
66 66
 }
67 67
 
68 68
 /**
@@ -90,107 +90,107 @@  discard block
 block discarded – undo
90 90
  */
91 91
 function inc_exporter_csv_dist($titre, $resource, $options = []) {
92 92
 
93
-	// support ancienne syntaxe
94
-	// inc_exporter_csv_dist($titre, $resource, $delim = ', ', $entetes = null, $envoyer = true)
95
-	if (is_string($options)) {
96
-		$args = func_get_args();
97
-		$options = [];
98
-		foreach ([2 => 'delim', 3 => 'entetes', 4 => 'envoyer'] as $k => $option) {
99
-			if (!empty($args[$k])) {
100
-				$options[$option] = $args[$k];
101
-			}
102
-		}
103
-	}
104
-
105
-	$default_options = [
106
-		'fichier' => null, // par défaut = $titre
107
-		'extension' => null, // par défaut = choix auto
108
-		'delim' => ',',
109
-		'entetes' => null,
110
-		'envoyer' => true,
111
-		'charset' => null,
112
-		'callback' => null,
113
-	];
114
-	$options = array_merge($default_options, $options);
115
-
116
-	// Délimiteur
117
-	if ($options['delim'] == 'TAB') {
118
-		$options['delim'] = "\t";
119
-	}
120
-	if (!in_array($options['delim'], [',', ';', "\t"])) {
121
-		$options['delim'] = ',';
122
-	}
123
-
124
-	// Nom du fichier : celui indiqué dans les options, sinon le titre
125
-	// Normalisation : uniquement les caractères non spéciaux, tirets, underscore et point + remplacer espaces par underscores
126
-	$filename = $options['fichier'] ?? translitteration(textebrut(typo($titre)));
127
-	$filename = preg_replace([',[^\w\-_\.\s]+,', ',\s+,'], ['', '_'], trim((string) $filename));
128
-	$filename = rtrim($filename, '.');
129
-
130
-	// Extension : celle indiquée en option, sinon choisie selon le délimiteur
131
-	// Normalisation : uniquement les charactères non spéciaux
132
-	if (!empty($options['extension'])) {
133
-		$options['extension'] = preg_replace(',[^\w]+,', '', trim((string) $options['extension']));
134
-	}
135
-	$extension = $options['extension'] ?? ($options['delim'] === ',' ? 'csv' : 'xls');
136
-
137
-	// Fichier
138
-	$basename = "$filename.$extension";
139
-
140
-	// Charset : celui indiqué en option, sinon celui compatible excel si nécessaire, sinon celui du site
141
-	// Excel n'accepte pas l'utf-8 ni les entites html... on transcode tout ce qu'on peut
142
-	$charset_site = $GLOBALS['meta']['charset'];
143
-	$charset_excel = ($extension === 'xls' ? 'iso-8859-1' : null);
144
-	$charset = $options['charset'] ?? $charset_excel ?? $charset_site;
145
-	$importer_charset = (($charset === $charset_site) ? null : $charset);
146
-
147
-	$output = '';
148
-	$nb = 0;
149
-	if (!empty($options['entetes']) && is_array($options['entetes'])) {
150
-		$output = exporter_csv_ligne_numerotee($nb, $options['entetes'], $options['delim'], $importer_charset, $options['callback']);
151
-	}
152
-	// les donnees commencent toujours a la ligne 1, qu'il y ait ou non des entetes
153
-	$nb++;
154
-
155
-	if ($options['envoyer']) {
156
-		$disposition = ($options['envoyer'] === 'attachment' ? 'attachment' : 'inline');
157
-		header("Content-Type: text/comma-separated-values; charset=$charset");
158
-		header("Content-Disposition: $disposition; filename=$basename");
159
-
160
-		// Vider tous les tampons
161
-		$level = @ob_get_level();
162
-		while ($level--) {
163
-			@ob_end_flush();
164
-		}
165
-	}
166
-
167
-	// si envoyer=='attachment' on passe par un fichier temporaire
168
-	// sinon on ecrit directement sur stdout
169
-	if ($options['envoyer'] && $options['envoyer'] !== 'attachment') {
170
-		$fichier = 'php://output';
171
-	}
172
-	else {
173
-		$fichier = sous_repertoire(_DIR_CACHE, 'export') . $basename;
174
-	}
175
-
176
-	$fp = fopen($fichier, 'w');
177
-	$length = fwrite($fp, $output);
178
-
179
-	while ($row = is_array($resource) ? array_shift($resource) : sql_fetch($resource)) {
180
-		$output = exporter_csv_ligne_numerotee($nb, $row, $options['delim'], $importer_charset, $options['callback']);
181
-		$length += fwrite($fp, $output);
182
-		$nb++;
183
-	}
184
-	fclose($fp);
185
-
186
-	if ($options['envoyer']) {
187
-		if ($options['envoyer'] === 'attachment') {
188
-			header("Content-Length: $length");
189
-			readfile($fichier);
190
-		}
191
-		// si on a envoye inline, c'est deja tout bon
192
-		exit;
193
-	}
194
-
195
-	return $fichier;
93
+    // support ancienne syntaxe
94
+    // inc_exporter_csv_dist($titre, $resource, $delim = ', ', $entetes = null, $envoyer = true)
95
+    if (is_string($options)) {
96
+        $args = func_get_args();
97
+        $options = [];
98
+        foreach ([2 => 'delim', 3 => 'entetes', 4 => 'envoyer'] as $k => $option) {
99
+            if (!empty($args[$k])) {
100
+                $options[$option] = $args[$k];
101
+            }
102
+        }
103
+    }
104
+
105
+    $default_options = [
106
+        'fichier' => null, // par défaut = $titre
107
+        'extension' => null, // par défaut = choix auto
108
+        'delim' => ',',
109
+        'entetes' => null,
110
+        'envoyer' => true,
111
+        'charset' => null,
112
+        'callback' => null,
113
+    ];
114
+    $options = array_merge($default_options, $options);
115
+
116
+    // Délimiteur
117
+    if ($options['delim'] == 'TAB') {
118
+        $options['delim'] = "\t";
119
+    }
120
+    if (!in_array($options['delim'], [',', ';', "\t"])) {
121
+        $options['delim'] = ',';
122
+    }
123
+
124
+    // Nom du fichier : celui indiqué dans les options, sinon le titre
125
+    // Normalisation : uniquement les caractères non spéciaux, tirets, underscore et point + remplacer espaces par underscores
126
+    $filename = $options['fichier'] ?? translitteration(textebrut(typo($titre)));
127
+    $filename = preg_replace([',[^\w\-_\.\s]+,', ',\s+,'], ['', '_'], trim((string) $filename));
128
+    $filename = rtrim($filename, '.');
129
+
130
+    // Extension : celle indiquée en option, sinon choisie selon le délimiteur
131
+    // Normalisation : uniquement les charactères non spéciaux
132
+    if (!empty($options['extension'])) {
133
+        $options['extension'] = preg_replace(',[^\w]+,', '', trim((string) $options['extension']));
134
+    }
135
+    $extension = $options['extension'] ?? ($options['delim'] === ',' ? 'csv' : 'xls');
136
+
137
+    // Fichier
138
+    $basename = "$filename.$extension";
139
+
140
+    // Charset : celui indiqué en option, sinon celui compatible excel si nécessaire, sinon celui du site
141
+    // Excel n'accepte pas l'utf-8 ni les entites html... on transcode tout ce qu'on peut
142
+    $charset_site = $GLOBALS['meta']['charset'];
143
+    $charset_excel = ($extension === 'xls' ? 'iso-8859-1' : null);
144
+    $charset = $options['charset'] ?? $charset_excel ?? $charset_site;
145
+    $importer_charset = (($charset === $charset_site) ? null : $charset);
146
+
147
+    $output = '';
148
+    $nb = 0;
149
+    if (!empty($options['entetes']) && is_array($options['entetes'])) {
150
+        $output = exporter_csv_ligne_numerotee($nb, $options['entetes'], $options['delim'], $importer_charset, $options['callback']);
151
+    }
152
+    // les donnees commencent toujours a la ligne 1, qu'il y ait ou non des entetes
153
+    $nb++;
154
+
155
+    if ($options['envoyer']) {
156
+        $disposition = ($options['envoyer'] === 'attachment' ? 'attachment' : 'inline');
157
+        header("Content-Type: text/comma-separated-values; charset=$charset");
158
+        header("Content-Disposition: $disposition; filename=$basename");
159
+
160
+        // Vider tous les tampons
161
+        $level = @ob_get_level();
162
+        while ($level--) {
163
+            @ob_end_flush();
164
+        }
165
+    }
166
+
167
+    // si envoyer=='attachment' on passe par un fichier temporaire
168
+    // sinon on ecrit directement sur stdout
169
+    if ($options['envoyer'] && $options['envoyer'] !== 'attachment') {
170
+        $fichier = 'php://output';
171
+    }
172
+    else {
173
+        $fichier = sous_repertoire(_DIR_CACHE, 'export') . $basename;
174
+    }
175
+
176
+    $fp = fopen($fichier, 'w');
177
+    $length = fwrite($fp, $output);
178
+
179
+    while ($row = is_array($resource) ? array_shift($resource) : sql_fetch($resource)) {
180
+        $output = exporter_csv_ligne_numerotee($nb, $row, $options['delim'], $importer_charset, $options['callback']);
181
+        $length += fwrite($fp, $output);
182
+        $nb++;
183
+    }
184
+    fclose($fp);
185
+
186
+    if ($options['envoyer']) {
187
+        if ($options['envoyer'] === 'attachment') {
188
+            header("Content-Length: $length");
189
+            readfile($fichier);
190
+        }
191
+        // si on a envoye inline, c'est deja tout bon
192
+        exit;
193
+    }
194
+
195
+    return $fichier;
196 196
 }
Please login to merge, or discard this patch.