Completed
Push — master ( 34710b...9b2529 )
by cam
01:02
created
prive/formulaires/editer_auteur.php 3 patches
Indentation   +345 added lines, -345 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,143 +147,143 @@  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 (_request('login')) {
246
-		// on n'est jamais cense poster le name 'login'
247
-		$erreurs['login'] = _T('info_non_modifiable');
248
-	}
249
-	elseif (
250
-		($login = _request('new_login')) and
251
-		$login !== sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur))
252
-	) {
253
-		// on verifie la meme chose que dans auteurs_edit_config()
254
-		if (
255
-			! auth_autoriser_modifier_login($auth_methode)
256
-			or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['login' => true])
257
-			// legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email
258
-			or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['email' => true])
259
-		) {
260
-			$erreurs['login'] = _T('info_non_modifiable');
261
-		}
262
-	}
263
-
264
-	if (empty($erreurs['login'])) {
265
-		if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
266
-			$erreurs['login'] = $err;
267
-			$erreurs['message_erreur'] .= $err;
268
-		} else {
269
-			// pass trop court ou confirmation non identique
270
-			if ($p = _request('new_pass')) {
271
-				if ($p != _request('new_pass2')) {
272
-					$erreurs['new_pass'] = _T('info_passes_identiques');
273
-					$erreurs['message_erreur'] .= _T('info_passes_identiques');
274
-				} elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
275
-					$erreurs['new_pass'] = $err;
276
-					$erreurs['message_erreur'] .= $err;
277
-				}
278
-			}
279
-		}
280
-	}
281
-
282
-	if (!$erreurs['message_erreur']) {
283
-		unset($erreurs['message_erreur']);
284
-	}
285
-
286
-	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 (_request('login')) {
246
+        // on n'est jamais cense poster le name 'login'
247
+        $erreurs['login'] = _T('info_non_modifiable');
248
+    }
249
+    elseif (
250
+        ($login = _request('new_login')) and
251
+        $login !== sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur))
252
+    ) {
253
+        // on verifie la meme chose que dans auteurs_edit_config()
254
+        if (
255
+            ! auth_autoriser_modifier_login($auth_methode)
256
+            or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['login' => true])
257
+            // legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email
258
+            or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['email' => true])
259
+        ) {
260
+            $erreurs['login'] = _T('info_non_modifiable');
261
+        }
262
+    }
263
+
264
+    if (empty($erreurs['login'])) {
265
+        if ($err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)) {
266
+            $erreurs['login'] = $err;
267
+            $erreurs['message_erreur'] .= $err;
268
+        } else {
269
+            // pass trop court ou confirmation non identique
270
+            if ($p = _request('new_pass')) {
271
+                if ($p != _request('new_pass2')) {
272
+                    $erreurs['new_pass'] = _T('info_passes_identiques');
273
+                    $erreurs['message_erreur'] .= _T('info_passes_identiques');
274
+                } elseif ($err = auth_verifier_pass($auth_methode, _request('new_login'), $p, $id_auteur)) {
275
+                    $erreurs['new_pass'] = $err;
276
+                    $erreurs['message_erreur'] .= $err;
277
+                }
278
+            }
279
+        }
280
+    }
281
+
282
+    if (!$erreurs['message_erreur']) {
283
+        unset($erreurs['message_erreur']);
284
+    }
285
+
286
+    return $erreurs;
287 287
 }
288 288
 
289 289
 
@@ -320,128 +320,128 @@  discard block
 block discarded – undo
320 320
  *     Retour des traitements
321 321
  **/
