xref: /plugin/publish/action/revisions.php (revision 7fcadbfe49e52208fe09000352d49f623d9804de)
1<?php
2
3if(!defined('DOKU_INC')) die();
4
5class action_plugin_publish_revisions extends DokuWiki_Action_Plugin {
6
7    /**
8     * @var helper_plugin_publish
9     */
10    private $hlp;
11
12    function __construct() {
13        $this->hlp = plugin_load('helper','publish');
14    }
15
16    function register(Doku_Event_Handler $controller) {
17        $controller->register_hook('HTML_REVISIONSFORM_OUTPUT', 'BEFORE', $this, 'handle_revisions', array());
18    }
19
20    function handle_revisions(Doku_Event &$event, $param) {
21        global $ID;
22        global $INFO;
23
24        if (!$this->hlp->isActive()) {
25            return;
26        }
27
28        $meta = p_get_metadata($ID);
29        $latest_rev = $meta['last_change']['date'];
30
31        $member = null;
32        foreach ($event->data->_content as $key => $ref) {
33            if(isset($ref['_elem']) && $ref['_elem'] == 'opentag' && $ref['_tag'] == 'div' && $ref['class'] == 'li') {
34                $member = $key;
35            }
36
37            if ($member && $ref['_elem'] == 'tag' &&
38                $ref['_tag'] == 'input' && $ref['name'] == 'rev2[]'){
39
40                $revision = $ref['value'];
41                if ($revision == 'current') {
42                    $revision = $INFO['meta']['date']['modified'];
43                }
44                if ($this->hlp->isRevisionApproved($revision)) {
45                    $event->data->_content[$member]['class'] = 'li approved_revision';
46                } else {
47                    $event->data->_content[$member]['class'] = 'li unapproved_revision';
48                }
49                $member = null;
50            }
51        }
52
53        return true;
54    }
55
56}
57