]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - lib/WikiDB/backend/dumb/AllRevisionsIter.php
Reformat code
[SourceForge/phpwiki.git] / lib / WikiDB / backend / dumb / AllRevisionsIter.php
1 <?php
2
3 /**
4  * An iterator which returns all revisions of page.
5  *
6  * This iterator uses  only the WikiDB_backend::get_versiondata interface
7  * of a WikiDB_backend, and so it should work with all backends.
8  */
9 class WikiDB_backend_dumb_AllRevisionsIter
10     extends WikiDB_backend_iterator
11 {
12     /**
13      * Constructor.
14      *
15      * @access protected
16      * @param $backend object A WikiDB_backend.
17      * @param $pagename string Page whose revisions to get.
18      */
19     function WikiDB_backend_dumb_AllRevisionsIter(&$backend, $pagename)
20     {
21         $this->_backend = &$backend;
22         $this->_pagename = $pagename;
23         $this->_lastversion = -1;
24     }
25
26     /**
27      * Get next revision in sequence.
28      *
29      * @see WikiDB_backend_iterator_next;
30      */
31     function next()
32     {
33         $backend = &$this->_backend;
34         $pagename = &$this->_pagename;
35         $version = &$this->_lastversion;
36
37         //$backend->lock();
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);
42
43         if ($version)
44             $vdata = $backend->get_versiondata($pagename, $version);
45         //$backend->unlock();
46
47         if ($version == 0)
48             return false;
49
50         if (is_string($vdata) and !empty($vdata)) {
51             $vdata1 = @unserialize($vdata);
52             if (empty($vdata1)) {
53                 if (DEBUG) // string but unseriazible
54                     trigger_error("Broken page $pagename ignored. Run Check WikiDB", E_USER_WARNING);
55                 return false;
56             }
57             $vdata = $vdata1;
58         }
59         $rev = array('versiondata' => $vdata,
60             'pagename' => $pagename,
61             'version' => $version);
62
63         if (!empty($vdata['%pagedata'])) {
64             $rev['pagedata'] = $vdata['%pagedata'];
65         }
66
67         return $rev;
68     }
69 }
70
71 ;
72
73 // Local Variables:
74 // mode: php
75 // tab-width: 8
76 // c-basic-offset: 4
77 // c-hanging-comment-ender-p: nil
78 // indent-tabs-mode: nil
79 // End: