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