Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
19 / 19
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
OverwritePageImageProp
100.00% covered (success)
100.00%
19 / 19
100.00% covered (success)
100.00%
2 / 2
5
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
3
 doUpdate
100.00% covered (success)
100.00%
15 / 15
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3declare( strict_types=1 );
4
5namespace MediaWiki\Extension\WikiSEO;
6
7use DeferrableUpdate;
8use MediaWiki\MediaWikiServices;
9use PageImages\PageImages;
10use Title;
11
12class OverwritePageImageProp implements DeferrableUpdate {
13
14    /**
15     * @var Title The title to work on
16     */
17    private $title;
18
19    /**
20     * @var mixed|string
21     */
22    private $pageImage;
23
24    /**
25     * @param Title $title
26     * @param string $pageImage
27     */
28    public function __construct( Title $title, string $pageImage ) {
29        $this->title = $title;
30
31        if ( !empty( $pageImage ) && str_contains( $pageImage, ':' ) ) {
32            $pageImage = explode( ':', $pageImage )[1];
33        }
34
35        $this->pageImage = $pageImage;
36    }
37
38    /**
39     * Overwrite 'page_image_free' page prop
40     *
41     * @return void
42     */
43    public function doUpdate() {
44        if ( empty( $this->pageImage ) ) {
45            return;
46        }
47
48        $dbl = MediaWikiServices::getInstance()->getDBLoadBalancer();
49        $db = $dbl->getConnection( $dbl->getWriterIndex() );
50
51        $db->update(
52            'page_props',
53            [
54                'pp_value' => $this->pageImage,
55            ],
56            [
57                'pp_page' => $this->title->getArticleID(),
58                'pp_propname' => PageImages::PROP_NAME_FREE,
59            ],
60            __METHOD__
61        );
62    }
63}