%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /www/varak.net/wiki.varak.net/extensions/CirrusSearch/includes/Job/
Upload File :
Create Path :
Current File : /www/varak.net/wiki.varak.net/extensions/CirrusSearch/includes/Job/OtherIndex.php

<?php

namespace CirrusSearch\Job;

use CirrusSearch\OtherIndexes;
use JobQueueGroup;
use Title;

/**
 * Job wrapper around OtherIndexes. Used during page updates.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 * http://www.gnu.org/copyleft/gpl.html
 */
class OtherIndex extends Job {
	/**
	 * Check if we need to make a job and inject one if so.
	 *
	 * @param Title[] $titles The title we might update
	 * @param string|null $cluster The name of the cluster to write
	 *  to, or null for all clusters.
	 */
	public static function queueIfRequired( array $titles, $cluster ) {
		$titlesToUpdate = [];
		foreach( $titles as $title ) {
			if ( OtherIndexes::getExternalIndexes( $title ) ) {
				$titlesToUpdate[] = [ $title->getNamespace(), $title->getText() ];
			}
		}
		if ( $titlesToUpdate ) {
			// Note that we're updating a bunch of titles but we have to pick one to
			// attach to the job so we pick the first one.
			JobQueueGroup::singleton()->push(
				new self( $titles[ 0 ], [
					'titles' => $titlesToUpdate,
					'cluster' => $cluster,
				] )
			);
		}
	}

	protected function doJob() {
		$titles = [];
		foreach ( $this->params[ 'titles' ] as $titleArr ) {
			list( $namespace, $title ) = $titleArr;
			$titles[] = Title::makeTitle( $namespace, $title );
		}
		$flags = [];
		if ( $this->params['cluster'] ) {
			$flags[] = 'same-cluster';
		}
		$otherIdx = new OtherIndexes( $this->connection, $this->searchConfig, $flags, wfWikiID() );
		$otherIdx->updateOtherIndex( $titles );
	}
}

Zerion Mini Shell 1.0