Fix HTTP redirect when changing rights on polytechnique.net and Referer header is...
[platal.git] / modules / xnetgrp.php
index 9bebe87..53ebb12 100644 (file)
@@ -498,8 +498,8 @@ class XnetGrpModule extends PLModule
             $users = array_keys(Env::v('add_users'));
             $former_users = XDB::fetchColumn('SELECT  uid
                                                 FROM  group_former_members
-                                               WHERE  remember = TRUE AND uid IN {?}',
-                                             $users);
+                                               WHERE  remember = TRUE AND asso_id = {?} AND uid IN {?}',
+                                             $globals->asso('id'), $users);
             $new_users = array_diff($users, $former_users);
 
             foreach ($former_users as $uid) {
@@ -514,10 +514,8 @@ class XnetGrpModule extends PLModule
 
             $data = array();
             foreach ($new_users as $uid) {
-                $data[] = XDB::format('({?}, {?})', $globals->asso('id'), $uid);
+                Group::subscribe($globals->asso('id'), $uid);
             }
-            XDB::rawExecute('INSERT INTO  group_members (asso_id, uid)
-                                  VALUES  ' . implode(',', $data));
         }
 
         if (Env::has('add_nonusers')) {
@@ -552,9 +550,7 @@ class XnetGrpModule extends PLModule
                                    VALUES  ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, \'xnet\', \'disabled\')',
                              $hruid, $display_name, $full_name, $directory_name, $sort_name, $firstname, $lastname, $email);
                 $uid = XDB::insertId();
-                XDB::execute('INSERT INTO  group_members (asso_id, uid)
-                                   VALUES  ({?}, {?})',
-                             $globals->asso('id'), $uid);
+                Group::subscribe($globals->asso('id'), $uid);
             }
         }
 
@@ -729,7 +725,7 @@ class XnetGrpModule extends PLModule
         $this->removeSubscriptionRequest($user->id());
         Group::subscribe($globals->asso('id'), $user->id());
 
-        if (XDB::affectedRows() == 1) {
+        if (XDB::affectedRows() == 1 && $user->forlifeEmail()) {
             $mailer = new PlMailer();
             $mailer->addTo($user->forlifeEmail());
             $mailer->setFrom('"' . S::user()->fullName() . '" <' . S::user()->forlifeEmail() . '>');
@@ -792,12 +788,14 @@ class XnetGrpModule extends PLModule
                 S::assert_xsrf_token();
 
                 $this->removeSubscriptionRequest($user->id());
-                $mailer = new PlMailer();
-                $mailer->addTo($user->forlifeEmail());
-                $mailer->setFrom('"' . S::user()->fullName() . '" <' . S::user()->forlifeEmail() . '>');
-                $mailer->setSubject('['.$globals->asso('nom').'] Demande d\'inscription annulée');
-                $mailer->setTxtBody(Env::v('motif'));
-                $mailer->send();
+                if ($user->forlifeEmail()) {
+                    $mailer = new PlMailer();
+                    $mailer->addTo($user->forlifeEmail());
+                    $mailer->setFrom('"' . S::user()->fullName() . '" <' . S::user()->forlifeEmail() . '>');
+                    $mailer->setSubject('['.$globals->asso('nom').'] Demande d\'inscription annulée');
+                    $mailer->setTxtBody(Env::v('motif'));
+                    $mailer->send();
+                }
                 $page->killSuccess("La demande de {$user->fullName()} a bien été refusée.");
             } else {
                 $page->assign('show_form', true);
@@ -922,7 +920,11 @@ class XnetGrpModule extends PLModule
                 break;
             }
         }
-        http_redirect($_SERVER['HTTP_REFERER']);
+        if (!empty($_SERVER['HTTP_REFERER'])) {
+            http_redirect($_SERVER['HTTP_REFERER']);
+        } else {
+            pl_redirect('');
+        }
     }
 
     function handler_admin_annuaire($page)
@@ -1083,7 +1085,7 @@ class XnetGrpModule extends PLModule
 
             Group::subscribe($globals->asso('id'), $user->id());
             $this->removeSubscriptionRequest($user->id());
-            if ($user->isActive()) {
+            if ($user->isActive() && $user->bestEmail()) {
                 $mailer = new PlMailer('xnetgrp/forced-subscription.mail.tpl');
                 $mailer->addTo($user->bestEmail());
                 $mailer->assign('group', $globals->asso('nom'));
@@ -1224,6 +1226,11 @@ class XnetGrpModule extends PLModule
             $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;
@@ -1781,5 +1788,5 @@ class XnetGrpModule extends PLModule
     }
 }
 
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
 ?>