Completed
Push — master ( 8b8662...05618b )
by cam
01:05
created
ecrire/inc/editer.php 1 patch
Indentation   +443 added lines, -443 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 include_spip('base/abstract_sql');
23 23
 
@@ -59,56 +59,56 @@  discard block
 block discarded – undo
59 59
  *     Retour des traitements.
60 60
  **/
61 61
 function formulaires_editer_objet_traiter(
62
-	$type,
63
-	$id = 'new',
64
-	$id_parent = 0,
65
-	$lier_trad = 0,
66
-	$retour = '',
67
-	$config_fonc = 'articles_edit_config',
68
-	$row = [],
69
-	$hidden = ''
62
+    $type,
63
+    $id = 'new',
64
+    $id_parent = 0,
65
+    $lier_trad = 0,
66
+    $retour = '',
67
+    $config_fonc = 'articles_edit_config',
68
+    $row = [],
69
+    $hidden = ''
70 70
 ) {
71 71
 
72
-	$res = [];
73
-	// eviter la redirection forcee par l'action...
74
-	set_request('redirect');
75
-	if ($action_editer = charger_fonction("editer_$type", 'action', true)) {
76
-		[$id, $err] = $action_editer($id);
77
-	} else {
78
-		$action_editer = charger_fonction('editer_objet', 'action');
79
-		[$id, $err] = $action_editer($id, $type);
80
-	}
81
-	$id_table_objet = id_table_objet($type);
82
-	$res[$id_table_objet] = $id;
83
-	if ($err or !$id) {
84
-		$res['message_erreur'] = ($err ?: _T('erreur'));
85
-	} else {
86
-		// Un lien de trad a prendre en compte
87
-		if ($lier_trad) {
88
-			// referencer la traduction
89
-			$referencer_traduction = charger_fonction('referencer_traduction', 'action');
90
-			$referencer_traduction($type, $id, $lier_trad);
91
-			// actions de recopie de champs / liens sur le nouvel objet créé
92
-			$completer_traduction = charger_fonction('completer_traduction', 'inc');
93
-			$err = $completer_traduction($type, $id, $lier_trad);
94
-			if ($err) {
95
-				$res['message_erreur'] = $err;
96
-				return $res;
97
-			}
98
-		}
99
-
100
-		$res['message_ok'] = _T('info_modification_enregistree');
101
-		if ($retour) {
102
-			if (strncmp($retour, 'javascript:', 11) == 0) {
103
-				$res['message_ok'] .= '<script type="text/javascript">/*<![CDATA[*/' . substr($retour, 11) . '/*]]>*/</script>';
104
-				$res['editable'] = true;
105
-			} else {
106
-				$res['redirect'] = parametre_url($retour, $id_table_objet, $id);
107
-			}
108
-		}
109
-	}
110
-
111
-	return $res;
72
+    $res = [];
73
+    // eviter la redirection forcee par l'action...
74
+    set_request('redirect');
75
+    if ($action_editer = charger_fonction("editer_$type", 'action', true)) {
76
+        [$id, $err] = $action_editer($id);
77
+    } else {
78
+        $action_editer = charger_fonction('editer_objet', 'action');
79
+        [$id, $err] = $action_editer($id, $type);
80
+    }
81
+    $id_table_objet = id_table_objet($type);
82
+    $res[$id_table_objet] = $id;
83
+    if ($err or !$id) {
84
+        $res['message_erreur'] = ($err ?: _T('erreur'));
85
+    } else {
86
+        // Un lien de trad a prendre en compte
87
+        if ($lier_trad) {
88
+            // referencer la traduction
89
+            $referencer_traduction = charger_fonction('referencer_traduction', 'action');
90
+            $referencer_traduction($type, $id, $lier_trad);
91
+            // actions de recopie de champs / liens sur le nouvel objet créé
92
+            $completer_traduction = charger_fonction('completer_traduction', 'inc');
93
+            $err = $completer_traduction($type, $id, $lier_trad);
94
+            if ($err) {
95
+                $res['message_erreur'] = $err;
96
+                return $res;
97
+            }
98
+        }
99
+
100
+        $res['message_ok'] = _T('info_modification_enregistree');
101
+        if ($retour) {
102
+            if (strncmp($retour, 'javascript:', 11) == 0) {
103
+                $res['message_ok'] .= '<script type="text/javascript">/*<![CDATA[*/' . substr($retour, 11) . '/*]]>*/</script>';
104
+                $res['editable'] = true;
105
+            } else {
106
+                $res['redirect'] = parametre_url($retour, $id_table_objet, $id);
107
+            }
108
+        }
109
+    }
110
+
111
+    return $res;
112 112
 }
113 113
 
114 114
 /**
@@ -132,29 +132,29 @@  discard block
 block discarded – undo
132 132
  *     Tableau des erreurs
133 133
  **/
