X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fcache%2FCacheDependency.php;h=b7d0a7cc7d7d020c916521b377c5f6b64f5552d5;hb=e1ecdea0b1272a2444547128437507673e19525c;hp=32bcdf7f4f8885f9f7537a8d8edafdd0b9a98b22;hpb=b65669ff7adbbde55872a8ddd93214a9e1df75c6;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/cache/CacheDependency.php b/includes/cache/CacheDependency.php index 32bcdf7f4f..b7d0a7cc7d 100644 --- a/includes/cache/CacheDependency.php +++ b/includes/cache/CacheDependency.php @@ -28,8 +28,8 @@ * @ingroup Cache */ class DependencyWrapper { - var $value; - var $deps; + private $value; + private $deps; /** * Create an instance. @@ -110,8 +110,8 @@ class DependencyWrapper { * callback was defined. */ static function getValueFromCache( $cache, $key, $expiry = 0, $callback = false, - $callbackParams = array(), $deps = array() ) - { + $callbackParams = array(), $deps = array() + ) { $obj = $cache->get( $key ); if ( is_object( $obj ) && $obj instanceof DependencyWrapper && !$obj->isExpired() ) { @@ -141,14 +141,16 @@ abstract class CacheDependency { /** * Hook to perform any expensive pre-serialize loading of dependency values. */ - function loadDependencyValues() { } + function loadDependencyValues() { + } } /** * @ingroup Cache */ class FileDependency extends CacheDependency { - var $filename, $timestamp; + private $filename; + private $timestamp; /** * Create a file dependency @@ -172,6 +174,7 @@ class FileDependency extends CacheDependency { */ function __sleep() { $this->loadDependencyValues(); + return array( 'filename', 'timestamp' ); } @@ -198,6 +201,7 @@ class FileDependency extends CacheDependency { } else { # Deleted wfDebug( "Dependency triggered: {$this->filename} deleted.\n" ); + return true; } } else { @@ -205,6 +209,7 @@ class FileDependency extends CacheDependency { if ( $lastmod > $this->timestamp ) { # Modified or created wfDebug( "Dependency triggered: {$this->filename} changed.\n" ); + return true; } else { # Not modified @@ -214,186 +219,12 @@ class FileDependency extends CacheDependency { } } -/** - * @ingroup Cache - */ -class TitleDependency extends CacheDependency { - var $titleObj; - var $ns, $dbk; - var $touched; - - /** - * Construct a title dependency - * @param $title Title - */ - function __construct( Title $title ) { - $this->titleObj = $title; - $this->ns = $title->getNamespace(); - $this->dbk = $title->getDBkey(); - } - - function loadDependencyValues() { - $this->touched = $this->getTitle()->getTouched(); - } - - /** - * Get rid of bulky Title object for sleep - * - * @return array - */ - function __sleep() { - return array( 'ns', 'dbk', 'touched' ); - } - - /** - * @return Title - */ - function getTitle() { - if ( !isset( $this->titleObj ) ) { - $this->titleObj = Title::makeTitle( $this->ns, $this->dbk ); - } - - return $this->titleObj; - } - - /** - * @return bool - */ - function isExpired() { - $touched = $this->getTitle()->getTouched(); - - if ( $this->touched === false ) { - if ( $touched === false ) { - # Still missing - return false; - } else { - # Created - return true; - } - } elseif ( $touched === false ) { - # Deleted - return true; - } elseif ( $touched > $this->touched ) { - # Updated - return true; - } else { - # Unmodified - return false; - } - } -} - -/** - * @ingroup Cache - */ -class TitleListDependency extends CacheDependency { - var $linkBatch; - var $timestamps; - - /** - * Construct a dependency on a list of titles - * @param $linkBatch LinkBatch - */ - function __construct( LinkBatch $linkBatch ) { - $this->linkBatch = $linkBatch; - } - - /** - * @return array - */ - function calculateTimestamps() { - # Initialise values to false - $timestamps = array(); - - foreach ( $this->getLinkBatch()->data as $ns => $dbks ) { - if ( count( $dbks ) > 0 ) { - $timestamps[$ns] = array(); - - foreach ( $dbks as $dbk => $value ) { - $timestamps[$ns][$dbk] = false; - } - } - } - - # Do the query - if ( count( $timestamps ) ) { - $dbr = wfGetDB( DB_SLAVE ); - $where = $this->getLinkBatch()->constructSet( 'page', $dbr ); - $res = $dbr->select( - 'page', - array( 'page_namespace', 'page_title', 'page_touched' ), - $where, - __METHOD__ - ); - - foreach ( $res as $row ) { - $timestamps[$row->page_namespace][$row->page_title] = $row->page_touched; - } - } - - return $timestamps; - } - - function loadDependencyValues() { - $this->timestamps = $this->calculateTimestamps(); - } - - /** - * @return array - */ - function __sleep() { - return array( 'timestamps' ); - } - - /** - * @return LinkBatch - */ - function getLinkBatch() { - if ( !isset( $this->linkBatch ) ) { - $this->linkBatch = new LinkBatch; - $this->linkBatch->setArray( $this->timestamps ); - } - return $this->linkBatch; - } - - /** - * @return bool - */ - function isExpired() { - $newTimestamps = $this->calculateTimestamps(); - - foreach ( $this->timestamps as $ns => $dbks ) { - foreach ( $dbks as $dbk => $oldTimestamp ) { - $newTimestamp = $newTimestamps[$ns][$dbk]; - - if ( $oldTimestamp === false ) { - if ( $newTimestamp === false ) { - # Still missing - } else { - # Created - return true; - } - } elseif ( $newTimestamp === false ) { - # Deleted - return true; - } elseif ( $newTimestamp > $oldTimestamp ) { - # Updated - return true; - } else { - # Unmodified - } - } - } - - return false; - } -} - /** * @ingroup Cache */ class GlobalDependency extends CacheDependency { - var $name, $value; + private $name; + private $value; function __construct( $name ) { $this->name = $name; @@ -407,6 +238,7 @@ class GlobalDependency extends CacheDependency { if ( !isset( $GLOBALS[$this->name] ) ) { return true; } + return $GLOBALS[$this->name] != $this->value; } } @@ -415,7 +247,8 @@ class GlobalDependency extends CacheDependency { * @ingroup Cache */ class ConstantDependency extends CacheDependency { - var $name, $value; + private $name; + private $value; function __construct( $name ) { $this->name = $name;