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.
9 * The TitleArray class only exists to provide the newFromResult method at pre-
12 abstract class TitleArray
implements Iterator
{
14 * @param $res ResultWrapper A SQL 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 TitleArrayFromResult
19 static function newFromResult( $res ) {
21 if ( !wfRunHooks( 'TitleArrayFromResult', array( &$array, $res ) ) ) {
24 if ( $array === null ) {
25 $array = self
::newFromResult_internal( $res );
31 * @param $res ResultWrapper
32 * @return TitleArrayFromResult
34 protected static function newFromResult_internal( $res ) {
35 $array = new TitleArrayFromResult( $res );
40 class TitleArrayFromResult
extends TitleArray
{
48 function __construct( $res ) {
51 $this->setCurrent( $this->res
->current() );
55 * @param $row ResultWrapper
58 protected function setCurrent( $row ) {
59 if ( $row === false ) {
60 $this->current
= false;
62 $this->current
= Title
::newFromRow( $row );
69 public function count() {
70 return $this->res
->numRows();
74 return $this->current
;
82 $row = $this->res
->next();
83 $this->setCurrent( $row );
90 $this->setCurrent( $this->res
->current() );
97 return $this->current
!== false;