Completed
Push — master ( 9eeafb...34710b )
by cam
01:07
created
prive/formulaires/editer_auteur.php 1 patch
Indentation   +341 added lines, -341 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
 
@@ -95,29 +95,29 @@  discard block
 block discarded – undo
95 95
  *     Configuration pour le formulaire
96 96
  */
97 97
 function auteurs_edit_config($row) {
98
-	global $spip_lang;
99
-
100
-	$config = $GLOBALS['meta'];
101
-	$config['lignes'] = 8;
102
-	$config['langue'] = $spip_lang;
103
-
104
-	// pour instituer_auteur
105
-	$config['auteur'] = $row;
106
-
107
-	//$config['restreint'] = ($row['statut'] == 'publie');
108
-	$auth_methode = $row['source'];
109
-	include_spip('inc/auth');
110
-	$config['edit_login'] =
111
-		(auth_autoriser_modifier_login($auth_methode)
112
-			and autoriser('modifier', 'auteur', $row['id_auteur'], null, ['login' => true])
113
-			// legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email
114
-			and autoriser('modifier', 'auteur', $row['id_auteur'], null, ['email' => true])
115
-		);
116
-	$config['edit_pass'] =
117
-		(auth_autoriser_modifier_pass($auth_methode)
118
-			and autoriser('modifier', 'auteur', $row['id_auteur']));
119
-
120
-	return $config;
98
+    global $spip_lang;
99
+
100
+    $config = $GLOBALS['meta'];
101
+    $config['lignes'] = 8;
102
+    $config['langue'] = $spip_lang;
103
+
104
+    // pour instituer_auteur
105
+    $config['auteur'] = $row;
106
+
107
+    //$config['restreint'] = ($row['statut'] == 'publie');
108
+    $auth_methode = $row['source'];
109
+    include_spip('inc/auth');
110
+    $config['edit_login'] =
111
+        (auth_autoriser_modifier_login($auth_methode)
112
+            and autoriser('modifier', 'auteur', $row['id_auteur'], null, ['login' => true])
113
+            // legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email
114
+            and autoriser('modifier', 'auteur', $row['id_auteur'], null, ['email' => true])
115
+        );
116
+    $config['edit_pass'] =
117
+        (auth_autoriser_modifier_pass($auth_methode)
118
+            and autoriser('modifier', 'auteur', $row['id_auteur']));
119
+
120
+    return $config;
121 121
 }
122 122
 
123 123
 /**
@@ -147,139 +147,139 @@  discard block
 block discarded – undo
147 147
  *     Erreurs des saisies
148 148
  **/
