MediaWiki  REL1_21
HashBagOStuff.php
Go to the documentation of this file.
00001 <?php
00030 class HashBagOStuff extends BagOStuff {
00031         var $bag;
00032 
00033         function __construct() {
00034                 $this->bag = array();
00035         }
00036 
00041         protected function expire( $key ) {
00042                 $et = $this->bag[$key][1];
00043 
00044                 if ( ( $et == 0 ) || ( $et > time() ) ) {
00045                         return false;
00046                 }
00047 
00048                 $this->delete( $key );
00049 
00050                 return true;
00051         }
00052 
00058         function get( $key, &$casToken = null ) {
00059                 if ( !isset( $this->bag[$key] ) ) {
00060                         return false;
00061                 }
00062 
00063                 if ( $this->expire( $key ) ) {
00064                         return false;
00065                 }
00066 
00067                 $casToken = $this->bag[$key][0];
00068 
00069                 return $this->bag[$key][0];
00070         }
00071 
00078         function set( $key, $value, $exptime = 0 ) {
00079                 $this->bag[$key] = array( $value, $this->convertExpiry( $exptime ) );
00080                 return true;
00081         }
00082 
00090         function cas( $casToken, $key, $value, $exptime = 0 ) {
00091                 if ( $this->get( $key ) === $casToken ) {
00092                         return $this->set( $key, $value, $exptime );
00093                 }
00094 
00095                 return false;
00096         }
00097 
00103         function delete( $key, $time = 0 ) {
00104                 if ( !isset( $this->bag[$key] ) ) {
00105                         return false;
00106                 }
00107 
00108                 unset( $this->bag[$key] );
00109 
00110                 return true;
00111         }
00112 }