diff options
Diffstat (limited to 'www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/ChangePropagationUpdateJob.php')
-rw-r--r-- | www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/ChangePropagationUpdateJob.php | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/ChangePropagationUpdateJob.php b/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/ChangePropagationUpdateJob.php new file mode 100644 index 00000000..33734f10 --- /dev/null +++ b/www/wiki/extensions/SemanticMediaWiki/src/MediaWiki/Jobs/ChangePropagationUpdateJob.php @@ -0,0 +1,62 @@ +<?php + +namespace SMW\MediaWiki\Jobs; + +use SMW\MediaWiki\Job; +use Title; +use SMW\DIWikiPage; + +/** + * Make sufficient use of the job table by only tracking remaining jobs without + * any detail on an individual update count. + * + * Use `ChangePropagationUpdateJob` to easily count the jobs and distinguish them + * from other `UpdateJob`. + * + * `JobQueueGroup::singleton()->get( 'SMW\ChangePropagationUpdateJob' )->getSize()` + * + * @license GNU GPL v2+ + * @since 3.0 + * + * @author mwjames + */ +class ChangePropagationUpdateJob extends Job { + + /** + * @since 3.0 + * + * @param Title $title + * @param array $params job parameters + */ + public function __construct( Title $title, $params = [], $jobType = null ) { + + if ( $jobType === null ) { + $jobType = 'smw.changePropagationUpdate'; + } + + parent::__construct( $jobType, $title, $params ); + $this->removeDuplicates = true; + } + + /** + * @see Job::run + * + * @since 3.0 + */ + public function run() { + + ChangePropagationDispatchJob::cleanUp( + DIWikiPage::newFromTitle( $this->getTitle() ) + ); + + $updateJob = new UpdateJob( + $this->getTitle(), + $this->params + [ 'origin' => 'ChangePropagationUpdateJob' ] + ); + + $updateJob->run(); + + return true; + } + +} |