diff options
-rw-r--r-- | modules/aggregator/aggregator.processor.inc | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/modules/aggregator/aggregator.processor.inc b/modules/aggregator/aggregator.processor.inc index 22028fae3..b1eac204e 100644 --- a/modules/aggregator/aggregator.processor.inc +++ b/modules/aggregator/aggregator.processor.inc @@ -7,6 +7,11 @@ */ /** + * Denotes that a feed's items should never expire. + */ +define('AGGREGATOR_CLEAR_NEVER', 0); + +/** * Implementation of hook_aggregator_process_info(). */ function aggregator_aggregator_process_info() { @@ -72,6 +77,7 @@ function aggregator_form_aggregator_admin_form_alter(&$form, $form_state) { $info = module_invoke('aggregator', 'aggregator_process', 'info'); $items = array(0 => t('none')) + drupal_map_assoc(array(3, 5, 10, 15, 20, 25), '_aggregator_items'); $period = drupal_map_assoc(array(3600, 10800, 21600, 32400, 43200, 86400, 172800, 259200, 604800, 1209600, 2419200, 4838400, 9676800), 'format_interval'); + $period[AGGREGATOR_CLEAR_NEVER] = t('Never'); // Only wrap into a collapsible fieldset if there is a basic configuration. if (isset($form['basic_conf'])) { @@ -163,15 +169,23 @@ function aggregator_save_item($edit) { * Object describing feed. */ function aggregator_expire($feed) { - // Remove all items that are older than flush item timer. - $age = REQUEST_TIME - variable_get('aggregator_clear', 9676800); - $iids = db_query('SELECT iid FROM {aggregator_item} WHERE fid = :fid AND timestamp < :timestamp', array(':fid' => $feed->fid, ':timestamp' => $age))->fetchCol(); - if ($iids) { - db_delete('aggregator_category_item') - ->condition('iid', $iids, 'IN') - ->execute(); - db_delete('aggregator_item') - ->condition('iid', $iids, 'IN') - ->execute(); + $aggregator_clear = variable_get('aggregator_clear', 9676800); + + if ($aggregator_clear != AGGREGATOR_CLEAR_NEVER) { + // Remove all items that are older than flush item timer. + $age = REQUEST_TIME - $aggregator_clear; + $iids = db_query('SELECT iid FROM {aggregator_item} WHERE fid = :fid AND timestamp < :timestamp', array( + ':fid' => $feed->fid, + ':timestamp' => $age, + )) + ->fetchCol(); + if ($iids) { + db_delete('aggregator_category_item') + ->condition('iid', $iids, 'IN') + ->execute(); + db_delete('aggregator_item') + ->condition('iid', $iids, 'IN') + ->execute(); + } } } |