149 149
 function formulaires_editer_auteur_verifier_dist(
150
-	$id_auteur = 'new',
151
-	$retour = '',
152
-	$associer_objet = '',
153
-	$config_fonc = 'auteurs_edit_config',
154
-	$row = [],
155
-	$hidden = ''
150
+    $id_auteur = 'new',
151
+    $retour = '',
152
+    $associer_objet = '',
153
+    $config_fonc = 'auteurs_edit_config',
154
+    $row = [],
155
+    $hidden = ''
156 156
 ) {
157
-	// auto-renseigner le nom si il n'existe pas, sans couper
158
-	titre_automatique('nom', ['email', 'login'], 255);
159
-
160
-	$oblis = ['nom'];
161
-	// si on veut renvoyer des identifiants il faut un email et un login
162
-	if (_request('reset_password')) {
163
-		$oblis[] = 'email';
164
-		$oblis[] = 'new_login';
165
-	}
166
-	// mais il reste obligatoire si on a rien trouve
167
-	$erreurs = formulaires_editer_objet_verifier('auteur', $id_auteur, $oblis);
168
-	if (isset($erreurs['new_login'])) {
169
-		$erreurs['login'] = $erreurs['new_login'];
170
-		unset($erreurs['new_login']);
171
-	}
172
-
173
-	$auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
174
-	$auth_methode = ($auth_methode ?: 'spip');
175
-	include_spip('inc/auth');
176
-
177
-	if (!nom_acceptable(_request('nom'))) {
178
-		$erreurs['nom'] = _T('info_nom_pas_conforme');
179
-	}
180
-
181
-	if ($email = _request('email')) {
182
-		include_spip('inc/filtres');
183
-		include_spip('inc/autoriser');
184
-		// un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
185
-		if (
186
-			!autoriser('modifier', 'auteur', $id_auteur, null, ['email' => '?'])
187
-			and $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
188
-			and !strlen(trim($email))
189
-			and $email != ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
190
-		) {
191
-			$erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email'));
192
-		} else {
193
-			if (!email_valide($email)) {
194
-				$erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email'));
195
-			}
196
-		}
197
-		# Ne pas autoriser d'avoir deux auteurs avec le même email
198
-		# cette fonctionalité nécessite que la base soit clean à l'activation : pas de
199
-		# doublon sur la requête select email,count(*) from spip_auteurs group by email ;
200
-		if (defined('_INTERDIRE_AUTEUR_MEME_EMAIL')) {
201
-			#Nouvel auteur
202
-			if (intval($id_auteur) == 0) {
203
-				#Un auteur existe deja avec cette adresse ?
204
-				if (sql_countsel('spip_auteurs', 'email=' . sql_quote($email)) > 0) {
205
-					$erreurs['email'] = _T('erreur_email_deja_existant');
206
-				}
207
-			} else {
208
-				#Un auteur existe deja avec cette adresse ? et n'est pas le user courant.
209
-				if (
210
-					(sql_countsel(
211
-						'spip_auteurs',
212
-						'email=' . sql_quote($email)
213
-					) > 0) and ($id_auteur != ($id_auteur_ancien = sql_getfetsel(
214
-						'id_auteur',
215
-						'spip_auteurs',
216
-						'email=' . sql_quote($email)
217
-					)))
218
-				) {
219
-					$erreurs['email'] = _T('erreur_email_deja_existant');
220
-				}
221
-			}
222
-		}
223
-	}
224
-
225
-	// quand c'est un auteur existant on fait le reset password ici
226
-	if (!(is_countable($erreurs) ? count($erreurs) : 0) and _request('reset_password') and intval($id_auteur)) {
227
-		$erreurs = auteur_reset_password($id_auteur, $erreurs);
228
-		return $erreurs;
229
-	}
230
-
231
-	// corriger un cas si frequent : www.example.org sans le http:// qui precede
232
-	if ($url = _request('url_site') and !tester_url_absolue($url)) {
233
-		if (strpos($url, ':') === false and strncasecmp($url, 'www.', 4) === 0) {
234
-			$url = 'http://' . $url;
235
-			set_request('url_site', $url);
236
-		}
237
-	}
238
-	// traiter les liens implicites avant de tester l'url
239
-	include_spip('inc/lien');
240
-	if ($url = calculer_url(_request('url_site')) and !tester_url_absolue($url)) {
241
-		$erreurs['url_site'] = _T('info_url_site_pas_conforme');
242
-	}
243
-
244
-	$erreurs['message_erreur'] = '';
245
-	if (
246
-		$login = _request('login') and
247
-		$login !== sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur))
248
-	) {
249
-		// on verifie la meme chose que dans auteurs_edit_config()
250
-		if (
251
-			! auth_autoriser_modifier_login($auth_methode)
252
-			or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['login' => true])
253
-			// legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email
254
-			or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['email' => true])
255
-		) {
256
-			$erreurs['login'] = _T('info_non_modifiable');
257
-		}
258
-	}
259
-
260
-	if (empty($erreurs['login'])) {
261
-		if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
262
-			$erreurs['login'] = $err;
263
-			$erreurs['message_erreur'] .= $err;
264
-		} else {
265
-			// pass trop court ou confirmation non identique
266
-			if ($p = _request('new_pass')) {
267
-				if ($p != _request('new_pass2')) {
268
-					$erreurs['new_pass'] = _T('info_passes_identiques');
269
-					$erreurs['message_erreur'] .= _T('info_passes_identiques');
270
-				} elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
271
-					$erreurs['new_pass'] = $err;
272
-					$erreurs['message_erreur'] .= $err;
273
-				}
274
-			}
275
-		}
276
-	}
277
-
278
-	if (!$erreurs['message_erreur']) {
279
-		unset($erreurs['message_erreur']);
280
-	}
281
-
282
-	return $erreurs;
157
+    // auto-renseigner le nom si il n'existe pas, sans couper
158
+    titre_automatique('nom', ['email', 'login'], 255);
159
+
160
+    $oblis = ['nom'];
161
+    // si on veut renvoyer des identifiants il faut un email et un login
162
+    if (_request('reset_password')) {
163
+        $oblis[] = 'email';
164
+        $oblis[] = 'new_login';
165
+    }
166
+    // mais il reste obligatoire si on a rien trouve
167
+    $erreurs = formulaires_editer_objet_verifier('auteur', $id_auteur, $oblis);
168
+    if (isset($erreurs['new_login'])) {
169
+        $erreurs['login'] = $erreurs['new_login'];
170
+        unset($erreurs['new_login']);
171
+    }
172
+
173
+    $auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
174
+    $auth_methode = ($auth_methode ?: 'spip');
175
+    include_spip('inc/auth');
176
+
177
+    if (!nom_acceptable(_request('nom'))) {
178
+        $erreurs['nom'] = _T('info_nom_pas_conforme');
179
+    }
180
+
181
+    if ($email = _request('email')) {
182
+        include_spip('inc/filtres');
183
+        include_spip('inc/autoriser');
184
+        // un redacteur qui modifie son email n'a pas le droit de le vider si il y en avait un
185
+        if (
186
+            !autoriser('modifier', 'auteur', $id_auteur, null, ['email' => '?'])
187
+            and $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
188
+            and !strlen(trim($email))
189
+            and $email != ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
190
+        ) {
191
+            $erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email'));
192
+        } else {
193
+            if (!email_valide($email)) {
194
+                $erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email'));
195
+            }
196
+        }
197
+        # Ne pas autoriser d'avoir deux auteurs avec le même email
198
+        # cette fonctionalité nécessite que la base soit clean à l'activation : pas de
199
+        # doublon sur la requête select email,count(*) from spip_auteurs group by email ;
200
+        if (defined('_INTERDIRE_AUTEUR_MEME_EMAIL')) {
201
+            #Nouvel auteur
202
+            if (intval($id_auteur) == 0) {
203
+                #Un auteur existe deja avec cette adresse ?
204
+                if (sql_countsel('spip_auteurs', 'email=' . sql_quote($email)) > 0) {
205
+                    $erreurs['email'] = _T('erreur_email_deja_existant');
206
+                }
207
+            } else {
208
+                #Un auteur existe deja avec cette adresse ? et n'est pas le user courant.
209
+                if (
210
+                    (sql_countsel(
211
+                        'spip_auteurs',
212
+                        'email=' . sql_quote($email)
213
+                    ) > 0) and ($id_auteur != ($id_auteur_ancien = sql_getfetsel(
214
+                        'id_auteur',
215
+                        'spip_auteurs',
216
+                        'email=' . sql_quote($email)
217
+                    )))
218
+                ) {
219
+                    $erreurs['email'] = _T('erreur_email_deja_existant');
220
+                }
221
+            }
222
+        }
223
+    }
224
+
225
+    // quand c'est un auteur existant on fait le reset password ici
226
+    if (!(is_countable($erreurs) ? count($erreurs) : 0) and _request('reset_password') and intval($id_auteur)) {
227
+        $erreurs = auteur_reset_password($id_auteur, $erreurs);
228
+        return $erreurs;
229
+    }
230
+
231
+    // corriger un cas si frequent : www.example.org sans le http:// qui precede
232
+    if ($url = _request('url_site') and !tester_url_absolue($url)) {
233
+        if (strpos($url, ':') === false and strncasecmp($url, 'www.', 4) === 0) {
234
+            $url = 'http://' . $url;
235
+            set_request('url_site', $url);
236
+        }
237
+    }
238
+    // traiter les liens implicites avant de tester l'url
239
+    include_spip('inc/lien');
240
+    if ($url = calculer_url(_request('url_site')) and !tester_url_absolue($url)) {
241
+        $erreurs['url_site'] = _T('info_url_site_pas_conforme');
242
+    }
243
+
244
+    $erreurs['message_erreur'] = '';
245
+    if (
246
+        $login = _request('login') and
247
+        $login !== sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur))
248
+    ) {
249
+        // on verifie la meme chose que dans auteurs_edit_config()
250
+        if (
251
+            ! auth_autoriser_modifier_login($auth_methode)
252
+            or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['login' => true])
253
+            // legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email
254
+            or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['email' => true])
255
+        ) {
256
+            $erreurs['login'] = _T('info_non_modifiable');
257
+        }
258
+    }
259
+
260
+    if (empty($erreurs['login'])) {
261
+        if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
262
+            $erreurs['login'] = $err;
263
+            $erreurs['message_erreur'] .= $err;
264
+        } else {
265
+            // pass trop court ou confirmation non identique
266
+            if ($p = _request('new_pass')) {
267
+                if ($p != _request('new_pass2')) {
268
+                    $erreurs['new_pass'] = _T('info_passes_identiques');
269
+                    $erreurs['message_erreur'] .= _T('info_passes_identiques');
270
+                } elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
271
+                    $erreurs['new_pass'] = $err;
272
+                    $erreurs['message_erreur'] .= $err;
273
+                }
274
+            }
275
+        }
276
+    }
277
+
278
+    if (!$erreurs['message_erreur']) {
279
+        unset($erreurs['message_erreur']);
280
+    }
281
+
282
+    return $erreurs;
283 283
 }
