Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 40
QueryBuildDocument
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 4
72
0.00% covered (danger)
0.00%
0 / 40
 __construct
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 execute
0.00% covered (danger)
0.00%
0 / 1
30
0.00% covered (danger)
0.00%
0 / 31
 getAllowedParams
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 getExamplesMessages
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 5
<?php
namespace CirrusSearch\Api;
use CirrusSearch\BuildDocument\BuildDocument;
use CirrusSearch\CirrusSearch;
use CirrusSearch\CirrusSearchHookRunner;
use Mediawiki\MediaWikiServices;
/**
 * Generate CirrusSearch document for page.
 *
 * 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 QueryBuildDocument extends \ApiQueryBase {
    use ApiTrait;
    public function __construct( \ApiQuery $query, $moduleName ) {
        parent::__construct( $query, $moduleName, 'cb' );
    }
    public function execute() {
        $result = $this->getResult();
        $services = MediaWikiServices::getInstance();
        $engine = $services->getSearchEngineFactory()
            ->create( 'cirrus' );
        if ( $engine instanceof CirrusSearch ) {
            $pages = [];
            $wikiPageFactory = $services->getWikiPageFactory();
            foreach ( $this->getPageSet()->getGoodTitles() as $pageId => $title ) {
                $pages[] = $wikiPageFactory->newFromTitle( $title );
            }
            $builder = new BuildDocument(
                $this->getCirrusConnection(),
                $this->getDB(),
                $services->getParserCache(),
                $services->getRevisionStore(),
                new CirrusSearchHookRunner( $services->getHookContainer() ),
                $services->getBacklinkCacheFactory()
            );
            $docs = $builder->initialize( $pages, BuildDocument::INDEX_EVERYTHING );
            foreach ( $docs as $pageId => $doc ) {
                if ( $builder->finalize( $doc ) ) {
                    $result->addValue(
                        [ 'query', 'pages', $pageId ],
                        'cirrusbuilddoc', $doc->getData()
                    );
                }
            }
        } else {
            throw new \RuntimeException( 'Could not create cirrus engine' );
        }
    }
    public function getAllowedParams() {
        return [];
    }
    /**
     * @see ApiBase::getExamplesMessages
     * @return array
     */
    protected function getExamplesMessages() {
        return [
            'action=query&prop=cirrusbuilddoc&titles=Main_Page' =>
                'apihelp-query+cirrusbuilddoc-example'
        ];
    }
}