private function _purge() { $purged_size = 0; if (!$this->_request_data['midcom_dba_classname']) { // No DBA class for the type, use plain Midgard undelete API foreach ($_POST['undelete'] as $guid) { $qb = new midgard_query_builder($this->type); $qb->add_constraint('guid', '=', $guid); $qb->include_deleted(); $results = $qb->execute(); foreach ($results as $object) { if ($object->purge()) { $purged_size += $object->metadata->size; } } } } else { // Delegate purging to DBA $purged_size = midcom_baseclasses_core_dbobject::purge($_POST['undelete'], $this->type); } if ($purged_size) { midcom::get('uimessages')->add($this->_l10n->get('midgard.admin.asgard'), sprintf($this->_l10n->get('in total %s purged'), midcom_helper_misc::filesize_to_string($purged_size)), 'info'); } }
/** * Cleans up old, removed items from feeds * @param Array $item Feed item as provided by MagpieRSS */ function clean($items) { if ($this->_feed->keepremoved) { // This feed is set up so that we retain items removed from array return false; } // Create array of item GUIDs $item_guids = array(); foreach ($items as $item) { $item_guids[] = $item['guid']; } // Find articles resulting from this feed $qb = midcom_db_article::new_query_builder(); $feed_category = md5($this->_feed->url); $qb->add_constraint('extra1', 'LIKE', "%|feed:{$feed_category}|%"); $local_items = $qb->execute_unchecked(); $guid_property = $this->_guid_property; $purge_guids = array(); foreach ($local_items as $item) { if (!in_array($item->{$guid_property}, $item_guids)) { // This item has been removed from the feed. if (midcom::get('componentloader')->is_installed('net.nemein.favourites') && midcom::get('componentloader')->load_graceful('net.nemein.favourites')) { // If it has been favorited keep it $qb = net_nemein_favourites_favourite_dba::new_query_builder(); $qb->add_constraint('objectGuid', '=', $item->guid); if ($qb->count_unchecked() > 0) { continue; // Skip deleting this one } } $purge_guids[] = $item->guid; $item->delete(); } } midcom_baseclasses_core_dbobject::purge($purge_guids, 'midgard_article'); return true; }