134 134
 function formulaires_editer_objet_verifier($type, $id = 'new', $oblis = []) {
135
-	$erreurs = [];
136
-	if (intval($id)) {
137
-		$conflits = controler_contenu($type, $id);
138
-		if ($conflits and is_countable($conflits) ? count($conflits) : 0) {
139
-			foreach ($conflits as $champ => $conflit) {
140
-				if (!isset($erreurs[$champ])) {
141
-					$erreurs[$champ] = '';
142
-				}
143
-				$erreurs[$champ] .= _T('alerte_modif_info_concourante') . "<br /><textarea readonly='readonly' class='forml'>" . entites_html($conflit['base']) . '</textarea>';
144
-			}
145
-		}
146
-	}
147
-	foreach ($oblis as $obli) {
148
-		$value = _request($obli);
149
-		if (is_null($value) or !(is_array($value) ? count($value) : strlen($value))) {
150
-			if (!isset($erreurs[$obli])) {
151
-				$erreurs[$obli] = '';
152
-			}
153
-			$erreurs[$obli] .= _T('info_obligatoire');
154
-		}
155
-	}
156
-
157
-	return $erreurs;
135
+    $erreurs = [];
136
+    if (intval($id)) {
137
+        $conflits = controler_contenu($type, $id);
138
+        if ($conflits and is_countable($conflits) ? count($conflits) : 0) {
139
+            foreach ($conflits as $champ => $conflit) {
140
+                if (!isset($erreurs[$champ])) {
141
+                    $erreurs[$champ] = '';
142
+                }
143
+                $erreurs[$champ] .= _T('alerte_modif_info_concourante') . "<br /><textarea readonly='readonly' class='forml'>" . entites_html($conflit['base']) . '</textarea>';
144
+            }
145
+        }
146
+    }
147
+    foreach ($oblis as $obli) {
148
+        $value = _request($obli);
149
+        if (is_null($value) or !(is_array($value) ? count($value) : strlen($value))) {
150
+            if (!isset($erreurs[$obli])) {
151
+                $erreurs[$obli] = '';
152
+            }
153
+            $erreurs[$obli] .= _T('info_obligatoire');
154
+        }
155
+    }
156
+
157
+    return $erreurs;
158 158
 }
159 159
 
160 160
 /**
@@ -199,155 +199,155 @@  discard block
 block discarded – undo
199 199
  *     Environnement du formulaire.
200 200
  **/
