X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Femail.php;h=d412b2aded7479c503d50315417e04572920bccd;hb=80ea68bd56df9e85011b4783dbf5aa62fd293795;hp=e080e48b647d9860a1fae10187bddbb6eb98e0ab;hpb=3b346b99fd10a34dc4ac85af9da1abb778db8154;p=platal.git diff --git a/modules/email.php b/modules/email.php index e080e48..d412b2a 100644 --- a/modules/email.php +++ b/modules/email.php @@ -82,19 +82,18 @@ class EmailModule extends PLModule $aliases = XDB::iterator("SELECT CONCAT(s.email, '@', d.name) AS email, (s.type = 'forlife') AS forlife, (s.email REGEXP '\\\\.[0-9]{2}$') AS hundred_year, FIND_IN_SET('bestalias', s.flags) AS bestalias, s.expire, - (d.name = {?}) AS alias + (s.type = 'alias_aux') AS alias FROM email_source_account AS s INNER JOIN email_virtual_domains AS d ON (s.domain = d.id) WHERE s.uid = {?} ORDER BY !alias, s.email", - $globals->mail->alias_dom, $user->id()); + $user->id()); $page->assign('aliases', $aliases); - $alias = XDB::fetchOneCell('SELECT COUNT(s.email) - FROM email_source_account AS s - INNER JOIN email_virtual_domains AS d ON (s.domain = d.id) - WHERE s.uid = {?} AND d.name = {?}', - $user->id(), $globals->mail->alias_dom); + $alias = XDB::fetchOneCell('SELECT COUNT(email) + FROM email_source_account + WHERE uid = {?} AND type = \'alias_aux\'', + $user->id()); $page->assign('alias', $alias); @@ -104,6 +103,13 @@ class EmailModule extends PLModule // Display active redirections. $redirect = new Redirect($user); $page->assign('mails', $redirect->active_emails()); + + // User's mail domains. + $mail_domains = array($user->alternateEmailDomain()); + $mail_domains[] = User::$sub_mail_domains['all'] . $globals->mail->domain; + $mail_domains[] = User::$sub_mail_domains['all'] . $globals->mail->domain2; + $page->assign('main_email_domain', $user->mainEmailDomain()); + $page->assign('mail_domains', $mail_domains); } function handler_alias($page, $action = null, $value = null) @@ -120,22 +126,20 @@ class EmailModule extends PLModule if ($action == 'delete') { S::assert_xsrf_token(); - XDB::execute('DELETE s - FROM email_source_account AS s - INNER JOIN email_virtual_domains AS d ON (s.domain = d.id) - WHERE s.uid = {?} AND d.name = {?}', - $user->id(), $globals->mail->alias_dom); + XDB::execute('DELETE FROM email_source_account + WHERE uid = {?} AND type = \'alias_aux\'', + $user->id()); require_once 'emails.inc.php'; fix_bestalias($user); } - // Fetch existing @alias_dom aliases. + // Fetch existing auxiliary aliases. list($alias, $old_alias) = XDB::fetchOneRow('SELECT CONCAT(s.email, \'@\', d.name), s.email FROM email_source_account AS s INNER JOIN email_virtual_domains AS d ON (s.domain = d.id) - WHERE s.uid = {?} AND d.name = {?}', - $user->id(), $globals->mail->alias_dom); + WHERE s.uid = {?} AND s.type = \'alias_aux\'', + $user->id()); $visibility = $user->hasProfile() && ($user->profile(true)->alias_pub == 'public'); $page->assign('current', $alias); $page->assign('user', $user); @@ -164,11 +168,10 @@ class EmailModule extends PLModule return; } else { // Checks if the alias has already been given. - $res = XDB::query('SELECT COUNT(s.email) - FROM email_source_account AS s - INNER JOIN email_virtual_domains AS d ON (s.domain = d.id) - WHERE s.email = {?} AND d.name = {?}', - $new_alias, $globals->mail->alias_dom); + $res = XDB::query('SELECT COUNT(email) + FROM email_source_account + WHERE email = {?} AND type = \'alias_aux\'', + $new_alias); if ($res->fetchOneCell() > 0) { $page->trigError("L'alias $new_alias a déja été attribué. Tu ne peux donc pas l'obtenir."); return; @@ -284,8 +287,8 @@ class EmailModule extends PLModule INNER JOIN email_virtual_domains AS m ON (s.domain = m.id) INNER JOIN email_virtual_domains AS d ON (m.id = d.aliasing) WHERE s.uid = {?} - ORDER BY NOT (m.name = {?}), s.email, d.name', - $user->id(), $globals->mail->alias_dom); + ORDER BY NOT(s.type = \'alias_aux\'), s.email, d.name', + $user->id()); $page->assign('alias', $alias->fetchAllAssoc()); $page->assign('emails', $redirect->emails); @@ -647,11 +650,8 @@ class EmailModule extends PLModule S::assert_xsrf_token(); $email = Post::t('email'); - list(, $domain) = explode('@', $email); - $domain = strtolower($domain); - if ($domain == $globals->mail->alias_dom || $domain == $globals->mail->alias_dom2 - || $domain == $globals->mail->domain || $domain == $globals->mail->domain2) { + if (!User::isForeignEmailAddress($email)) { $page->assign('neuneu', true); } else { $user = mark_broken_email($email); @@ -826,7 +826,7 @@ class EmailModule extends PLModule if ($user = mark_broken_email($email, true)) { if ($user['nb_mails'] > 0) { $mail = new PlMailer('emails/broken.mail.tpl'); - $mail->addTo('"' . $user['full_name'] . '" <' . $user['alias'] . '@' . Platal::globals()->mail->domain . '>'); + $mail->addTo($user); $mail->assign('user', $user); $mail->assign('email', $email); $mail->send();