Completed
Push — master ( aad728...b28807 )
by cam
01:09
created
ecrire/inc/modifier.php 1 patch
Indentation   +216 added lines, -216 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 /**
@@ -39,28 +39,28 @@  discard block
 block discarded – undo
39 39
  *     Tableau des champs et valeurs collectées
40 40
  */
41 41
 function collecter_requests($white_list, $black_list = [], $set = null, $tous = false) {
42
-	$c = $set;
43
-	if (!$c) {
44
-		$c = [];
45
-		foreach ($white_list as $champ) {
46
-			// on ne collecte que les champs reellement envoyes par defaut.
47
-			// le cas d'un envoi de valeur NULL peut du coup poser probleme.
48
-			$val = _request($champ);
49
-			if ($tous or $val !== null) {
50
-				$c[$champ] = $val;
51
-			}
52
-		}
53
-		// on ajoute toujours la lang en saisie possible
54
-		// meme si pas prevu au depart pour l'objet concerne
55
-		if ($l = _request('changer_lang')) {
56
-			$c['lang'] = $l;
57
-		}
58
-	}
59
-	foreach ($black_list as $champ) {
60
-		unset($c[$champ]);
61
-	}
42
+    $c = $set;
43
+    if (!$c) {
44
+        $c = [];
45
+        foreach ($white_list as $champ) {
46
+            // on ne collecte que les champs reellement envoyes par defaut.
47
+            // le cas d'un envoi de valeur NULL peut du coup poser probleme.
48
+            $val = _request($champ);
49
+            if ($tous or $val !== null) {
50
+                $c[$champ] = $val;
51
+            }
52
+        }
53
+        // on ajoute toujours la lang en saisie possible
54
+        // meme si pas prevu au depart pour l'objet concerne
55
+        if ($l = _request('changer_lang')) {
56
+            $c['lang'] = $l;
57
+        }
58
+    }
59
+    foreach ($black_list as $champ) {
60
+        unset($c[$champ]);
61
+    }
62 62
 
63
-	return $c;
63
+    return $c;
64 64
 }
65 65
 
66 66
 /**
@@ -97,223 +97,223 @@  discard block
 block discarded – undo
97 97
  *     - chaîne : Texte d'un message d'erreur
98 98
  */
