Completed
Push — master ( 9ef159...478ba3 )
by cam
01:13
created
prive/formulaires/editer_auteur.php 1 patch
Indentation   +343 added lines, -343 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@  discard block
 block discarded – undo
7 7
  **/
8 8
 
9 9
 if (!defined('_ECRIRE_INC_VERSION')) {
10
-	return;
10
+    return;
11 11
 }
12 12
 
13 13
 include_spip('inc/actions');
@@ -37,21 +37,21 @@  discard block
 block discarded – undo
37 37
  *     Environnement du formulaire
38 38
  **/
39 39
 function formulaires_editer_auteur_charger_dist(
40
-	$id_auteur = 'new',
41
-	$retour = '',
42
-	$associer_objet = '',
43
-	$config_fonc = 'auteurs_edit_config',
44
-	$row = [],
45
-	$hidden = ''
40
+    $id_auteur = 'new',
41
+    $retour = '',
42
+    $associer_objet = '',
43
+    $config_fonc = 'auteurs_edit_config',
44
+    $row = [],
45
+    $hidden = ''
46 46
 ) {
47
-	$valeurs = formulaires_editer_objet_charger('auteur', $id_auteur, 0, 0, $retour, $config_fonc, $row, $hidden);
48
-	$valeurs['new_login'] = $valeurs['login'];
47
+    $valeurs = formulaires_editer_objet_charger('auteur', $id_auteur, 0, 0, $retour, $config_fonc, $row, $hidden);
48
+    $valeurs['new_login'] = $valeurs['login'];
49 49
 
50
-	if (!autoriser('modifier', 'auteur', intval($id_auteur))) {
51
-		$valeurs['editable'] = '';
52
-	}
50
+    if (!autoriser('modifier', 'auteur', intval($id_auteur))) {
51
+        $valeurs['editable'] = '';
52
+    }
53 53
 
54
-	return $valeurs;
54
+    return $valeurs;
55 55
 }
56 56
 
57 57
 /**
@@ -75,14 +75,14 @@  discard block
 block discarded – undo
75 75
  *     Hash du formulaire
76 76
  */
77 77
 function formulaires_editer_auteur_identifier_dist(
78
-	$id_auteur = 'new',
79
-	$retour = '',
80
-	$associer_objet = '',
81
-	$config_fonc = 'auteurs_edit_config',
82
-	$row = [],
83
-	$hidden = ''
78
+    $id_auteur = 'new',
79
+    $retour = '',
80
+    $associer_objet = '',
81
+    $config_fonc = 'auteurs_edit_config',
82
+    $row = [],
83
+    $hidden = ''
84 84
 ) {
85
-	return serialize([intval($id_auteur), $associer_objet]);
85
+    return serialize([intval($id_auteur), $associer_objet]);
86 86
 }
87 87
 
88 88
 
@@ -96,27 +96,27 @@  discard block
 block discarded – undo
96 96
  */
97 97
 function auteurs_edit_config(array $row): array {
98 98
 
99
-	$config = [];
100
-	$config['lignes'] = 8;
101
-	$config['langue'] = $GLOBALS['spip_lang'];
102
-
103
-	// pour instituer_auteur
104
-	$config['auteur'] = $row;
105
-
106
-	//$config['restreint'] = ($row['statut'] == 'publie');
107
-	$auth_methode = $row['source'];
108
-	include_spip('inc/auth');
109
-	$config['edit_login'] =
110
-		(auth_autoriser_modifier_login($auth_methode)
111
-			and autoriser('modifier', 'auteur', $row['id_auteur'], null, ['login' => true])
112
-			// legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email
113
-			and autoriser('modifier', 'auteur', $row['id_auteur'], null, ['email' => true])
114
-		);
115
-	$config['edit_pass'] =
116
-		(auth_autoriser_modifier_pass($auth_methode)
117
-			and autoriser('modifier', 'auteur', $row['id_auteur']));
118
-
119
-	return $config;
99
+    $config = [];
100
+    $config['lignes'] = 8;
101
+    $config['langue'] = $GLOBALS['spip_lang'];
102
+
103
+    // pour instituer_auteur
104
+    $config['auteur'] = $row;
105
+
106
+    //$config['restreint'] = ($row['statut'] == 'publie');
107
+    $auth_methode = $row['source'];
108
+    include_spip('inc/auth');
109
+    $config['edit_login'] =
110
+        (auth_autoriser_modifier_login($auth_methode)
111
+            and autoriser('modifier', 'auteur', $row['id_auteur'], null, ['login' => true])
112
+            // legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email
113
+            and autoriser('modifier', 'auteur', $row['id_auteur'], null, ['email' => true])
114
+        );
115
+    $config['edit_pass'] =
116
+        (auth_autoriser_modifier_pass($auth_methode)
117
+            and autoriser('modifier', 'auteur', $row['id_auteur']));
118
+
119
+    return $config;
120 120
 }
121 121
 
122 122
 /**
@@ -146,143 +146,143 @@  discard block
 block discarded – undo
146 146
  *     Erreurs des saisies
147 147
  **/
