<exclude-pattern>*/includes/RevisionList\.php</exclude-pattern>
<exclude-pattern>*/includes/installer/PhpBugTests\.php</exclude-pattern>
<exclude-pattern>*/includes/specials/SpecialMostinterwikis\.php</exclude-pattern>
- <exclude-pattern>*/includes/cache/CacheDependency\.php</exclude-pattern>
<exclude-pattern>*/includes/compat/XMPReader\.php</exclude-pattern>
<exclude-pattern>*/includes/diff/DairikiDiff\.php</exclude-pattern>
<exclude-pattern>*/includes/specials/SpecialAncientpages\.php</exclude-pattern>
<exclude-pattern>*/includes/api/ApiMessage\.php</exclude-pattern>
<exclude-pattern>*/includes/api/ApiOpenSearch\.php</exclude-pattern>
<exclude-pattern>*/includes/api/ApiRsd\.php</exclude-pattern>
- <exclude-pattern>*/includes/cache/CacheDependency\.php</exclude-pattern>
<exclude-pattern>*/includes/compat/XMPReader\.php</exclude-pattern>
<exclude-pattern>*/includes/diff/DairikiDiff\.php</exclude-pattern>
<exclude-pattern>*/includes/diff/DiffEngine\.php</exclude-pattern>
'BufferingStatsdDataFactory' => __DIR__ . '/includes/libs/stats/BufferingStatsdDataFactory.php',
'CLIParser' => __DIR__ . '/maintenance/parse.php',
'CSSMin' => __DIR__ . '/includes/libs/CSSMin.php',
- 'CacheDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
+ 'CacheDependency' => __DIR__ . '/includes/cache/dependency/CacheDependency.php',
'CacheHelper' => __DIR__ . '/includes/cache/CacheHelper.php',
'CacheTime' => __DIR__ . '/includes/parser/CacheTime.php',
'CachedAction' => __DIR__ . '/includes/actions/CachedAction.php',
'ConfigException' => __DIR__ . '/includes/config/ConfigException.php',
'ConfigFactory' => __DIR__ . '/includes/config/ConfigFactory.php',
'ConfiguredReadOnlyMode' => __DIR__ . '/includes/ConfiguredReadOnlyMode.php',
- 'ConstantDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
+ 'ConstantDependency' => __DIR__ . '/includes/cache/dependency/ConstantDependency.php',
'Content' => __DIR__ . '/includes/content/Content.php',
'ContentHandler' => __DIR__ . '/includes/content/ContentHandler.php',
'ContentModelLogFormatter' => __DIR__ . '/includes/logging/ContentModelLogFormatter.php',
'DeleteSelfExternals' => __DIR__ . '/maintenance/deleteSelfExternals.php',
'DeletedContribsPager' => __DIR__ . '/includes/specials/pagers/DeletedContribsPager.php',
'DeletedContributionsPage' => __DIR__ . '/includes/specials/SpecialDeletedContributions.php',
- 'DependencyWrapper' => __DIR__ . '/includes/cache/CacheDependency.php',
+ 'DependencyWrapper' => __DIR__ . '/includes/cache/dependency/DependencyWrapper.php',
'DeprecatedGlobal' => __DIR__ . '/includes/DeprecatedGlobal.php',
'DeprecatedInterfaceFinder' => __DIR__ . '/maintenance/findDeprecated.php',
'DeprecationHelper' => __DIR__ . '/includes/debug/DeprecationHelper.php',
'FileContentHandler' => __DIR__ . '/includes/content/FileContentHandler.php',
'FileContentsHasher' => __DIR__ . '/includes/utils/FileContentsHasher.php',
'FileDeleteForm' => __DIR__ . '/includes/FileDeleteForm.php',
- 'FileDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
+ 'FileDependency' => __DIR__ . '/includes/cache/dependency/FileDependency.php',
'FileDuplicateSearchPage' => __DIR__ . '/includes/specials/SpecialFileDuplicateSearch.php',
'FileJournal' => __DIR__ . '/includes/libs/filebackend/filejournal/FileJournal.php',
'FileOp' => __DIR__ . '/includes/libs/filebackend/fileop/FileOp.php',
'GetReplicaServer' => __DIR__ . '/maintenance/getReplicaServer.php',
'GetTextMaint' => __DIR__ . '/maintenance/getText.php',
'GitInfo' => __DIR__ . '/includes/GitInfo.php',
- 'GlobalDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
+ 'GlobalDependency' => __DIR__ . '/includes/cache/dependency/GlobalDependency.php',
'GlobalVarConfig' => __DIR__ . '/includes/config/GlobalVarConfig.php',
'GuzzleHttpRequest' => __DIR__ . '/includes/http/GuzzleHttpRequest.php',
'HHVMMakeRepo' => __DIR__ . '/maintenance/hhvm/makeRepo.php',
'MagicWordArray' => __DIR__ . '/includes/MagicWordArray.php',
'MagicWordFactory' => __DIR__ . '/includes/MagicWordFactory.php',
'MailAddress' => __DIR__ . '/includes/mail/MailAddress.php',
- 'MainConfigDependency' => __DIR__ . '/includes/cache/CacheDependency.php',
+ 'MainConfigDependency' => __DIR__ . '/includes/cache/dependency/MainConfigDependency.php',
'MaintainableDBConnRef' => __DIR__ . '/includes/libs/rdbms/database/MaintainableDBConnRef.php',
'Maintenance' => __DIR__ . '/maintenance/Maintenance.php',
'MakeTestEdits' => __DIR__ . '/maintenance/makeTestEdits.php',
+++ /dev/null
-<?php
-/**
- * Data caching with dependencies.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Cache
- */
-use MediaWiki\MediaWikiServices;
-
-/**
- * This class stores an arbitrary value along with its dependencies.
- * Users should typically only use DependencyWrapper::getValueFromCache(),
- * rather than instantiating one of these objects directly.
- * @ingroup Cache
- */
-class DependencyWrapper {
- private $value;
- /** @var CacheDependency[] */
- private $deps;
-
- /**
- * @param mixed $value The user-supplied value
- * @param CacheDependency|CacheDependency[] $deps A dependency or dependency
- * array. All dependencies must be objects implementing CacheDependency.
- */
- function __construct( $value = false, $deps = [] ) {
- $this->value = $value;
-
- if ( !is_array( $deps ) ) {
- $deps = [ $deps ];
- }
-
- $this->deps = $deps;
- }
-
- /**
- * Returns true if any of the dependencies have expired
- *
- * @return bool
- */
- function isExpired() {
- foreach ( $this->deps as $dep ) {
- if ( $dep->isExpired() ) {
- return true;
- }
- }
-
- return false;
- }
-
- /**
- * Initialise dependency values in preparation for storing. This must be
- * called before serialization.
- */
- function initialiseDeps() {
- foreach ( $this->deps as $dep ) {
- $dep->loadDependencyValues();
- }
- }
-
- /**
- * Get the user-defined value
- * @return bool|mixed
- */
- function getValue() {
- return $this->value;
- }
-
- /**
- * Store the wrapper to a cache
- *
- * @param BagOStuff $cache
- * @param string $key
- * @param int $expiry
- */
- function storeToCache( $cache, $key, $expiry = 0 ) {
- $this->initialiseDeps();
- $cache->set( $key, $this, $expiry );
- }
-
- /**
- * Attempt to get a value from the cache. If the value is expired or missing,
- * it will be generated with the callback function (if present), and the newly
- * calculated value will be stored to the cache in a wrapper.
- *
- * @param BagOStuff $cache
- * @param string $key The cache key
- * @param int $expiry The expiry timestamp or interval in seconds
- * @param bool|callable $callback The callback for generating the value, or false
- * @param array $callbackParams The function parameters for the callback
- * @param array $deps The dependencies to store on a cache miss. Note: these
- * are not the dependencies used on a cache hit! Cache hits use the stored
- * dependency array.
- *
- * @return mixed The value, or null if it was not present in the cache and no
- * callback was defined.
- */
- static function getValueFromCache( $cache, $key, $expiry = 0, $callback = false,
- $callbackParams = [], $deps = []
- ) {
- $obj = $cache->get( $key );
-
- if ( is_object( $obj ) && $obj instanceof DependencyWrapper && !$obj->isExpired() ) {
- $value = $obj->value;
- } elseif ( $callback ) {
- $value = $callback( ...$callbackParams );
- # Cache the newly-generated value
- $wrapper = new DependencyWrapper( $value, $deps );
- $wrapper->storeToCache( $cache, $key, $expiry );
- } else {
- $value = null;
- }
-
- return $value;
- }
-}
-
-/**
- * @ingroup Cache
- */
-abstract class CacheDependency {
- /**
- * Returns true if the dependency is expired, false otherwise
- */
- abstract function isExpired();
-
- /**
- * Hook to perform any expensive pre-serialize loading of dependency values.
- */
- function loadDependencyValues() {
- }
-}
-
-/**
- * @ingroup Cache
- */
-class FileDependency extends CacheDependency {
- private $filename;
- private $timestamp;
-
- /**
- * Create a file dependency
- *
- * @param string $filename The name of the file, preferably fully qualified
- * @param null|bool|int $timestamp The unix last modified timestamp, or false if the
- * file does not exist. If omitted, the timestamp will be loaded from
- * the file.
- *
- * A dependency on a nonexistent file will be triggered when the file is
- * created. A dependency on an existing file will be triggered when the
- * file is changed.
- */
- function __construct( $filename, $timestamp = null ) {
- $this->filename = $filename;
- $this->timestamp = $timestamp;
- }
-
- /**
- * @return array
- */
- function __sleep() {
- $this->loadDependencyValues();
-
- return [ 'filename', 'timestamp' ];
- }
-
- function loadDependencyValues() {
- if ( is_null( $this->timestamp ) ) {
- Wikimedia\suppressWarnings();
- # Dependency on a non-existent file stores "false"
- # This is a valid concept!
- $this->timestamp = filemtime( $this->filename );
- Wikimedia\restoreWarnings();
- }
- }
-
- /**
- * @return bool
- */
- function isExpired() {
- Wikimedia\suppressWarnings();
- $lastmod = filemtime( $this->filename );
- Wikimedia\restoreWarnings();
- if ( $lastmod === false ) {
- if ( $this->timestamp === false ) {
- # Still nonexistent
- return false;
- } else {
- # Deleted
- wfDebug( "Dependency triggered: {$this->filename} deleted.\n" );
-
- return true;
- }
- } else {
- if ( $lastmod > $this->timestamp ) {
- # Modified or created
- wfDebug( "Dependency triggered: {$this->filename} changed.\n" );
-
- return true;
- } else {
- # Not modified
- return false;
- }
- }
- }
-}
-
-/**
- * @ingroup Cache
- */
-class GlobalDependency extends CacheDependency {
- private $name;
- private $value;
-
- function __construct( $name ) {
- $this->name = $name;
- $this->value = $GLOBALS[$name];
- }
-
- /**
- * @return bool
- */
- function isExpired() {
- if ( !isset( $GLOBALS[$this->name] ) ) {
- return true;
- }
-
- return $GLOBALS[$this->name] != $this->value;
- }
-}
-
-/**
- * @ingroup Cache
- */
-class MainConfigDependency extends CacheDependency {
- private $name;
- private $value;
-
- function __construct( $name ) {
- $this->name = $name;
- $this->value = $this->getConfig()->get( $this->name );
- }
-
- private function getConfig() {
- return MediaWikiServices::getInstance()->getMainConfig();
- }
-
- /**
- * @return bool
- */
- function isExpired() {
- if ( !$this->getConfig()->has( $this->name ) ) {
- return true;
- }
-
- return $this->getConfig()->get( $this->name ) != $this->value;
- }
-}
-
-/**
- * @ingroup Cache
- */
-class ConstantDependency extends CacheDependency {
- private $name;
- private $value;
-
- function __construct( $name ) {
- $this->name = $name;
- $this->value = constant( $name );
- }
-
- /**
- * @return bool
- */
- function isExpired() {
- return constant( $this->name ) != $this->value;
- }
-}
--- /dev/null
+<?php
+/**
+ * Data caching with dependencies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+
+/**
+ * @ingroup Cache
+ */
+abstract class CacheDependency {
+ /**
+ * Returns true if the dependency is expired, false otherwise
+ */
+ abstract function isExpired();
+
+ /**
+ * Hook to perform any expensive pre-serialize loading of dependency values.
+ */
+ function loadDependencyValues() {
+ }
+}
--- /dev/null
+<?php
+/**
+ * Data caching with dependencies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+
+/**
+ * @ingroup Cache
+ */
+class ConstantDependency extends CacheDependency {
+ private $name;
+ private $value;
+
+ function __construct( $name ) {
+ $this->name = $name;
+ $this->value = constant( $name );
+ }
+
+ /**
+ * @return bool
+ */
+ function isExpired() {
+ return constant( $this->name ) != $this->value;
+ }
+}
--- /dev/null
+<?php
+/**
+ * Data caching with dependencies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+
+/**
+ * This class stores an arbitrary value along with its dependencies.
+ * Users should typically only use DependencyWrapper::getValueFromCache(),
+ * rather than instantiating one of these objects directly.
+ * @ingroup Cache
+ */
+class DependencyWrapper {
+ private $value;
+ /** @var CacheDependency[] */
+ private $deps;
+
+ /**
+ * @param mixed $value The user-supplied value
+ * @param CacheDependency|CacheDependency[] $deps A dependency or dependency
+ * array. All dependencies must be objects implementing CacheDependency.
+ */
+ function __construct( $value = false, $deps = [] ) {
+ $this->value = $value;
+
+ if ( !is_array( $deps ) ) {
+ $deps = [ $deps ];
+ }
+
+ $this->deps = $deps;
+ }
+
+ /**
+ * Returns true if any of the dependencies have expired
+ *
+ * @return bool
+ */
+ function isExpired() {
+ foreach ( $this->deps as $dep ) {
+ if ( $dep->isExpired() ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Initialise dependency values in preparation for storing. This must be
+ * called before serialization.
+ */
+ function initialiseDeps() {
+ foreach ( $this->deps as $dep ) {
+ $dep->loadDependencyValues();
+ }
+ }
+
+ /**
+ * Get the user-defined value
+ * @return bool|mixed
+ */
+ function getValue() {
+ return $this->value;
+ }
+
+ /**
+ * Store the wrapper to a cache
+ *
+ * @param BagOStuff $cache
+ * @param string $key
+ * @param int $expiry
+ */
+ function storeToCache( $cache, $key, $expiry = 0 ) {
+ $this->initialiseDeps();
+ $cache->set( $key, $this, $expiry );
+ }
+
+ /**
+ * Attempt to get a value from the cache. If the value is expired or missing,
+ * it will be generated with the callback function (if present), and the newly
+ * calculated value will be stored to the cache in a wrapper.
+ *
+ * @param BagOStuff $cache
+ * @param string $key The cache key
+ * @param int $expiry The expiry timestamp or interval in seconds
+ * @param bool|callable $callback The callback for generating the value, or false
+ * @param array $callbackParams The function parameters for the callback
+ * @param array $deps The dependencies to store on a cache miss. Note: these
+ * are not the dependencies used on a cache hit! Cache hits use the stored
+ * dependency array.
+ *
+ * @return mixed The value, or null if it was not present in the cache and no
+ * callback was defined.
+ */
+ static function getValueFromCache( $cache, $key, $expiry = 0, $callback = false,
+ $callbackParams = [], $deps = []
+ ) {
+ $obj = $cache->get( $key );
+
+ if ( is_object( $obj ) && $obj instanceof DependencyWrapper && !$obj->isExpired() ) {
+ $value = $obj->value;
+ } elseif ( $callback ) {
+ $value = $callback( ...$callbackParams );
+ # Cache the newly-generated value
+ $wrapper = new DependencyWrapper( $value, $deps );
+ $wrapper->storeToCache( $cache, $key, $expiry );
+ } else {
+ $value = null;
+ }
+
+ return $value;
+ }
+}
--- /dev/null
+<?php
+/**
+ * Data caching with dependencies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+
+/**
+ * @ingroup Cache
+ */
+class FileDependency extends CacheDependency {
+ private $filename;
+ private $timestamp;
+
+ /**
+ * Create a file dependency
+ *
+ * @param string $filename The name of the file, preferably fully qualified
+ * @param null|bool|int $timestamp The unix last modified timestamp, or false if the
+ * file does not exist. If omitted, the timestamp will be loaded from
+ * the file.
+ *
+ * A dependency on a nonexistent file will be triggered when the file is
+ * created. A dependency on an existing file will be triggered when the
+ * file is changed.
+ */
+ function __construct( $filename, $timestamp = null ) {
+ $this->filename = $filename;
+ $this->timestamp = $timestamp;
+ }
+
+ /**
+ * @return array
+ */
+ function __sleep() {
+ $this->loadDependencyValues();
+
+ return [ 'filename', 'timestamp' ];
+ }
+
+ function loadDependencyValues() {
+ if ( is_null( $this->timestamp ) ) {
+ Wikimedia\suppressWarnings();
+ # Dependency on a non-existent file stores "false"
+ # This is a valid concept!
+ $this->timestamp = filemtime( $this->filename );
+ Wikimedia\restoreWarnings();
+ }
+ }
+
+ /**
+ * @return bool
+ */
+ function isExpired() {
+ Wikimedia\suppressWarnings();
+ $lastmod = filemtime( $this->filename );
+ Wikimedia\restoreWarnings();
+ if ( $lastmod === false ) {
+ if ( $this->timestamp === false ) {
+ # Still nonexistent
+ return false;
+ } else {
+ # Deleted
+ wfDebug( "Dependency triggered: {$this->filename} deleted.\n" );
+
+ return true;
+ }
+ } else {
+ if ( $lastmod > $this->timestamp ) {
+ # Modified or created
+ wfDebug( "Dependency triggered: {$this->filename} changed.\n" );
+
+ return true;
+ } else {
+ # Not modified
+ return false;
+ }
+ }
+ }
+}
--- /dev/null
+<?php
+/**
+ * Data caching with dependencies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+
+/**
+ * @ingroup Cache
+ */
+class GlobalDependency extends CacheDependency {
+ private $name;
+ private $value;
+
+ function __construct( $name ) {
+ $this->name = $name;
+ $this->value = $GLOBALS[$name];
+ }
+
+ /**
+ * @return bool
+ */
+ function isExpired() {
+ if ( !isset( $GLOBALS[$this->name] ) ) {
+ return true;
+ }
+
+ return $GLOBALS[$this->name] != $this->value;
+ }
+}
--- /dev/null
+<?php
+/**
+ * Data caching with dependencies.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+use MediaWiki\MediaWikiServices;
+
+/**
+ * @ingroup Cache
+ */
+class MainConfigDependency extends CacheDependency {
+ private $name;
+ private $value;
+
+ function __construct( $name ) {
+ $this->name = $name;
+ $this->value = $this->getConfig()->get( $this->name );
+ }
+
+ private function getConfig() {
+ return MediaWikiServices::getInstance()->getMainConfig();
+ }
+
+ /**
+ * @return bool
+ */
+ function isExpired() {
+ if ( !$this->getConfig()->has( $this->name ) ) {
+ return true;
+ }
+
+ return $this->getConfig()->get( $this->name ) != $this->value;
+ }
+}