X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fplatal.php;h=3c4776a798dd071f320804d8509832d6472d5c3b;hb=5ca0a2863c4d7e72fe00d7c8ff98475864216ab8;hp=1dee07e53f98fd9c225b5e5087e8c4a6bc71ed3a;hpb=bfe9f4c752e8889ab5a269bddd27ea43b31d567e;p=platal.git diff --git a/modules/platal.php b/modules/platal.php index 1dee07e..3c4776a 100644 --- a/modules/platal.php +++ b/modules/platal.php @@ -47,6 +47,7 @@ class PlatalModule extends PLModule 'prefs/rss' => $this->make_hook('prefs_rss', AUTH_COOKIE, 'user'), 'prefs/webredirect' => $this->make_hook('webredir', AUTH_PASSWD, 'mail'), 'prefs/skin' => $this->make_hook('skin', AUTH_COOKIE, 'user'), + 'prefs/email' => $this->make_hook('prefs_email', AUTH_COOKIE, 'mail'), // password related thingies 'password' => $this->make_hook('password', AUTH_PASSWD, 'user,groups'), @@ -199,6 +200,47 @@ class PlatalModule extends PLModule } } + function handler_prefs_email($page) + { + $page->changeTpl('platal/email_preferences.tpl'); + + if (Post::has('submit')) { + S::assert_xsrf_token(); + + $from_email = Post::t('from_email'); + $from_format = Post::v('from_format'); + + // Checks email. + $email_regex = '/^[a-z0-9.\-+_\$]+@([\-.+_]?[a-z0-9])+$/i'; + if (!preg_match($email_regex, $from_email)) { + $full_regex = '/^[^<]*<[a-z0-9.\-+_\$]+@([\-.+_]?[a-z0-9])+>$/i'; + if (!preg_match($full_regex, $from_email)) { + $page->trigError("L'adresse email est erronée."); + $error = true; + $page->assign('from_email', $from_email); + $page->assign('from_format', $from_format); + $page->assign('error', true); + return; + } + } + + // Saves data. + XDB::execute('UPDATE accounts + SET from_email = {?}, from_format = {?} + WHERE uid = {?}', + $from_email, ($from_format == 'html' ? 'html' : 'text'), S::user()->id()); + $page->trigSuccess('Données enregistrées.'); + } + + $data = XDB::fetchOneAssoc('SELECT from_email, from_format + FROM accounts + WHERE uid = {?}', + S::user()->id()); + $page->assign('from_email', $data['from_email']); + $page->assign('from_format', $data['from_format']); + $page->assign('error', false); + } + function handler_password($page) { global $globals; @@ -328,9 +370,14 @@ class PlatalModule extends PLModule $mymail->setFrom('"Gestion des mots de passe" mail->domain . '>'); if (is_null($to)) { $mymail->addTo($user); - $mymail->addTo($inactives_to); + $log_to = $user->bestEmail(); + if (!is_null($inactives_to)) { + $log_to = $inactives_to . ', ' . $log_to; + $mymail->addTo($inactives_to); + } } else { $mymail->addTo($to); + $log_to = $to; } $mymail->setSubject("Ton certificat d'authentification"); $mymail->setTxtBody("Visite la page suivante qui expire dans six heures : @@ -346,7 +393,7 @@ Email envoyé à ".Env::v('login') . (is_null($to) ? '' : ' Adresse de secours : ' . $to)); $mymail->send(); - S::logger($user->id())->log('recovery', is_null($to) ? $inactives_to . ', ' . $user->bestEmail() : $to); + S::logger($user->id())->log('recovery', $log_to); } function handler_recovery_ext($page)