148 148
 function formulaires_editer_auteur_verifier_dist(
149
-	$id_auteur = 'new',
150
-	$retour = '',
151
-	$associer_objet = '',
152
-	$config_fonc = 'auteurs_edit_config',
153
-	$row = [],
154
-	$hidden = ''
149
+    $id_auteur = 'new',
150
+    $retour = '',
151
+    $associer_objet = '',
152
+    $config_fonc = 'auteurs_edit_config',
153
+    $row = [],
154
+    $hidden = ''
155 155
 ) {
156
-	// auto-renseigner le nom si il n'existe pas, sans couper
157
-	titre_automatique('nom', ['email', 'login'], 255);
158
-
159
-	$oblis = ['nom'];
160
-	// si on veut renvoyer des identifiants il faut un email et un login
161
-	if (_request('reset_password')) {
162
-		$oblis[] = 'email';
163
-		$oblis[] = 'new_login';
164
-	}
165
-	// mais il reste obligatoire si on a rien trouve
166
-	$erreurs = formulaires_editer_objet_verifier('auteur', $id_auteur, $oblis);
167
-	if (isset($erreurs['new_login'])) {
168
-		$erreurs['login'] = $erreurs['new_login'];
169
-		unset($erreurs['new_login']);
170
-	}
171
-
172
-	$auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
173
-	$auth_methode = ($auth_methode ?: 'spip');
174
-	include_spip('inc/auth');
175
-
176
-	if (!nom_acceptable(_request('nom'))) {
177
-		$erreurs['nom'] = _T('info_nom_pas_conforme');
178
-	}
179
-
180
-	if ($email = _request('email')) {
181
-		include_spip('inc/filtres');
182
-		include_spip('inc/autoriser');
183
-		// un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
184
-		if (
185
-			!autoriser('modifier', 'auteur', $id_auteur, null, ['email' => '?'])
186
-			and $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
187
-			and !strlen(trim($email))
188
-			and $email != ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
189
-		) {
190
-			$erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email'));
191
-		} else {
192
-			if (!email_valide($email)) {
193
-				$erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email'));
194
-			}
195
-		}
196
-		# Ne pas autoriser d'avoir deux auteurs avec le même email
197
-		# cette fonctionalité nécessite que la base soit clean à l'activation : pas de
198
-		# doublon sur la requête select email,count(*) from spip_auteurs group by email ;
199
-		if (defined('_INTERDIRE_AUTEUR_MEME_EMAIL')) {
200
-			#Nouvel auteur
201
-			if (intval($id_auteur) == 0) {
202
-				#Un auteur existe deja avec cette adresse ?
203
-				if (sql_countsel('spip_auteurs', 'email=' . sql_quote($email)) > 0) {
204
-					$erreurs['email'] = _T('erreur_email_deja_existant');
205
-				}
206
-			} else {
207
-				#Un auteur existe deja avec cette adresse ? et n'est pas le user courant.
208
-				if (
209
-					(sql_countsel(
210
-						'spip_auteurs',
211
-						'email=' . sql_quote($email)
212
-					) > 0) and ($id_auteur != ($id_auteur_ancien = sql_getfetsel(
213
-						'id_auteur',
214
-						'spip_auteurs',
215
-						'email=' . sql_quote($email)
216
-					)))
217
-				) {
218
-					$erreurs['email'] = _T('erreur_email_deja_existant');
219
-				}
220
-			}
221
-		}
222
-	}
223
-
224
-	// quand c'est un auteur existant on fait le reset password ici
225
-	if (!(is_countable($erreurs) ? count($erreurs) : 0) and _request('reset_password') and intval($id_auteur)) {
226
-		$erreurs = auteur_reset_password($id_auteur, $erreurs);
227
-		return $erreurs;
228
-	}
229
-
230
-	// corriger un cas si frequent : www.example.org sans le http:// qui precede
231
-	if ($url = _request('url_site') and !tester_url_absolue($url)) {
232
-		if (strpos($url, ':') === false and strncasecmp($url, 'www.', 4) === 0) {
233
-			$url = 'http://' . $url;
234
-			set_request('url_site', $url);
235
-		}
236
-	}
237
-	// traiter les liens implicites avant de tester l'url
238
-	include_spip('inc/lien');
239
-	if ($url = calculer_url(_request('url_site')) and !tester_url_absolue($url)) {
240
-		$erreurs['url_site'] = _T('info_url_site_pas_conforme');
241
-	}
242
-
243
-	$erreurs['message_erreur'] = '';
244
-	if (_request('login')) {
245
-		// on n'est jamais cense poster le name 'login'
246
-		$erreurs['login'] = _T('info_non_modifiable');
247
-	}
248
-	elseif (
249
-		($login = _request('new_login')) and
250
-		$login !== sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur))
251
-	) {
252
-		// on verifie la meme chose que dans auteurs_edit_config()
253
-		if (
254
-			! auth_autoriser_modifier_login($auth_methode)
255
-			or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['login' => true])
256
-			// legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email
257
-			or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['email' => true])
258
-		) {
259
-			$erreurs['login'] = _T('info_non_modifiable');
260
-		}
261
-	}
262
-
263
-	if (empty($erreurs['login'])) {
264
-		if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
265
-			$erreurs['login'] = $err;
266
-			$erreurs['message_erreur'] .= $err;
267
-		} else {
268
-			// pass trop court ou confirmation non identique
269
-			if ($p = _request('new_pass')) {
270
-				if ($p != _request('new_pass2')) {
271
-					$erreurs['new_pass'] = _T('info_passes_identiques');
272
-					$erreurs['message_erreur'] .= _T('info_passes_identiques');
273
-				} elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
274
-					$erreurs['new_pass'] = $err;
275
-					$erreurs['message_erreur'] .= $err;
276
-				}
277
-			}
278
-		}
279
-	}
280
-
281
-	if (!$erreurs['message_erreur']) {
282
-		unset($erreurs['message_erreur']);
283
-	}
284
-
285
-	return $erreurs;
156
+    // auto-renseigner le nom si il n'existe pas, sans couper
157
+    titre_automatique('nom', ['email', 'login'], 255);
158
+
159
+    $oblis = ['nom'];
160
+    // si on veut renvoyer des identifiants il faut un email et un login
161
+    if (_request('reset_password')) {
162
+        $oblis[] = 'email';
163
+        $oblis[] = 'new_login';
164
+    }
165
+    // mais il reste obligatoire si on a rien trouve
166
+    $erreurs = formulaires_editer_objet_verifier('auteur', $id_auteur, $oblis);
167
+    if (isset($erreurs['new_login'])) {
168
+        $erreurs['login'] = $erreurs['new_login'];
169
+        unset($erreurs['new_login']);
170
+    }
171
+
172
+    $auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
173
+    $auth_methode = ($auth_methode ?: 'spip');
174
+    include_spip('inc/auth');
175
+
176
+    if (!nom_acceptable(_request('nom'))) {
177
+        $erreurs['nom'] = _T('info_nom_pas_conforme');
178
+    }
179
+
180
+    if ($email = _request('email')) {
181
+        include_spip('inc/filtres');
182
+        include_spip('inc/autoriser');
183
+        // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
184
+        if (
185
+            !autoriser('modifier', 'auteur', $id_auteur, null, ['email' => '?'])
186
+            and $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
187
+            and !strlen(trim($email))
188
+            and $email != ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
189
+        ) {
190
+            $erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email'));
191
+        } else {
192
+            if (!email_valide($email)) {
193
+                $erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email'));
194
+            }
195
+        }
196
+        # Ne pas autoriser d'avoir deux auteurs avec le même email
197
+        # cette fonctionalité nécessite que la base soit clean à l'activation : pas de
198
+        # doublon sur la requête select email,count(*) from spip_auteurs group by email ;
199
+        if (defined('_INTERDIRE_AUTEUR_MEME_EMAIL')) {
200
+            #Nouvel auteur
201
+            if (intval($id_auteur) == 0) {
202
+                #Un auteur existe deja avec cette adresse ?
203
+                if (sql_countsel('spip_auteurs', 'email=' . sql_quote($email)) > 0) {
204
+                    $erreurs['email'] = _T('erreur_email_deja_existant');
205
+                }
206
+            } else {
207
+                #Un auteur existe deja avec cette adresse ? et n'est pas le user courant.
208
+                if (
209
+                    (sql_countsel(
210
+                        'spip_auteurs',
211
+                        'email=' . sql_quote($email)
212
+                    ) > 0) and ($id_auteur != ($id_auteur_ancien = sql_getfetsel(
213
+                        'id_auteur',
214
+                        'spip_auteurs',
215
+                        'email=' . sql_quote($email)
216
+                    )))
217
+                ) {
218
+                    $erreurs['email'] = _T('erreur_email_deja_existant');
219
+                }
220
+            }
221
+        }
222
+    }
223
+
224
+    // quand c'est un auteur existant on fait le reset password ici
225
+    if (!(is_countable($erreurs) ? count($erreurs) : 0) and _request('reset_password') and intval($id_auteur)) {
226
+        $erreurs = auteur_reset_password($id_auteur, $erreurs);
227
+        return $erreurs;
228
+    }
229
+
230
+    // corriger un cas si frequent : www.example.org sans le http:// qui precede
231
+    if ($url = _request('url_site') and !tester_url_absolue($url)) {
232
+        if (strpos($url, ':') === false and strncasecmp($url, 'www.', 4) === 0) {
233
+            $url = 'http://' . $url;
234
+            set_request('url_site', $url);
235
+        }
236
+    }
237
+    // traiter les liens implicites avant de tester l'url
238
+    include_spip('inc/lien');
239
+    if ($url = calculer_url(_request('url_site')) and !tester_url_absolue($url)) {
240
+        $erreurs['url_site'] = _T('info_url_site_pas_conforme');
241
+    }
242
+
243
+    $erreurs['message_erreur'] = '';
244
+    if (_request('login')) {
245
+        // on n'est jamais cense poster le name 'login'
246
+        $erreurs['login'] = _T('info_non_modifiable');
247
+    }
248
+    elseif (
249
+        ($login = _request('new_login')) and
250
+        $login !== sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur))
251
+    ) {
252
+        // on verifie la meme chose que dans auteurs_edit_config()
253
+        if (
254
+            ! auth_autoriser_modifier_login($auth_methode)
255
+            or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['login' => true])
256
+            // legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email
257
+            or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['email' => true])
258
+        ) {
259
+            $erreurs['login'] = _T('info_non_modifiable');
260
+        }
261
+    }
262
+
263
+    if (empty($erreurs['login'])) {
264
+        if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
265
+            $erreurs['login'] = $err;
266
+            $erreurs['message_erreur'] .= $err;
267
+        } else {
268
+            // pass trop court ou confirmation non identique
269
+            if ($p = _request('new_pass')) {
270
+                if ($p != _request('new_pass2')) {
271
+                    $erreurs['new_pass'] = _T('info_passes_identiques');
272
+                    $erreurs['message_erreur'] .= _T('info_passes_identiques');
273
+                } elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
274
+                    $erreurs['new_pass'] = $err;
275
+                    $erreurs['message_erreur'] .= $err;
276
+                }
277
+            }
278
+        }
279
+    }
280
+
281
+    if (!$erreurs['message_erreur']) {
282
+        unset($erreurs['message_erreur']);
283
+    }
284
+
285
+    return $erreurs;
286 286
 }
