Stores group unsubscriptions.
authorStéphane Jacob <sj@m4x.org>
Fri, 13 May 2011 23:15:43 +0000 (01:15 +0200)
committerStéphane Jacob <sj@m4x.org>
Fri, 13 May 2011 23:15:43 +0000 (01:15 +0200)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
classes/group.php
modules/xnetgrp.php

index c79b0d3..c2ae53f 100644 (file)
@@ -140,6 +140,26 @@ class Group
                                         $data['id']);
         return new Group(array_merge($data, array('positions' => $positions)));
     }
+
+    static public function subscribe($group_id, $uid)
+    {
+        XDB::execute('DELETE FROM  group_former_members
+                            WHERE  uid = {?} AND asso_id = {?}',
+                     $uid, $group_id);
+        XDB::execute('INSERT IGNORE INTO  group_members (asso_id, uid)
+                                  VALUES  ({?}, {?})',
+                     $group_id, $uid);
+    }
+
+    static public function unsubscribe($group_id, $uid)
+    {
+        XDB::execute('INSERT INTO  group_former_members (asso_id, uid, unsubsciption_date)
+                           VALUES  ({?}, {?}, NOW())',
+                     $group_id, $uid);
+        XDB::execute('DELETE FROM  group_members
+                            WHERE  uid = {?} AND asso_id = {?}',
+                     $uid, $group_id);
+    }
 }
 
 // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
index 29daade..40138cd 100644 (file)
@@ -530,9 +530,8 @@ class XnetGrpModule extends PLModule
     {
         global $globals;
         $this->removeSubscriptionRequest($user->id());
-        XDB::execute("INSERT IGNORE INTO  group_members (asso_id, uid)
-                                  VALUES  ({?}, {?})",
-                     $globals->asso('id'), $user->id());
+        Group::subscribe($globals->asso('id'), $user->id());
+
         if (XDB::affectedRows() == 1) {
             $mailer = new PlMailer();
             $mailer->addTo($user->forlifeEmail());
@@ -947,9 +946,7 @@ class XnetGrpModule extends PLModule
     function unsubscribe(PlUser $user)
     {
         global $globals;
-        XDB::execute("DELETE FROM  group_members
-                            WHERE  uid = {?} AND asso_id = {?}",
-                     $user->id(), $globals->asso('id'));
+        Group::unsubscribe($globals->asso('id'), $user->id());
 
         if ($globals->asso('notif_unsub')) {
             $mailer = new PlMailer('xnetgrp/unsubscription-notif.mail.tpl');