]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch '0.8.x' into deleteuser
authorEvan Prodromou <evan@status.net>
Fri, 2 Oct 2009 19:27:55 +0000 (15:27 -0400)
committerEvan Prodromou <evan@status.net>
Fri, 2 Oct 2009 19:27:55 +0000 (15:27 -0400)
classes/Profile.php
classes/User.php

index 6ad0e7a3a3b3f3884fbe221466cb034938550551..463802b4ee1a8dbbac008b21c9b3d349aaa4d542 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 8386f1e185bb7e41bbf4191e4a504bb195b9b848..ef843429222dac09fb9dccfa3df9dcae2c682b0a 100644 (file)
@@ -689,4 +689,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?
+    }
 }