287 287
 
288 288
 
@@ -319,128 +319,128 @@  discard block
 block discarded – undo
319 319
  *     Retour des traitements
320 320
  **/
321 321
 function formulaires_editer_auteur_traiter_dist(
322
-	$id_auteur = 'new',
323
-	$retour = '',
324
-	$associer_objet = '',
325
-	$config_fonc = 'auteurs_edit_config',
326
-	$row = [],
327
-	$hidden = ''
322
+    $id_auteur = 'new',
323
+    $retour = '',
324
+    $associer_objet = '',
325
+    $config_fonc = 'auteurs_edit_config',
326
+    $row = [],
327
+    $hidden = ''
328 328
 ) {
329
-	$id_objet = null;
330
-	if (_request('saisie_webmestre') or _request('webmestre')) {
331
-		set_request('webmestre', _request('webmestre') ?: 'non');
332
-	}
333
-	$retour = parametre_url($retour, 'email_confirm', '');
334
-
335
-	if ($restreintes = _request('restreintes')) {
336
-		foreach ($restreintes as $k => $v) {
337
-			if (strpos($v, 'rubrique|') === 0) {
338
-				$restreintes[$k] = substr($v, 9);
339
-			}
340
-		}
341
-		set_request('restreintes', $restreintes);
342
-	}
343
-
344
-	set_request(
345
-		'email',
346
-		email_valide(_request('email'))
347
-	); // eviter d'enregistrer les cas qui sont acceptés par email_valide dans le verifier :
348
-	// "[email protected]  " ou encore "Marie Toto <[email protected]>"
349
-
350
-	include_spip('inc/autoriser');
351
-	if (!autoriser('modifier', 'auteur', $id_auteur, null, ['email' => '?'])) {
352
-		$email_nouveau = _request('email');
353
-		set_request('email'); // vider la saisie car l'auteur n'a pas le droit de modifier cet email
354
-		// mais si c'est son propre profil on lui envoie un email à l'adresse qu'il a indique
355
-		// pour qu'il confirme qu'il possede bien cette adresse
356
-		// son clic sur l'url du message permettre de confirmer le changement
357
-		// et de revenir sur son profil
358
-		if (
359
-			$GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
360
-			and $email_nouveau !=
361
-				($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
362
-		) {
363
-			$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
364
-			$texte = _T(
365
-				'form_auteur_mail_confirmation',
366
-				[
367
-					'url' => generer_action_auteur(
368
-						'confirmer_email',
369
-						$email_nouveau,
370
-						parametre_url($retour, 'email_modif', 'ok')
371
-					)
372
-				]
373
-			);
374
-			$envoyer_mail($email_nouveau, _T('form_auteur_confirmation'), $texte);
375
-			set_request('email_confirm', $email_nouveau);
376
-			if ($email_ancien) {
377
-				$envoyer_mail(
378
-					$email_ancien,
379
-					_T('form_auteur_confirmation'),
380
-					_T('form_auteur_envoi_mail_confirmation', ['email' => $email_nouveau])
381
-				);
382
-			}
383
-			$retour = parametre_url($retour, 'email_confirm', $email_nouveau);
384
-		}
385
-	}
386
-
387
-	$res = formulaires_editer_objet_traiter('auteur', $id_auteur, 0, 0, $retour, $config_fonc, $row, $hidden);
388
-
389
-	if (_request('reset_password') and !intval($id_auteur) and intval($res['id_auteur'])) {
390
-		$erreurs = [];
391
-		$erreurs = auteur_reset_password($res['id_auteur'], $erreurs);
392
-		if (isset($erreurs['message_ok'])) {
393
-			if (!isset($res['message_ok'])) { $res['message_ok'] = '';
394
-			}
395
-			$res['message_ok'] = trim($res['message_ok'] . ' ' . $erreurs['message_ok']);
396
-		}
397
-		if (isset($erreurs['message_erreur']) and $erreurs['message_erreur']) {
398
-			if (!isset($res['message_erreur'])) { $res['message_erreur'] = '';
399
-			}
400
-			$res['message_erreur'] = trim($res['message_erreur'] . ' ' . $erreurs['message_erreur']);
401
-		}
402
-	}
403
-
404
-	// Un lien auteur a prendre en compte ?
405
-	if ($associer_objet and $id_auteur = $res['id_auteur']) {
406
-		$objet = '';
407
-		if (intval($associer_objet)) {
408
-			$objet = 'article';
409
-			$id_objet = intval($associer_objet);
410
-		} elseif (preg_match(',^\w+\|[0-9]+$,', $associer_objet)) {
411
-			[$objet, $id_objet] = explode('|', $associer_objet);
412
-		}
413
-		if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
414
-			include_spip('action/editer_auteur');
415
-			auteur_associer($id_auteur, [$objet => $id_objet]);
416
-			if (isset($res['redirect'])) {
417
-				$res['redirect'] = parametre_url($res['redirect'], 'id_lien_ajoute', $id_auteur, '&');
418
-			}
419
-		}
420
-	}
421
-
422
-	return $res;
329
+    $id_objet = null;
330
+    if (_request('saisie_webmestre') or _request('webmestre')) {
331
+        set_request('webmestre', _request('webmestre') ?: 'non');
332
+    }
333
+    $retour = parametre_url($retour, 'email_confirm', '');
334
+
335
+    if ($restreintes = _request('restreintes')) {
336
+        foreach ($restreintes as $k => $v) {
337
+            if (strpos($v, 'rubrique|') === 0) {
338
+                $restreintes[$k] = substr($v, 9);
339
+            }
340
+        }
341
+        set_request('restreintes', $restreintes);
342
+    }
343
+
344
+    set_request(
345
+        'email',
346
+        email_valide(_request('email'))
347
+    ); // eviter d'enregistrer les cas qui sont acceptés par email_valide dans le verifier :
348
+    // "[email protected]  " ou encore "Marie Toto <[email protected]>"
349
+
350
+    include_spip('inc/autoriser');
351
+    if (!autoriser('modifier', 'auteur', $id_auteur, null, ['email' => '?'])) {
352
+        $email_nouveau = _request('email');
353
+        set_request('email'); // vider la saisie car l'auteur n'a pas le droit de modifier cet email
354
+        // mais si c'est son propre profil on lui envoie un email à l'adresse qu'il a indique
355
+        // pour qu'il confirme qu'il possede bien cette adresse
356
+        // son clic sur l'url du message permettre de confirmer le changement
357
+        // et de revenir sur son profil
358
+        if (
359
+            $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
360
+            and $email_nouveau !=
361
+                ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
362
+        ) {
363
+            $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
364
+            $texte = _T(
365
+                'form_auteur_mail_confirmation',
366
+                [
367
+                    'url' => generer_action_auteur(
368
+                        'confirmer_email',
369
+                        $email_nouveau,
370
+                        parametre_url($retour, 'email_modif', 'ok')
371
+                    )
372
+                ]
373
+            );
374
+            $envoyer_mail($email_nouveau, _T('form_auteur_confirmation'), $texte);
375
+            set_request('email_confirm', $email_nouveau);
376
+            if ($email_ancien) {
377
+                $envoyer_mail(
378
+                    $email_ancien,
379
+                    _T('form_auteur_confirmation'),
380
+                    _T('form_auteur_envoi_mail_confirmation', ['email' => $email_nouveau])
381
+                );
382
+            }
383
+            $retour = parametre_url($retour, 'email_confirm', $email_nouveau);
384
+        }
385
+    }
386
+
387
+    $res = formulaires_editer_objet_traiter('auteur', $id_auteur, 0, 0, $retour, $config_fonc, $row, $hidden);
388
+
389
+    if (_request('reset_password') and !intval($id_auteur) and intval($res['id_auteur'])) {
390
+        $erreurs = [];
391
+        $erreurs = auteur_reset_password($res['id_auteur'], $erreurs);
392
+        if (isset($erreurs['message_ok'])) {
393
+            if (!isset($res['message_ok'])) { $res['message_ok'] = '';
394
+            }
395
+            $res['message_ok'] = trim($res['message_ok'] . ' ' . $erreurs['message_ok']);
396
+        }
397
+        if (isset($erreurs['message_erreur']) and $erreurs['message_erreur']) {
398
+            if (!isset($res['message_erreur'])) { $res['message_erreur'] = '';
399
+            }
400
+            $res['message_erreur'] = trim($res['message_erreur'] . ' ' . $erreurs['message_erreur']);
401
+        }
402
+    }
403
+
404
+    // Un lien auteur a prendre en compte ?
405
+    if ($associer_objet and $id_auteur = $res['id_auteur']) {
406
+        $objet = '';
407
+        if (intval($associer_objet)) {
408
+            $objet = 'article';
409
+            $id_objet = intval($associer_objet);
410
+        } elseif (preg_match(',^\w+\|[0-9]+$,', $associer_objet)) {
411
+            [$objet, $id_objet] = explode('|', $associer_objet);
412
+        }
413
+        if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
414
+            include_spip('action/editer_auteur');
415
+            auteur_associer($id_auteur, [$objet => $id_objet]);
416
+            if (isset($res['redirect'])) {
417
+                $res['redirect'] = parametre_url($res['redirect'], 'id_lien_ajoute', $id_auteur, '&');
418
+            }
419
+        }
420
+    }
421
+
422
+    return $res;
423 423
 }
