From ca32f08966f1b51fcb19460f0996bb0c4048e6fe Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Sat, 3 Dec 2011 13:29:22 +0100 Subject: Update to MediaWiki 1.18.0 * also update ArchLinux skin to chagnes in MonoBook * Use only css to hide our menu bar when printing --- includes/objectcache/MultiWriteBagOStuff.php | 113 +++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 includes/objectcache/MultiWriteBagOStuff.php (limited to 'includes/objectcache/MultiWriteBagOStuff.php') diff --git a/includes/objectcache/MultiWriteBagOStuff.php b/includes/objectcache/MultiWriteBagOStuff.php new file mode 100644 index 00000000..2b88b427 --- /dev/null +++ b/includes/objectcache/MultiWriteBagOStuff.php @@ -0,0 +1,113 @@ +caches = array(); + foreach ( $params['caches'] as $cacheInfo ) { + $this->caches[] = ObjectCache::newFromParams( $cacheInfo ); + } + } + + public function setDebug( $debug ) { + $this->doWrite( 'setDebug', $debug ); + } + + public function get( $key ) { + foreach ( $this->caches as $cache ) { + $value = $cache->get( $key ); + if ( $value !== false ) { + return $value; + } + } + return false; + } + + public function set( $key, $value, $exptime = 0 ) { + return $this->doWrite( 'set', $key, $value, $exptime ); + } + + public function delete( $key, $time = 0 ) { + return $this->doWrite( 'delete', $key, $time ); + } + + public function add( $key, $value, $exptime = 0 ) { + return $this->doWrite( 'add', $key, $value, $exptime ); + } + + public function replace( $key, $value, $exptime = 0 ) { + return $this->doWrite( 'replace', $key, $value, $exptime ); + } + + public function incr( $key, $value = 1 ) { + return $this->doWrite( 'incr', $key, $value ); + } + + public function decr( $key, $value = 1 ) { + return $this->doWrite( 'decr', $key, $value ); + } + + public function lock( $key, $timeout = 0 ) { + // Lock only the first cache, to avoid deadlocks + if ( isset( $this->caches[0] ) ) { + return $this->caches[0]->lock( $key, $timeout ); + } else { + return true; + } + } + + public function unlock( $key ) { + if ( isset( $this->caches[0] ) ) { + return $this->caches[0]->unlock( $key ); + } else { + return true; + } + } + + protected function doWrite( $method /*, ... */ ) { + $ret = true; + $args = func_get_args(); + array_shift( $args ); + + foreach ( $this->caches as $cache ) { + if ( !call_user_func_array( array( $cache, $method ), $args ) ) { + $ret = false; + } + } + return $ret; + } + + /** + * Delete objects expiring before a certain date. + * + * Succeed if any of the child caches succeed. + */ + public function deleteObjectsExpiringBefore( $date ) { + $ret = false; + foreach ( $this->caches as $cache ) { + if ( $cache->deleteObjectsExpiringBefore( $date ) ) { + $ret = true; + } + } + return $ret; + } +} -- cgit v1.2.3-54-g00ecf