From b6921c325702f9901f611c53b97b8b7297b64f5f Mon Sep 17 00:00:00 2001
From: Alex Barth <alex_b@53995.no-reply.drupal.org>
Date: Thu, 16 Sep 2010 18:15:19 +0000
Subject: [PATCH] Remove feeds scheduler, obsolete.

---
 includes/FeedsScheduler.inc | 246 ------------------------------------
 1 file changed, 246 deletions(-)
 delete mode 100644 includes/FeedsScheduler.inc

diff --git a/includes/FeedsScheduler.inc b/includes/FeedsScheduler.inc
deleted file mode 100644
index 70133691..00000000
--- a/includes/FeedsScheduler.inc
+++ /dev/null
@@ -1,246 +0,0 @@
-<?php
-// $Id$
-
-/**
- * @file
- * FeedsScheduler class and related.
- */
-
-/**
- * Describe a scheduler.
- */
-interface FeedsSchedulerInterface {
-
-  /**
-   * Run Drupal cron.
-   */
-  public function cron();
-
-  /**
-   * Add a feed to the schedule.
-   *
-   * @param $importer_id
-   *   Id of a FeedsImporter object.
-   * @param $callback
-   *   The callback to invoke on importer. Either 'import' or 'expire'.
-   * @param $feed_nid
-   *   Feed nid that identifies the source for this configuration.
-   */
-  public function add($importer_id, $callback, $feed_nid = 0);
-
-  /**
-   * Remove a feed from the schedule.
-   *
-   * @param $feed_nid
-   *   Feed nid that identifies the source for this configuration.
-   */
-  public function remove($importer_id, $callback, $feed_nid = 0);
-
-  /**
-   * Work off a given feed identified by $job.
-   *
-   * @param $job
-   *   Array where 'id' key is the id of a FeedsImporter object,
-   *   and 'feed_nid' is the feed node id that identifies the
-   *   source of a FeedsSource object.
-   */
-  public function work($job);
-}
-
-/**
- * Implementation of FeedsSchedulerInterface.
- *
- * This scheduler uses the last_refreshed_time paradigm: By storing the time
- * when a particular feed was refreshed last rather than storing when a feed
- * should be refreshed next, we gain two advantages:
- *
- * 1) If a feed's import_period setting changes, it has immediate effects -
- *    without batch updating an existing schedule.
- * 2) The time between refreshes will always be scheduled based on when it
- *    has been scheduled last. Less drift occurs.
- *
- * This behavior may change soon: http://drupal.org/node/721428
- */
-class FeedsScheduler implements FeedsSchedulerInterface {
-
-  /**
-   * Create a single instance of FeedsScheduler.
-   */
-  public static function instance() {
-    static $instance;
-    if (!isset($instance)) {
-      $class = variable_get('feeds_scheduler_class', 'FeedsScheduler');
-      $instance = new $class();
-    }
-    return $instance;
-  }
-
-  /**
-   * Protect constructor.
-   */
-  protected function __construct() {}
-
-  /**
-   * Implementation of FeedsSchedulerInterface::cron().
-   *
-   * Refreshes scheduled feeds.
-   *
-   * If drupal_queue is present, only pushes refresh tasks to queue and
-   * returns. If drupal_queue is not available, works off tasks.
-   */
-  public function cron() {
-    // Check and set scheduler semaphore, take time.
-    if (variable_get('feeds_scheduler_cron', FALSE)) {
-      watchdog('FeedsScheduler', 'Last cron process did not finish.', array(), WATCHDOG_ERROR);
-    }
-    variable_set('feeds_scheduler_cron', TRUE);
-    $start = time();
-
-    // Release schedule lock where the lock is older than 1 hour.
-    db_query("UPDATE {feeds_schedule} SET scheduled = 0 WHERE scheduled < %d", FEEDS_REQUEST_TIME - 3600);
-
-    // Iterate over feed importers, pick $num jobs for each of them and
-    // schedule them.
-    if ($importers = feeds_importer_load_all()) {
-      $num = $this->queue() ? variable_get('feeds_schedule_queue_num', 200) : variable_get('feeds_schedule_num', 5);
-      foreach ($importers as $importer) {
-        foreach ($importer->getScheduleCallbacks() as $callback) {
-          $period = $importer->getSchedulePeriod($callback);
-          if ($period != FEEDS_SCHEDULE_NEVER) {
-            $result = db_query_range("SELECT feed_nid, id, callback, last_executed_time FROM {feeds_schedule} WHERE id = '%s' AND callback = '%s' AND scheduled = 0 AND (last_executed_time < %d OR last_executed_time = 0) ORDER BY last_executed_time ASC", $importer->id, $callback, FEEDS_REQUEST_TIME - $period, 0, $num);
-            while ($job = db_fetch_array($result)) {
-              $this->schedule($job);
-              // @todo Add time limit.
-            }
-          }
-        }
-      }
-    }
-    // Unflag and post a message that we're done.
-    variable_set('feeds_scheduler_cron', FALSE);
-    watchdog('FeedsScheduler', 'Finished processing schedule after !time.', array('!time' => format_interval(time() - $start)));
-  }
-
-  /**
-   * Implementation of FeedsSchedulerInterface::add().
-   *
-   * Add a feed to the scheduler.
-   *
-   * @todo Create optional parameter $last_executed_time to pass in. Set this
-   *   value if a feed is refreshed on creation.
-   */
-  public function add($importer_id, $callback, $feed_nid = 0) {
-    $save = array(
-      'id' => $importer_id,
-      'callback' => $callback,
-      'feed_nid' => $feed_nid,
-      'last_executed_time' => 0,
-      'scheduled' => 0, // Means NOT scheduled at the moment.
-    );
-    if (db_result(db_query_range("SELECT 1 FROM {feeds_schedule} WHERE id = '%s' AND callback = '%s' AND feed_nid = %d", $importer_id, $callback, $feed_nid, 0, 1))) {
-      drupal_write_record('feeds_schedule', $save, array('id', 'callback', 'feed_nid'));
-    }
-    else {
-      drupal_write_record('feeds_schedule', $save);
-    }
-  }
-
-  /**
-   * Implementation of FeedsSchedulerInterface::remove().
-   */
-  public function remove($importer_id, $callback, $feed_nid = 0) {
-    db_query("DELETE FROM {feeds_schedule} WHERE id = '%s' AND callback = '%s' AND feed_nid = %d", $importer_id, $callback, $feed_nid);
-  }
-
-  /**
-   * Implementation of FeedsSchedulerInterface::work().
-   *
-   * Refresh a feed.
-   *
-   * Used as worker callback invoked from feeds_scheduler_refresh() or
-   * if drupal_queue is not enabled, directly from $this->cron().
-   */
-  public function work($job) {
-    $importer = feeds_importer($job['id']);
-    try {
-      if (FEEDS_BATCH_COMPLETE == $importer->existing()->work($job)) {
-        $this->finished($job);
-      }
-    }
-    catch (Exception $e) {
-      watchdog('FeedsScheduler', $e->getMessage(), array(), WATCHDOG_ERROR);
-      $this->finished($job);
-    }
-    // Make sure that job is not scheduled after this method has executed.
-    $this->unschedule($job);
-  }
-
-  /**
-   * @return
-   *   Drupal Queue if available, NULL otherwise.
-   */
-  protected function queue() {
-    if (module_exists('drupal_queue')) {
-      drupal_queue_include();
-      return drupal_queue_get(FEEDS_SCHEDULER_QUEUE);
-    }
-  }
-
-  /**
-   * Attempt to reserve a job. If successful work it off or - if Drupal Queue is
-   * available - queue it.
-   *
-   * The lock/release mechanism makes sure that an item does not get queued
-   * twice. It has a different purpose than the FeedsSource level locking
-   * which is in place to avoid concurrent import/clear operations on a source.
-   *
-   * @param $job
-   *   A job array.
-   */
-   protected function schedule($job) {
-     db_query("UPDATE {feeds_schedule} SET scheduled = %d WHERE id = '%s' AND feed_nid = %d AND callback = '%s'", FEEDS_REQUEST_TIME, $job['id'], $job['feed_nid'], $job['callback']);
-     if (db_affected_rows()) {
-       if ($this->queue()) {
-         if (!$this->queue()->createItem($job)) {
-           $this->unschedule($job);
-           watchdog('FeedsScheduler', 'Error adding item to queue.', WATCHDOG_CRITICAL);
-           return;
-         }
-       }
-       else {
-         $this->work($job);
-       }
-     }
-   }
-
-  /**
-   * Remove a job from schedule.
-   *
-   * This function sets the source's scheduled bit to 0 and thus makes
-   * it eligible for being added to the queue again.
-   *
-   * @param $job
-   *   A job array.
-   */
-  protected function unschedule($job) {
-    unset($job['last_executed_time']);
-    $job = array(
-      'scheduled' => 0,
-    ) + $job;
-    drupal_write_record('feeds_schedule', $job, array('id', 'callback', 'feed_nid'));
-  }
-
-  /**
-   * Release a job and set its last_executed_time flag.
-   *
-   * @param $job
-   *   A job array.
-   */
-  protected function finished($job) {
-    $job = array(
-      'scheduled' => 0,
-      'last_executed_time' => FEEDS_REQUEST_TIME,
-    ) + $job;
-    drupal_write_record('feeds_schedule', $job, array('id', 'callback', 'feed_nid'));
-  }
-}
-- 
GitLab