424 424
 
425 425
 
426 426
 function auteur_reset_password($id_auteur, $erreurs = []) {
427
-	$auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
428
-	$config = auteurs_edit_config($auteur);
429
-
430
-	if ($config['edit_pass']) {
431
-		if ($email = auteur_regenerer_identifiants($id_auteur)) {
432
-			$erreurs['message_ok'] = _T('message_nouveaux_identifiants_ok', ['email' => $email]);
433
-			$erreurs['message_erreur'] = '';
434
-		} elseif ($email === false) {
435
-			$erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_envoi');
436
-		} else {
437
-			$erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec');
438
-		}
439
-	} else {
440
-		$erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec');
441
-	}
442
-
443
-	return $erreurs;
427
+    $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
428
+    $config = auteurs_edit_config($auteur);
429
+
430
+    if ($config['edit_pass']) {
431
+        if ($email = auteur_regenerer_identifiants($id_auteur)) {
432
+            $erreurs['message_ok'] = _T('message_nouveaux_identifiants_ok', ['email' => $email]);
433
+            $erreurs['message_erreur'] = '';
434
+        } elseif ($email === false) {
435
+            $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_envoi');
436
+        } else {
437
+            $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec');
438
+        }
439
+    } else {
440
+        $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec');
441
+    }
442
+
443
+    return $erreurs;
444 444
 }
