Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
ZObjectHistoryAction
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 1
 getPageTitle
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2/**
3 * WikiLambda history action for ZObjects, just to set a nicer title
4 *
5 * @file
6 * @ingroup Extensions
7 * @copyright 2020– Abstract Wikipedia team; see AUTHORS.txt
8 * @license MIT
9 */
10
11namespace MediaWiki\Extension\WikiLambda\ZObjectContent;
12
13use Exception;
14use MediaWiki\Actions\HistoryAction;
15use MediaWiki\Extension\WikiLambda\WikiLambdaServices;
16
17class ZObjectHistoryAction extends HistoryAction {
18    /**
19     * @inheritDoc
20     */
21    protected function getPageTitle() {
22        // Fallback to parent if the page doesn't exist yet, as we have nothing to do.
23        if ( !$this->getTitle()->exists() ) {
24            return parent::getPageTitle();
25        }
26
27        try {
28            $zObjectStore = WikiLambdaServices::getZObjectStore();
29            $targetZObject = $zObjectStore->fetchZObjectByTitle( $this->getTitle() );
30        } catch ( Exception ) {
31            // Something went wrong (e.g. corrupted ZObject), so fall back.
32            return parent::getPageTitle();
33        }
34
35        // Fallback to parent if somehow after all that it's not loadable.
36        if ( !$targetZObject ) {
37            return parent::getPageTitle();
38        }
39
40        $label = $targetZObject->getLabels()->buildStringForLanguage( $this->getLanguage() )
41            ->fallbackWithEnglish()
42            ->placeholderNoFallback()
43            ->getString();
44
45        return $this->msg( 'wikilambda-history-title' )
46            ->rawParams( htmlspecialchars( $label ?? '' ), $this->getTitle()->getText() );
47    }
48
49}