322 322
 function formulaires_editer_auteur_traiter_dist(
323
-	$id_auteur = 'new',
324
-	$retour = '',
325
-	$associer_objet = '',
326
-	$config_fonc = 'auteurs_edit_config',
327
-	$row = [],
328
-	$hidden = ''
323
+    $id_auteur = 'new',
324
+    $retour = '',
325
+    $associer_objet = '',
326
+    $config_fonc = 'auteurs_edit_config',
327
+    $row = [],
328
+    $hidden = ''
329 329
 ) {
330
-	$id_objet = null;
331
-	if (_request('saisie_webmestre') or _request('webmestre')) {
332
-		set_request('webmestre', _request('webmestre') ?: 'non');
333
-	}
334
-	$retour = parametre_url($retour, 'email_confirm', '');
335
-
336
-	if ($restreintes = _request('restreintes')) {
337
-		foreach ($restreintes as $k => $v) {
338
-			if (strpos($v, 'rubrique|') === 0) {
339
-				$restreintes[$k] = substr($v, 9);
340
-			}
341
-		}
342
-		set_request('restreintes', $restreintes);
343
-	}
344
-
345
-	set_request(
346
-		'email',
347
-		email_valide(_request('email'))
348
-	); // eviter d'enregistrer les cas qui sont acceptés par email_valide dans le verifier :
349
-	// "[email protected]  " ou encore "Marie Toto <[email protected]>"
350
-
351
-	include_spip('inc/autoriser');
352
-	if (!autoriser('modifier', 'auteur', $id_auteur, null, ['email' => '?'])) {
353
-		$email_nouveau = _request('email');
354
-		set_request('email'); // vider la saisie car l'auteur n'a pas le droit de modifier cet email
355
-		// mais si c'est son propre profil on lui envoie un email à l'adresse qu'il a indique
356
-		// pour qu'il confirme qu'il possede bien cette adresse
357
-		// son clic sur l'url du message permettre de confirmer le changement
358
-		// et de revenir sur son profil
359
-		if (
360
-			$GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
361
-			and $email_nouveau !=
362
-				($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
363
-		) {
364
-			$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
365
-			$texte = _T(
366
-				'form_auteur_mail_confirmation',
367
-				[
368
-					'url' => generer_action_auteur(
369
-						'confirmer_email',
370
-						$email_nouveau,
371
-						parametre_url($retour, 'email_modif', 'ok')
372
-					)
373
-				]
374
-			);
375
-			$envoyer_mail($email_nouveau, _T('form_auteur_confirmation'), $texte);
376
-			set_request('email_confirm', $email_nouveau);
377
-			if ($email_ancien) {
378
-				$envoyer_mail(
379
-					$email_ancien,
380
-					_T('form_auteur_confirmation'),
381
-					_T('form_auteur_envoi_mail_confirmation', ['email' => $email_nouveau])
382
-				);
383
-			}
384
-			$retour = parametre_url($retour, 'email_confirm', $email_nouveau);
385
-		}
386
-	}
387
-
388
-	$res = formulaires_editer_objet_traiter('auteur', $id_auteur, 0, 0, $retour, $config_fonc, $row, $hidden);
389
-
390
-	if (_request('reset_password') and !intval($id_auteur) and intval($res['id_auteur'])) {
391
-		$erreurs = [];
392
-		$erreurs = auteur_reset_password($res['id_auteur'], $erreurs);
393
-		if (isset($erreurs['message_ok'])) {
394
-			if (!isset($res['message_ok'])) { $res['message_ok'] = '';
395
-			}
396
-			$res['message_ok'] = trim($res['message_ok'] . ' ' . $erreurs['message_ok']);
397
-		}
398
-		if (isset($erreurs['message_erreur']) and $erreurs['message_erreur']) {
399
-			if (!isset($res['message_erreur'])) { $res['message_erreur'] = '';
400
-			}
401
-			$res['message_erreur'] = trim($res['message_erreur'] . ' ' . $erreurs['message_erreur']);
402
-		}
403
-	}
404
-
405
-	// Un lien auteur a prendre en compte ?
406
-	if ($associer_objet and $id_auteur = $res['id_auteur']) {
407
-		$objet = '';
408
-		if (intval($associer_objet)) {
409
-			$objet = 'article';
410
-			$id_objet = intval($associer_objet);
411
-		} elseif (preg_match(',^\w+\|[0-9]+$,', $associer_objet)) {
412
-			[$objet, $id_objet] = explode('|', $associer_objet);
413
-		}
414
-		if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
415
-			include_spip('action/editer_auteur');
416
-			auteur_associer($id_auteur, [$objet => $id_objet]);
417
-			if (isset($res['redirect'])) {
418
-				$res['redirect'] = parametre_url($res['redirect'], 'id_lien_ajoute', $id_auteur, '&');
419
-			}
420
-		}
421
-	}
422
-
423
-	return $res;
330
+    $id_objet = null;
331
+    if (_request('saisie_webmestre') or _request('webmestre')) {
332
+        set_request('webmestre', _request('webmestre') ?: 'non');
333
+    }
334
+    $retour = parametre_url($retour, 'email_confirm', '');
335
+
336
+    if ($restreintes = _request('restreintes')) {
337
+        foreach ($restreintes as $k => $v) {
338
+            if (strpos($v, 'rubrique|') === 0) {
339
+                $restreintes[$k] = substr($v, 9);
340
+            }
341
+        }
342
+        set_request('restreintes', $restreintes);
343
+    }
344
+
345
+    set_request(
346
+        'email',
347
+        email_valide(_request('email'))
348
+    ); // eviter d'enregistrer les cas qui sont acceptés par email_valide dans le verifier :
349
+    // "[email protected]  " ou encore "Marie Toto <[email protected]>"
350
+
351
+    include_spip('inc/autoriser');
352
+    if (!autoriser('modifier', 'auteur', $id_auteur, null, ['email' => '?'])) {
353
+        $email_nouveau = _request('email');
354
+        set_request('email'); // vider la saisie car l'auteur n'a pas le droit de modifier cet email
355
+        // mais si c'est son propre profil on lui envoie un email à l'adresse qu'il a indique
356
+        // pour qu'il confirme qu'il possede bien cette adresse
357
+        // son clic sur l'url du message permettre de confirmer le changement
358
+        // et de revenir sur son profil
359
+        if (
360
+            $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
361
+            and $email_nouveau !=
362
+                ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
363
+        ) {
364
+            $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
365
+            $texte = _T(
366
+                'form_auteur_mail_confirmation',
367
+                [
368
+                    'url' => generer_action_auteur(
369
+                        'confirmer_email',
370
+                        $email_nouveau,
371
+                        parametre_url($retour, 'email_modif', 'ok')
372
+                    )
373
+                ]
374
+            );
375
+            $envoyer_mail($email_nouveau, _T('form_auteur_confirmation'), $texte);
376
+            set_request('email_confirm', $email_nouveau);
377
+            if ($email_ancien) {
378
+                $envoyer_mail(
379
+                    $email_ancien,
380
+                    _T('form_auteur_confirmation'),
381
+                    _T('form_auteur_envoi_mail_confirmation', ['email' => $email_nouveau])
382
+                );
383
+            }
384
+            $retour = parametre_url($retour, 'email_confirm', $email_nouveau);
385
+        }
386
+    }
387
+
388
+    $res = formulaires_editer_objet_traiter('auteur', $id_auteur, 0, 0, $retour, $config_fonc, $row, $hidden);
389
+
390
+    if (_request('reset_password') and !intval($id_auteur) and intval($res['id_auteur'])) {
391
+        $erreurs = [];
392
+        $erreurs = auteur_reset_password($res['id_auteur'], $erreurs);
393
+        if (isset($erreurs['message_ok'])) {
394
+            if (!isset($res['message_ok'])) { $res['message_ok'] = '';
395
+            }
396
+            $res['message_ok'] = trim($res['message_ok'] . ' ' . $erreurs['message_ok']);
397
+        }
398
+        if (isset($erreurs['message_erreur']) and $erreurs['message_erreur']) {
399
+            if (!isset($res['message_erreur'])) { $res['message_erreur'] = '';
400
+            }
401
+            $res['message_erreur'] = trim($res['message_erreur'] . ' ' . $erreurs['message_erreur']);
402
+        }
403
+    }
404
+
405
+    // Un lien auteur a prendre en compte ?
406
+    if ($associer_objet and $id_auteur = $res['id_auteur']) {
407
+        $objet = '';
408
+        if (intval($associer_objet)) {
409
+            $objet = 'article';
410
+            $id_objet = intval($associer_objet);
411
+        } elseif (preg_match(',^\w+\|[0-9]+$,', $associer_objet)) {
412
+            [$objet, $id_objet] = explode('|', $associer_objet);
413
+        }
414
+        if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
415
+            include_spip('action/editer_auteur');
416
+            auteur_associer($id_auteur, [$objet => $id_objet]);
417
+            if (isset($res['redirect'])) {
418
+                $res['redirect'] = parametre_url($res['redirect'], 'id_lien_ajoute', $id_auteur, '&');
419
+            }
420
+        }
421
+    }
422
+
423
+    return $res;
424 424
 }