445 445
 
446 446
 /**
@@ -451,53 +451,53 @@  discard block
 block discarded – undo
451 451
  * @return string
452 452
  */
453 453
 function auteur_regenerer_identifiants($id_auteur, $notifier = true, $contexte = []) {
454
-	if ($id_auteur) {
455
-		$set = [];
456
-		include_spip('inc/access');
457
-		$set['pass'] = creer_pass_aleatoire(max(_PASS_LONGUEUR_MINI, 16));
458
-
459
-		include_spip('action/editer_auteur');
460
-		auteur_modifier($id_auteur, $set);
461
-
462
-		$row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
463
-		include_spip('inc/filtres');
464
-		if (
465
-			$notifier
466
-			and $row['email']
467
-			and email_valide($row['email'])
468
-			and trouver_fond($fond = 'modeles/mail_nouveaux_identifiants')
469
-		) {
470
-			// envoyer l'email avec login/pass
471
-			$c = [
472
-				'id_auteur' => $id_auteur,
473
-				'nom' => $row['nom'],
474
-				'mode' => $row['statut'],
475
-				'email' => $row['email'],
476
-				'pass' => $set['pass'],
477
-			];
478
-			// on merge avec les champs fournit en appel, qui sont passes au modele de notification donc
479
-			$contexte = array_merge($contexte, $c);
480
-			// si pas de langue explicitement demandee, prendre celle de l'auteur si on la connait, ou a defaut celle du site
481
-			// plutot que celle de l'admin qui vient de cliquer sur le bouton
482
-			if (!isset($contexte['lang']) or !$contexte['lang']) {
483
-				if (isset($row['lang']) and $row['lang']) {
484
-					$contexte['lang'] = $row['lang'];
485
-				}
486
-				else {
487
-					$contexte['lang'] = $GLOBALS['meta']['langue_site'];
488
-				}
489
-			}
490
-			lang_select($contexte['lang']);
491
-			$message = recuperer_fond($fond, $contexte);
492
-			include_spip('inc/notifications');
493
-			notifications_envoyer_mails($row['email'], $message);
494
-			lang_select();
495
-
496
-			return $row['email'];
497
-		}
498
-
499
-		return false;
500
-	}
501
-
502
-	return '';
454
+    if ($id_auteur) {
455
+        $set = [];
456
+        include_spip('inc/access');
457
+        $set['pass'] = creer_pass_aleatoire(max(_PASS_LONGUEUR_MINI, 16));
458
+
459
+        include_spip('action/editer_auteur');
460
+        auteur_modifier($id_auteur, $set);
461
+
462
+        $row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
463
+        include_spip('inc/filtres');
464
+        if (
465
+            $notifier
466
+            and $row['email']
467
+            and email_valide($row['email'])
468
+            and trouver_fond($fond = 'modeles/mail_nouveaux_identifiants')
469
+        ) {
470
+            // envoyer l'email avec login/pass
471
+            $c = [
472
+                'id_auteur' => $id_auteur,
473
+                'nom' => $row['nom'],
474
+                'mode' => $row['statut'],
475
+                'email' => $row['email'],
476
+                'pass' => $set['pass'],
477
+            ];
478
+            // on merge avec les champs fournit en appel, qui sont passes au modele de notification donc
479
+            $contexte = array_merge($contexte, $c);
480
+            // si pas de langue explicitement demandee, prendre celle de l'auteur si on la connait, ou a defaut celle du site
481
+            // plutot que celle de l'admin qui vient de cliquer sur le bouton
482
+            if (!isset($contexte['lang']) or !$contexte['lang']) {
483
+                if (isset($row['lang']) and $row['lang']) {
484
+                    $contexte['lang'] = $row['lang'];
485
+                }
486
+                else {
487
+                    $contexte['lang'] = $GLOBALS['meta']['langue_site'];
488
+                }
489
+            }
490
+            lang_select($contexte['lang']);
491
+            $message = recuperer_fond($fond, $contexte);
492
+            include_spip('inc/notifications');
493
+            notifications_envoyer_mails($row['email'], $message);
494
+            lang_select();
495
+
496
+            return $row['email'];
497
+        }
498
+
499
+        return false;
500
+    }
501
+
502
+    return '';
503 503
 }
