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