Lists non-X accounts awaiting validation and allows to contact them again (Closes...
authorStéphane Jacob <sj@m4x.org>
Mon, 9 Apr 2012 20:23:28 +0000 (22:23 +0200)
committerStéphane Jacob <sj@m4x.org>
Mon, 9 Apr 2012 20:23:28 +0000 (22:23 +0200)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
ChangeLog
modules/xnetgrp.php
templates/xnetgrp/annuaire.tpl

index 76c6dbe..1fef152 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -27,6 +27,7 @@ Bug/Wish:
         - #1603: Fixes Xnet events edition for users without profile       -JAC
 
     * XnetGrp:
+        - #1596, #1598: Lists non-X accounts awaiting validation           -JAC
         - #1609: Adds link to account on Xnet account validation           -JAC
 
     * XnetNl:
index 4fccb1b..e0ea0d4 100644 (file)
@@ -38,6 +38,7 @@ class XnetGrpModule extends PLModule
             '%grp/annuaire/csv'    => $this->make_hook('csv',                   AUTH_PASSWD, 'groupmember:groupannu'),
             '%grp/directory/sync'  => $this->make_hook('directory_sync',        AUTH_PASSWD, 'groupadmin'),
             '%grp/directory/unact' => $this->make_hook('non_active',            AUTH_PASSWD, 'groupadmin'),
+            '%grp/directory/awact' => $this->make_hook('awaiting_active',       AUTH_PASSWD, 'groupadmin'),
             '%grp/trombi'          => $this->make_hook('trombi',                AUTH_PASSWD, 'groupannu'),
             '%grp/geoloc'          => $this->make_hook('geoloc',                AUTH_PASSWD, 'groupannu'),
             '%grp/subscribe'       => $this->make_hook('subscribe',             AUTH_PASSWD, 'groups'),
@@ -631,6 +632,60 @@ class XnetGrpModule extends PLModule
         $page->assign('users', $users);
     }
 
+    private function again($uid)
+    {
+        $data = XDB::fetchOneAssoc('SELECT  hash, group_name, sender_name, email
+                                      FROM  register_pending_xnet
+                                     WHERE  uid = {?}',
+                                   $uid);
+
+        $mailer = new PlMailer('xnet/account.mail.tpl');
+        $mailer->addCc('validation+xnet_account@polytechnique.org');
+        $mailer->setTo($data['email']);
+        $mailer->assign('hash', $data['hash']);
+        $mailer->assign('email', $data['email']);
+        $mailer->assign('group', $data['group_name']);
+        $mailer->assign('sender_name', $data['sender_name']);
+        $mailer->assign('again', true);
+        $mailer->assign('baseurl', Platal::globals()->xnet->xorg_baseurl);
+        $mailer->send();
+    }
+
+    function handler_awaiting_active($page)
+    {
+        global $globals;
+        $page->changeTpl('xnetgrp/awaiting_active.tpl');
+
+        XDB::execute('DELETE FROM  register_pending_xnet
+                            WHERE  DATE_SUB(NOW(), INTERVAL 1 MONTH) > date');
+
+        $uids = XDB::fetchColumn('SELECT  g.uid
+                                    FROM  group_members         AS g
+                              INNER JOIN  accounts              AS a ON (a.uid = g.uid)
+                              INNER JOIN  register_pending_xnet AS p ON (p.uid = g.uid)
+                                   WHERE  a.uid = g.uid AND g.asso_id = {?} AND a.type = \'xnet\' AND a.state = \'pending\'',
+                                 $globals->asso('id'));
+
+        if (Post::has('again')) {
+            S::assert_xsrf_token();
+
+            $uids_to_again = array_intersect(array_keys(Post::v('again')), $uids);
+            foreach ($uids_to_again as $uid) {
+                $this->again($uid);
+            }
+            $page->trigSuccess('Relances effectuées avec succès.');
+        }
+
+        $registration_date = XDB::fetchAllAssoc('uid', 'SELECT  uid, date
+                                                          FROM  register_pending_xnet
+                                                         WHERE  uid IN {?}', $uids);
+
+        $users = User::getBulkUsersWithUIDs($uids);
+        $page->assign('users', $users);
+        $page->assign('registration_date', $registration_date);
+
+    }
+
     private function removeSubscriptionRequest($uid)
     {
         global $globals;
@@ -1333,21 +1388,7 @@ class XnetGrpModule extends PLModule
                     $page->trigSuccess('Le compte va bientôt être activé.');
                 }
                 if (Post::b('again')) {
-                    $data = XDB::fetchOneAssoc('SELECT  hash, group_name, sender_name, email
-                                                  FROM  register_pending_xnet
-                                                 WHERE  uid = {?}',
-                                               $user->id());
-
-                    $mailer = new PlMailer('xnet/account.mail.tpl');
-                    $mailer->addCc('validation+xnet_account@polytechnique.org');
-                    $mailer->setTo($data['email']);
-                    $mailer->assign('hash', $data['hash']);
-                    $mailer->assign('email', $data['email']);
-                    $mailer->assign('group', $data['group_name']);
-                    $mailer->assign('sender_name', $data['sender_name']);
-                    $mailer->assign('again', true);
-                    $mailer->assign('baseurl', Platal::globals()->xnet->xorg_baseurl);
-                    $mailer->send();
+                    $this->again($user->id());
                     $page->trigSuccess('Relance effectuée avec succès.');
                 }
             }
index ae775e3..e4200ed 100644 (file)
@@ -46,6 +46,12 @@ Le groupe {$asso->nom} compte {$plset_total_count} membres&nbsp;:
       Lister les membres du groupe sans compte actif
     </a>
   </li>
+  <li>
+    <a href="{$platal->ns}directory/awact">
+      {icon name=group_gear title="Lister les membres du groupe ayant un compte en attente d'activation"}
+      Lister les membres du groupe ayant un compte en attente d'activation
+    </a>
+  </li>
   {if $asso->has_ml}
   <li>
     <a href="{$platal->ns}admin/annuaire">