201 201
 function formulaires_editer_objet_charger(
202
-	$type,
203
-	$id = 'new',
204
-	$id_parent = 0,
205
-	$lier_trad = 0,
206
-	$retour = '',
207
-	$config_fonc = 'articles_edit_config',
208
-	$row = [],
209
-	$hidden = ''
202
+    $type,
203
+    $id = 'new',
204
+    $id_parent = 0,
205
+    $lier_trad = 0,
206
+    $retour = '',
207
+    $config_fonc = 'articles_edit_config',
208
+    $row = [],
209
+    $hidden = ''
210 210
 ) {
211 211
 
212
-	$valeurs = [];
213
-	$table_objet = table_objet($type);
214
-	$table_objet_sql = table_objet_sql($type);
215
-	$id_table_objet = id_table_objet($type);
216
-	if (!is_array($row)) {
217
-		$row = [];
218
-	}
219
-
220
-	// on accepte pas une fonction de config inconnue si elle vient d'un modele
221
-	if (
222
-		$config_fonc
223
-		and !in_array($config_fonc, ['articles_edit_config', 'rubriques_edit_config', 'auteurs_edit_config'])
224
-		and $config_fonc !== $table_objet . '_edit_config'
225
-	) {
226
-		if (
227
-			$args = test_formulaire_inclus_par_modele()
228
-			and in_array($config_fonc, $args)
229
-		) {
230
-			$config_fonc = '';
231
-		}
232
-	}
233
-
234
-	$new = !is_numeric($id);
235
-	$lang_default = '';
236
-	// Appel direct dans un squelette
237
-	if (!$row) {
238
-		if (!$new or $lier_trad) {
239
-			if ($select = charger_fonction('precharger_' . $type, 'inc', true)) {
240
-				$row = $select($id, $id_parent, $lier_trad);
241
-				// si on a une fonction precharger, elle pu faire un reglage de langue
242
-				$lang_default = (!empty($row['lang']) ? $row['lang'] : null);
243
-			} else {
244
-				$row = sql_fetsel('*', $table_objet_sql, $id_table_objet . '=' . intval($id));
245
-			}
246
-			if (!$new) {
247
-				$md5 = controles_md5($row ?? []);
248
-			}
249
-		}
250
-		if (!$row) {
251
-			$row = [];
252
-			$trouver_table = charger_fonction('trouver_table', 'base');
253
-			if ($desc = $trouver_table($table_objet)) {
254
-				foreach ($desc['field'] as $k => $v) {
255
-					$row[$k] = '';
256
-				}
257
-			}
258
-		}
259
-	}
260
-
261
-	// Gaffe: sans ceci, on ecrase systematiquement l'article d'origine
262
-	// (et donc: pas de lien de traduction)
263
-	$id = ($new or $lier_trad)
264
-		? 'oui'
265
-		: $row[$id_table_objet];
266
-	$row[$id_table_objet] = $id;
267
-
268
-	$contexte = $row;
269
-	if (is_numeric($id_parent) && strlen($id_parent) && (!isset($contexte['id_parent']) or $new)) {
270
-		if (!isset($contexte['id_parent'])) {
271
-			unset($contexte['id_rubrique']);
272
-		}
273
-		$contexte['id_parent'] = $id_parent;
274
-	} elseif (!isset($contexte['id_parent'])) {
275
-		// id_rubrique dans id_parent si possible
276
-		if (isset($contexte['id_rubrique'])) {
277
-			$contexte['id_parent'] = $contexte['id_rubrique'];
278
-			unset($contexte['id_rubrique']);
279
-		} else {
280
-			$contexte['id_parent'] = '';
281
-		}
282
-		if (
283
-			!$contexte['id_parent']
284
-			and $preselectionner_parent_nouvel_objet = charger_fonction('preselectionner_parent_nouvel_objet', 'inc', true)
285
-		) {
286
-			$contexte['id_parent'] = $preselectionner_parent_nouvel_objet($type, $row);
287
-		}
288
-	}
289
-
290
-	$config = [];
291
-	if ($config_fonc) {
292
-		$contexte['config'] = $config = $config_fonc($contexte);
293
-		if (!$lang_default) {
294
-			$lang_default = $config['langue'] ?? session_get('lang') ;
295
-		}
296
-	}
297
-	$config = $config + [
298
-		'lignes' => 0,
299
-		'langue' => '',
300
-	];
301
-
302
-	$att_text = " class='textarea' "
303
-		. " rows='"
304
-		. ($config['lignes'] + 15)
305
-		. "' cols='40'";
306
-	if (isset($contexte['texte'])) {
307
-		[$contexte['texte'], $contexte['_texte_trop_long']] = editer_texte_recolle($contexte['texte'], $att_text);
308
-	}
309
-
310
-	// on veut conserver la langue de l'interface ;
311
-	// on passe cette donnee sous un autre nom, au cas ou le squelette
312
-	// voudrait l'exploiter
313
-	if (isset($contexte['lang'])) {
314
-		$contexte['langue'] = $contexte['lang'];
315
-		unset($contexte['lang']);
316
-	}
317
-
318
-	$contexte['_hidden'] = "<input type='hidden' name='editer_$type' value='oui' />\n" .
319
-		(!$lier_trad ? '' :
320
-			("\n<input type='hidden' name='lier_trad' value='" .
321
-				$lier_trad .
322
-				"' />" .
323
-				"\n<input type='hidden' name='changer_lang' value='" .
324
-				$lang_default .
325
-				"' />"))
326
-		. $hidden
327
-		. ($md5 ?? '');
328
-
329
-	// preciser que le formulaire doit passer dans un pipeline
330
-	$contexte['_pipeline'] = ['editer_contenu_objet', ['type' => $type, 'id' => $id]];
331
-
332
-	// preciser que le formulaire doit etre securise auteur/action
333
-	// n'est plus utile lorsque l'action accepte l'id en argument direct
334
-	// on le garde pour compat
335
-	$contexte['_action'] = ["editer_$type", $id];
336
-
337
-	// et in fine placer l'autorisation
338
-	include_spip('inc/autoriser');
339
-	if (intval($id)) {
340
-		if (!autoriser('modifier', $type, intval($id))) {
341
-			$valeurs['editable'] = '';
342
-		}
343
-	}
344
-	else {
345
-		if (!autoriser('creer', $type, 0, null, ['id_parent' => $id_parent])) {
346
-			$valeurs['editable'] = '';
347
-		}
348
-	}
349
-
350
-	return $contexte;
212
+    $valeurs = [];
213
+    $table_objet = table_objet($type);
214
+    $table_objet_sql = table_objet_sql($type);
215
+    $id_table_objet = id_table_objet($type);
216
+    if (!is_array($row)) {
217
+        $row = [];
218
+    }
219
+
220
+    // on accepte pas une fonction de config inconnue si elle vient d'un modele
221
+    if (
222
+        $config_fonc
223
+        and !in_array($config_fonc, ['articles_edit_config', 'rubriques_edit_config', 'auteurs_edit_config'])
224
+        and $config_fonc !== $table_objet . '_edit_config'
225
+    ) {
226
+        if (
227
+            $args = test_formulaire_inclus_par_modele()
228
+            and in_array($config_fonc, $args)
229
+        ) {
230
+            $config_fonc = '';
231
+        }
232
+    }
233
+
234
+    $new = !is_numeric($id);
235
+    $lang_default = '';
236
+    // Appel direct dans un squelette
237
+    if (!$row) {
238
+        if (!$new or $lier_trad) {
239
+            if ($select = charger_fonction('precharger_' . $type, 'inc', true)) {
240
+                $row = $select($id, $id_parent, $lier_trad);
241
+                // si on a une fonction precharger, elle pu faire un reglage de langue
242
+                $lang_default = (!empty($row['lang']) ? $row['lang'] : null);
243
+            } else {
244
+                $row = sql_fetsel('*', $table_objet_sql, $id_table_objet . '=' . intval($id));
245
+            }
246
+            if (!$new) {
247
+                $md5 = controles_md5($row ?? []);
248
+            }
249
+        }
250
+        if (!$row) {
251
+            $row = [];
252
+            $trouver_table = charger_fonction('trouver_table', 'base');
253
+            if ($desc = $trouver_table($table_objet)) {
254
+                foreach ($desc['field'] as $k => $v) {
255
+                    $row[$k] = '';
256
+                }
257
+            }
258
+        }
259
+    }
260
+
261
+    // Gaffe: sans ceci, on ecrase systematiquement l'article d'origine
262
+    // (et donc: pas de lien de traduction)
263
+    $id = ($new or $lier_trad)
264
+        ? 'oui'
265
+        : $row[$id_table_objet];
266
+    $row[$id_table_objet] = $id;
267
+
268
+    $contexte = $row;
269
+    if (is_numeric($id_parent) && strlen($id_parent) && (!isset($contexte['id_parent']) or $new)) {
270
+        if (!isset($contexte['id_parent'])) {
271
+            unset($contexte['id_rubrique']);
272
+        }
273
+        $contexte['id_parent'] = $id_parent;
274
+    } elseif (!isset($contexte['id_parent'])) {
275
+        // id_rubrique dans id_parent si possible
276
+        if (isset($contexte['id_rubrique'])) {
277
+            $contexte['id_parent'] = $contexte['id_rubrique'];
278
+            unset($contexte['id_rubrique']);
279
+        } else {
280
+            $contexte['id_parent'] = '';
281
+        }
282
+        if (
283
+            !$contexte['id_parent']
284
+            and $preselectionner_parent_nouvel_objet = charger_fonction('preselectionner_parent_nouvel_objet', 'inc', true)
285
+        ) {
286
+            $contexte['id_parent'] = $preselectionner_parent_nouvel_objet($type, $row);
287
+        }
288
+    }
289
+
290
+    $config = [];
291
+    if ($config_fonc) {
292
+        $contexte['config'] = $config = $config_fonc($contexte);
293
+        if (!$lang_default) {
294
+            $lang_default = $config['langue'] ?? session_get('lang') ;
295
+        }
296
+    }
297
+    $config = $config + [
298
+        'lignes' => 0,
299
+        'langue' => '',
300
+    ];
301
+
302
+    $att_text = " class='textarea' "
303
+        . " rows='"
304
+        . ($config['lignes'] + 15)
305
+        . "' cols='40'";
306
+    if (isset($contexte['texte'])) {
307
+        [$contexte['texte'], $contexte['_texte_trop_long']] = editer_texte_recolle($contexte['texte'], $att_text);
308
+    }
309
+
310
+    // on veut conserver la langue de l'interface ;
311
+    // on passe cette donnee sous un autre nom, au cas ou le squelette
312
+    // voudrait l'exploiter
313
+    if (isset($contexte['lang'])) {
314
+        $contexte['langue'] = $contexte['lang'];
315
+        unset($contexte['lang']);
316
+    }
317
+
318
+    $contexte['_hidden'] = "<input type='hidden' name='editer_$type' value='oui' />\n" .
319
+        (!$lier_trad ? '' :
320
+            ("\n<input type='hidden' name='lier_trad' value='" .
321
+                $lier_trad .
322
+                "' />" .
323
+                "\n<input type='hidden' name='changer_lang' value='" .
324
+                $lang_default .
325
+                "' />"))
326
+        . $hidden
327
+        . ($md5 ?? '');
328
+
329
+    // preciser que le formulaire doit passer dans un pipeline
330
+    $contexte['_pipeline'] = ['editer_contenu_objet', ['type' => $type, 'id' => $id]];
331
+
332
+    // preciser que le formulaire doit etre securise auteur/action
333
+    // n'est plus utile lorsque l'action accepte l'id en argument direct
334
+    // on le garde pour compat
335
+    $contexte['_action'] = ["editer_$type", $id];
336
+
337
+    // et in fine placer l'autorisation
338
+    include_spip('inc/autoriser');
339
+    if (intval($id)) {
340
+        if (!autoriser('modifier', $type, intval($id))) {
341
+            $valeurs['editable'] = '';
342
+        }
343
+    }
344
+    else {
345
+        if (!autoriser('creer', $type, 0, null, ['id_parent' => $id_parent])) {
346
+            $valeurs['editable'] = '';
347
+        }
348
+    }
349
+
350
+    return $contexte;
351 351
 }
