Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
QueryAggregatorAwareTranslationAid
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 3
30
0.00% covered (danger)
0.00%
0 / 1
 setQueryAggregator
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 storeQuery
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
6
 getQueryData
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2declare( strict_types = 1 );
3
4namespace MediaWiki\Extension\Translate\TranslatorInterface\Aid;
5
6use MediaWiki\Extension\Translate\WebService\QueryAggregator;
7use MediaWiki\Extension\Translate\WebService\QueryAggregatorAware;
8use MediaWiki\Extension\Translate\WebService\TranslationWebService;
9
10/**
11 * Helper class for translation aids that use web services.
12 * @ingroup TranslationAids
13 * @author Niklas Laxström
14 * @license GPL-2.0-or-later
15 * @since 2015.02
16 */
17abstract class QueryAggregatorAwareTranslationAid
18    extends TranslationAid
19    implements QueryAggregatorAware
20{
21    private $queries = [];
22    /** @var QueryAggregator */
23    private $aggregator;
24
25    public function setQueryAggregator( QueryAggregator $aggregator ): void {
26        $this->aggregator = $aggregator;
27    }
28
29    /**
30     * Stores a web service query for later execution.
31     * @param TranslationWebService $service
32     * @param string $from
33     * @param string $to
34     * @param string $text
35     * @return void
36     */
37    protected function storeQuery(
38        TranslationWebService $service,
39        string $from,
40        string $to,
41        string $text
42    ): void {
43        $queries = $service->getQueries( $text, $from, $to );
44        foreach ( $queries as $query ) {
45            $this->queries[] = [
46                'id' => $this->aggregator->addQuery( $query ),
47                'language' => $from,
48                'text' => $text,
49                'service' => $service,
50            ];
51        }
52    }
53
54    /**
55     * Returns all stored queries.
56     * @return array Map of executed queries:
57     *  - language: string: source language
58     *  - text: string: source text
59     *  - response: TranslationQueryResponse
60     */
61    protected function getQueryData(): array {
62        foreach ( $this->queries as &$queryData ) {
63            $queryData['response'] = $this->aggregator->getResponse( $queryData['id'] );
64            unset( $queryData['id'] );
65        }
66
67        return $this->queries;
68    }
69}