Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
15 / 15
QueryHelper
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
5
100.00% covered (success)
100.00%
15 / 15
 matchPage
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
8 / 8
 matchCategory
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
7 / 7
<?php
namespace CirrusSearch\Query;
use Title;
/**
 * helpers for building queries
 */
class QueryHelper {
    /**
     * Builds a match query against $field for $title. $title is munged to make
     * title matching better more intuitive for users.
     *
     * @param string $field field containing the title
     * @param string $title title query text to match against
     * @param bool $underscores If the field contains underscores instead of
     *  spaces. Defaults to false.
     * @return \Elastica\Query\MatchQuery For matching $title to $field
     */
    public static function matchPage( $field, $title, $underscores = false ) {
        $t = Title::newFromText( $title );
        if ( $t ) {
            $title = $t->getPrefixedText();
        }
        if ( $underscores ) {
            $title = str_replace( ' ', '_', $title );
        }
        $match = new \Elastica\Query\MatchQuery();
        $match->setFieldQuery( $field, $title );
        return $match;
    }
    /**
     * Builds a match query against $field for $name. $name is munged to make
     * category matching better more intuitive for users.
     *
     * @param string $field field containing the title
     * @param string $name title query text to match against
     *  spaces. Defaults to false.
     * @return \Elastica\Query\MatchQuery For matching $title to $field
     */
    public static function matchCategory( $field, $name ): \Elastica\Query\MatchQuery {
        $c = \Category::newFromName( $name );
        if ( $c ) {
            $name = $c->getName();
        }
        $name = str_replace( '_', ' ', $name );
        $match = new \Elastica\Query\MatchQuery();
        $match->setFieldQuery( $field, $name );
        return $match;
    }
}