284 284
 
285 285
 
@@ -316,128 +316,128 @@  discard block
 block discarded – undo
316 316
  *     Retour des traitements
317 317
  **/
318 318
 function formulaires_editer_auteur_traiter_dist(
319
-	$id_auteur = 'new',
320
-	$retour = '',
321
-	$associer_objet = '',
322
-	$config_fonc = 'auteurs_edit_config',
323
-	$row = [],
324
-	$hidden = ''
319
+    $id_auteur = 'new',
320
+    $retour = '',
321
+    $associer_objet = '',
322
+    $config_fonc = 'auteurs_edit_config',
323
+    $row = [],
324
+    $hidden = ''
325 325
 ) {
326
-	$id_objet = null;
327
-	if (_request('saisie_webmestre') or _request('webmestre')) {
328
-		set_request('webmestre', _request('webmestre') ?: 'non');
329
-	}
330
-	$retour = parametre_url($retour, 'email_confirm', '');
331
-
332
-	if ($restreintes = _request('restreintes')) {
333
-		foreach ($restreintes as $k => $v) {
334
-			if (strpos($v, 'rubrique|') === 0) {
335
-				$restreintes[$k] = substr($v, 9);
336
-			}
337
-		}
338
-		set_request('restreintes', $restreintes);
339
-	}
340
-
341
-	set_request(
342
-		'email',
343
-		email_valide(_request('email'))
344
-	); // eviter d'enregistrer les cas qui sont acceptés par email_valide dans le verifier :
345
-	// "[email protected]  " ou encore "Marie Toto <[email protected]>"
346
-
347
-	include_spip('inc/autoriser');
348
-	if (!autoriser('modifier', 'auteur', $id_auteur, null, ['email' => '?'])) {
349
-		$email_nouveau = _request('email');
350
-		set_request('email'); // vider la saisie car l'auteur n'a pas le droit de modifier cet email
351
-		// mais si c'est son propre profil on lui envoie un email à l'adresse qu'il a indique
352
-		// pour qu'il confirme qu'il possede bien cette adresse
353
-		// son clic sur l'url du message permettre de confirmer le changement
354
-		// et de revenir sur son profil
355
-		if (
356
-			$GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
357
-			and $email_nouveau !=
358
-				($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
359
-		) {
360
-			$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
361
-			$texte = _T(
362
-				'form_auteur_mail_confirmation',
363
-				[
364
-					'url' => generer_action_auteur(
365
-						'confirmer_email',
366
-						$email_nouveau,
367
-						parametre_url($retour, 'email_modif', 'ok')
368
-					)
369
-				]
370
-			);
371
-			$envoyer_mail($email_nouveau, _T('form_auteur_confirmation'), $texte);
372
-			set_request('email_confirm', $email_nouveau);
373
-			if ($email_ancien) {
374
-				$envoyer_mail(
375
-					$email_ancien,
376
-					_T('form_auteur_confirmation'),
377
-					_T('form_auteur_envoi_mail_confirmation', ['email' => $email_nouveau])
378
-				);
379
-			}
380
-			$retour = parametre_url($retour, 'email_confirm', $email_nouveau);
381
-		}
382
-	}
383
-
384
-	$res = formulaires_editer_objet_traiter('auteur', $id_auteur, 0, 0, $retour, $config_fonc, $row, $hidden);
385
-
386
-	if (_request('reset_password') and !intval($id_auteur) and intval($res['id_auteur'])) {
387
-		$erreurs = [];
388
-		$erreurs = auteur_reset_password($res['id_auteur'], $erreurs);
389
-		if (isset($erreurs['message_ok'])) {
390
-			if (!isset($res['message_ok'])) { $res['message_ok'] = '';
391
-			}
392
-			$res['message_ok'] = trim($res['message_ok'] . ' ' . $erreurs['message_ok']);
393
-		}
394
-		if (isset($erreurs['message_erreur']) and $erreurs['message_erreur']) {
395
-			if (!isset($res['message_erreur'])) { $res['message_erreur'] = '';
396
-			}
397
-			$res['message_erreur'] = trim($res['message_erreur'] . ' ' . $erreurs['message_erreur']);
398
-		}
399
-	}
400
-
401
-	// Un lien auteur a prendre en compte ?
402
-	if ($associer_objet and $id_auteur = $res['id_auteur']) {
403
-		$objet = '';
404
-		if (intval($associer_objet)) {
405
-			$objet = 'article';
406
-			$id_objet = intval($associer_objet);
407
-		} elseif (preg_match(',^\w+\|[0-9]+$,', $associer_objet)) {
408
-			[$objet, $id_objet] = explode('|', $associer_objet);
409
-		}
410
-		if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
411
-			include_spip('action/editer_auteur');
412
-			auteur_associer($id_auteur, [$objet => $id_objet]);
413
-			if (isset($res['redirect'])) {
414
-				$res['redirect'] = parametre_url($res['redirect'], 'id_lien_ajoute', $id_auteur, '&');
415
-			}
416
-		}
417
-	}
418
-
419
-	return $res;
326
+    $id_objet = null;
327
+    if (_request('saisie_webmestre') or _request('webmestre')) {
328
+        set_request('webmestre', _request('webmestre') ?: 'non');
329
+    }
330
+    $retour = parametre_url($retour, 'email_confirm', '');
331
+
332
+    if ($restreintes = _request('restreintes')) {
333
+        foreach ($restreintes as $k => $v) {
334
+            if (strpos($v, 'rubrique|') === 0) {
335
+                $restreintes[$k] = substr($v, 9);
336
+            }
337
+        }
338
+        set_request('restreintes', $restreintes);
339
+    }
340
+
341
+    set_request(
342
+        'email',
343
+        email_valide(_request('email'))
344
+    ); // eviter d'enregistrer les cas qui sont acceptés par email_valide dans le verifier :
345
+    // "[email protected]  " ou encore "Marie Toto <[email protected]>"
346
+
347
+    include_spip('inc/autoriser');
348
+    if (!autoriser('modifier', 'auteur', $id_auteur, null, ['email' => '?'])) {
349
+        $email_nouveau = _request('email');
350
+        set_request('email'); // vider la saisie car l'auteur n'a pas le droit de modifier cet email
351
+        // mais si c'est son propre profil on lui envoie un email à l'adresse qu'il a indique
352
+        // pour qu'il confirme qu'il possede bien cette adresse
353
+        // son clic sur l'url du message permettre de confirmer le changement
354
+        // et de revenir sur son profil
355
+        if (
356
+            $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
357
+            and $email_nouveau !=
358
+                ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
359
+        ) {
360
+            $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
361
+            $texte = _T(
362
+                'form_auteur_mail_confirmation',
363
+                [
364
+                    'url' => generer_action_auteur(
365
+                        'confirmer_email',
366
+                        $email_nouveau,
367
+                        parametre_url($retour, 'email_modif', 'ok')
368
+                    )
369
+                ]
370
+            );
371
+            $envoyer_mail($email_nouveau, _T('form_auteur_confirmation'), $texte);
372
+            set_request('email_confirm', $email_nouveau);
373
+            if ($email_ancien) {
374
+                $envoyer_mail(
375
+                    $email_ancien,
376
+                    _T('form_auteur_confirmation'),
377
+                    _T('form_auteur_envoi_mail_confirmation', ['email' => $email_nouveau])
378
+                );
379
+            }
380
+            $retour = parametre_url($retour, 'email_confirm', $email_nouveau);
381
+        }
382
+    }
383
+
384
+    $res = formulaires_editer_objet_traiter('auteur', $id_auteur, 0, 0, $retour, $config_fonc, $row, $hidden);
385
+
386
+    if (_request('reset_password') and !intval($id_auteur) and intval($res['id_auteur'])) {
387
+        $erreurs = [];
388
+        $erreurs = auteur_reset_password($res['id_auteur'], $erreurs);
389
+        if (isset($erreurs['message_ok'])) {
390
+            if (!isset($res['message_ok'])) { $res['message_ok'] = '';
391
+            }
392
+            $res['message_ok'] = trim($res['message_ok'] . ' ' . $erreurs['message_ok']);
393
+        }
394
+        if (isset($erreurs['message_erreur']) and $erreurs['message_erreur']) {
395
+            if (!isset($res['message_erreur'])) { $res['message_erreur'] = '';
396
+            }
397
+            $res['message_erreur'] = trim($res['message_erreur'] . ' ' . $erreurs['message_erreur']);
398
+        }
399
+    }
400
+
401
+    // Un lien auteur a prendre en compte ?
402
+    if ($associer_objet and $id_auteur = $res['id_auteur']) {
403
+        $objet = '';
404
+        if (intval($associer_objet)) {
405
+            $objet = 'article';
406
+            $id_objet = intval($associer_objet);
407
+        } elseif (preg_match(',^\w+\|[0-9]+$,', $associer_objet)) {
408
+            [$objet, $id_objet] = explode('|', $associer_objet);
409
+        }
410
+        if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
411
+            include_spip('action/editer_auteur');
412
+            auteur_associer($id_auteur, [$objet => $id_objet]);
413
+            if (isset($res['redirect'])) {
414
+                $res['redirect'] = parametre_url($res['redirect'], 'id_lien_ajoute', $id_auteur, '&');
415
+            }
416
+        }
417
+    }
418
+
419
+    return $res;
420 420
 }
