diff --git a/jobs/.CheckExternalLinksJob.php.swp b/jobs/.CheckExternalLinksJob.php.swp new file mode 100644 index 0000000..aefeb61 Binary files /dev/null and b/jobs/.CheckExternalLinksJob.php.swp differ diff --git a/jobs/CheckExternalLinksJob.php b/jobs/CheckExternalLinksJob.php new file mode 100644 index 0000000..8f12f03 --- /dev/null +++ b/jobs/CheckExternalLinksJob.php @@ -0,0 +1,77 @@ +pagesToProcess = DB::query('SELECT ID FROM "SiteTree_Live" WHERE "ShowInSearch"=1')->column(); + $this->currentStep = 0; + $this->totalSteps = count($this->pagesToProcess); + } + + /** + * Sitemap job is going to run for a while... + */ + public function getJobType() { + return QueuedJob::QUEUED; + } + + /** + * @return string + */ + public function getTitle() { + return 'Checking external links'; + } + + /** + * Return a signature for this queued job + * + * For the generate sitemap job, we only ever want one instance running, so just use the class name + * + * @return String + */ + public function getSignature() { + return md5(get_class($this)); + } + + /** + * Note that this is duplicated for backwards compatibility purposes... + */ + public function setup() { + parent::setup(); + increase_time_limit_to(); + + $restart = $this->currentStep == 0; + + if ($restart) { + $this->pagesToProcess = DB::query('SELECT ID FROM SiteTree_Live WHERE ShowInSearch=1')->column(); + } + } + + /** + * On any restart, make sure to check that our temporary file is being created still. + */ + public function prepareForRestart() { + parent::prepareForRestart(); + } + + public function process() { + $task = new CheckExternalLinksTask(); + $task->run(); + } + + /** + * Outputs the completed file to the site's webroot + */ + protected function completeJob() { + + $nextgeneration = new CheckExternalLinksJob(); + singleton('QueuedJobService')->queueJob($nextgeneration, + date('Y-m-d H:i:s', time() + self::$regenerate_time)); + } +} \ No newline at end of file diff --git a/tasks/CheckExternalLinks.php b/tasks/CheckExternalLinks.php index 561171c..440c3e6 100644 --- a/tasks/CheckExternalLinks.php +++ b/tasks/CheckExternalLinks.php @@ -62,5 +62,13 @@ class CheckExternalLinks extends BuildTask { } } } + + // run this again in 24 hours if queued jobs exists + if (class_exists('QueuedJobService')) { + $checkLinks = new CheckExternalLinksJob(); + singleton('QueuedJobService') + ->queueJob($checkLinks, date('Y-m-d H:i:s', time() + 86400)); + } + } }