- // Checks if $login is a valid alias on the main domains.
- list($mbox, $fqdn) = explode('@', $login);
- if ($fqdn == $globals->mail->domain || $fqdn == $globals->mail->domain2) {
- $res = XDB::query('SELECT a.uid
- FROM accounts AS a
- INNER JOIN aliases AS al ON (al.uid = a.uid AND al.type IN (\'alias\', \'a_vie\'))
- WHERE al.alias = {?}', $mbox);
- if ($res->numRows()) {
- return $res->fetchOneCell();
- }
-
- if (preg_match('/^(.*)\.([0-9]{4})$/u', $mbox, $matches)) {
- $res = XDB::query('SELECT a.uid
- FROM accounts AS a
- INNER JOIN aliases AS al ON (al.uid = a.uid AND al.type IN (\'alias\', \'a_vie\'))
- INNER JOIN account_profiles AS ap ON (a.uid = ap.uid AND FIND_IN_SET(\'owner\', ap.perms))
- INNER JOIN profiles AS p ON (p.pid = ap.pid)
- INNER JOIN profile_education AS pe ON (p.pid = pe.pid AND FIND_IN_SET(\'primary\', pe.flags))
- WHERE p.hrpid = {?} OR ((pe.entry_year <= {?} AND pe.grad_year >= {?}) AND al.alias = {?})
- GROUP BY a.uid',
- $matches[0], $matches[2], $matches[2], $matches[1]);
- if ($res->numRows() == 1) {
- return $res->fetchOneCell();
- }
- }
-
- throw new UserNotFoundException();
- }
-
- // Looks for $login as an email alias from the dedicated alias domain.
- if ($fqdn == $globals->mail->alias_dom || $fqdn == $globals->mail->alias_dom2) {
- $res = XDB::query("SELECT redirect
- FROM virtual_redirect
- INNER JOIN virtual USING(vid)
- WHERE alias = {?}", $mbox . '@' . $globals->mail->alias_dom);
- if ($redir = $res->fetchOneCell()) {
- // We now have a valid alias, which has to be translated to an hruid.
- list($alias, $alias_fqdn) = explode('@', $redir);
- $res = XDB::query("SELECT a.uid
- FROM accounts AS a
- LEFT JOIN aliases AS al ON (al.uid = a.uid AND al.type IN ('alias', 'a_vie'))
- WHERE al.alias = {?}", $alias);
- if ($res->numRows()) {
- return $res->fetchOneCell();
- }
- }
-
- throw new UserNotFoundException();