352 352
 
353 353
 /**
@@ -358,29 +358,29 @@  discard block
 block discarded – undo
358 358
  * @return array
359 359
  */
360 360
 function coupe_trop_long($texte) {
361
-	$aider = charger_fonction('aider', 'inc');
362
-	if (strlen($texte) > 28 * 1024) {
363
-		$texte = str_replace("\r\n", "\n", $texte);
364
-		$pos = strpos($texte, "\n\n", 28 * 1024);  // coupe para > 28 ko
365
-		if ($pos > 0 and $pos < 32 * 1024) {
366
-			$debut = substr($texte, 0, $pos) . "\n\n<!--SPIP-->\n";
367
-			$suite = substr($texte, $pos + 2);
368
-		} else {
369
-			$pos = strpos($texte, ' ', 28 * 1024);  // sinon coupe espace
370
-			if (!($pos > 0 and $pos < 32 * 1024)) {
371
-				$pos = 28 * 1024;  // au pire (pas d'espace trouv'e)
372
-				$decalage = 0; // si y'a pas d'espace, il ne faut pas perdre le caract`ere
373
-			} else {
374
-				$decalage = 1;
375
-			}
376
-			$debut = substr($texte, 0, $pos + $decalage); // Il faut conserver l'espace s'il y en a un
377
-			$suite = substr($texte, $pos + $decalage);
378
-		}
379
-
380
-		return ([$debut, $suite]);
381
-	} else {
382
-		return ([$texte, '']);
383
-	}
361
+    $aider = charger_fonction('aider', 'inc');
362
+    if (strlen($texte) > 28 * 1024) {
363
+        $texte = str_replace("\r\n", "\n", $texte);
364
+        $pos = strpos($texte, "\n\n", 28 * 1024);  // coupe para > 28 ko
365
+        if ($pos > 0 and $pos < 32 * 1024) {
366
+            $debut = substr($texte, 0, $pos) . "\n\n<!--SPIP-->\n";
367
+            $suite = substr($texte, $pos + 2);
368
+        } else {
369
+            $pos = strpos($texte, ' ', 28 * 1024);  // sinon coupe espace
370
+            if (!($pos > 0 and $pos < 32 * 1024)) {
371
+                $pos = 28 * 1024;  // au pire (pas d'espace trouv'e)
372
+                $decalage = 0; // si y'a pas d'espace, il ne faut pas perdre le caract`ere
373
+            } else {
374
+                $decalage = 1;
375
+            }
376
+            $debut = substr($texte, 0, $pos + $decalage); // Il faut conserver l'espace s'il y en a un
377
+            $suite = substr($texte, $pos + $decalage);
378
+        }
379
+
380
+        return ([$debut, $suite]);
381
+    } else {
382
+        return ([$texte, '']);
383
+    }
384 384
 }