425 425
 
426 426
 
427 427
 function auteur_reset_password($id_auteur, $erreurs = []) {
428
-	$auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
429
-	$config = auteurs_edit_config($auteur);
430
-
431
-	if ($config['edit_pass']) {
432
-		if ($email = auteur_regenerer_identifiants($id_auteur)) {
433
-			$erreurs['message_ok'] = _T('message_nouveaux_identifiants_ok', ['email' => $email]);
434
-			$erreurs['message_erreur'] = '';
435
-		} elseif ($email === false) {
436
-			$erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_envoi');
437
-		} else {
438
-			$erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec');
439
-		}
440
-	} else {
441
-		$erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec');
442
-	}
443
-
444
-	return $erreurs;
428
+    $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
429
+    $config = auteurs_edit_config($auteur);
430
+
431
+    if ($config['edit_pass']) {
432
+        if ($email = auteur_regenerer_identifiants($id_auteur)) {
433
+            $erreurs['message_ok'] = _T('message_nouveaux_identifiants_ok', ['email' => $email]);
434
+            $erreurs['message_erreur'] = '';
435
+        } elseif ($email === false) {
436
+            $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec_envoi');
437
+        } else {
438
+            $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec');
439
+        }
440
+    } else {
441
+        $erreurs['message_erreur'] = _T('message_nouveaux_identifiants_echec');
442
+    }
443
+
444
+    return $erreurs;
445 445
 }
