]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - includes/UserArray.php
MediaWiki 1.14.0
[autoinstallsdev/mediawiki.git] / includes / UserArray.php
diff --git a/includes/UserArray.php b/includes/UserArray.php
new file mode 100644 (file)
index 0000000..a2f54b7
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+
+abstract class UserArray implements Iterator {
+       static function newFromResult( $res ) {
+               $userArray = null;
+               if ( !wfRunHooks( 'UserArrayFromResult', array( &$userArray, $res ) ) ) {
+                       return null;
+               }
+               if ( $userArray === null ) {
+                       $userArray = self::newFromResult_internal( $res );
+               }
+               return $userArray;
+       }
+
+       protected static function newFromResult_internal( $res ) {
+               $userArray = new UserArrayFromResult( $res );
+               return $userArray;
+       }
+}
+
+class UserArrayFromResult extends UserArray {
+       var $res;
+       var $key, $current;
+
+       function __construct( $res ) {
+               $this->res = $res;
+               $this->key = 0;
+               $this->setCurrent( $this->res->current() );
+       }
+
+       protected function setCurrent( $row ) {
+               if ( $row === false ) {
+                       $this->current = false;
+               } else {
+                       $this->current = User::newFromRow( $row );
+               }
+       }
+
+       public function count() {
+               return $this->res->numRows();
+       }
+
+       function current() {
+               return $this->current;
+       }
+
+       function key() {
+               return $this->key;
+       }
+
+       function next() {
+               $row = $this->res->next();
+               $this->setCurrent( $row );
+               $this->key++;
+       }
+
+       function rewind() {
+               $this->res->rewind();
+               $this->key = 0;
+               $this->setCurrent( $this->res->current() );
+       }
+
+       function valid() {
+               return $this->current !== false;
+       }
+}