}
}
if ($update_new) {
- XDB::execute("DELETE FROM aliases
- WHERE FIND_IN_SET('usage', flags) AND uid = {?}",
- $uid);
+ XDB::execute('DELETE s
+ FROM email_source_account AS s
+ INNER JOIN email_virtual_domains AS d ON (s.domain = d.id)
+ WHERE FIND_IN_SET(\'usage\', s.flags) AND s.uid = {?} AND d.name = {?}',
+ $uid, Platal::globals()->mail->domain);
}
if ($new_alias) {
- XDB::execute("INSERT INTO aliases (alias, type, flags, uid)
- VALUES ({?}, 'alias', 'usage', {?})",
- $new_alias, $uid);
+ XDB::execute('INSERT INTO email_source_account (email, uid, type, flags, domain)
+ SELECT {?}, {?}, \'alias\', \'usage\', id
+ FROM email_virtual_domains
+ WHERE name = {?}',
+ $new_alias, $uid, Platal::globals()->mail->domain);
}
Profile::rebuildSearchTokens($pid, false);
return $has_new;
}
if (!is_null($this->profileOwner)) {
- $res = XDB::query("SELECT alias
- FROM aliases
- WHERE uid = {?} AND type = 'alias' AND FIND_IN_SET('usage', flags)",
- $this->profileOwner->id());
- $this->old_alias = $res->fetchOneCell();
+ $this->old_alias = XDB::fetchOneCell('SELECT s.email
+ FROM email_source_account AS s
+ INNER JOIN email_virtual_domains AS d ON (s.domain = d.id)
+ WHERE s.uid = {?} AND s.type = \'alias\' AND FIND_IN_SET(\'usage\', s.flags) AND d.name = {?}',
+ $this->profileOwner->id(), Platal::globals()->mail->domain);
if ($this->old_alias != $this->new_alias) {
- $res = XDB::query("SELECT uid
- FROM aliases
- WHERE alias = {?}",
- $this->new_alias);
- if ($res->fetchOneCell()) {
+ $used = XDB::fetchOneCell('SELECT COUNT(s.*)
+ FROM email_source_account AS s
+ INNER JOIN email_virtual_domains AS d ON (s.domain = d.id)
+ WHERE s.email = {?} AND d.name = {?}',
+ $this->new_alias, Platal::globals()->mail->domain);
+ if ($used) {
$this->new_alias = null;
}
}
$res = XDB::query("SELECT pnl.name AS nom, pnu.name AS nom_usage, pnf.name AS prenom,
p.sex = 'female' AS femme, p.deathdate IS NOT NULL AS decede,
- p.birthdate, pd.promo, CONCAT(a.alias, '@m4x.org') AS mail
+ p.birthdate, pd.promo, CONCAT(e.email, '@', d.name) AS mail
FROM profiles AS p
INNER JOIN account_profiles AS ap ON (p.pid = ap.pid AND FIND_IN_SET('owner', perms)
- INNER JOIN aliases AS a ON (a.uid = ap.uid)
+ INNER JOIN email_source_account AS s ON (s.uid = ap.uid AND FIND_IN_SET('bestalias', s.flags))
+ INNER JOIN email_virtual_domains AS d ON (s.domain = s.id)
INNER JOIN profile_display AS pd PN (p.pid = pd.pid)
INNER JOIN profile_name AS pnl ON (p.pid = pnl.pid AND pnl.typeid = {?})
INNER JOIN profile_name AS pnf ON (p.pid = pnf.pid AND pnf.typeid = {?})
} else if (isset($personnal_data[$val])) {
$params .= gpex_prepare_param($val, $personnal_data[$val], $tohash, $charset);
} else if ($val == 'username') {
- $res = XDB::query("SELECT alias
- FROM aliases
- WHERE uid = {?} AND FIND_IN_SET('bestalias', flags)",
- S::i('uid'));
- $min_username = $res->fetchOneCell();
+ $min_username = $XDB::fetchOneCell('SELECT email
+ FROM email_source_account
+ WHERE uid = {?} FIND_IN_SET(\'bestalias\', flags)',
+ S::i('uid'));
$params .= gpex_prepare_param($val, $min_username, $tohash, $charset);
} else if ($val == 'grpauth') {
if (isset($_GET['group'])) {
# FIXME: this code is not multi-domain compatible. We should decide how
# carva will extend to users not in the main domain.
- $res = XDB::query("SELECT alias
- FROM aliases
- WHERE uid = {?} AND FIND_IN_SET('bestalias', flags)",
- S::user()->id());
- $page->assign('bestalias', $res->fetchOneCell());
+ $best = XDB::fetchOneCell('SELECT email
+ FROM email_source_account
+ WHERE uid = {?} AND FIND_IN_SET(\'bestalias\', flags)',
+ S::user()->id());
+ $page->assign('bestalias', $best);
}
function handler_prefs_rss($page)
return;
}
- $res = XDB::query("SELECT COUNT(*)
- FROM emails
- WHERE uid = {?} AND flags != 'panne' AND flags != 'filter'", $user->id());
- $count = intval($res->fetchOneCell());
- if ($count == 0) {
+ if ($user->lost) {
$page->assign('no_addr', true);
return;
}
$page->assign('ok', true);
- $url = rand_url_id();
+ $url = rand_url_id();
XDB::execute('INSERT INTO account_lost_passwords (certificat,uid,created)
VALUES ({?},{?},NOW())', $url, $user->id());
- $res = XDB::query('SELECT email
- FROM emails
- WHERE uid = {?} AND email = {?}',
- $user->id(), Post::v('email'));
- if ($res->numRows()) {
- $mails = $res->fetchOneCell();
- } else {
- $res = XDB::query("SELECT email
- FROM emails
- WHERE uid = {?} AND NOT FIND_IN_SET('filter', flags)", $user->id());
- $mails = implode(', ', $res->fetchColumn());
+ $to = XDB::fetchOneCell('SELECT redirect
+ FROM email_redirect_account
+ WHERE uid = {?} AND redirect = {?}',
+ $user->id(), Post::t('email'));
+ if (is_null($to)) {
+ $emails = XDB::fetchColumn('SELECT redirect
+ FROM email_redirect_account
+ WHERE uid = {?} AND flags = \'inactive\' AND type = \'smtp\'',
+ $user->id());
+ $inactives_to = implode(', ', $emails);
}
$mymail = new PlMailer();
$mymail->setFrom('"Gestion des mots de passe" <support+password@' . $globals->mail->domain . '>');
- $mymail->addTo($mails);
+ if (is_null($to)) {
+ $mymail->addTo($user);
+ $mymail->addTo($inactives_to);
+ } else {
+ $mymail->addTo($to);
+ }
$mymail->setSubject("Ton certificat d'authentification");
$mymail->setTxtBody("Visite la page suivante qui expire dans six heures :
{$globals->baseurl}/tmpPWD/$url
XDB::execute("UPDATE profiles
SET birthdate = {?}, last_change = NOW()
WHERE pid = {?}", $birthdate, $pid);
- XDB::execute("INSERT INTO aliases (uid, alias, type)
- VALUES ({?}, {?}, 'a_vie')", $uid, $forlife);
- XDB::execute("INSERT INTO aliases (uid, alias, type, flags)
- VALUES ({?}, {?}, 'alias', 'bestalias')", $uid, $bestalias);
+ XDB::execute('INSERT INTO email_source_account (email, uid, type, flags, domain)
+ SELECT {?}, {?}, \'forlife\', \'\', id
+ FROM email_virtual_domains
+ WHERE name = {?}',
+ $forlife, $uid, $globals->mail->domain);
+ XDB::execute('INSERT INTO email_source_account (email, uid, type, flags, domain)
+ SELECT {?}, {?}, \'alias\', \'bestalias\', id
+ FROM email_virtual_domains
+ WHERE name = {?}',
+ $bestalias, $uid, $globals->mail->domain);
if ($emailXorg2) {
- XDB::execute("INSERT INTO aliases (uid, alias, type)
- VALUES ({?}, {?}, 'alias')", $uid, $emailXorg2);
+ XDB::execute('INSERT INTO email_source_account (email, uid, type, flags, domain)
+ SELECT {?}, {?}, \'alias\', \'\', id
+ FROM email_virtual_domains
+ WHERE name = {?}',
+ $emailXorg2, $uid, $globals->mail->domain);
}
XDB::commit();