Fixed r76560: one more caller of now-private toUnsigned6
[mediawiki.git] / includes / TitleArray.php
blobf7a9e1dc64edfcff7eac07fdcac99cdd659f89e4
1 <?php
2 /**
3 * Note: this entire file is a byte-for-byte copy of UserArray.php with
4 * s/User/Title/. If anyone can figure out how to do this nicely with inheri-
5 * tance or something, please do so.
6 */
8 /**
9 * The TitleArray class only exists to provide the newFromResult method at pre-
10 * sent.
12 abstract class TitleArray implements Iterator {
13 /**
14 * @param $res result A MySQL result including at least page_namespace and
15 * page_title -- also can have page_id, page_len, page_is_redirect,
16 * page_latest (if those will be used). See Title::newFromRow.
17 * @return TitleArray
19 static function newFromResult( $res ) {
20 $array = null;
21 if ( !wfRunHooks( 'TitleArrayFromResult', array( &$array, $res ) ) ) {
22 return null;
24 if ( $array === null ) {
25 $array = self::newFromResult_internal( $res );
27 return $array;
30 protected static function newFromResult_internal( $res ) {
31 $array = new TitleArrayFromResult( $res );
32 return $array;
36 class TitleArrayFromResult extends TitleArray {
37 var $res;
38 var $key, $current;
40 function __construct( $res ) {
41 $this->res = $res;
42 $this->key = 0;
43 $this->setCurrent( $this->res->current() );
46 protected function setCurrent( $row ) {
47 if ( $row === false ) {
48 $this->current = false;
49 } else {
50 $this->current = Title::newFromRow( $row );
54 public function count() {
55 return $this->res->numRows();
58 function current() {
59 return $this->current;
62 function key() {
63 return $this->key;
66 function next() {
67 $row = $this->res->next();
68 $this->setCurrent( $row );
69 $this->key++;
72 function rewind() {
73 $this->res->rewind();
74 $this->key = 0;
75 $this->setCurrent( $this->res->current() );
78 function valid() {
79 return $this->current !== false;