]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Group_member.php
Gracefully skip missing user entries when initializing inboxes in bulk
[quix0rs-gnu-social.git] / classes / Group_member.php
index 069b2c7a1c75c4150a2a0263473ad60e9069868d..7b1760f767e489ee068f70e8ce9c3ffee310a424 100644 (file)
@@ -25,4 +25,41 @@ class Group_member extends Memcached_DataObject
     {
         return Memcached_DataObject::pkeyGet('Group_member', $kv);
     }
+
+    static function join($group_id, $profile_id)
+    {
+        $member = new Group_member();
+
+        $member->group_id   = $group_id;
+        $member->profile_id = $profile_id;
+        $member->created    = common_sql_now();
+
+        $result = $member->insert();
+
+        if (!$result) {
+            common_log_db_error($member, 'INSERT', __FILE__);
+            throw new Exception(_("Group join failed."));
+        }
+
+        return true;
+    }
+
+    static function leave($group_id, $profile_id)
+    {
+        $member = Group_member::pkeyGet(array('group_id' => $group_id,
+                                              'profile_id' => $profile_id));
+
+        if (empty($member)) {
+            throw new Exception(_("Not part of group."));
+        }
+
+        $result = $member->delete();
+
+        if (!$result) {
+            common_log_db_error($member, 'INSERT', __FILE__);
+            throw new Exception(_("Group leave failed."));
+        }
+
+        return true;
+    }
 }