]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
first version of deleting users
authorEvan Prodromou <evan@controlyourself.ca>
Sun, 26 Jul 2009 19:06:38 +0000 (13:06 -0600)
committerEvan Prodromou <evan@controlyourself.ca>
Sun, 26 Jul 2009 19:06:38 +0000 (13:06 -0600)
classes/Profile.php
classes/User.php

index f926b2cef203bbe9210d7dcad3707fd8fdee6da1..0ee6fa657fdee3eca628d0ae9766fc414fa83bc7 100644 (file)
@@ -461,4 +461,79 @@ class Profile extends Memcached_DataObject
             $c->delete(common_cache_key('profile:notice_count:'.$this->id));
         }
     }
+
+    function delete()
+    {
+        $this->_deleteNotices();
+        $this->_deleteSubscriptions();
+        $this->_deleteMessages();
+        $this->_deleteTags();
+        $this->_deleteBlocks();
+
+        $related = array('Avatar',
+                         'Reply',
+                         'Group_member',
+                         );
+
+        foreach ($related as $cls) {
+            $inst = new $cls();
+            $inst->profile_id = $this->id;
+            $inst->delete();
+        }
+
+        parent::delete();
+    }
+
+    function _deleteNotices()
+    {
+        $notice = new Notice();
+        $notice->profile_id = $this->id;
+
+        if ($notice->find()) {
+            while ($notice->fetch()) {
+                $other = clone($notice);
+                $other->delete();
+            }
+        }
+    }
+
+    function _deleteSubscriptions()
+    {
+        $sub = new Subscription();
+        $sub->subscriber = $this->id;
+        $sub->delete();
+
+        $subd = new Subscription();
+        $subd->subscribed = $this->id;
+        $subd->delete();
+    }
+
+    function _deleteMessages()
+    {
+        $msg = new Message();
+        $msg->from_profile = $this->id;
+        $msg->delete();
+
+        $msg = new Message();
+        $msg->to_profile = $this->id;
+        $msg->delete();
+    }
+
+    function _deleteTags()
+    {
+        $tag = new Profile_tag();
+        $tag->tagged = $this->id;
+        $msg->delete();
+    }
+
+    function _deleteBlocks()
+    {
+        $block = new Profile_block();
+        $block->blocked = $this->id;
+        $block->delete();
+
+        $block = new Group_block();
+        $block->blocked = $this->id;
+        $block->delete();
+    }
 }
index bea47a3b058c8b70e74230ab5bce6c1b27667517..991e9c18fbab1a35a028222cf8de9d25b3dbe171 100644 (file)
@@ -685,4 +685,47 @@ class User extends Memcached_DataObject
     {
         return Design::staticGet('id', $this->design_id);
     }
+
+    function delete()
+    {
+        $profile = $this->getProfile();
+        $profile->delete();
+
+        $related = array('Fave',
+                         'User_openid',
+                         'Confirm_address',
+                         'Remember_me',
+                         'Foreign_link',
+                         'Invitation',
+                         );
+
+        if (common_config('inboxes', 'enabled')) {
+            $related[] = 'Notice_inbox';
+        }
+
+        foreach ($related as $cls) {
+            $inst = new $cls();
+            $inst->user_id = $this->id;
+            $inst->delete();
+        }
+
+        $this->_deleteTags();
+
+        parent::delete();
+    }
+
+    function _deleteTags()
+    {
+        $tag = new Profile_tag();
+        $tag->tagger = $this->id;
+        $tag->delete();
+    }
+
+    function _deleteBlocks()
+    {
+        $block = new Profile_block();
+        $block->blocker = $this->id;
+        $block->delete();
+        // XXX delete group block? Reset blocker?
+    }
 }