Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
28 / 28
100.00% covered (success)
100.00%
8 / 8
CRAP
100.00% covered (success)
100.00%
1 / 1
CirrusSearchHookRunner
100.00% covered (success)
100.00%
28 / 28
100.00% covered (success)
100.00%
8 / 8
8
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 onCirrusSearchRegisterFullTextQueryClassifiers
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCirrusSearchAddQueryFeatures
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCirrusSearchSimilarityConfig
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCirrusSearchAnalysisConfig
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCirrusSearchMappingConfig
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCirrusSearchProfileService
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCirrusSearchScoreBuilder
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace CirrusSearch;
4
5use CirrusSearch\Maintenance\AnalysisConfigBuilder;
6use CirrusSearch\Maintenance\MappingConfigBuilder;
7use CirrusSearch\Search\Rescore\BoostFunctionBuilder;
8use MediaWiki\HookContainer\HookContainer;
9
10/**
11 * @internal
12 */
13class CirrusSearchHookRunner implements
14    \CirrusSearch\Hooks\CirrusSearchRegisterFullTextQueryClassifiersHook,
15    \CirrusSearch\Hooks\CirrusSearchAddQueryFeaturesHook,
16    \CirrusSearch\Hooks\CirrusSearchSimilarityConfigHook,
17    \CirrusSearch\Hooks\CirrusSearchAnalysisConfigHook,
18    \CirrusSearch\Hooks\CirrusSearchMappingConfigHook,
19    \CirrusSearch\Hooks\CirrusSearchProfileServiceHook,
20    \CirrusSearch\Hooks\CirrusSearchScoreBuilderHook
21{
22    private HookContainer $hookContainer;
23
24    public function __construct( HookContainer $hookContainer ) {
25        $this->hookContainer = $hookContainer;
26    }
27
28    public function onCirrusSearchRegisterFullTextQueryClassifiers( Parser\ParsedQueryClassifiersRepository $repository ): void {
29        $this->hookContainer->run( 'CirrusSearchRegisterFullTextQueryClassifiers',
30            [ $repository ],
31            [ 'abortable' => false ]
32        );
33    }
34
35    public function onCirrusSearchAddQueryFeatures( SearchConfig $config, array &$extraFeatures ): void {
36        $this->hookContainer->run( 'CirrusSearchAddQueryFeatures',
37            [ $config, &$extraFeatures ],
38            [ 'abortable' => false ]
39        );
40    }
41
42    public function onCirrusSearchSimilarityConfig( array &$similarityConfig ): void {
43        $this->hookContainer->run( 'CirrusSearchSimilarityConfig',
44            [ &$similarityConfig ],
45            [ 'abortable' => false ]
46        );
47    }
48
49    public function onCirrusSearchAnalysisConfig( array &$config, AnalysisConfigBuilder $analyisConfigBuilder ): void {
50        $this->hookContainer->run( 'CirrusSearchAnalysisConfig',
51            [ &$config, $analyisConfigBuilder ],
52            [ 'abortable' => false ]
53        );
54    }
55
56    public function onCirrusSearchMappingConfig( array &$mappingConfig, MappingConfigBuilder $mappingConfigBuilder ): void {
57        $this->hookContainer->run( 'CirrusSearchMappingConfig',
58            [ &$mappingConfig, $mappingConfigBuilder ],
59            [ 'abortable' => false ]
60        );
61    }
62
63    public function onCirrusSearchProfileService( Profile\SearchProfileService $service ): void {
64        $this->hookContainer->run( 'CirrusSearchProfileService',
65            [ $service ],
66            [ 'abortable' => false ]
67        );
68    }
69
70    /** @inheritDoc */
71    public function onCirrusSearchScoreBuilder( array $definition, Search\SearchContext $context, ?BoostFunctionBuilder &$builder ) {
72        // this hook is abortable because the type of function we need is in the $definition array and the
73        // first extension that's able to build it and assign the builder var should win.
74        return $this->hookContainer->run( 'CirrusSearchScoreBuilder',
75            [ $definition, $context, &$builder ]
76         );
77    }
78}