Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
TranslationUnitStore
0.00% covered (danger)
0.00%
0 / 23
0.00% covered (danger)
0.00%
0 / 4
30
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getUnits
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
6
 getNames
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
 delete
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2declare( strict_types = 1 );
3
4namespace MediaWiki\Extension\Translate\PageTranslation;
5
6use Wikimedia\Rdbms\IDatabase;
7
8/**
9 * @author Niklas Laxström
10 * @license GPL-2.0-or-later
11 * @since 2021.05
12 */
13class TranslationUnitStore implements TranslationUnitReader {
14    private const TABLE = 'translate_sections';
15    /** @var IDatabase */
16    private $db;
17    /** @var int */
18    private $pageId;
19
20    public function __construct( IDatabase $db, int $pageId ) {
21        $this->db = $db;
22        $this->pageId = $pageId;
23    }
24
25    public function getUnits(): array {
26        $res = $this->db->newSelectQueryBuilder()
27            ->select( [ 'trs_key', 'trs_text' ] )
28            ->from( self::TABLE )
29            ->where( [ 'trs_page' => $this->pageId ] )
30            ->caller( __METHOD__ )
31            ->fetchResultSet();
32
33        $units = [];
34        foreach ( $res as $row ) {
35            $units[$row->trs_key] = new TranslationUnit( $row->trs_text, $row->trs_key );
36        }
37
38        return $units;
39    }
40
41    /** @return string[] */
42    public function getNames(): array {
43        return $this->db->newSelectQueryBuilder()
44            ->select( 'trs_key' )
45            ->from( self::TABLE )
46            ->where( [ 'trs_page' => $this->pageId ] )
47            ->caller( __METHOD__ )
48            ->fetchFieldValues();
49    }
50
51    public function delete(): void {
52        $this->db->delete(
53            self::TABLE,
54            [ 'trs_page' => $this->pageId ],
55            __METHOD__
56        );
57    }
58}