Source of file CheckForUpdatesJob.php
Size: 2,294 Bytes - Last Modified: 2021-12-24T06:48:16+00:00
/var/www/docs.ssmods.com/process/src/src/Jobs/CheckForUpdatesJob.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | <?php namespace BringYourOwnIdeas\Maintenance\Jobs; use BringYourOwnIdeas\Maintenance\Tasks\UpdatePackageInfoTask; use DateTime; use SilverStripe\Core\Config\Config; use SilverStripe\ORM\FieldType\DBDatetime; use Symbiote\QueuedJobs\Services\QueuedJob; use SilverStripe\Core\Injector\Injector; use Symbiote\QueuedJobs\Services\AbstractQueuedJob; use Symbiote\QueuedJobs\Services\QueuedJobService; /** * Refresh report job. Runs as a queued job. * */ class CheckForUpdatesJob extends AbstractQueuedJob implements QueuedJob { /** * Whether or not to reschedule a new job when one completes * * @config * @var bool */ private static $reschedule = true; /** * The PHP time difference to reschedule a job for after one completes * * @config * @var string */ private static $reschedule_delay = '+1 day'; /** * Define the title * * @return string */ public function getTitle() { return _t(__CLASS__ . '.TITLE', 'Check for updates to installed modules'); } /** * Define the type. */ public function getJobType() { $this->totalSteps = 1; return QueuedJob::QUEUED; } /** * Processes the task as a job */ public function process() { // Run the UpdatePackageInfo task $updateTask = Injector::inst()->create(UpdatePackageInfoTask::class); $updateTask->run(null); // mark job as completed $this->isComplete = true; } /** * @inheritdoc */ public function afterComplete() { // Gather config options $reschedule = Config::inst()->get(__CLASS__, 'reschedule'); $rescheduleDelay = Config::inst()->get(__CLASS__, 'reschedule_delay'); if ($reschedule === false) { return; } // Queue a new job to run in the future $injector = Injector::inst(); $queuedJobService = $injector->get(QueuedJobService::class); $startAfter = new DateTime(DBDatetime::now()->getValue()); $startAfter->modify($rescheduleDelay); $queuedJobService->queueJob( $injector->create(CheckForUpdatesJob::class), $startAfter->format(DateTime::ISO8601) ); } } |