'ThumbnailImage' => 'includes/MediaTransformOutput.php',
'TitleDependency' => 'includes/CacheDependency.php',
'Title' => 'includes/Title.php',
+ 'TitleArray' => 'includes/TitleArray.php',
'TitleListDependency' => 'includes/CacheDependency.php',
'TransformParameterError' => 'includes/MediaTransformOutput.php',
'TurckBagOStuff' => 'includes/BagOStuff.php',
--- /dev/null
+<?php
+/**
+ * Note: this entire file is a byte-for-byte copy of UserArray.php with
+ * s/User/Title/. If anyone can figure out how to do this nicely with inheri-
+ * tance or something, please do so.
+ */
+
+/**
+ * The TitleArray class only exists to provide the newFromResult method at pre-
+ * sent.
+ */
+abstract class TitleArray implements Iterator {
+ /**
+ * @param $res result A MySQL result including at least page_namespace and
+ * page_title -- also can have page_id, page_len, page_is_redirect,
+ * page_latest (if those will be used). See Title::newFromRow.
+ * @return TitleArray
+ */
+ static function newFromResult( $res ) {
+ $array = null;
+ if ( !wfRunHooks( 'TitleArrayFromResult', array( &$array, $res ) ) ) {
+ return null;
+ }
+ if ( $array === null ) {
+ $array = self::newFromResult_internal( $res );
+ }
+ return $array;
+ }
+
+ protected static function newFromResult_internal( $res ) {
+ $array = new TitleArrayFromResult( $res );
+ return $array;
+ }
+}
+
+class TitleArrayFromResult extends TitleArray {
+ 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 = Title::newFromRow( $row );
+ }
+ }
+
+ 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;
+ }
+}