]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - includes/user/UserArrayFromResult.php
MediaWiki 1.30.2-scripts
[autoinstalls/mediawiki.git] / includes / user / UserArrayFromResult.php
1 <?php
2 /**
3  * Class to walk into a list of User objects.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  * http://www.gnu.org/copyleft/gpl.html
19  *
20  * @file
21  */
22
23 use Wikimedia\Rdbms\ResultWrapper;
24
25 class UserArrayFromResult extends UserArray implements Countable {
26         /** @var ResultWrapper */
27         public $res;
28
29         /** @var int */
30         public $key;
31
32         /** @var bool|User */
33         public $current;
34
35         /**
36          * @param ResultWrapper $res
37          */
38         function __construct( $res ) {
39                 $this->res = $res;
40                 $this->key = 0;
41                 $this->setCurrent( $this->res->current() );
42         }
43
44         /**
45          * @param bool|stdClass $row
46          * @return void
47          */
48         protected function setCurrent( $row ) {
49                 if ( $row === false ) {
50                         $this->current = false;
51                 } else {
52                         $this->current = User::newFromRow( $row );
53                 }
54         }
55
56         /**
57          * @return int
58          */
59         public function count() {
60                 return $this->res->numRows();
61         }
62
63         /**
64          * @return User
65          */
66         function current() {
67                 return $this->current;
68         }
69
70         function key() {
71                 return $this->key;
72         }
73
74         function next() {
75                 $row = $this->res->next();
76                 $this->setCurrent( $row );
77                 $this->key++;
78         }
79
80         function rewind() {
81                 $this->res->rewind();
82                 $this->key = 0;
83                 $this->setCurrent( $this->res->current() );
84         }
85
86         /**
87          * @return bool
88          */
89         function valid() {
90                 return $this->current !== false;
91         }
92 }