385 385
 
386 386
 /**
@@ -391,25 +391,25 @@  discard block
 block discarded – undo
391 391
  * @return array
392 392
  */
393 393
 function editer_texte_recolle($texte, $att_text) {
394
-	if (
395
-		(strlen($texte) < 29 * 1024)
396
-		or (include_spip('inc/layer') and ($GLOBALS['browser_name'] != 'MSIE'))
397
-	) {
398
-		return [$texte, ''];
399
-	}
400
-
401
-	include_spip('inc/barre');
402
-	$textes_supplement = "<br /><span style='color: red'>" . _T('info_texte_long') . "</span>\n";
403
-	$nombre = 0;
404
-
405
-	while (strlen($texte) > 29 * 1024) {
406
-		$nombre++;
407
-		[$texte1, $texte] = coupe_trop_long($texte);
408
-		$textes_supplement .= '<br />' .
409
-			"<textarea id='texte$nombre' name='texte_plus[$nombre]'$att_text>$texte1</textarea>\n";
410
-	}
411
-
412
-	return [$texte, $textes_supplement];
394
+    if (
395
+        (strlen($texte) < 29 * 1024)
396
+        or (include_spip('inc/layer') and ($GLOBALS['browser_name'] != 'MSIE'))
397
+    ) {
398
+        return [$texte, ''];
399
+    }
400
+
401
+    include_spip('inc/barre');
402
+    $textes_supplement = "<br /><span style='color: red'>" . _T('info_texte_long') . "</span>\n";
403
+    $nombre = 0;
404
+
405
+    while (strlen($texte) > 29 * 1024) {
406
+        $nombre++;
407
+        [$texte1, $texte] = coupe_trop_long($texte);
408
+        $textes_supplement .= '<br />' .
409
+            "<textarea id='texte$nombre' name='texte_plus[$nombre]'$att_text>$texte1</textarea>\n";
410
+    }
411
+
412
+    return [$texte, $textes_supplement];
413 413
 }
414 414
 
415 415
 /**
@@ -420,17 +420,17 @@  discard block
 block discarded – undo
420 420
  * @param int $longueur
421 421
  */
422 422
 function titre_automatique($champ_titre, $champs_contenu, $longueur = null) {
423
-	if (!_request($champ_titre)) {
424
-		$titrer_contenu = charger_fonction('titrer_contenu', 'inc');
425
-		if (!is_null($longueur)) {
426
-			$t = $titrer_contenu($champs_contenu, null, $longueur);
427
-		} else {
428
-			$t = $titrer_contenu($champs_contenu);
429
-		}
430
-		if ($t) {
431
-			set_request($champ_titre, $t);
432
-		}
433
-	}
423
+    if (!_request($champ_titre)) {
424
+        $titrer_contenu = charger_fonction('titrer_contenu', 'inc');
425
+        if (!is_null($longueur)) {
426
+            $t = $titrer_contenu($champs_contenu, null, $longueur);
427
+        } else {
428
+            $t = $titrer_contenu($champs_contenu);
429
+        }
430
+        if ($t) {
431
+            set_request($champ_titre, $t);
432
+        }
433
+    }
434 434
 }
