Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
40.00% covered (danger)
40.00%
8 / 20
50.00% covered (danger)
50.00%
2 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
LocalWikiPageProvider
40.00% covered (danger)
40.00%
8 / 20
50.00% covered (danger)
50.00%
2 / 4
13.78
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 loadPageRevisionProperties
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
12
 loadData
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
 getCachedSegmentsKeyComponents
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace MediaWiki\Wikispeech\Segment;
4
5/**
6 * @file
7 * @ingroup Extensions
8 * @license GPL-2.0-or-later
9 */
10
11use IContextSource;
12use MediaWiki\MediaWikiServices;
13use MediaWiki\Revision\RevisionRecord;
14use MediaWiki\Revision\RevisionStore;
15use Title;
16
17/**
18 * @since 0.1.10
19 */
20class LocalWikiPageProvider extends AbstractPageProvider {
21
22    /** @var IContextSource */
23    private $context;
24
25    /** @var RevisionStore */
26    private $revisionStore;
27
28    /**
29     * @since 0.1.10
30     * @param IContextSource $context
31     * @param RevisionStore $revisionStore
32     */
33    public function __construct(
34        IContextSource $context,
35        RevisionStore $revisionStore
36    ) {
37        $this->context = $context;
38        $this->revisionStore = $revisionStore;
39    }
40
41    /**
42     * @since 0.1.10
43     * @param int $revisionId
44     * @return PageRevisionProperties
45     * @throws DeletedRevisionException
46     */
47    public function loadPageRevisionProperties( int $revisionId ): PageRevisionProperties {
48        $revisionRecord = $this->revisionStore->getRevisionById( $revisionId );
49        if ( !$revisionRecord || !$revisionRecord->audienceCan(
50                RevisionRecord::DELETED_TEXT,
51                RevisionRecord::FOR_THIS_USER,
52                $this->context->getUser()
53            )
54        ) {
55            throw new DeletedRevisionException( 'A deleted revision id was provided' );
56        }
57        return new PageRevisionProperties(
58            Title::newFromLinkTarget( $revisionRecord->getPageAsLinkTarget() ),
59            $revisionRecord->getPageId()
60        );
61    }
62
63    /**
64     * @param Title $title
65     * @since 0.1.10
66     */
67    public function loadData( Title $title ): void {
68        $page = MediaWikiServices::getInstance()->getWikiPageFactory()->newFromTitle( $title );
69        $parserOptions = $page->makeParserOptions( $this->context );
70        $parserOutput = $page->getParserOutput( $parserOptions );
71        $this->setDisplayTitle( $parserOutput->getDisplayTitle() );
72        $this->setPageContent( $parserOutput->getText() );
73        $this->setRevisionId( $page->getLatest() );
74    }
75
76    /**
77     * @since 0.1.10
78     * @return string
79     */
80    public function getCachedSegmentsKeyComponents(): string {
81        return 'local';
82    }
83
84}