From: Stéphane Jacob Date: Fri, 4 Mar 2011 15:05:08 +0000 (+0100) Subject: Introduces email type alias_aux for emails in auxiliary domains. X-Git-Tag: xorg/1.1.0~72 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=08d33afc257745d9c98b8eabb39c289e1605b0b0;p=platal.git Introduces email type alias_aux for emails in auxiliary domains. Signed-off-by: Stéphane Jacob --- diff --git a/classes/user.php b/classes/user.php index 1735ebf..8b4160b 100644 --- a/classes/user.php +++ b/classes/user.php @@ -338,7 +338,7 @@ class User extends PlUser $this->id(), $profile->id()); } - /** Fetch existing @alias_dom alias. + /** Fetch existing auxiliary alias. */ public function emailAlias() { @@ -349,7 +349,7 @@ class User extends PlUser return null; } - /** Fetch existing @alias_dom aliases. + /** Fetch existing auxiliary aliases. */ public function emailAliases() { @@ -357,9 +357,9 @@ class User extends PlUser FROM email_source_account AS s INNER JOIN email_virtual_domains AS m ON (s.domain = m.id) INNER JOIN email_virtual_domains AS d ON (d.aliasing = m.id) - WHERE s.uid = {?} AND m.name = {?} + WHERE s.uid = {?} AND s.type = \'alias_aux\' ORDER BY d.name', - $this->id(), Platal::globals()->mail->alias_dom); + $this->id()); } /** Get all group aliases the user belongs to. diff --git a/classes/xorgsession.php b/classes/xorgsession.php index 8578a61..d9ede7c 100644 --- a/classes/xorgsession.php +++ b/classes/xorgsession.php @@ -145,10 +145,9 @@ class XorgSession extends PlSession $uname = Post::v('username'); if (Post::s('domain') == "alias") { $login = XDB::fetchOneCell('SELECT uid - FROM email_source_account AS e - INNER JOIN email_virtual_domains AS d ON (e.domain = d.id) - WHERE e.email = {?} AND d.name = {?}', - $uname, Platal::globals()->mail->alias_dom); + FROM email_source_account + WHERE email = {?} AND type = \'alias_aux\'', + $uname); $loginType = 'uid'; } else if (Post::s('domain') == "ax") { $login = $uname; diff --git a/include/validations/aliases.inc.php b/include/validations/aliases.inc.php index 2cf9509..4dabe8d 100644 --- a/include/validations/aliases.inc.php +++ b/include/validations/aliases.inc.php @@ -79,8 +79,6 @@ class AliasReq extends Validate // function commit() {{{2 public function commit() { - global $globals; - if ($this->user->hasProfile()) { XDB::execute('UPDATE profiles SET alias_pub = {?} @@ -89,17 +87,16 @@ class AliasReq extends Validate } if ($this->old) { - $success = XDB::execute('UPDATE email_source_account AS s - INNER JOIN email_virtual_domains AS d ON (s.domain = d.id) - SET s.email = {?} - WHERE s.uid = {?} AND d.name = {?}', - $this->alias, $this->user->id(), $globals->mail->alias_dom); + $success = XDB::execute('UPDATE email_source_account + SET email = {?} + WHERE uid = {?} AND type = \'alias_aux\'', + $this->alias, $this->user->id()); } else { $success = XDB::execute('INSERT INTO email_source_account (email, uid, domain, type, flags) - SELECT {?}, {?}, id, \'alias\', \'\' + SELECT {?}, {?}, id, \'alias_aux\', \'\' FROM email_virtual_domains WHERE name = {?}', - $this->alias, $this->user->id(), $globals->mail->alias_dom); + $this->alias, $this->user->id(), Platal::globals()->mail->alias_dom); } return $success; diff --git a/modules/admin.php b/modules/admin.php index c533a6c..5dc2859 100644 --- a/modules/admin.php +++ b/modules/admin.php @@ -622,7 +622,7 @@ class AdminModule extends PLModule } } elseif ($domain == $globals->mail->domain || $domain == $globals->mail->domain2) { XDB::execute('INSERT INTO email_source_account (email, uid, domain, type, flags) - SELECT {?}, {?}, id, \'alias\', \'\' + SELECT {?}, {?}, id, \'alias_aux\', \'\' FROM email_virtual_domains WHERE name = {?}', $alias, $user->id(), $globals->mail->alias_dom); @@ -709,12 +709,12 @@ class AdminModule 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); $page->assign('account_types', XDB::iterator('SELECT * FROM account_types ORDER BY type')); $page->assign('skins', XDB::iterator('SELECT id, name FROM skins ORDER BY name')); diff --git a/modules/email.php b/modules/email.php index e080e48..d59ee1d 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); @@ -120,22 +119,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 +161,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 +280,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); diff --git a/plugins/insert.getUserName.php b/plugins/insert.getUserName.php index db7c506..e8172fe 100644 --- a/plugins/insert.getUserName.php +++ b/plugins/insert.getUserName.php @@ -21,8 +21,6 @@ function smarty_insert_getUsername() { - global $globals; - $id = Cookie::i('uid', -1); $id = S::v('uid', $id); @@ -32,16 +30,14 @@ function smarty_insert_getUsername() if (Cookie::v('domain', 'login') != 'alias') { return XDB::fetchOneCell('SELECT email - FROM email_source_account AS e - INNER JOIN email_virtual_domains AS d ON (e.domain = d.id) - WHERE e.uid = {?} AND d.name = {?} AND FIND_IN_SET(\'bestalias\', e.flags)', - $id, $globals->mail->domain); + FROM email_source_account + WHERE uid = {?} AND type != \'alias_aux\' AND FIND_IN_SET(\'bestalias\', flags)', + $id); } else { return XDB::fetchOneCell('SELECT email - FROM email_source_account AS e - INNER JOIN email_virtual_domains AS d ON (e.domain = d.id) - WHERE e.uid = {?} AND d.name = {?}', - $id, $globals->mail->alias_dom); + FROM email_source_account + WHERE uid = {?} AND type = \'alias_aux\'', + $id); } return ''; diff --git a/upgrade/1.1.0/01_new_mail_schema.sql b/upgrade/1.1.0/01_new_mail_schema.sql index caca7d2..47bcb54 100644 --- a/upgrade/1.1.0/01_new_mail_schema.sql +++ b/upgrade/1.1.0/01_new_mail_schema.sql @@ -19,7 +19,7 @@ CREATE TABLE email_source_account ( email VARCHAR(255) NOT NULL, domain SMALLINT(3) UNSIGNED NOT NULL DEFAULT 1, uid INT(11) UNSIGNED NOT NULL, - type ENUM('forlife', 'alias') NOT NULL DEFAULT 'forlife', + type ENUM('forlife', 'alias', 'alias_aux') NOT NULL DEFAULT 'forlife', flags SET('bestalias', 'usage', 'marital') NOT NULL DEFAULT '', expire DATE DEFAULT NULL, PRIMARY KEY (email, domain), diff --git a/upgrade/1.1.0/02_new_mail_insertion.sql b/upgrade/1.1.0/02_new_mail_insertion.sql index 2e6353f..5c63181 100644 --- a/upgrade/1.1.0/02_new_mail_insertion.sql +++ b/upgrade/1.1.0/02_new_mail_insertion.sql @@ -46,7 +46,7 @@ INSERT INTO email_source_account (uid, domain, email, type, flags, expire) FROM aliases WHERE type = 'a_vie' OR type = 'alias'; INSERT INTO email_source_account (uid, domain, email, type) - SELECT a.uid, @m_domain_id, SUBSTRING_INDEX(v.alias, '@', 1), 'alias' + SELECT a.uid, @m_domain_id, SUBSTRING_INDEX(v.alias, '@', 1), 'alias_aux' FROM virtual AS v LEFT JOIN virtual_redirect AS vr ON (v.vid = vr.vid) LEFT JOIN accounts AS a ON (a.hruid = LEFT(vr.redirect, LOCATE('@', vr.redirect) - 1))