summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/utils/MessageIndexRebuildJob.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/utils/MessageIndexRebuildJob.php')
-rw-r--r--www/wiki/extensions/Translate/utils/MessageIndexRebuildJob.php55
1 files changed, 55 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/utils/MessageIndexRebuildJob.php b/www/wiki/extensions/Translate/utils/MessageIndexRebuildJob.php
new file mode 100644
index 00000000..2b66205f
--- /dev/null
+++ b/www/wiki/extensions/Translate/utils/MessageIndexRebuildJob.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Contains class with job for rebuilding message index.
+ *
+ * @file
+ * @author Niklas Laxström
+ * @copyright Copyright © 2011-2013, Niklas Laxström
+ * @license GPL-2.0-or-later
+ */
+
+/**
+ * Job for rebuilding message index.
+ *
+ * @ingroup JobQueue
+ */
+class MessageIndexRebuildJob extends Job {
+
+ /**
+ * @return self
+ */
+ public static function newJob() {
+ $job = new self( Title::newMainPage() );
+
+ return $job;
+ }
+
+ /**
+ * @param Title $title
+ * @param array $params
+ */
+ public function __construct( $title, $params = [] ) {
+ parent::__construct( __CLASS__, $title, $params );
+ }
+
+ public function run() {
+ MessageIndex::singleton()->rebuild();
+
+ return true;
+ }
+
+ /**
+ * Usually this job is fast enough to be executed immediately,
+ * in which case having it go through jobqueue only causes problems
+ * in installations with errant job queue processing.
+ * @override
+ */
+ public function insertIntoJobQueue() {
+ global $wgTranslateDelayedMessageIndexRebuild;
+ if ( $wgTranslateDelayedMessageIndexRebuild ) {
+ JobQueueGroup::singleton()->push( $this );
+ } else {
+ $this->run();
+ }
+ }
+}