421 421
 
422 422
 
423 423
 function auteur_reset_password($id_auteur, $erreurs = []) {
424
-	$auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
425
-	$config = auteurs_edit_config($auteur);
426
-
427
-	if ($config['edit_pass']) {
428
-		if ($email = auteur_regenerer_identifiants($id_auteur)) {
429
-			$erreurs['message_ok'] = _T('message_nouveaux_identifiants_ok', ['email' => $email]);
430
-			$erreurs['message_erreur'] = '';
431
-		} elseif ($email === false) {
432
-			$erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_envoi');
433
-		} else {
434
-			$erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec');
435
-		}
436
-	} else {
437
-		$erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec');
438
-	}
439
-
440
-	return $erreurs;
424
+    $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
425
+    $config = auteurs_edit_config($auteur);
426
+
427
+    if ($config['edit_pass']) {
428
+        if ($email = auteur_regenerer_identifiants($id_auteur)) {
429
+            $erreurs['message_ok'] = _T('message_nouveaux_identifiants_ok', ['email' => $email]);
430
+            $erreurs['message_erreur'] = '';
431
+        } elseif ($email === false) {
432
+            $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_envoi');
433
+        } else {
434
+            $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec');
435
+        }
436
+    } else {
437
+        $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec');
438
+    }
439
+
440
+    return $erreurs;
441 441
 }
