MediaWiki  master
RevisionListBase.php
Go to the documentation of this file.
1 <?php
25 
29 abstract class RevisionListBase extends ContextSource implements Iterator {
31  public $title;
32 
34  protected $ids;
35 
37  protected $res;
38 
40  protected $current;
41 
48  $this->setContext( $context );
49  $this->title = $title;
50  }
51 
56  function filterByIds( array $ids ) {
57  $this->ids = $ids;
58  }
59 
65  public function getType() {
66  return null;
67  }
68 
72  protected function initCurrent() {
73  $row = $this->res->current();
74  if ( $row ) {
75  $this->current = $this->newItem( $row );
76  } else {
77  $this->current = false;
78  }
79  }
80 
85  public function reset() {
86  if ( !$this->res ) {
87  $this->res = $this->doQuery( wfGetDB( DB_REPLICA ) );
88  } else {
89  $this->res->rewind();
90  }
91  $this->initCurrent();
92  return $this->current;
93  }
94 
95  public function rewind() {
96  $this->reset();
97  }
98 
103  public function current() {
104  return $this->current;
105  }
106 
112  public function next() {
113  $this->res->next();
114  $this->initCurrent();
115  return $this->current;
116  }
117 
118  public function key() {
119  return $this->res ? $this->res->key() : 0;
120  }
121 
122  public function valid() {
123  return $this->res ? $this->res->valid() : false;
124  }
125 
130  public function length() {
131  if ( !$this->res ) {
132  return 0;
133  } else {
134  return $this->res->numRows();
135  }
136  }
137 
143  abstract public function doQuery( $db );
144 
150  abstract public function newItem( $row );
151 }
setContext(IContextSource $context)
getType()
Get the internal type name of this list.
initCurrent()
Initialise the current iteration pointer.
The simplest way of implementing IContextSource is to hold a RequestContext as a member variable and ...
IResultWrapper false $res
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
reset()
Start iteration.
current()
Get the current list item, or false if we are at the end.
__construct(IContextSource $context, Title $title)
Construct a revision list for a given title.
IContextSource $context
List for revision table items for a single page.
next()
Move the iteration pointer to the next list item, and return it.
doQuery( $db)
Do the DB query to iterate through the objects.
filterByIds(array $ids)
Select items only where the ID is any of the specified values.
RevisionItemBase false $current
const DB_REPLICA
Definition: defines.php:25
length()
Get the number of items in the list.
newItem( $row)
Create an item object from a DB result row.