MediaWiki REL1_39
CachingSiteStore.php
Go to the documentation of this file.
1<?php
2
31class CachingSiteStore implements SiteStore {
32
36 private $sites = null;
37
41 private $cacheKey;
42
46 private $cacheTimeout;
47
51 private $cache;
52
56 private $siteStore;
57
64 public function __construct(
65 SiteStore $siteStore,
66 BagOStuff $cache,
67 $cacheKey = null,
68 $cacheTimeout = 3600
69 ) {
70 $this->siteStore = $siteStore;
71 $this->cache = $cache;
72 $this->cacheKey = $cacheKey;
73 $this->cacheTimeout = $cacheTimeout;
74 }
75
90 private function getCacheKey() {
91 if ( $this->cacheKey === null ) {
92 $type = 'SiteList#' . SiteList::getSerialVersionId();
93 $this->cacheKey = $this->cache->makeKey( "sites/$type" );
94 }
95
96 return $this->cacheKey;
97 }
98
106 public function getSites() {
107 if ( $this->sites === null ) {
108 $this->sites = $this->cache->getWithSetCallback(
109 $this->getCacheKey(),
110 $this->cacheTimeout,
111 [ $this->siteStore, 'getSites' ]
112 );
113 }
114
115 return $this->sites;
116 }
117
127 public function getSite( $globalId ) {
128 $sites = $this->getSites();
129
130 return $sites->hasSite( $globalId ) ? $sites->getSite( $globalId ) : null;
131 }
132
142 public function saveSite( Site $site ) {
143 return $this->saveSites( [ $site ] );
144 }
145
155 public function saveSites( array $sites ) {
156 if ( empty( $sites ) ) {
157 return true;
158 }
159
160 $success = $this->siteStore->saveSites( $sites );
161
162 // purge cache
163 $this->reset();
164
165 return $success;
166 }
167
176 public function reset() {
177 // purge cache
178 $this->cache->delete( $this->getCacheKey() );
179 $this->sites = null;
180 }
181
191 public function clear() {
192 $this->reset();
193
194 return $this->siteStore->clear();
195 }
196
197}
Class representing a cache/ephemeral data store.
Definition BagOStuff.php:85
saveSites(array $sites)
clear()
Clears the list of sites stored.
__construct(SiteStore $siteStore, BagOStuff $cache, $cacheKey=null, $cacheTimeout=3600)
reset()
Purges the internal and external cache of the site list, forcing the list.
static getSerialVersionId()
Returns the version ID that identifies the serialization structure used by getSerializationData() and...
Definition SiteList.php:310
hasSite( $globalSiteId)
Returns if the list contains the site with the provided global site identifier.
Definition SiteList.php:140
getSite( $globalSiteId)
Returns the Site with the provided global site identifier.
Definition SiteList.php:154
Definition Site.php:33
$cache
Definition mcc.php:33