public static function deleteByBucketIds($ids) { if (!is_array($ids)) { $ids = array($ids); } // [TODO] use cache $filters = self::getWhere(); foreach ($filters as $filter_id => $filter) { if (!isset($filter->criteria['groups']['groups'])) { continue; } // If we're using the bucket being nuked... $changed = false; foreach ($filter->criteria['groups']['groups'] as $group_id => $buckets) { foreach ($ids as $bucket_id) { if (false !== ($pos = array_search($bucket_id, $buckets))) { unset($filter->criteria['groups']['groups'][$group_id][$pos]); $changed = true; } } } if ($changed) { $fields = array(DAO_WatcherMailFilter::CRITERIA_SER => serialize($filter->criteria)); DAO_WatcherMailFilter::update($filter->id, $fields); } } // [TODO] invalidate cache }