446 446
 
447 447
 /**
@@ -452,53 +452,53 @@  discard block
 block discarded – undo
452 452
  * @return string
453 453
  */
454 454
 function auteur_regenerer_identifiants($id_auteur, $notifier = true, $contexte = []) {
455
-	if ($id_auteur) {
456
-		$set = [];
457
-		include_spip('inc/access');
458
-		$set['pass'] = creer_pass_aleatoire(max(_PASS_LONGUEUR_MINI, 16));
459
-
460
-		include_spip('action/editer_auteur');
461
-		auteur_modifier($id_auteur, $set);
462
-
463
-		$row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
464
-		include_spip('inc/filtres');
465
-		if (
466
-			$notifier
467
-			and $row['email']
468
-			and email_valide($row['email'])
469
-			and trouver_fond($fond = 'modeles/mail_nouveaux_identifiants')
470
-		) {
471
-			// envoyer l'email avec login/pass
472
-			$c = [
473
-				'id_auteur' => $id_auteur,
474
-				'nom' => $row['nom'],
475
-				'mode' => $row['statut'],
476
-				'email' => $row['email'],
477
-				'pass' => $set['pass'],
478
-			];
479
-			// on merge avec les champs fournit en appel, qui sont passes au modele de notification donc
480
-			$contexte = array_merge($contexte, $c);
481
-			// si pas de langue explicitement demandee, prendre celle de l'auteur si on la connait, ou a defaut celle du site
482
-			// plutot que celle de l'admin qui vient de cliquer sur le bouton
483
-			if (!isset($contexte['lang']) or !$contexte['lang']) {
484
-				if (isset($row['lang']) and $row['lang']) {
485
-					$contexte['lang'] = $row['lang'];
486
-				}
487
-				else {
488
-					$contexte['lang'] = $GLOBALS['meta']['langue_site'];
489
-				}
490
-			}
491
-			lang_select($contexte['lang']);
492
-			$message = recuperer_fond($fond, $contexte);
493
-			include_spip('inc/notifications');
494
-			notifications_envoyer_mails($row['email'], $message);
495
-			lang_select();
496
-
497
-			return $row['email'];
498
-		}
499
-
500
-		return false;
501
-	}
502
-
503
-	return '';
455
+    if ($id_auteur) {
456
+        $set = [];
457
+        include_spip('inc/access');
458
+        $set['pass'] = creer_pass_aleatoire(max(_PASS_LONGUEUR_MINI, 16));
459
+
460
+        include_spip('action/editer_auteur');
461
+        auteur_modifier($id_auteur, $set);
462
+
463
+        $row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
464
+        include_spip('inc/filtres');
465
+        if (
466
+            $notifier
467
+            and $row['email']
468
+            and email_valide($row['email'])
469
+            and trouver_fond($fond = 'modeles/mail_nouveaux_identifiants')
470
+        ) {
471
+            // envoyer l'email avec login/pass
472
+            $c = [
473
+                'id_auteur' => $id_auteur,
474
+                'nom' => $row['nom'],
475
+                'mode' => $row['statut'],
476
+                'email' => $row['email'],
477
+                'pass' => $set['pass'],
478
+            ];
479
+            // on merge avec les champs fournit en appel, qui sont passes au modele de notification donc
480
+            $contexte = array_merge($contexte, $c);
481
+            // si pas de langue explicitement demandee, prendre celle de l'auteur si on la connait, ou a defaut celle du site
482
+            // plutot que celle de l'admin qui vient de cliquer sur le bouton
483
+            if (!isset($contexte['lang']) or !$contexte['lang']) {
484
+                if (isset($row['lang']) and $row['lang']) {
485
+                    $contexte['lang'] = $row['lang'];
486
+                }
487
+                else {
488
+                    $contexte['lang'] = $GLOBALS['meta']['langue_site'];
489
+                }
490
+            }
491
+            lang_select($contexte['lang']);
492
+            $message = recuperer_fond($fond, $contexte);
493
+            include_spip('inc/notifications');
494
+            notifications_envoyer_mails($row['email'], $message);
495
+            lang_select();
496
+
497
+            return $row['email'];
498
+        }
499
+
500
+        return false;
501
+    }
502
+
503
+    return '';
504 504
 }
