Exemple #1
0
 function unsubscribe(PlUser $user, $remember = false)
 {
     global $globals;
     Group::unsubscribe($globals->asso('id'), $user->id(), $remember);
     if ($globals->asso('notif_unsub')) {
         $mailer = new PlMailer('xnetgrp/unsubscription-notif.mail.tpl');
         $admins = $globals->asso()->iterToNotify();
         while ($admin = $admins->next()) {
             $mailer->addTo($admin);
         }
         $mailer->assign('group', $globals->asso('nom'));
         $mailer->assign('user', $user);
         $mailer->assign('selfdone', $user->id() == S::i('uid'));
         $mailer->send();
     }
     $nl = Newsletter::forGroup($globals->asso('shortname'));
     if (!is_null($nl)) {
         $nl->unsubscribe(null, S::i('uid'));
     }
     $domain = $globals->asso('mail_domain');
     if (!$domain) {
         return true;
     }
     $mmlist = new MMList(S::user(), $domain);
     $listes = $mmlist->get_lists($user->forlifeEmail());
     $may_update = may_update();
     $warning = false;
     if (is_array($listes)) {
         foreach ($listes as $liste) {
             if ($liste['sub'] == 2) {
                 if ($may_update) {
                     $mmlist->mass_unsubscribe($liste['list'], array($user->forlifeEmail()));
                 } else {
                     $mmlist->unsubscribe($liste['list']);
                 }
             } elseif ($liste['sub']) {
                 Platal::page()->trigWarning($user->fullName() . " a une" . " demande d'inscription en cours sur la" . " liste {$liste['list']}@ !");
                 $warning = true;
             }
         }
     }
     XDB::execute('DELETE  v
                     FROM  email_virtual         AS v
               INNER JOIN  email_virtual_domains AS d ON (v.domain = d.id)
                    WHERE  v.redirect = {?} AND d.name = {?}', $user->forlifeEmail(), $domain);
     return !$warning;
 }