summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/aggregator/aggregator.processor.inc34
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();
+ }
}
}