From: Evan Prodromou Date: Thu, 14 Oct 2010 02:44:06 +0000 (-0400) Subject: better deletion of related objects in User_group::delete() X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=76038fe20c7ebd732ffbc659827ab812ee5a4b6e;p=quix0rs-gnu-social.git better deletion of related objects in User_group::delete() --- diff --git a/classes/User_group.php b/classes/User_group.php index 1f70057852..7d6e219148 100644 --- a/classes/User_group.php +++ b/classes/User_group.php @@ -559,16 +559,27 @@ class User_group extends Memcached_DataObject function delete() { if ($this->id) { + // Safe to delete in bulk for now + $related = array('Group_inbox', 'Group_block', 'Group_member', 'Related_group'); + Event::handle('UserGroupDeleteRelated', array($this, &$related)); + foreach ($related as $cls) { + $inst = new $cls(); $inst->group_id = $this->id; - $inst->delete(); + + if ($inst->find()) { + while ($inst->fetch()) { + $dup = clone($inst); + $dup->delete(); + } + } } // And related groups in the other direction... @@ -584,6 +595,10 @@ class User_group extends Memcached_DataObject if ($local) { $local->delete(); } + + // blow the cached ids + self::blow('user_group:notice_ids:%d', $this->id); + } else { common_log(LOG_WARN, "Ambiguous user_group->delete(); skipping related tables."); }