435 435
 
436 436
 /**
@@ -450,20 +450,20 @@  discard block
 block discarded – undo
450 450
  * @return string
451 451
  */
452 452
 function inc_titrer_contenu_dist($champs_contenu, $c = null, $longueur = 50) {
453
-	// trouver un champ texte non vide
454
-	$t = '';
455
-	foreach ($champs_contenu as $champ) {
456
-		if ($t = _request($champ, $c)) {
457
-			break;
458
-		}
459
-	}
460
-
461
-	if ($t) {
462
-		include_spip('inc/texte_mini');
463
-		$t = couper($t, $longueur, '...');
464
-	}
465
-
466
-	return $t;
453
+    // trouver un champ texte non vide
454
+    $t = '';
455
+    foreach ($champs_contenu as $champ) {
456
+        if ($t = _request($champ, $c)) {
457
+            break;
458
+        }
459
+    }
460
+
461
+    if ($t) {
462
+        include_spip('inc/texte_mini');
463
+        $t = couper($t, $longueur, '...');
464
+    }
465
+
466
+    return $t;
467 467
 }
468 468
 
469 469
 /**
@@ -485,26 +485,26 @@  discard block
 block discarded – undo
485 485
  *      - array sinon couples ('$prefixe$colonne => md5)
486 486
  **/
487 487
 function controles_md5(array $data, string $prefixe = 'ctr_', string $format = 'html') {
488
-	$ctr = [];
489
-	foreach ($data as $key => $val) {
490
-		$m = md5($val ?? '');
491
-		$k = $prefixe . $key;
492
-
493
-		switch ($format) {
494
-			case 'html':
495
-				$ctr[$k] = "<input type='hidden' value='$m' name='$k' />";
496
-				break;
497
-			default:
498
-				$ctr[$k] = $m;
499
-				break;
500
-		}
501
-	}
502
-
503
-	if ($format === 'html') {
504
-		return "\n\n<!-- controles md5 -->\n" . join("\n", $ctr) . "\n\n";
505
-	} else {
506
-		return $ctr;
507
-	}
488
+    $ctr = [];
489
+    foreach ($data as $key => $val) {
490
+        $m = md5($val ?? '');
491
+        $k = $prefixe . $key;
492
+
493
+        switch ($format) {
494
+            case 'html':
495
+                $ctr[$k] = "<input type='hidden' value='$m' name='$k' />";
496
+                break;
497
+            default:
498
+                $ctr[$k] = $m;
499
+                break;
500
+        }
501
+    }
502
+
503
+    if ($format === 'html') {
504
+        return "\n\n<!-- controles md5 -->\n" . join("\n", $ctr) . "\n\n";
505
+    } else {
506
+        return $ctr;
507
+    }
508 508
 }
509 509
 
510 510
 /**
@@ -543,80 +543,80 @@  discard block
 block discarded – undo
543 543
  *     - post : le contenu posté
544 544
  **/