Please login to merge, or discard this patch.
prive/formulaires/editer_article.php 1 patch
Indentation   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('inc/actions');
@@ -46,33 +46,33 @@  discard block
 block discarded – undo
46 46
  *     Environnement du formulaire
47 47
  **/
48 48
 function formulaires_editer_article_charger_dist(
49
-	$id_article = 'new',
50
-	$id_rubrique = 0,
51
-	$retour = '',
52
-	$lier_trad = 0,
53
-	$config_fonc = 'articles_edit_config',
54
-	$row = [],
55
-	$hidden = ''
49
+    $id_article = 'new',
50
+    $id_rubrique = 0,
51
+    $retour = '',
52
+    $lier_trad = 0,
53
+    $config_fonc = 'articles_edit_config',
54
+    $row = [],
55
+    $hidden = ''
56 56
 ) {
57
-	$valeurs = formulaires_editer_objet_charger(
58
-		'article',
59
-		$id_article,
60
-		$id_rubrique,
61
-		$lier_trad,
62
-		$retour,
63
-		$config_fonc,
64
-		$row,
65
-		$hidden
66
-	);
57
+    $valeurs = formulaires_editer_objet_charger(
58
+        'article',
59
+        $id_article,
60
+        $id_rubrique,
61
+        $lier_trad,
62
+        $retour,
63
+        $config_fonc,
64
+        $row,
65
+        $hidden
66
+    );
67 67
 
68
-	if (intval($id_article) and !autoriser('modifier', 'article', intval($id_article))) {
69
-		$valeurs['editable'] = '';
70
-	}
68
+    if (intval($id_article) and !autoriser('modifier', 'article', intval($id_article))) {
69
+        $valeurs['editable'] = '';
70
+    }
71 71
 
72
-	// il faut enlever l'id_rubrique car la saisie se fait sur id_parent
73
-	// et id_rubrique peut etre passe dans l'url comme rubrique parent initiale
74
-	// et sera perdue si elle est supposee saisie
75
-	return $valeurs;
72
+    // il faut enlever l'id_rubrique car la saisie se fait sur id_parent
73
+    // et id_rubrique peut etre passe dans l'url comme rubrique parent initiale
74
+    // et sera perdue si elle est supposee saisie
75
+    return $valeurs;
76 76
 }
77 77
 
78 78
 /**
@@ -97,15 +97,15 @@  discard block
 block discarded – undo
97 97
  *     Hash du formulaire
98 98
  */
99 99
 function formulaires_editer_article_identifier_dist(
100
-	$id_article = 'new',
101
-	$id_rubrique = 0,
102
-	$retour = '',
103
-	$lier_trad = 0,
104
-	$config_fonc = 'articles_edit_config',
105
-	$row = [],
106
-	$hidden = ''
100
+    $id_article = 'new',
101
+    $id_rubrique = 0,
102
+    $retour = '',
103
+    $lier_trad = 0,
104
+    $config_fonc = 'articles_edit_config',
105
+    $row = [],
106
+    $hidden = ''
107 107
 ) {
108
-	return serialize([intval($id_article), $lier_trad]);
108
+    return serialize([intval($id_article), $lier_trad]);
109 109
 }
110 110
 
111 111
 /**
@@ -118,12 +118,12 @@  discard block
 block discarded – undo
118 118
  */
119 119
 function articles_edit_config(array $row): array {
120 120
 
121
-	$config = [];
122
-	$config['lignes'] = 8;
123
-	$config['langue'] = $GLOBALS['spip_lang'];
124
-	$config['restreint'] = ($row['statut'] === 'publie');
121
+    $config = [];
122
+    $config['lignes'] = 8;
123
+    $config['langue'] = $GLOBALS['spip_lang'];
124
+    $config['restreint'] = ($row['statut'] === 'publie');
125 125
 
126
-	return $config;
126
+    return $config;
127 127
 }
128 128
 
129 129
 /**
@@ -149,43 +149,43 @@  discard block
 block discarded – undo
149 149
  *     Erreurs du formulaire
150 150
  **/