442 442
 
443 443
 /**
@@ -448,53 +448,53 @@  discard block
 block discarded – undo
448 448
  * @return string
449 449
  */
450 450
 function auteur_regenerer_identifiants($id_auteur, $notifier = true, $contexte = []) {
451
-	if ($id_auteur) {
452
-		$set = [];
453
-		include_spip('inc/access');
454
-		$set['pass'] = creer_pass_aleatoire(max(_PASS_LONGUEUR_MINI, 16));
455
-
456
-		include_spip('action/editer_auteur');
457
-		auteur_modifier($id_auteur, $set);
458
-
459
-		$row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
460
-		include_spip('inc/filtres');
461
-		if (
462
-			$notifier
463
-			and $row['email']
464
-			and email_valide($row['email'])
465
-			and trouver_fond($fond = 'modeles/mail_nouveaux_identifiants')
466
-		) {
467
-			// envoyer l'email avec login/pass
468
-			$c = [
469
-				'id_auteur' => $id_auteur,
470
-				'nom' => $row['nom'],
471
-				'mode' => $row['statut'],
472
-				'email' => $row['email'],
473
-				'pass' => $set['pass'],
474
-			];
475
-			// on merge avec les champs fournit en appel, qui sont passes au modele de notification donc
476
-			$contexte = array_merge($contexte, $c);
477
-			// si pas de langue explicitement demandee, prendre celle de l'auteur si on la connait, ou a defaut celle du site
478
-			// plutot que celle de l'admin qui vient de cliquer sur le bouton
479
-			if (!isset($contexte['lang']) or !$contexte['lang']) {
480
-				if (isset($row['lang']) and $row['lang']) {
481
-					$contexte['lang'] = $row['lang'];
482
-				}
483
-				else {
484
-					$contexte['lang'] = $GLOBALS['meta']['langue_site'];
485
-				}
486
-			}
487
-			lang_select($contexte['lang']);
488
-			$message = recuperer_fond($fond, $contexte);
489
-			include_spip('inc/notifications');
490
-			notifications_envoyer_mails($row['email'], $message);
491
-			lang_select();
492
-
493
-			return $row['email'];
494
-		}
495
-
496
-		return false;
497
-	}
498
-
499
-	return '';
451
+    if ($id_auteur) {
452
+        $set = [];
453
+        include_spip('inc/access');
454
+        $set['pass'] = creer_pass_aleatoire(max(_PASS_LONGUEUR_MINI, 16));
455
+
456
+        include_spip('action/editer_auteur');
457
+        auteur_modifier($id_auteur, $set);
458
+
459
+        $row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
460
+        include_spip('inc/filtres');
461
+        if (
462
+            $notifier
463
+            and $row['email']
464
+            and email_valide($row['email'])
465
+            and trouver_fond($fond = 'modeles/mail_nouveaux_identifiants')
466
+        ) {
467
+            // envoyer l'email avec login/pass
468
+            $c = [
469
+                'id_auteur' => $id_auteur,
470
+                'nom' => $row['nom'],
471
+                'mode' => $row['statut'],
472
+                'email' => $row['email'],
473
+                'pass' => $set['pass'],
474
+            ];
475
+            // on merge avec les champs fournit en appel, qui sont passes au modele de notification donc
476
+            $contexte = array_merge($contexte, $c);
477
+            // si pas de langue explicitement demandee, prendre celle de l'auteur si on la connait, ou a defaut celle du site
478
+            // plutot que celle de l'admin qui vient de cliquer sur le bouton
479
+            if (!isset($contexte['lang']) or !$contexte['lang']) {
480
+                if (isset($row['lang']) and $row['lang']) {
481
+                    $contexte['lang'] = $row['lang'];
482
+                }
483
+                else {
484
+                    $contexte['lang'] = $GLOBALS['meta']['langue_site'];
485
+                }
486
+            }
487
+            lang_select($contexte['lang']);
488
+            $message = recuperer_fond($fond, $contexte);
489
+            include_spip('inc/notifications');
490
+            notifications_envoyer_mails($row['email'], $message);
491
+            lang_select();
492
+
493
+            return $row['email'];
494
+        }
495
+
496
+        return false;
497
+    }
498
+
499
+    return '';
500 500
 }
Please login to merge, or discard this patch.