Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 46 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 1 |
CdnCacheUpdateBannerLoader | |
0.00% |
0 / 46 |
|
0.00% |
0 / 2 |
42 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
doUpdate | |
0.00% |
0 / 44 |
|
0.00% |
0 / 1 |
30 |
1 | <?php |
2 | |
3 | class CdnCacheUpdateBannerLoader implements DeferrableUpdate { |
4 | |
5 | /** |
6 | * @var string |
7 | */ |
8 | private $langCode; |
9 | |
10 | /** |
11 | * @var Banner |
12 | */ |
13 | private $banner; |
14 | |
15 | /** |
16 | * Create a DeferrableUpdate to purge CDN content for a given banner and language |
17 | * |
18 | * @param string $langCode Language code |
19 | * @param Banner $banner |
20 | */ |
21 | public function __construct( $langCode, Banner $banner ) { |
22 | $this->langCode = $langCode; |
23 | $this->banner = $banner; |
24 | } |
25 | |
26 | /** |
27 | * Purges the banner loader URls for the language and banner passed to the constructor. |
28 | */ |
29 | public function doUpdate() { |
30 | global $wgCentralSelectedBannerDispatcher, |
31 | $wgCentralSelectedMobileBannerDispatcher; |
32 | |
33 | $paramPerms = []; |
34 | $bannerName = $this->banner->getName(); |
35 | |
36 | // Note: URL parameter order must be: title (if used in configured |
37 | // URLs, for ugly URL format), campaign (omitted for preview), |
38 | // banner, uselang, debug. See ext.centralNotice.display.js. |
39 | |
40 | // Include URLs for banner preview (no campaign, users's language) |
41 | $paramPerms[] = [ |
42 | 'banner' => $bannerName, |
43 | 'uselang' => $this->langCode, |
44 | 'debug' => 'true' |
45 | ]; |
46 | |
47 | $paramPerms[] = [ |
48 | 'banner' => $bannerName, |
49 | 'uselang' => $this->langCode, |
50 | 'debug' => 'false' |
51 | ]; |
52 | |
53 | // Include expected permutations of non-preview URLs |
54 | $campaignNames = $this->banner->getCampaignNames(); |
55 | |
56 | foreach ( $campaignNames as $campaignName ) { |
57 | $paramPerms[] = [ |
58 | 'campaign' => $campaignName, |
59 | 'banner' => $bannerName, |
60 | 'uselang' => $this->langCode, |
61 | 'debug' => 'true' |
62 | ]; |
63 | |
64 | $paramPerms[] = [ |
65 | 'campaign' => $campaignName, |
66 | 'banner' => $bannerName, |
67 | 'uselang' => $this->langCode, |
68 | 'debug' => 'false' |
69 | ]; |
70 | } |
71 | |
72 | // Determine if we should add mobile URLs, too |
73 | $addMobile = ( ExtensionRegistry::getInstance()->isLoaded( 'MobileFrontend' ) && |
74 | ( $wgCentralSelectedBannerDispatcher !== |
75 | $wgCentralSelectedMobileBannerDispatcher ) |
76 | ); |
77 | |
78 | // Create the full URLs |
79 | $urlsToPurge = []; |
80 | foreach ( $paramPerms as $params ) { |
81 | $urlsToPurge[] = wfAppendQuery( |
82 | $wgCentralSelectedBannerDispatcher, |
83 | $params |
84 | ); |
85 | |
86 | if ( $addMobile ) { |
87 | $urlsToPurge[] = wfAppendQuery( |
88 | $wgCentralSelectedMobileBannerDispatcher, |
89 | $params |
90 | ); |
91 | } |
92 | } |
93 | |
94 | ( new CdnCacheUpdate( $urlsToPurge ) )->doUpdate(); |
95 | } |
96 | } |