545 545
 function controler_contenu($type, $id, $options = [], $c = false, $serveur = '') {
546
-	include_spip('inc/filtres');
547
-
548
-	$table_objet = table_objet($type);
549
-	$spip_table_objet = table_objet_sql($type);
550
-	$trouver_table = charger_fonction('trouver_table', 'base');
551
-	$desc = $trouver_table($table_objet, $serveur);
552
-
553
-	// Appels incomplets (sans $c)
554
-	if (!is_array($c)) {
555
-		$c = [];
556
-		foreach ($desc['field'] as $champ => $ignore) {
557
-			if (_request($champ)) {
558
-				$c[$champ] = _request($champ);
559
-			}
560
-		}
561
-	}
562
-
563
-	// Securite : certaines variables ne sont jamais acceptees ici
564
-	// car elles ne relevent pas de autoriser(article, modifier) ;
565
-	// il faut passer par instituer_XX()
566
-	// TODO: faut-il passer ces variables interdites
567
-	// dans un fichier de description separe ?
568
-	unset($c['statut']);
569
-	unset($c['id_parent']);
570
-	unset($c['id_rubrique']);
571
-	unset($c['id_secteur']);
572
-
573
-	// Gerer les champs non vides
574
-	if (isset($options['nonvide']) and is_array($options['nonvide'])) {
575
-		foreach ($options['nonvide'] as $champ => $sinon) {
576
-			if ($c[$champ] === '') {
577
-				$c[$champ] = $sinon;
578
-			}
579
-		}
580
-	}
581
-
582
-	// N'accepter que les champs qui existent
583
-	// [TODO] ici aussi on peut valider les contenus en fonction du type
584
-	$champs = [];
585
-	foreach ($desc['field'] as $champ => $ignore) {
586
-		if (isset($c[$champ])) {
587
-			$champs[$champ] = $c[$champ];
588
-		}
589
-	}
590
-
591
-	// Nettoyer les valeurs
592
-	$champs = array_map('corriger_caracteres', $champs);
593
-
594
-	// Envoyer aux plugins
595
-	$champs = pipeline(
596
-		'pre_edition',
597
-		[
598
-			'args' => [
599
-				'table' => $spip_table_objet, // compatibilite
600
-				'table_objet' => $table_objet,
601
-				'spip_table_objet' => $spip_table_objet,
602
-				'type' => $type,
603
-				'id_objet' => $id,
604
-				'champs' => $options['champs'] ?? [], // [doc] c'est quoi ?
605
-				'action' => 'controler',
606
-				'serveur' => $serveur,
607
-			],
608
-			'data' => $champs
609
-		]
610
-	);
611
-
612
-	if (!$champs) {
613
-		return false;
614
-	}
615
-
616
-	// Verifier si les mises a jour sont pertinentes, datees, en conflit etc
617
-	$conflits = controler_md5($champs, $_POST, $type, $id, $serveur, $options['prefix'] ?? 'ctr_');
618
-
619
-	return $conflits;
546
+    include_spip('inc/filtres');
547
+
548
+    $table_objet = table_objet($type);
549
+    $spip_table_objet = table_objet_sql($type);
550
+    $trouver_table = charger_fonction('trouver_table', 'base');
551
+    $desc = $trouver_table($table_objet, $serveur);
552
+
553
+    // Appels incomplets (sans $c)
554
+    if (!is_array($c)) {
555
+        $c = [];
556
+        foreach ($desc['field'] as $champ => $ignore) {
557
+            if (_request($champ)) {
558
+                $c[$champ] = _request($champ);
559
+            }
560
+        }
561
+    }
562
+
563
+    // Securite : certaines variables ne sont jamais acceptees ici
564
+    // car elles ne relevent pas de autoriser(article, modifier) ;
565
+    // il faut passer par instituer_XX()
566
+    // TODO: faut-il passer ces variables interdites
567
+    // dans un fichier de description separe ?
568
+    unset($c['statut']);
569
+    unset($c['id_parent']);
570
+    unset($c['id_rubrique']);
571
+    unset($c['id_secteur']);
572
+
573
+    // Gerer les champs non vides
574
+    if (isset($options['nonvide']) and is_array($options['nonvide'])) {
575
+        foreach ($options['nonvide'] as $champ => $sinon) {
576
+            if ($c[$champ] === '') {
577
+                $c[$champ] = $sinon;
578
+            }
579
+        }
580
+    }
581
+
582
+    // N'accepter que les champs qui existent
583
+    // [TODO] ici aussi on peut valider les contenus en fonction du type
584
+    $champs = [];
585
+    foreach ($desc['field'] as $champ => $ignore) {
586
+        if (isset($c[$champ])) {
587
+            $champs[$champ] = $c[$champ];
588
+        }
589
+    }
590
+
591
+    // Nettoyer les valeurs
592
+    $champs = array_map('corriger_caracteres', $champs);
593
+
594
+    // Envoyer aux plugins
595
+    $champs = pipeline(
596
+        'pre_edition',
597
+        [
598
+            'args' => [
599
+                'table' => $spip_table_objet, // compatibilite
600
+                'table_objet' => $table_objet,
601
+                'spip_table_objet' => $spip_table_objet,
602
+                'type' => $type,
603
+                'id_objet' => $id,
604
+                'champs' => $options['champs'] ?? [], // [doc] c'est quoi ?
605
+                'action' => 'controler',
606
+                'serveur' => $serveur,
607
+            ],
608
+            'data' => $champs
609
+        ]
610
+    );
611
+
612
+    if (!$champs) {
613
+        return false;
614
+    }
615
+
616
+    // Verifier si les mises a jour sont pertinentes, datees, en conflit etc
617
+    $conflits = controler_md5($champs, $_POST, $type, $id, $serveur, $options['prefix'] ?? 'ctr_');
618
+
619
+    return $conflits;
620 620
 }
621 621
 
622 622
 
@@ -646,64 +646,64 @@  discard block
 block discarded – undo
646 646
  *     - post : le contenu posté
647 647
  **/
