define('ERROR_INVALID_EMAIL', 3);
define('ERROR_LOOP_EMAIL', 4);
-function add_to_list_alias(User $user, $local_part, $domain)
+function add_to_list_alias(User $user, $local_part, $domain, $type = 'user')
{
Platal::assert($user !== null);
$local_part, $user->forlifeEmail(), $type, $domain);
}
-function delete_from_list_alias(User $user, $local_part, $domain)
+function delete_from_list_alias(User $user, $local_part, $domain, $type = 'user')
{
Platal::assert($user !== null);
$local_part, $domain, $user->forlifeEmail(), $type);
}
+function update_list_alias(User $user, $former_email, $local_part, $domain, $type = 'user')
+{
+ Platal::assert($user !== null);
+
+ XDB::execute('UPDATE email_virtual AS v
+ INNER JOIN email_virtual_domains AS d ON (v.domain = d.id)
+ SET v.redirect = {?}
+ WHERE v.redirect = {?} AND d.name = {?} AND v.email = {?} AND v.type = {?}',
+ $user->forlifeEmail(), $former_email, $domain, $local_part, $type);
+}
+
function list_alias_members($local_part, $domain)
{
$emails = XDB::fetchColumn('SELECT DISTINCT(redirect)
WHERE redirect = {?}', $email);
} elseif ($admin) {
XDB::execute('UPDATE email_redirect_account
- SET last = CURDATE(), broken_level = IF(broken_level > 1, 3, 2)
+ SET last = CURDATE(), broken_level = broken_level + 1
WHERE redirect = {?} AND DATE_ADD(last, INTERVAL 14 DAY) < CURDATE()',
$email);
} else {
{
$count = XDB::fetchOneCell('SELECT COUNT(*)
FROM email_source_account
- WHERE uid = {?} AND FIND_IN_SET(\'bestalias\', flags)',
+ WHERE uid = {?} AND FIND_IN_SET(\'bestalias\', flags) AND expire IS NULL',
$user->id());
if ($count == 1) {
// related to a usage name and contains a '.'.
XDB::execute("UPDATE email_source_account
SET flags = CONCAT_WS(',', IF(flags = '', NULL, flags), 'bestalias')
- WHERE uid = {?}
+ WHERE uid = {?} AND expire IS NULL
ORDER BY NOT FIND_IN_SET('usage', flags), email LIKE '%.%', LENGTH(email)
LIMIT 1",
$user->id());