99 99
 function objet_modifier_champs($objet, $id_objet, $options, $c = null, $serveur = '') {
100
-	if (!$id_objet = intval($id_objet)) {
101
-		spip_log('Erreur $id_objet non defini', 'warn');
100
+    if (!$id_objet = intval($id_objet)) {
101
+        spip_log('Erreur $id_objet non defini', 'warn');
102 102
 
103
-		return _T('erreur_technique_enregistrement_impossible');
104
-	}
103
+        return _T('erreur_technique_enregistrement_impossible');
104
+    }
105 105
 
106
-	include_spip('inc/filtres');
106
+    include_spip('inc/filtres');
107 107
 
108
-	$table_objet = table_objet($objet, $serveur);
109
-	$spip_table_objet = table_objet_sql($objet, $serveur);
110
-	$id_table_objet = id_table_objet($objet, $serveur);
111
-	$trouver_table = charger_fonction('trouver_table', 'base');
112
-	$desc = $trouver_table($spip_table_objet, $serveur);
108
+    $table_objet = table_objet($objet, $serveur);
109
+    $spip_table_objet = table_objet_sql($objet, $serveur);
110
+    $id_table_objet = id_table_objet($objet, $serveur);
111
+    $trouver_table = charger_fonction('trouver_table', 'base');
112
+    $desc = $trouver_table($spip_table_objet, $serveur);
113 113
 
114
-	// Appels incomplets (sans $c)
115
-	if (!is_array($c)) {
116
-		spip_log('erreur appel objet_modifier_champs(' . $objet . '), manque $c');
114
+    // Appels incomplets (sans $c)
115
+    if (!is_array($c)) {
116
+        spip_log('erreur appel objet_modifier_champs(' . $objet . '), manque $c');
117 117
 
118
-		return _T('erreur_technique_enregistrement_impossible');
119
-	}
118
+        return _T('erreur_technique_enregistrement_impossible');
119
+    }
120 120
 
121
-	// Securite : certaines variables ne sont jamais acceptees ici
122
-	// car elles ne relevent pas de autoriser(xxx, modifier) ;
123
-	// il faut passer par instituer_XX()
124
-	// TODO: faut-il passer ces variables interdites
125
-	// dans un fichier de description separe ?
126
-	unset($c['statut']);
127
-	unset($c['id_parent']);
128
-	unset($c['id_rubrique']);
129
-	unset($c['id_secteur']);
121
+    // Securite : certaines variables ne sont jamais acceptees ici
122
+    // car elles ne relevent pas de autoriser(xxx, modifier) ;
123
+    // il faut passer par instituer_XX()
124
+    // TODO: faut-il passer ces variables interdites
125
+    // dans un fichier de description separe ?
126
+    unset($c['statut']);
127
+    unset($c['id_parent']);
128
+    unset($c['id_rubrique']);
129
+    unset($c['id_secteur']);
130 130
 
131
-	// Gerer les champs non vides
132
-	if (isset($options['nonvide']) and is_array($options['nonvide'])) {
133
-		foreach ($options['nonvide'] as $champ => $sinon) {
134
-			if (isset($c[$champ]) and $c[$champ] === '') {
135
-				$c[$champ] = $sinon;
136
-			}
137
-		}
138
-	}
131
+    // Gerer les champs non vides
132
+    if (isset($options['nonvide']) and is_array($options['nonvide'])) {
133
+        foreach ($options['nonvide'] as $champ => $sinon) {
134
+            if (isset($c[$champ]) and $c[$champ] === '') {
135
+                $c[$champ] = $sinon;
136
+            }
137
+        }
138
+    }
139 139
 
140
-	// N'accepter que les champs qui existent
141
-	// TODO: ici aussi on peut valider les contenus
142
-	// en fonction du type
143
-	$champs = array_intersect_key($c, $desc['field']);
140
+    // N'accepter que les champs qui existent
141
+    // TODO: ici aussi on peut valider les contenus
142
+    // en fonction du type
143
+    $champs = array_intersect_key($c, $desc['field']);
144 144
 
145
-	// Nettoyer les valeurs
146
-	$champs = array_map('corriger_caracteres', $champs);
145
+    // Nettoyer les valeurs
146
+    $champs = array_map('corriger_caracteres', $champs);
147 147
 
148
-	// Envoyer aux plugins
149
-	$champs = pipeline(
150
-		'pre_edition',
151
-		[
152
-			'args' => [
153
-				'table' => $spip_table_objet, // compatibilite
154
-				'table_objet' => $table_objet,
155
-				'spip_table_objet' => $spip_table_objet,
156
-				'desc' => $desc,
157
-				'type' => $objet,
158
-				'id_objet' => $id_objet,
159
-				'data' => $options['data'] ?? null,
160
-				'champs' => $options['champs'] ?? [], // [doc] c'est quoi ?
161
-				'serveur' => $serveur,
162
-				'action' => $options['action'] ?? 'modifier'
163
-			],
164
-			'data' => $champs
165
-		]
166
-	);
148
+    // Envoyer aux plugins
149
+    $champs = pipeline(
150
+        'pre_edition',
151
+        [
152
+            'args' => [
153
+                'table' => $spip_table_objet, // compatibilite
154
+                'table_objet' => $table_objet,
155
+                'spip_table_objet' => $spip_table_objet,
156
+                'desc' => $desc,
157
+                'type' => $objet,
158
+                'id_objet' => $id_objet,
159
+                'data' => $options['data'] ?? null,
160
+                'champs' => $options['champs'] ?? [], // [doc] c'est quoi ?
161
+                'serveur' => $serveur,
162
+                'action' => $options['action'] ?? 'modifier'
163
+            ],
164
+            'data' => $champs
165
+        ]
166
+    );
167 167
 
168
-	if (!$champs) {
169
-		return false;
170
-	}
168
+    if (!$champs) {
169
+        return false;
170
+    }
171 171
 
172 172
 
173
-	// marquer le fait que l'objet est travaille par toto a telle date
174
-	if ($GLOBALS['meta']['articles_modif'] != 'non') {
175
-		include_spip('inc/drapeau_edition');
176
-		signale_edition($id_objet, $GLOBALS['visiteur_session'], $objet);
177
-	}
173
+    // marquer le fait que l'objet est travaille par toto a telle date
174
+    if ($GLOBALS['meta']['articles_modif'] != 'non') {
175
+        include_spip('inc/drapeau_edition');
176
+        signale_edition($id_objet, $GLOBALS['visiteur_session'], $objet);
177
+    }
178 178
 
179
-	// Verifier si les mises a jour sont pertinentes, datees, en conflit etc
180
-	include_spip('inc/editer');
181
-	if (!isset($options['data']) or is_null($options['data'])) {
182
-		$options['data'] = &$_POST;
183
-	}
184
-	$conflits = controler_md5($champs, $options['data'], $objet, $id_objet, $serveur);
185
-	// cas hypothetique : normalement inc/editer verifie en amont le conflit edition
186
-	// et gere l'interface
187
-	// ici on ne renvoie donc qu'un messsage d'erreur, au cas ou on y arrive quand meme
188
-	if ($conflits) {
189
-		return _T('titre_conflit_edition');
190
-	}
179
+    // Verifier si les mises a jour sont pertinentes, datees, en conflit etc
180
+    include_spip('inc/editer');
181
+    if (!isset($options['data']) or is_null($options['data'])) {
182
+        $options['data'] = &$_POST;
183
+    }
184
+    $conflits = controler_md5($champs, $options['data'], $objet, $id_objet, $serveur);
185
+    // cas hypothetique : normalement inc/editer verifie en amont le conflit edition
186
+    // et gere l'interface
187
+    // ici on ne renvoie donc qu'un messsage d'erreur, au cas ou on y arrive quand meme
188
+    if ($conflits) {
189
+        return _T('titre_conflit_edition');
190
+    }
191 191
 
192
-	if ($champs) {
193
-		// cas particulier de la langue : passer par instituer_langue_objet
194
-		if (isset($champs['lang'])) {
195
-			if ($changer_lang = $champs['lang']) {
196
-				$id_rubrique = 0;
197
-				if (isset($desc['field']['id_rubrique'])) {
198
-					$parent = ($objet == 'rubrique') ? 'id_parent' : 'id_rubrique';
199
-					$id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=" . intval($id_objet));
200
-				}
201
-				$instituer_langue_objet = charger_fonction('instituer_langue_objet', 'action');
202
-				$champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang, $serveur);
203
-			}
204
-			// on laisse 'lang' dans $champs,
205
-			// ca permet de passer dans le pipeline post_edition et de journaliser
206
-			// et ca ne gene pas qu'on refasse un sql_updateq dessus apres l'avoir
207
-			// deja pris en compte
208
-		}
192
+    if ($champs) {
193
+        // cas particulier de la langue : passer par instituer_langue_objet
194
+        if (isset($champs['lang'])) {
195
+            if ($changer_lang = $champs['lang']) {
196
+                $id_rubrique = 0;
197
+                if (isset($desc['field']['id_rubrique'])) {
198
+                    $parent = ($objet == 'rubrique') ? 'id_parent' : 'id_rubrique';
199
+                    $id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=" . intval($id_objet));
200
+                }
201
+                $instituer_langue_objet = charger_fonction('instituer_langue_objet', 'action');
202
+                $champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang, $serveur);
203
+            }
204
+            // on laisse 'lang' dans $champs,
205
+            // ca permet de passer dans le pipeline post_edition et de journaliser
206
+            // et ca ne gene pas qu'on refasse un sql_updateq dessus apres l'avoir
207
+            // deja pris en compte
208
+        }
209 209
 
210
-		// la modif peut avoir lieu
210
+        // la modif peut avoir lieu
211 211
 
212
-		// faut-il ajouter date_modif ?
213
-		if (
214
-			!empty($options['date_modif'])
215
-			and !isset($champs[$options['date_modif']])
216
-		) {
217
-			$champs[$options['date_modif']] = date('Y-m-d H:i:s');
218
-		}
212
+        // faut-il ajouter date_modif ?
213
+        if (
214
+            !empty($options['date_modif'])
215
+            and !isset($champs[$options['date_modif']])
216
+        ) {
217
+            $champs[$options['date_modif']] = date('Y-m-d H:i:s');
218
+        }
219 219
 
220
-		// allez on commit la modif
221
-		sql_updateq($spip_table_objet, $champs, "$id_table_objet=" . intval($id_objet), $serveur);
220
+        // allez on commit la modif
221
+        sql_updateq($spip_table_objet, $champs, "$id_table_objet=" . intval($id_objet), $serveur);
222 222
 
223
-		// on verifie si elle est bien passee
224
-		$moof = sql_fetsel(
225
-			array_keys($champs),
226
-			$spip_table_objet,
227
-			"$id_table_objet=" . intval($id_objet),
228
-			[],
229
-			[],
230
-			'',
231
-			[],
232
-			$serveur
233
-		);
234
-		// si difference entre les champs, reperer les champs mal enregistres
235
-		if ($moof != $champs) {
236
-			$liste = [];
237
-			foreach ($moof as $k => $v) {
238
-				if (
239
-					$v !== $champs[$k]
240
-					// ne pas alerter si le champ est numerique est que les valeurs sont equivalentes
241
-					and (!is_numeric($v) or intval($v) !== intval($champs[$k]))
242
-					// ne pas alerter si le champ est date, qu'on a envoye une valeur vide et qu'on recupere une date nulle
243
-					and (strlen($champs[$k]) or !in_array($v, ['0000-00-00 00:00:00', '0000-00-00']))
244
-				) {
245
-					$liste[] = $k;
246
-					$conflits[$k]['post'] = $champs[$k];
247
-					$conflits[$k]['save'] = $v;
223
+        // on verifie si elle est bien passee
224
+        $moof = sql_fetsel(
225
+            array_keys($champs),
226
+            $spip_table_objet,
227
+            "$id_table_objet=" . intval($id_objet),
228
+            [],
229
+            [],
230
+            '',
231
+            [],
232
+            $serveur
233
+        );
234
+        // si difference entre les champs, reperer les champs mal enregistres
235
+        if ($moof != $champs) {
236
+            $liste = [];
237
+            foreach ($moof as $k => $v) {
238
+                if (
239
+                    $v !== $champs[$k]
240
+                    // ne pas alerter si le champ est numerique est que les valeurs sont equivalentes
241
+                    and (!is_numeric($v) or intval($v) !== intval($champs[$k]))
242
+                    // ne pas alerter si le champ est date, qu'on a envoye une valeur vide et qu'on recupere une date nulle
243
+                    and (strlen($champs[$k]) or !in_array($v, ['0000-00-00 00:00:00', '0000-00-00']))
244
+                ) {
245
+                    $liste[] = $k;
246
+                    $conflits[$k]['post'] = $champs[$k];
247
+                    $conflits[$k]['save'] = $v;
248 248
 
249
-					// cas specifique MySQL+emoji : si l'un est la
250
-					// conversion utf8_noplanes de l'autre alors c'est OK
251
-					if (defined('_MYSQL_NOPLANES') && _MYSQL_NOPLANES) {
252
-						include_spip('inc/charsets');
253
-						if ($v == utf8_noplanes($champs[$k])) {
254
-							array_pop($liste);
255
-						}
256
-					}
257
-				}
258
-			}
259
-			// si un champ n'a pas ete correctement enregistre, loger et retourner une erreur
260
-			// c'est un cas exceptionnel
261
-			if (count($liste)) {
262
-				spip_log(
263
-					"Erreur enregistrement en base $objet/$id_objet champs :" . var_export($conflits, true),
264
-					'modifier.' . _LOG_CRITIQUE
265
-				);
249
+                    // cas specifique MySQL+emoji : si l'un est la
250
+                    // conversion utf8_noplanes de l'autre alors c'est OK
251
+                    if (defined('_MYSQL_NOPLANES') && _MYSQL_NOPLANES) {
252
+                        include_spip('inc/charsets');
253
+                        if ($v == utf8_noplanes($champs[$k])) {
254
+                            array_pop($liste);
255
+                        }
256
+                    }
257
+                }
258
+            }
259
+            // si un champ n'a pas ete correctement enregistre, loger et retourner une erreur
260
+            // c'est un cas exceptionnel
261
+            if (count($liste)) {
262
+                spip_log(
263
+                    "Erreur enregistrement en base $objet/$id_objet champs :" . var_export($conflits, true),
264
+                    'modifier.' . _LOG_CRITIQUE
265
+                );
266 266
 
267
-				return _T(
268
-					'erreur_technique_enregistrement_champs',
269
-					['champs' => "<i>'" . implode("'</i>,<i>'", $liste) . "'</i>"]
270
-				);
271
-			}
272
-		}
267
+                return _T(
268
+                    'erreur_technique_enregistrement_champs',
269
+                    ['champs' => "<i>'" . implode("'</i>,<i>'", $liste) . "'</i>"]
270
+                );
271
+            }
272
+        }
273 273
 
274
-		// Invalider les caches
275
-		if (isset($options['invalideur']) and $options['invalideur']) {
276
-			include_spip('inc/invalideur');
277
-			if (is_array($options['invalideur'])) {
278
-				array_map('suivre_invalideur', $options['invalideur']);
279
-			} else {
280
-				suivre_invalideur($options['invalideur']);
281
-			}
282
-		}
274
+        // Invalider les caches
275
+        if (isset($options['invalideur']) and $options['invalideur']) {
276
+            include_spip('inc/invalideur');
277
+            if (is_array($options['invalideur'])) {
278
+                array_map('suivre_invalideur', $options['invalideur']);
279
+            } else {
280
+                suivre_invalideur($options['invalideur']);
281
+            }
282
+        }
283 283
 
284
-		// Notifications, gestion des revisions...
285
-		// en standard, appelle |nouvelle_revision ci-dessous
286
-		pipeline(
287
-			'post_edition',
288
-			[
289
-				'args' => [
290
-					'table' => $spip_table_objet,
291
-					'table_objet' => $table_objet,
292
-					'spip_table_objet' => $spip_table_objet,
293
-					'desc' => $desc,
294
-					'type' => $objet,
295
-					'id_objet' => $id_objet,
296
-					'champs' => $options['champs'] ?? [], // [doc] kesako ?
297
-					'serveur' => $serveur,
298
-					'action' => $options['action'] ?? 'modifier'
299
-				],
300
-				'data' => $champs
301
-			]
302
-		);
303
-	}
284
+        // Notifications, gestion des revisions...
285
+        // en standard, appelle |nouvelle_revision ci-dessous
286
+        pipeline(
287
+            'post_edition',
288
+            [
289
+                'args' => [
290
+                    'table' => $spip_table_objet,
291
+                    'table_objet' => $table_objet,
292
+                    'spip_table_objet' => $spip_table_objet,
293
+                    'desc' => $desc,
294
+                    'type' => $objet,
295
+                    'id_objet' => $id_objet,
296
+                    'champs' => $options['champs'] ?? [], // [doc] kesako ?
297
+                    'serveur' => $serveur,
298
+                    'action' => $options['action'] ?? 'modifier'
299
+                ],
300
+                'data' => $champs
301
+            ]
302
+        );
303
+    }
304 304
 
305
-	// journaliser l'affaire
306
-	// message a affiner :-)
307
-	include_spip('inc/filtres_mini');
308
-	$qui = !empty($GLOBALS['visiteur_session']['nom']) ? $GLOBALS['visiteur_session']['nom'] : $GLOBALS['ip'];
309
-	journal(_L($qui . ' a &#233;dit&#233; l&#8217;' . $objet . ' ' . $id_objet . ' (' . join(
310
-		'+',
311
-		array_diff(array_keys($champs), ['date_modif'])
312
-	) . ')'), [
313
-		'faire' => 'modifier',
314
-		'quoi' => $objet,
315
-		'id' => $id_objet
316
-	]);
305
+    // journaliser l'affaire
306
+    // message a affiner :-)
307
+    include_spip('inc/filtres_mini');
308
+    $qui = !empty($GLOBALS['visiteur_session']['nom']) ? $GLOBALS['visiteur_session']['nom'] : $GLOBALS['ip'];
309
+    journal(_L($qui . ' a &#233;dit&#233; l&#8217;' . $objet . ' ' . $id_objet . ' (' . join(
310
+        '+',
311
+        array_diff(array_keys($champs), ['date_modif'])
312
+    ) . ')'), [
313
+        'faire' => 'modifier',
314
+        'quoi' => $objet,
315
+        'id' => $id_objet
316
+    ]);
317 317
 
318
-	return '';
318
+    return '';
319 319
 }
Please login to merge, or discard this patch.