Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 12 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 1 |
DefaultSortSuggestionsBuilder | |
0.00% |
0 / 12 |
|
0.00% |
0 / 3 |
72 | |
0.00% |
0 / 1 |
getRequiredFields | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
build | |
0.00% |
0 / 7 |
|
0.00% |
0 / 1 |
30 | |||
addInputToFST | |
0.00% |
0 / 4 |
|
0.00% |
0 / 1 |
6 |
1 | <?php |
2 | |
3 | namespace CirrusSearch\BuildDocument\Completion; |
4 | |
5 | /** |
6 | * Extra builder that appends the defaultsort value to suggest and suggest-stop |
7 | * inputs on title suggestions |
8 | */ |
9 | class DefaultSortSuggestionsBuilder implements ExtraSuggestionsBuilder { |
10 | private const FIELD = 'defaultsort'; |
11 | |
12 | /** |
13 | * @inheritDoc |
14 | */ |
15 | public function getRequiredFields() { |
16 | return [ self::FIELD ]; |
17 | } |
18 | |
19 | /** |
20 | * @param mixed[] $inputDoc |
21 | * @param string $suggestType (title or redirect) |
22 | * @param int $score |
23 | * @param \Elastica\Document $suggestDoc suggestion type (title or redirect) |
24 | * @param int $targetNamespace |
25 | */ |
26 | public function build( array $inputDoc, $suggestType, $score, \Elastica\Document $suggestDoc, $targetNamespace ) { |
27 | if ( $targetNamespace != $inputDoc['namespace'] ) { |
28 | // This is a cross namespace redirect, we don't |
29 | // add defaultsort for this one. |
30 | return; |
31 | } |
32 | if ( $suggestType === SuggestBuilder::TITLE_SUGGESTION && isset( $inputDoc[ self::FIELD ] ) ) { |
33 | $value = $inputDoc[self::FIELD]; |
34 | if ( is_string( $value ) ) { |
35 | $this->addInputToFST( $value, 'suggest', $suggestDoc ); |
36 | $this->addInputToFST( $value, 'suggest-stop', $suggestDoc ); |
37 | } |
38 | } |
39 | } |
40 | |
41 | /** |
42 | * @param string $input the new input |
43 | * @param string $fstField field name |
44 | * @param \Elastica\Document $suggestDoc |
45 | */ |
46 | private function addInputToFST( $input, $fstField, $suggestDoc ) { |
47 | if ( $suggestDoc->has( $fstField ) ) { |
48 | $entryDef = $suggestDoc->get( $fstField ); |
49 | $entryDef['input'][] = $input; |
50 | $suggestDoc->set( $fstField, $entryDef ); |
51 | } |
52 | } |
53 | } |