Please login to merge, or discard this patch.
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -170,7 +170,7 @@  discard block
 block discarded – undo
170 170
 		unset($erreurs['new_login']);
171 171
 	}
172 172
 
173
-	$auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
173
+	$auth_methode = sql_getfetsel('source', 'spip_auteurs', 'id_auteur='.intval($id_auteur));
174 174
 	$auth_methode = ($auth_methode ?: 'spip');
175 175
 	include_spip('inc/auth');
176 176
 
@@ -186,7 +186,7 @@  discard block
 block discarded – undo
186 186
 			!autoriser('modifier', 'auteur', $id_auteur, null, ['email' => '?'])
187 187
 			and $GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
188 188
 			and !strlen(trim($email))
189
-			and $email != ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
189
+			and $email != ($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.intval($id_auteur)))
190 190
 		) {
191 191
 			$erreurs['email'] = (($id_auteur == $GLOBALS['visiteur_session']['id_auteur']) ? _T('form_email_non_valide') : _T('form_prop_indiquer_email'));
192 192
 		} else {
@@ -201,7 +201,7 @@  discard block
 block discarded – undo
201 201
 			#Nouvel auteur
202 202
 			if (intval($id_auteur) == 0) {
203 203
 				#Un auteur existe deja avec cette adresse ?
204
-				if (sql_countsel('spip_auteurs', 'email=' . sql_quote($email)) > 0) {
204
+				if (sql_countsel('spip_auteurs', 'email='.sql_quote($email)) > 0) {
205 205
 					$erreurs['email'] = _T('erreur_email_deja_existant');
206 206
 				}
207 207
 			} else {
@@ -209,11 +209,11 @@  discard block
 block discarded – undo
209 209
 				if (
210 210
 					(sql_countsel(
211 211
 						'spip_auteurs',
212
-						'email=' . sql_quote($email)
212
+						'email='.sql_quote($email)
213 213
 					) > 0) and ($id_auteur != ($id_auteur_ancien = sql_getfetsel(
214 214
 						'id_auteur',
215 215
 						'spip_auteurs',
216
-						'email=' . sql_quote($email)
216
+						'email='.sql_quote($email)
217 217
 					)))
218 218
 				) {
219 219
 					$erreurs['email'] = _T('erreur_email_deja_existant');
@@ -231,7 +231,7 @@  discard block
 block discarded – undo
231 231
 	// corriger un cas si frequent : www.example.org sans le http:// qui precede
232 232
 	if ($url = _request('url_site') and !tester_url_absolue($url)) {
233 233
 		if (strpos($url, ':') === false and strncasecmp($url, 'www.', 4) === 0) {
234
-			$url = 'http://' . $url;
234
+			$url = 'http://'.$url;
235 235
 			set_request('url_site', $url);
236 236
 		}
237 237
 	}
@@ -248,11 +248,11 @@  discard block
 block discarded – undo
248 248
 	}
249 249
 	elseif (
250 250
 		($login = _request('new_login')) and
251
-		$login !== sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur))
251
+		$login !== sql_getfetsel('login', 'spip_auteurs', 'id_auteur='.intval($id_auteur))
252 252
 	) {
253 253
 		// on verifie la meme chose que dans auteurs_edit_config()
254 254
 		if (
255
-			! auth_autoriser_modifier_login($auth_methode)
255
+			!auth_autoriser_modifier_login($auth_methode)
256 256
 			or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['login' => true])
257 257
 			// legacy : ne pas risquer d'autoriser la modif login si fonction d'autorisation pas mise a jour et ne teste que l'option email
258 258
 			or !autoriser('modifier', 'auteur', intval($id_auteur), null, ['email' => true])
@@ -359,7 +359,7 @@  discard block
 block discarded – undo
359 359
 		if (
360 360
 			$GLOBALS['visiteur_session']['id_auteur'] == $id_auteur
361 361
 			and $email_nouveau !=
362
-				($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)))
362
+				($email_ancien = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.intval($id_auteur)))
363 363
 		) {
364 364
 			$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
365 365
 			$texte = _T(
@@ -393,12 +393,12 @@  discard block
 block discarded – undo
393 393
 		if (isset($erreurs['message_ok'])) {
394 394
 			if (!isset($res['message_ok'])) { $res['message_ok'] = '';
395 395
 			}
396
-			$res['message_ok'] = trim($res['message_ok'] . ' ' . $erreurs['message_ok']);
396
+			$res['message_ok'] = trim($res['message_ok'].' '.$erreurs['message_ok']);
397 397
 		}
398 398
 		if (isset($erreurs['message_erreur']) and $erreurs['message_erreur']) {
399 399
 			if (!isset($res['message_erreur'])) { $res['message_erreur'] = '';
400 400
 			}
401
-			$res['message_erreur'] = trim($res['message_erreur'] . ' ' . $erreurs['message_erreur']);
401
+			$res['message_erreur'] = trim($res['message_erreur'].' '.$erreurs['message_erreur']);
402 402
 		}
403 403
 	}
404 404
 
@@ -425,7 +425,7 @@  discard block
 block discarded – undo
425 425
 
426 426
 
427 427
 function auteur_reset_password($id_auteur, $erreurs = []) {
428
-	$auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
428
+	$auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur='.intval($id_auteur));
429 429
 	$config = auteurs_edit_config($auteur);
430 430
 
431 431
 	if ($config['edit_pass']) {
@@ -460,7 +460,7 @@  discard block
 block discarded – undo
460 460
 		include_spip('action/editer_auteur');
461 461
 		auteur_modifier($id_auteur, $set);
462 462
 
463
-		$row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
463
+		$row = sql_fetsel('*', 'spip_auteurs', 'id_auteur='.intval($id_auteur));
464 464
 		include_spip('inc/filtres');
465 465
 		if (
466 466
 			$notifier
Please login to merge, or discard this patch.
Braces   +2 added lines, -4 removed lines patch added patch discarded remove patch
@@ -245,8 +245,7 @@  discard block
 block discarded – undo
245 245
 	if (_request('login')) {
246 246
 		// on n'est jamais cense poster le name 'login'
247 247
 		$erreurs['login'] = _T('info_non_modifiable');
248
-	}
249
-	elseif (
248
+	} elseif (
250 249
 		($login = _request('new_login')) and
251 250
 		$login !== sql_getfetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur))
252 251
 	) {
@@ -483,8 +482,7 @@  discard block
 block discarded – undo
483 482
 			if (!isset($contexte['lang']) or !$contexte['lang']) {
484 483
 				if (isset($row['lang']) and $row['lang']) {
485 484
 					$contexte['lang'] = $row['lang'];
486
-				}
487
-				else {
485
+				} else {
488 486
 					$contexte['lang'] = $GLOBALS['meta']['langue_site'];
489 487
 				}
490 488
 			}
Please login to merge, or discard this patch.