4 * An iterator which returns all revisions of page.
6 * This iterator uses only the WikiDB_backend::get_versiondata interface
7 * of a WikiDB_backend, and so it should work with all backends.
9 class WikiDB_backend_dumb_AllRevisionsIter
10 extends WikiDB_backend_iterator
16 * @param $backend object A WikiDB_backend.
17 * @param $pagename string Page whose revisions to get.
19 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;
33 $backend = &$this->_backend;
34 $pagename = &$this->_pagename;
35 $version = &$this->_lastversion;
38 if ($this->_lastversion == -1)
39 $version = $backend->get_latest_version($pagename);
40 elseif ($this->_lastversion > 0)
41 $version = $backend->get_previous_version($pagename, $version);
44 $vdata = $backend->get_versiondata($pagename, $version);
50 if (is_string($vdata) and !empty($vdata)) {
51 $vdata1 = @unserialize($vdata);
53 if (DEBUG) // string but unseriazible
54 trigger_error("Broken page $pagename ignored. Run Check WikiDB", E_USER_WARNING);
59 $rev = array('versiondata' => $vdata,
60 'pagename' => $pagename,
61 'version' => $version);
63 if (!empty($vdata['%pagedata'])) {
64 $rev['pagedata'] = $vdata['%pagedata'];
77 // c-hanging-comment-ender-p: nil
78 // indent-tabs-mode: nil