<?php
/***************************************************************************
- * Copyright (C) 2003-2011 Polytechnique.org *
+ * Copyright (C) 2003-2014 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
'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'),
'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),
);
}
}
}
+ 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;
$mymail->setFrom('"Gestion des mots de passe" <support+password@' . $globals->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 :
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)
}
$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:
?>