151 151
 function formulaires_editer_article_verifier_dist(
152
-	$id_article = 'new',
153
-	$id_rubrique = 0,
154
-	$retour = '',
155
-	$lier_trad = 0,
156
-	$config_fonc = 'articles_edit_config',
157
-	$row = [],
158
-	$hidden = ''
152
+    $id_article = 'new',
153
+    $id_rubrique = 0,
154
+    $retour = '',
155
+    $lier_trad = 0,
156
+    $config_fonc = 'articles_edit_config',
157
+    $row = [],
158
+    $hidden = ''
159 159
 ) {
160
-	// auto-renseigner le titre si il n'existe pas
161
-	titre_automatique('titre', ['descriptif', 'chapo', 'texte']);
162
-	if (!_request('id_parent') and !intval($id_article)) {
163
-		$valeurs = formulaires_editer_objet_charger(
164
-			'article',
165
-			$id_article,
166
-			$id_rubrique,
167
-			$lier_trad,
168
-			$retour,
169
-			$config_fonc,
170
-			$row,
171
-			$hidden
172
-		);
173
-		set_request('id_parent', $valeurs['id_parent']);
174
-	}
175
-	// on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_article si vide
176
-	$erreurs = formulaires_editer_objet_verifier('article', $id_article, ['id_parent']);
177
-	// si on utilise le formulaire dans le public
178
-	if (!function_exists('autoriser')) {
179
-		include_spip('inc/autoriser');
180
-	}
181
-	if (
182
-		!isset($erreurs['id_parent'])
183
-		and !autoriser('creerarticledans', 'rubrique', _request('id_parent'))
184
-	) {
185
-		$erreurs['id_parent'] = _T('info_creerdansrubrique_non_autorise');
186
-	}
160
+    // auto-renseigner le titre si il n'existe pas
161
+    titre_automatique('titre', ['descriptif', 'chapo', 'texte']);
162
+    if (!_request('id_parent') and !intval($id_article)) {
163
+        $valeurs = formulaires_editer_objet_charger(
164
+            'article',
165
+            $id_article,
166
+            $id_rubrique,
167
+            $lier_trad,
168
+            $retour,
169
+            $config_fonc,
170
+            $row,
171
+            $hidden
172
+        );
173
+        set_request('id_parent', $valeurs['id_parent']);
174
+    }
175
+    // on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_article si vide
176
+    $erreurs = formulaires_editer_objet_verifier('article', $id_article, ['id_parent']);
177
+    // si on utilise le formulaire dans le public
178
+    if (!function_exists('autoriser')) {
179
+        include_spip('inc/autoriser');
180
+    }
181
+    if (
182
+        !isset($erreurs['id_parent'])
183
+        and !autoriser('creerarticledans', 'rubrique', _request('id_parent'))
184
+    ) {
185
+        $erreurs['id_parent'] = _T('info_creerdansrubrique_non_autorise');
186
+    }
187 187
 
188
-	return $erreurs;
188
+    return $erreurs;
189 189
 }
190 190
 
191 191
 /**
@@ -211,29 +211,29 @@  discard block
 block discarded – undo
211 211
  *     Retours des traitements
212 212
  **/
213 213
 function formulaires_editer_article_traiter_dist(
214
-	$id_article = 'new',
215
-	$id_rubrique = 0,
216
-	$retour = '',
217
-	$lier_trad = 0,
218
-	$config_fonc = 'articles_edit_config',
219
-	$row = [],
220
-	$hidden = ''
214
+    $id_article = 'new',
215
+    $id_rubrique = 0,
216
+    $retour = '',
217
+    $lier_trad = 0,
218
+    $config_fonc = 'articles_edit_config',
219
+    $row = [],
220
+    $hidden = ''
221 221
 ) {
222
-	// ici on ignore changer_lang qui est poste en cas de trad,
223
-	// car l'heuristique du choix de la langue est pris en charge par article_inserer
224
-	// en fonction de la config du site et de la rubrique choisie
225
-	if (!$lier_trad) {
226
-		set_request('changer_lang');
227
-	}
222
+    // ici on ignore changer_lang qui est poste en cas de trad,
223
+    // car l'heuristique du choix de la langue est pris en charge par article_inserer
224
+    // en fonction de la config du site et de la rubrique choisie
225
+    if (!$lier_trad) {
226
+        set_request('changer_lang');
227
+    }
228 228
 
229
-	return formulaires_editer_objet_traiter(
230
-		'article',
231
-		$id_article,
232
-		$id_rubrique,
233
-		$lier_trad,
234
-		$retour,
235
-		$config_fonc,
236
-		$row,
237
-		$hidden
238
-	);
229
+    return formulaires_editer_objet_traiter(
230
+        'article',
231
+        $id_article,
232
+        $id_rubrique,
233
+        $lier_trad,
234
+        $retour,
235
+        $config_fonc,
236
+        $row,
237
+        $hidden
238
+    );
239 239
 }
Please login to merge, or discard this patch.
prive/formulaires/editer_rubrique.php 1 patch
Indentation   +81 added lines, -81 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('inc/actions');
@@ -47,30 +47,30 @@  discard block
 block discarded – undo
47 47
  *     Environnement du formulaire
48 48
  **/
49 49
 function formulaires_editer_rubrique_charger_dist(
50
-	$id_rubrique = 'new',
51
-	$id_parent = 0,
52
-	$retour = '',
53
-	$lier_trad = 0,
54
-	$config_fonc = 'rubriques_edit_config',
55
-	$row = [],
56
-	$hidden = ''
50
+    $id_rubrique = 'new',
51
+    $id_parent = 0,
52
+    $retour = '',
53
+    $lier_trad = 0,
54
+    $config_fonc = 'rubriques_edit_config',
55
+    $row = [],
56
+    $hidden = ''
57 57
 ) {
58
-	$valeurs = formulaires_editer_objet_charger(
59
-		'rubrique',
60
-		$id_rubrique,
61
-		$id_parent,
62
-		$lier_trad,
63
-		$retour,
64
-		$config_fonc,
65
-		$row,
66
-		$hidden
67
-	);
68
-
69
-	if (intval($id_rubrique) and !autoriser('modifier', 'rubrique', intval($id_rubrique))) {
70
-		$valeurs['editable'] = '';
71
-	}
72
-
73
-	return $valeurs;
58
+    $valeurs = formulaires_editer_objet_charger(
59
+        'rubrique',
60
+        $id_rubrique,
61
+        $id_parent,
62
+        $lier_trad,
63
+        $retour,
64
+        $config_fonc,
65
+        $row,
66
+        $hidden
67
+    );
68
+
69
+    if (intval($id_rubrique) and !autoriser('modifier', 'rubrique', intval($id_rubrique))) {
70
+        $valeurs['editable'] = '';
71
+    }
72
+
73
+    return $valeurs;
74 74
 }
