define('ERROR_INVALID_EMAIL', 3);
define('ERROR_LOOP_EMAIL', 4);
-function add_to_list_alias(User $user, $local_part, $domain, $type = 'alias')
+function format_email_alias($email)
{
- Platal::assert($user !== null, 'User should not be null.');
+ if ($user = User::getSilent($email)) {
+ return $user->forlifeEmail();
+ }
+ if (isvalid_email($email)) {
+ return $email;
+ }
+ return null;
+}
+
+function add_to_list_alias($email, $local_part, $domain, $type = 'alias')
+{
+ $email = format_email_alias($email);
+ if (is_null($email)) {
+ return false;
+ }
XDB::execute('INSERT IGNORE INTO email_virtual (email, domain, redirect, type)
SELECT {?}, id, {?}, {?}
FROM email_virtual_domains
WHERE name = {?}',
- $local_part, $user->forlifeEmail(), $type, $domain);
+ $local_part, $email, $type, $domain);
+ return true;
}
-function delete_from_list_alias(User $user, $local_part, $domain, $type = 'alias')
+function delete_from_list_alias($email, $local_part, $domain, $type = 'alias')
{
- Platal::assert($user !== null, 'User should not be null.');
+ $email = format_email_alias($email);
+ if (is_null($email)) {
+ return false;
+ }
XDB::execute('DELETE v
FROM email_virtual AS v
INNER JOIN email_virtual_domains AS m ON (v.domain = m.id)
INNER JOIN email_virtual_domains AS d ON (d.aliasing = m.id)
WHERE v.email = {?} AND d.name = {?} AND v.redirect = {?} AND type = {?}',
- $local_part, $domain, $user->forlifeEmail(), $type);
+ $local_part, $domain, $email, $type);
+ return true;
}
-function update_list_alias(User $user, $former_email, $local_part, $domain, $type = 'alias')
+function update_list_alias($email, $former_email, $local_part, $domain, $type = 'alias')
{
- Platal::assert($user !== null, 'User should not be null.');
+ $email = format_email_alias($email);
+ if (is_null($email)) {
+ return false;
+ }
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);
+ $email, $former_email, $domain, $local_part, $type);
+ return true;
}
function list_alias_members($local_part, $domain)
return;
}
- $user = User::getSilentWithUID($uid);
-
/** If $payment is not null, we do not retrieve the value of $participate,
* thus we do not alter participant and absent lists.
*/
if ($payment === true) {
if ($paid > 0) {
- delete_from_list_alias($user, $short_name . $globals->xnet->unpayed_list, $globals->xnet->evts_domain, 'event');
- add_to_list_alias($user, $short_name . $globals->xnet->payed_list, $globals->xnet->evts_domain, 'event');
+ delete_from_list_alias($uid, $short_name . $globals->xnet->unpayed_list, $globals->xnet->evts_domain, 'event');
+ add_to_list_alias($uid, $short_name . $globals->xnet->payed_list, $globals->xnet->evts_domain, 'event');
}
} else {
switch ($participate) {
case -1:
- delete_from_list_alias($user, $short_name . $globals->xnet->participant_list, $globals->xnet->evts_domain, 'event');
- delete_from_list_alias($user, $short_name . $globals->xnet->unpayed_list, $globals->xnet->evts_domain, 'event');
- delete_from_list_alias($user, $short_name . $globals->xnet->payed_list, $globals->xnet->evts_domain, 'event');
- add_to_list_alias($user, $short_name . $globals->xnet->absent_list, $globals->xnet->evts_domain, 'event');
+ delete_from_list_alias($uid, $short_name . $globals->xnet->participant_list, $globals->xnet->evts_domain, 'event');
+ delete_from_list_alias($uid, $short_name . $globals->xnet->unpayed_list, $globals->xnet->evts_domain, 'event');
+ delete_from_list_alias($uid, $short_name . $globals->xnet->payed_list, $globals->xnet->evts_domain, 'event');
+ add_to_list_alias($uid, $short_name . $globals->xnet->absent_list, $globals->xnet->evts_domain, 'event');
break;
case 0:
- delete_from_list_alias($user, $short_name . $globals->xnet->participant_list, $globals->xnet->evts_domain, 'event');
- delete_from_list_alias($user, $short_name . $globals->xnet->absent_list, $globals->xnet->evts_domain, 'event');
- delete_from_list_alias($user, $short_name . $globals->xnet->unpayed_list, $globals->xnet->evts_domain, 'event');
- delete_from_list_alias($user, $short_name . $globals->xnet->payed_list, $globals->xnet->evts_domain, 'event');
+ delete_from_list_alias($uid, $short_name . $globals->xnet->participant_list, $globals->xnet->evts_domain, 'event');
+ delete_from_list_alias($uid, $short_name . $globals->xnet->absent_list, $globals->xnet->evts_domain, 'event');
+ delete_from_list_alias($uid, $short_name . $globals->xnet->unpayed_list, $globals->xnet->evts_domain, 'event');
+ delete_from_list_alias($uid, $short_name . $globals->xnet->payed_list, $globals->xnet->evts_domain, 'event');
break;
case 1:
- add_to_list_alias($user, $short_name . $globals->xnet->participant_list, $globals->xnet->evts_domain, 'event');
- delete_from_list_alias($user, $short_name . $globals->xnet->absent_list, $globals->xnet->evts_domain, 'event');
+ add_to_list_alias($uid, $short_name . $globals->xnet->participant_list, $globals->xnet->evts_domain, 'event');
+ delete_from_list_alias($uid, $short_name . $globals->xnet->absent_list, $globals->xnet->evts_domain, 'event');
if ($paid > 0) {
- delete_from_list_alias($user, $short_name . $globals->xnet->unpayed_list, $globals->xnet->evts_domain, 'event');
- add_to_list_alias($user, $short_name . $globals->xnet->payed_list, $globals->xnet->evts_domain, 'event');
+ delete_from_list_alias($uid, $short_name . $globals->xnet->unpayed_list, $globals->xnet->evts_domain, 'event');
+ add_to_list_alias($uid, $short_name . $globals->xnet->payed_list, $globals->xnet->evts_domain, 'event');
} else {
- add_to_list_alias($user, $short_name . $globals->xnet->unpayed_list, $globals->xnet->evts_domain, 'event');
- delete_from_list_alias($user, $short_name . $globals->xnet->payed_list, $globals->xnet->evts_domain, 'event');
+ add_to_list_alias($uid, $short_name . $globals->xnet->unpayed_list, $globals->xnet->evts_domain, 'event');
+ delete_from_list_alias($uid, $short_name . $globals->xnet->payed_list, $globals->xnet->evts_domain, 'event');
}
break;
}
FROM group_event_participants
WHERE eid = {?} AND ' . $where[$suffix],
$eid);
- $users = User::getBulkUsersWithUIDs($uids, null, null, false);
- foreach ($users as $user) {
- add_to_list_alias($user, $new . $suffix, $globals->xnet->evts_domain, 'event');
+ foreach ($uids as $uid) {
+ add_to_list_alias($uid, $new . $suffix, $globals->xnet->evts_domain, 'event');
}
}
$uids = XDB::fetchColumn('SELECT m.uid
LEFT JOIN group_event_participants AS e ON (e.uid = m.uid AND e.eid = {?})
WHERE m.asso_id = {?} AND e.uid IS NULL',
$eid, $globals->asso('id'));
- $users = User::getBulkUsersWithUIDs($uids, null, null, false);
- foreach ($users as $user) {
- add_to_list_alias($user, $new . $globals->xnet->absent_list, $globals->xnet->evts_domain, 'event');
+ foreach ($uids as $uid) {
+ add_to_list_alias($uid, $new . $globals->xnet->absent_list, $globals->xnet->evts_domain, 'event');
}
return $new;
foreach (Env::v('ml3', array()) as $ml => $state) {
require_once 'emails.inc.php';
$ask = !empty($_REQUEST['ml4'][$ml]);
+ list($local_part, ) = explode('@', $ml);
if($state == $ask) {
if ($state && $email_changed) {
- update_list_alias($user, $from_email, $ml, $globals->asso('mail_domain'));
+ update_list_alias($user->id(), $from_email, $local_part, $globals->asso('mail_domain'));
$page->trigSuccess("L'abonnement de {$user->fullName()} à $ml a été mis à jour.");
}
} else if($ask) {
- add_to_list_alias($user, $ml, $globals->asso('mail_domain'));
+ add_to_list_alias($user->id(), $local_part, $globals->asso('mail_domain'));
$page->trigSuccess("{$user->fullName()} a été abonné à $ml.");
} else {
- delete_from_list_alias($user, $ml, $globals->asso('mail_domain'));
+ delete_from_list_alias($user->id(), $local_part, $globals->asso('mail_domain'));
$page->trigSuccess("{$user->fullName()} a été désabonné de $ml.");
}
}
if (Env::has('add_member')) {
S::assert_xsrf_token();
- $email = Env::t('add_member');
- $user = User::getSilent($email);
- if ($user) {
- add_to_list_alias($user, $local_part, $domain);
- $page->trigSuccess($email . ' ajouté.');
+ if (add_to_list_alias(Env::t('add_member'), $local_part, $domain)) {
+ $page->trigSuccess('Ajout réussit.');
} else {
- $page->trigError($email . " n'existe pas.");
+ $page->trigError('Ajout infructueux.');
}
}
if (Env::has('del_member')) {
S::assert_xsrf_token();
- $user = User::getSilent(Env::t('del_member'));
- delete_from_list_alias($user, $local_part, $domain);
- $page->trigSuccess($user->fullName() . ' supprimé.');
+ if (delete_from_list_alias(Env::t('del_member'), $local_part, $domain)) {
+ $page->trigSuccess('Suppression réussie.');
+ } else {
+ $page->trigError('Suppression infructueuse.');
+ }
}
$page->assign('members', list_alias_members($local_part, $domain));
return;
}
- add_to_list_alias(S::user(), $list, $globals->asso('mail_domain'));
+ add_to_list_alias(S::uid(), $list, $globals->asso('mail_domain'));
pl_redirect('alias/admin/' . $list . '@' . $globals->asso('mail_domain'));
}