X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=sidebyside;f=modules%2Fplatal.php;h=baa18b10c407e6f63e90745a4d32e94d831ea7d0;hb=149360d4415a12797d7047995e9bcf608a4ced34;hp=1dee07e53f98fd9c225b5e5087e8c4a6bc71ed3a;hpb=7f3ac125d8b532fd0fc643e3504e5bd06be01fc4;p=platal.git diff --git a/modules/platal.php b/modules/platal.php index 1dee07e..baa18b1 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;