File: AllRevisionsIter.php

package info (click to toggle)
phpwiki 1.3.14-3
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 15,716 kB
  • ctags: 23,548
  • sloc: php: 88,295; sql: 1,476; sh: 1,378; perl: 765; makefile: 602; awk: 28
file content (68 lines) | stat: -rwxr-xr-x 1,866 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php // -*-php-*-
rcs_id('$Id: AllRevisionsIter.php,v 1.2 2004/04/26 20:44:35 rurban Exp $');
    
/**
 * An iterator which returns all revisions of page.
 *
 * This iterator uses  only the WikiDB_backend::get_versiondata interface
 * of a WikiDB_backend, and so it should work with all backends.
 */
class WikiDB_backend_dumb_AllRevisionsIter
extends WikiDB_backend_iterator
{
    /**
     * Constructor.
     *
     * @access protected
     * @param $backend object A WikiDB_backend.
     * @param $pagename string Page whose revisions to get.
     */
    function WikiDB_backend_dumb_AllRevisionsIter(&$backend, $pagename) {
        $this->_backend = &$backend;
        $this->_pagename = $pagename;
        $this->_lastversion = -1;
    }
    
    /**
     * Get next revision in sequence.
     *
     * @see WikiDB_backend_iterator_next;
     */
    function next () {
        $backend = &$this->_backend;
        $pagename = &$this->_pagename;
        $version = &$this->_lastversion;

        //$backend->lock();
        if ($this->_lastversion == -1)
            $version = $backend->get_latest_version($pagename);
        elseif ($this->_lastversion > 0)
            $version = $backend->get_previous_version($pagename, $version);

        if ($version)
            $vdata = $backend->get_versiondata($pagename, $version);
        //$backend->unlock();
        
        if ($version == 0)
            return false;

        $rev = array('versiondata' => $vdata,
                     'pagename' => $pagename,
                     'version' => $version);
        
        if (!empty($vdata['%pagedata']))
            $rev['pagedata'] = &$vdata['%pagedata'];

        return $rev;
    }
};

// (c-file-style: "gnu")
// Local Variables:
// mode: php
// tab-width: 8
// c-basic-offset: 4
// c-hanging-comment-ender-p: nil
// indent-tabs-mode: nil
// End:   
?>