X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fplatal.php;h=1772921ecfa007ba220570dbb3c6f09e6fb67908;hb=07e02fe3af9db38b14225e5bf0ed937147acb37d;hp=1dee07e53f98fd9c225b5e5087e8c4a6bc71ed3a;hpb=959221f7482b51bb1b3f03d86aeabc0bd246205a;p=platal.git diff --git a/modules/platal.php b/modules/platal.php index 1dee07e..1772921 100644 --- a/modules/platal.php +++ b/modules/platal.php @@ -1,6 +1,6 @@ $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'), @@ -58,6 +59,8 @@ class PlatalModule extends PLModule 'exit' => $this->make_hook('exit', AUTH_PUBLIC), 'review' => $this->make_hook('review', AUTH_PUBLIC), 'deconnexion.php' => $this->make_hook('exit', AUTH_PUBLIC), + + 'error' => $this->make_hook('test_error', AUTH_COOKIE), ); } @@ -199,6 +202,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 +372,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 +395,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) @@ -563,7 +612,16 @@ Adresse de secours : ' . $to)); } $wiz->apply($page, 'review', $action, $mode); } + + function handler_test_error($page, $mode = null) + { + if ($mode == 'js') { + $page->changeTpl('platal/error.tpl'); + } else { + throw new Exception("Blih"); + } + } } -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8: ?>