function handlers()
{
return array(
- 'emails' => $this->make_hook('emails', AUTH_COOKIE),
- 'emails/alias' => $this->make_hook('alias', AUTH_MDP),
- 'emails/antispam' => $this->make_hook('antispam', AUTH_MDP),
+ 'emails' => $this->make_hook('emails', AUTH_COOKIE, 'mail'),
+ 'emails/alias' => $this->make_hook('alias', AUTH_MDP, 'mail'),
+ 'emails/antispam' => $this->make_hook('antispam', AUTH_MDP, 'mail'),
'emails/broken' => $this->make_hook('broken', AUTH_COOKIE),
- 'emails/redirect' => $this->make_hook('redirect', AUTH_MDP),
- 'emails/send' => $this->make_hook('send', AUTH_MDP),
+ 'emails/redirect' => $this->make_hook('redirect', AUTH_MDP, 'mail'),
+ 'emails/send' => $this->make_hook('send', AUTH_MDP, 'mail'),
'emails/antispam/submit' => $this->make_hook('submit', AUTH_COOKIE),
- 'emails/test' => $this->make_hook('test', AUTH_COOKIE, 'user', NO_AUTH),
+ 'emails/test' => $this->make_hook('test', AUTH_COOKIE, 'mail', NO_AUTH),
'emails/rewrite/in' => $this->make_hook('rewrite_in', AUTH_PUBLIC),
'emails/rewrite/out' => $this->make_hook('rewrite_out', AUTH_PUBLIC),
function handler_alias(&$page, $action = null, $value = null)
{
- require_once 'validations.inc.php';
-
global $globals;
$page->changeTpl('emails/alias.tpl');
// Fetch existing @alias_dom aliases.
$alias = $user->emailAlias();
$visibility = $user->hasProfile() && $user->profile()->alias_pub;
+ $page->assign('actuel', $alias);
+ $page->assign('user', $user);
+ $page->assign('mail_public', $visibility);
if ($action == 'ask' && Env::has('alias') && Env::has('raison')) {
S::assert_xsrf_token();
}
//vérifier que l'alias n'est pas déja en demande
- $it = new ValidateIterator();
+ $it = Validate::iterate('alias');
while($req = $it->next()) {
- if ($req->type == 'alias' and $req->alias == $alias_mail) {
+ if ($req->alias == $alias_mail) {
$page->trigError("L'alias $alias_mail a déja été demandé.
Tu ne peux donc pas l'obtenir pour l'instant.");
return ;
if ($user->hasProfile()) {
XDB::execute("UPDATE profiles
SET alias_pub = {?}
- WHERE pid = {?}",
+ WHERE pid = {?}",
$value, $user->profile()->id());
}
$visibility = ($value == 'public');
+ exit;
}
$page->assign('actuel', $alias);
$actifs = Env::v('emails_actifs', Array());
print_r(Env::v('emails_rewrite'));
if (Env::v('emailop') == "ajouter" && Env::has('email')) {
+ $error_email = false;
$new_email = Env::v('email');
if ($new_email == "new@example.org") {
$new_email = Env::v('email_new');
}
$result = $redirect->add_email($new_email);
if ($result == ERROR_INVALID_EMAIL) {
+ $error_email = true;
$page->assign('email', $new_email);
}
$page->assign('retour', $result);
+ $page->assign('error_email', $error_email);
} elseif (empty($actifs)) {
$result = ERROR_INACTIVE_REDIRECTION;
} elseif (is_array($actifs)) {
. $user->forlifeEmail() . ' ne fonctionnerait plus.');
break;
case ERROR_INVALID_EMAIL:
- $page->trigError('Erreur: l\'email n\'est pas valide.');
+ $page->trigError('Erreur : l\'email n\'est pas valide.');
break;
case ERROR_LOOP_EMAIL:
$page->trigError('Erreur : ' . $user->forlifeEmail()
function handler_send(&$page)
{
$page->changeTpl('emails/send.tpl');
- $page->addJsLink('ajax.js');
$page->setTitle('Envoyer un email');
if (!is_array($aliases)) {
return null;
}
- $rel = Env::v('contacts');
+ $uf = new UserFilter(new UFC_Hrpid($aliases));
+ $users = $uf->iterUsers();
$ret = array();
- foreach ($aliases as $alias) {
- $ret[$alias] = $rel[$alias];
+ while ($user = $users->next()) {
+ $ret[] = $user->forlife;
}
return join(', ', $ret);
}
}
}
- $contacts = S::user()->getContacts();
+ $uf = new UserFilter(new PFC_And(new UFC_Contact(S::user()),
+ new UFC_Registered()),
+ UserFilter::sortByName());
+ $contacts = $uf->getProfiles();
$page->assign('contacts', $contacts);
$page->assign('maxsize', ini_get('upload_max_filesize') . 'o');
$page->assign('user', S::user());
if (!empty($hash) || !empty($login)) {
$user = User::getSilent($login);
if ($user) {
- $req = XDB::query("SELECT 1 FROM newsletter_ins WHERE user_id = {?} AND hash = {?}", $user->id(), $hash);
+ $req = XDB::query('SELECT 1
+ FROM newsletter_ins
+ WHERE uid = {?} AND hash = {?}',
+ $user->id(), $hash);
if ($req->numRows() == 0) {
$user = null;
}
$storage = new EmailStorage(S::user(), 'imap');
$storage->activate();
$page->assign('ok', true);
- $page->assign('prenom', S::v('prenom'));
- $page->assign('sexe', S::v('femme'));
+ $page->assign('yourself', S::user()->displayName());
+ $page->assign('sexe', S::user()->isFemale());
} else if (!S::logged() && $user) {
$storage = new EmailStorage($user, 'imap');
$storage->activate();
$page->assign('ok', true);
- $page->assign('prenom', $user->displayName());
+ $page->assign('yourself', $user->displayName());
$page->assign('sexe', $user->isFemale());
}
}
$page->assign('neuneu', true);
} else {
$page->assign('email',$email);
- $x = XDB::fetchOneAssoc("SELECT e1.uid, e1.panne != 0 AS panne,
- (count(e2.uid) + IF(FIND_IN_SET('googleapps', eo.storage), 1, 0)) AS nb_mails
- FROM emails as e1
+ $x = XDB::fetchOneAssoc("SELECT e1.uid, e1.panne != 0 AS panne, a.hruid,
+ (COUNT(e2.uid) + IF(FIND_IN_SET('googleapps', eo.storage), 1, 0)) AS nb_mails
+ FROM emails AS e1
INNER JOIN email_options AS eo ON (eo.uid = e1.uid)
- LEFT JOIN emails as e2 ON(e1.uid = e2.uid
- AND FIND_IN_SET('active', e2.flags)
- AND e1.email != e2.email)
+ INNER JOIN accounts AS a ON (e1.uid = a.uid)
+ LEFT JOIN emails AS e2 ON (e1.uid = e2.uid
+ AND FIND_IN_SET('active', e2.flags)
+ AND e1.email != e2.email)
WHERE e1.email = {?}
GROUP BY e1.uid", $email);
if ($x) {
{
$page->changeTpl('emails/lost.tpl');
- // TODO: Order by promo.
$page->assign('lost_emails',
- XDB::iterator("SELECT a.uid, a.hruid
- FROM accounts AS a
- INNER JOIN email_options AS eo ON (eo.uid = a.uid)
- LEFT JOIN emails AS e ON (a.uid = e.uid AND FIND_IN_SET('active', e.flags))
- WHERE e.uid IS NULL AND FIND_IN_SET('googleapps', eo.storage) = 0 AND
- a.state = 'active'
- ORDER BY a.hruid"));
+ XDB::iterator('SELECT a.uid, a.hruid, pd.promo
+ FROM accounts AS a
+ INNER JOIN email_options AS eo ON (eo.uid = a.uid)
+ LEFT JOIN emails AS e ON (a.uid = e.uid AND FIND_IN_SET(\'active\', e.flags))
+ LEFT JOIN account_profiles AS ap ON (ap.uid = a.uid AND FIND_IN_SET(\'owner\', perms))
+ LEFT JOIN profile_display AS pd ON (ap.pid = pd.pid)
+ WHERE e.uid IS NULL AND FIND_IN_SET(\'googleapps\', eo.storage) = 0
+ AND a.state = \'active\'
+ ORDER BY pd.promo, a.hruid'));
}
function handler_broken_addr(&$page)
$sel = Xdb::query(
"SELECT acc.uid, count(e.email) AS nb_mails,
IFNULL(pd.public_name, acc.full_name) AS fullname,
- IFNULL(pd.promo, 0) AS promo,
- FROM aliases AS a
- INNER JOIN accounts AS acc ON a.id = acc.uid
- LEFT JOIN emails AS e ON (e.uid = acc.uid
- AND FIND_IN_SET('active', e.flags) AND e.panne = 0)
- LEFT JOIN account_profiles AS ap ON (acc.uid = ap.uid AND FIND_IN_SET('owner', ap.perms))
- LEFT JOIN profile_display AS pd ON (pd.pid = ap.pid)
+ IFNULL(pd.promo, 0) AS promo
+ FROM aliases AS a
+ INNER JOIN accounts AS acc ON (a.uid = acc.uid)
+ LEFT JOIN emails AS e ON (e.uid = acc.uid
+ AND FIND_IN_SET('active', e.flags) AND e.panne = 0)
+ LEFT JOIN account_profiles AS ap ON (acc.uid = ap.uid AND FIND_IN_SET('owner', ap.perms))
+ LEFT JOIN profile_display AS pd ON (pd.pid = ap.pid)
WHERE a.alias = {?}
GROUP BY acc.uid", $alias);
if ($x = $sel->fetchOneAssoc()) {
if ($x['nb_mails'] == 0) {
- register_profile_update($x['user_id'], 'broken');
+ $user = User::getSilentWithUID($x['uid']);
+ $profile = $user->profile();
+ WatchProfileUpdate::register($profile, 'broken');
}
fputcsv($csv, array($x['fullname'], $x['promo'], $alias,
join(',', $mails), $x['nb_mails'],