Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
HtmlFileCacheUpdate
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 4
42
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 merge
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 newFromPages
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
 doUpdate
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2/**
3 * @license GPL-2.0-or-later
4 * @file
5 */
6
7namespace MediaWiki\Deferred;
8
9use MediaWiki\Cache\HTMLFileCache;
10use MediaWiki\Page\CacheKeyHelper;
11use MediaWiki\Page\PageIdentity;
12use Wikimedia\Assert\Assert;
13
14/**
15 * HTMLFileCache purge update for a set of titles
16 *
17 * @ingroup Cache
18 * @since 1.35
19 */
20class HtmlFileCacheUpdate implements DeferrableUpdate, MergeableUpdate {
21    /** @var PageIdentity[] List of pages */
22    private $pages;
23
24    /**
25     * @param PageIdentity[] $pages List of pages
26     */
27    private function __construct( array $pages ) {
28        $this->pages = $pages;
29    }
30
31    public function merge( MergeableUpdate $update ) {
32        /** @var self $update */
33        Assert::parameterType( __CLASS__, $update, '$update' );
34        '@phan-var self $update';
35
36        $this->pages = array_merge( $this->pages, $update->pages );
37    }
38
39    /**
40     * @since 1.37
41     * @param iterable<PageIdentity> $pages PageIdentity instances
42     *
43     * @return HtmlFileCacheUpdate
44     */
45    public static function newFromPages( $pages ) {
46        $pagesByKey = [];
47        foreach ( $pages as $pg ) {
48            $key = CacheKeyHelper::getKeyForPage( $pg );
49            $pagesByKey[$key] = $pg;
50        }
51
52        return new self( $pagesByKey );
53    }
54
55    public function doUpdate() {
56        foreach ( $this->pages as $pg ) {
57            HTMLFileCache::clearFileCache( $pg );
58        }
59    }
60}
61
62/** @deprecated class alias since 1.42 */
63class_alias( HtmlFileCacheUpdate::class, 'HtmlFileCacheUpdate' );