MediaWiki
REL1_24
|
00001 <?php 00029 class CacheTime { 00033 public $mUsedOptions; 00034 00035 public $mVersion = Parser::VERSION, # Compatibility check 00036 $mCacheTime = '', # Time when this object was generated, or -1 for uncacheable. Used in ParserCache. 00037 $mCacheExpiry = null, # Seconds after which the object should expire, use 0 for uncachable. Used in ParserCache. 00038 $mContainsOldMagic, # Boolean variable indicating if the input contained variables like {{CURRENTDAY}} 00039 $mCacheRevisionId = null; # Revision ID that was parsed 00040 00044 public function getCacheTime() { 00045 return wfTimestamp( TS_MW, $this->mCacheTime ); 00046 } 00047 00051 public function containsOldMagic() { 00052 return $this->mContainsOldMagic; 00053 } 00054 00059 public function setContainsOldMagic( $com ) { 00060 return wfSetVar( $this->mContainsOldMagic, $com ); 00061 } 00062 00069 public function setCacheTime( $t ) { 00070 return wfSetVar( $this->mCacheTime, $t ); 00071 } 00072 00077 public function getCacheRevisionId() { 00078 return $this->mCacheRevisionId; 00079 } 00080 00085 public function setCacheRevisionId( $id ) { 00086 $this->mCacheRevisionId = $id; 00087 } 00088 00099 public function updateCacheExpiry( $seconds ) { 00100 $seconds = (int)$seconds; 00101 00102 if ( $this->mCacheExpiry === null || $this->mCacheExpiry > $seconds ) { 00103 $this->mCacheExpiry = $seconds; 00104 } 00105 00106 // hack: set old-style marker for uncacheable entries. 00107 if ( $this->mCacheExpiry !== null && $this->mCacheExpiry <= 0 ) { 00108 $this->mCacheTime = -1; 00109 } 00110 } 00111 00121 public function getCacheExpiry() { 00122 global $wgParserCacheExpireTime; 00123 00124 if ( $this->mCacheTime < 0 ) { 00125 return 0; 00126 } // old-style marker for "not cachable" 00127 00128 $expire = $this->mCacheExpiry; 00129 00130 if ( $expire === null ) { 00131 $expire = $wgParserCacheExpireTime; 00132 } else { 00133 $expire = min( $expire, $wgParserCacheExpireTime ); 00134 } 00135 00136 if ( $this->containsOldMagic() ) { //compatibility hack 00137 $expire = min( $expire, 3600 ); # 1 hour 00138 } 00139 00140 if ( $expire <= 0 ) { 00141 return 0; // not cachable 00142 } else { 00143 return $expire; 00144 } 00145 } 00146 00150 public function isCacheable() { 00151 return $this->getCacheExpiry() > 0; 00152 } 00153 00162 public function expired( $touched ) { 00163 global $wgCacheEpoch; 00164 00165 return !$this->isCacheable() // parser says it's uncacheable 00166 || $this->getCacheTime() < $touched 00167 || $this->getCacheTime() <= $wgCacheEpoch 00168 || $this->getCacheTime() < 00169 wfTimestamp( TS_MW, time() - $this->getCacheExpiry() ) // expiry period has passed 00170 || !isset( $this->mVersion ) 00171 || version_compare( $this->mVersion, Parser::VERSION, "lt" ); 00172 } 00173 00186 public function isDifferentRevision( $id ) { 00187 $cached = $this->getCacheRevisionId(); 00188 return $cached !== null && $id !== $cached; 00189 } 00190 }