648 648
 function controler_md5(&$champs, $ctr, $type, $id, $serveur, $prefix = 'ctr_') {
649
-	$spip_table_objet = table_objet_sql($type);
650
-	$id_table_objet = id_table_objet($type);
651
-
652
-	// Controle des MD5 envoyes
653
-	// On elimine les donnees non modifiees par le formulaire (mais
654
-	// potentiellement modifiees entre temps par un autre utilisateur)
655
-	foreach ($champs as $key => $val) {
656
-		if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) {
657
-			if (is_scalar($val) and $m == md5($val)) {
658
-				unset($champs[$key]);
659
-			}
660
-		}
661
-	}
662
-	if (!$champs) {
663
-		return;
664
-	}
665
-
666
-	// On veut savoir si notre modif va avoir un impact
667
-	// par rapport aux donnees contenues dans la base
668
-	// (qui peuvent etre differentes de celles ayant servi a calculer le ctr)
669
-	$s = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=$id", $serveur);
670
-	$intact = true;
671
-	foreach ($champs as $ch => $val) {
672
-		$intact &= ($s[$ch] == $val);
673
-	}
674
-	if ($intact) {
675
-		return;
676
-	}
677
-
678
-	// Detection de conflits :
679
-	// On verifie si notre modif ne provient pas d'un formulaire
680
-	// genere a partir de donnees modifiees dans l'intervalle ; ici
681
-	// on compare a ce qui est dans la base, et on bloque en cas
682
-	// de conflit.
683
-	$ctrh = $ctrq = $conflits = [];
684
-	foreach (array_keys($champs) as $key) {
685
-		if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) {
686
-			$ctrh[$key] = $m;
687
-			$ctrq[] = $key;
688
-		}
689
-	}
690
-	if ($ctrq) {
691
-		$ctrq = sql_fetsel($ctrq, $spip_table_objet, "$id_table_objet=$id", $serveur);
692
-		foreach ($ctrh as $key => $m) {
693
-			if (
694
-				$m != md5($ctrq[$key])
695
-				and $champs[$key] !== $ctrq[$key]
696
-			) {
697
-				$conflits[$key] = [
698
-					'base' => $ctrq[$key],
699
-					'post' => $champs[$key]
700
-				];
701
-				unset($champs[$key]); # stocker quand meme les modifs ?
702
-			}
703
-		}
704
-	}
705
-
706
-	return $conflits;
649
+    $spip_table_objet = table_objet_sql($type);
650
+    $id_table_objet = id_table_objet($type);
651
+
652
+    // Controle des MD5 envoyes
653
+    // On elimine les donnees non modifiees par le formulaire (mais
654
+    // potentiellement modifiees entre temps par un autre utilisateur)
655
+    foreach ($champs as $key => $val) {
656
+        if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) {
657
+            if (is_scalar($val) and $m == md5($val)) {
658
+                unset($champs[$key]);
659
+            }
660
+        }
661
+    }
662
+    if (!$champs) {
663
+        return;
664
+    }
665
+
666
+    // On veut savoir si notre modif va avoir un impact
667
+    // par rapport aux donnees contenues dans la base
668
+    // (qui peuvent etre differentes de celles ayant servi a calculer le ctr)
669
+    $s = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=$id", $serveur);
670
+    $intact = true;
671
+    foreach ($champs as $ch => $val) {
672
+        $intact &= ($s[$ch] == $val);
673
+    }
674
+    if ($intact) {
675
+        return;
676
+    }
677
+
678
+    // Detection de conflits :
679
+    // On verifie si notre modif ne provient pas d'un formulaire
680
+    // genere a partir de donnees modifiees dans l'intervalle ; ici
681
+    // on compare a ce qui est dans la base, et on bloque en cas
682
+    // de conflit.
683
+    $ctrh = $ctrq = $conflits = [];
684
+    foreach (array_keys($champs) as $key) {
685
+        if (isset($ctr[$prefix . $key]) and $m = $ctr[$prefix . $key]) {
686
+            $ctrh[$key] = $m;
687
+            $ctrq[] = $key;
688
+        }
689
+    }
690
+    if ($ctrq) {
691
+        $ctrq = sql_fetsel($ctrq, $spip_table_objet, "$id_table_objet=$id", $serveur);
692
+        foreach ($ctrh as $key => $m) {
693
+            if (
694
+                $m != md5($ctrq[$key])
695
+                and $champs[$key] !== $ctrq[$key]
696
+            ) {
697
+                $conflits[$key] = [
698
+                    'base' => $ctrq[$key],
699
+                    'post' => $champs[$key]
700
+                ];
701
+                unset($champs[$key]); # stocker quand meme les modifs ?
702
+            }
703
+        }
704
+    }
705
+
706
+    return $conflits;
707 707
 }
708 708
 
709 709
 /**
@@ -715,9 +715,9 @@  discard block
 block discarded – undo
715 715
  * @return string
716 716
  */
717 717
 function display_conflit_champ($x) {
718
-	if (strstr($x, "\n") or strlen($x) > 80) {
719
-		return "<textarea style='width:99%; height:10em;'>" . entites_html($x) . "</textarea>\n";
720
-	} else {
721
-		return "<input type='text' size='40' style='width:99%' value=\"" . entites_html($x) . "\" />\n";
722
-	}
718
+    if (strstr($x, "\n") or strlen($x) > 80) {
719
+        return "<textarea style='width:99%; height:10em;'>" . entites_html($x) . "</textarea>\n";
720
+    } else {
721
+        return "<input type='text' size='40' style='width:99%' value=\"" . entites_html($x) . "\" />\n";
722
+    }
723 723
 }
Please login to merge, or discard this patch.