Moving to GitHub.
[platal.git] / classes / group.php
index 72ce770..9fe100b 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2011 Polytechnique.org                              *
+ *  Copyright (C) 2003-2014 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -94,6 +94,17 @@ class Group
         return $uf->iterUsers($limit);
     }
 
+    public function iterToNotify()
+    {
+        if ($this->data['notify_all']) {
+            $condition = UFC_Group::BOTH;
+        } else {
+            $condition = UFC_Group::NOTIFIED;
+        }
+        $uf = New UserFilter(New UFC_Group($this->id, true, $condition));
+        return $uf->iterUsers();
+    }
+
     public function getLogo($fallback = true)
     {
         if (!empty($this->logo)) {
@@ -155,13 +166,29 @@ class Group
     static public function unsubscribe($group_id, $uid, $remember)
     {
         XDB::execute('INSERT INTO  group_former_members (asso_id, uid, remember, unsubsciption_date)
-                           VALUES  ({?}, {?}, {?}, NOW())',
-                     $group_id, $uid, $remember);
+                           VALUES  ({?}, {?}, {?}, NOW())
+          ON DUPLICATE KEY UPDATE  remember = {?}, unsubsciption_date = NOW()',
+                     $group_id, $uid, $remember, $remember);
         XDB::execute('DELETE FROM  group_members
                             WHERE  uid = {?} AND asso_id = {?}',
                      $uid, $group_id);
+        self::fix_notification($group_id);
+    }
+
+    static private function fix_notification($group_id)
+    {
+        $count = XDB::fetchOneCell("SELECT  COUNT(uid)
+                                      FROM  group_members
+                                     WHERE  asso_id = {?} AND perms = 'admin' AND FIND_IN_SET('notify', flags)",
+                                   $group_id);
+        if ($count == 0) {
+            XDB::execute("UPDATE  groups
+                             SET  flags = IF(flags = '', 'notify_all', CONCAT(flags, ',', 'notify_all'))
+                           WHERE  id = {?}",
+                         $group_id);
+        }
     }
 }
 
-// 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:
 ?>