75 75
 
76 76
 /**
@@ -83,12 +83,12 @@  discard block
 block discarded – undo
83 83
  */
84 84
 function rubriques_edit_config(array $row): array {
85 85
 
86
-	$config = [];
87
-	$config['lignes'] = 8;
88
-	$config['langue'] = $GLOBALS['spip_lang'];
89
-	$config['restreint'] = (!$GLOBALS['connect_toutes_rubriques']);
86
+    $config = [];
87
+    $config['lignes'] = 8;
88
+    $config['langue'] = $GLOBALS['spip_lang'];
89
+    $config['restreint'] = (!$GLOBALS['connect_toutes_rubriques']);
90 90
 
91
-	return $config;
91
+    return $config;
92 92
 }
93 93
 
94 94
 /**
@@ -113,15 +113,15 @@  discard block
 block discarded – undo
113 113
  *     Hash du formulaire
114 114
  */
115 115
 function formulaires_editer_rubrique_identifier_dist(
116
-	$id_rubrique = 'new',
117
-	$id_parent = 0,
118
-	$retour = '',
119
-	$lier_trad = 0,
120
-	$config_fonc = 'rubriques_edit_config',
121
-	$row = [],
122
-	$hidden = ''
116
+    $id_rubrique = 'new',
117
+    $id_parent = 0,
118
+    $retour = '',
119
+    $lier_trad = 0,
120
+    $config_fonc = 'rubriques_edit_config',
121
+    $row = [],
122
+    $hidden = ''
123 123
 ) {
124
-	return serialize([intval($id_rubrique), $lier_trad]);
124
+    return serialize([intval($id_rubrique), $lier_trad]);
125 125
 }
126 126
 
127 127
 /**
@@ -147,34 +147,34 @@  discard block
 block discarded – undo
147 147
  *     Erreurs du formulaire
148 148
  **/
149 149
 function formulaires_editer_rubrique_verifier_dist(
150
-	$id_rubrique = 'new',
151
-	$id_parent = 0,
152
-	$retour = '',
153
-	$lier_trad = 0,
154
-	$config_fonc = 'rubriques_edit_config',
155
-	$row = [],
156
-	$hidden = ''
150
+    $id_rubrique = 'new',
151
+    $id_parent = 0,
152
+    $retour = '',
153
+    $lier_trad = 0,
154
+    $config_fonc = 'rubriques_edit_config',
155
+    $row = [],
156
+    $hidden = ''
157 157
 ) {
158
-	// auto-renseigner le titre si il n'existe pas
159
-	titre_automatique('titre', ['descriptif', 'texte']);
160
-	// on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_rubrique si vide
161
-	$erreurs = formulaires_editer_objet_verifier('rubrique', $id_rubrique, []);
162
-
163
-	// s'assurer qu'on ne s'auto-designe pas comme parent !
164
-	if (
165
-		intval($id_rubrique)
166
-		and empty($erreurs['id_parent'])
167
-		and $id_parent = _request('id_parent')
168
-	) {
169
-		include_spip('inc/rubriques');
170
-		$branche = calcul_branche_in($id_rubrique);
171
-		$branche = explode(',', $branche);
172
-		if (in_array($id_parent, $branche)) {
173
-			$erreurs['id_parent'] = _L('Impossible de déplacer une rubrique dans sa propre branche, on tourne en rond !');
174
-		}
175
-	}
176
-
177
-	return $erreurs;
158
+    // auto-renseigner le titre si il n'existe pas
159
+    titre_automatique('titre', ['descriptif', 'texte']);
160
+    // on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_rubrique si vide
161
+    $erreurs = formulaires_editer_objet_verifier('rubrique', $id_rubrique, []);
162
+
163
+    // s'assurer qu'on ne s'auto-designe pas comme parent !
164
+    if (
165
+        intval($id_rubrique)
166
+        and empty($erreurs['id_parent'])
167
+        and $id_parent = _request('id_parent')
168
+    ) {
169
+        include_spip('inc/rubriques');
170
+        $branche = calcul_branche_in($id_rubrique);
171
+        $branche = explode(',', $branche);
172
+        if (in_array($id_parent, $branche)) {
173
+            $erreurs['id_parent'] = _L('Impossible de déplacer une rubrique dans sa propre branche, on tourne en rond !');
174
+        }
175
+    }
176
+
177
+    return $erreurs;
178 178
 }
179 179
 
180 180
 /**
@@ -200,22 +200,22 @@  discard block
 block discarded – undo
200 200
  *     Retour des traitements
201 201
  **/
202 202
 function formulaires_editer_rubrique_traiter_dist(
203
-	$id_rubrique = 'new',
204
-	$id_parent = 0,
205
-	$retour = '',
206
-	$lier_trad = 0,
207
-	$config_fonc = 'rubriques_edit_config',
208
-	$row = [],
209
-	$hidden = ''
203
+    $id_rubrique = 'new',
204
+    $id_parent = 0,
205
+    $retour = '',
206
+    $lier_trad = 0,
207
+    $config_fonc = 'rubriques_edit_config',
208
+    $row = [],
209
+    $hidden = ''
210 210
 ) {
211
-	return formulaires_editer_objet_traiter(
212
-		'rubrique',
213
-		$id_rubrique,
214
-		$id_parent,
215
-		$lier_trad,
216
-		$retour,
217
-		$config_fonc,
218
-		$row,
219
-		$hidden
220
-	);
211
+    return formulaires_editer_objet_traiter(
212
+        'rubrique',
213
+        $id_rubrique,
214
+        $id_parent,
215
+        $lier_trad,
216
+        $retour,
217
+        $config_fonc,
218
+        $row,
219
+        $hidden
220
+    );
221 221
 }
Please login to merge, or discard this patch.