diff options
author | Sarven Capadisli <csarven@status.net> | 2009-10-03 22:07:41 +0000 |
---|---|---|
committer | Sarven Capadisli <csarven@status.net> | 2009-10-03 22:07:41 +0000 |
commit | d1a5a4987514bc786eb270f0cc30300f7328a963 (patch) | |
tree | 7181b28c2c1a957e6b50c3336848647e32d03461 /classes/Profile.php | |
parent | 5528c0cd3d66c1acd7bf25b26833e8a107641f35 (diff) | |
parent | 6f4c3a6b690dd79cabd4d7529d797fb9e3d504c6 (diff) |
Merge branch '0.8.x' of git@gitorious.org:statusnet/mainline into 0.8.x
Diffstat (limited to 'classes/Profile.php')
-rw-r--r-- | classes/Profile.php | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/classes/Profile.php b/classes/Profile.php index 6ad0e7a3a..8385ebf88 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -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; + $tag->delete(); + } + + function _deleteBlocks() + { + $block = new Profile_block(); + $block->blocked = $this->id; + $block->delete(); + + $block = new Group_block(); + $block->blocked = $this->id; + $block->delete(); + } } |