5 * An iterator which returns all revisions of page.
7 * This iterator uses only the WikiDB_backend::get_versiondata interface
8 * of a WikiDB_backend, and so it should work with all backends.
10 class WikiDB_backend_dumb_AllRevisionsIter
11 extends WikiDB_backend_iterator
17 * @param $backend object A WikiDB_backend.
18 * @param $pagename string Page whose revisions to get.
20 function WikiDB_backend_dumb_AllRevisionsIter(&$backend, $pagename) {
21 $this->_backend = &$backend;
22 $this->_pagename = $pagename;
23 $this->_lastversion = -1;
27 * Get next revision in sequence.
29 * @see WikiDB_backend_iterator_next;
32 $backend = &$this->_backend;
33 $pagename = &$this->_pagename;
34 $version = &$this->_lastversion;
37 if ($this->_lastversion == -1)
38 $version = $backend->get_latest_version($pagename);
39 elseif ($this->_lastversion > 0)
40 $version = $backend->get_previous_version($pagename, $version);
43 $vdata = $backend->get_versiondata($pagename, $version);
49 if (is_string($vdata) and !empty($vdata)) {
50 $vdata1 = @unserialize($vdata);
52 if (DEBUG) // string but unseriazible
53 trigger_error ("Broken page $pagename ignored. Run Check WikiDB", E_USER_WARNING);
58 $rev = array('versiondata' => $vdata,
59 'pagename' => $pagename,
60 'version' => $version);
62 if (!empty($vdata['%pagedata'])) {
63 $rev['pagedata'] = $vdata['%pagedata'];
74 // c-hanging-comment-ender-p: nil
75 // indent-tabs-mode: nil