xref: /plugin/publish/action/revisions.php (revision 909a4de83a3a9f79bd8ac58692d0c222e847e2dd)
11794c5faSDominik Eckelmann<?php
21794c5faSDominik Eckelmann
31794c5faSDominik Eckelmannif(!defined('DOKU_INC')) die();
41794c5faSDominik Eckelmann
51794c5faSDominik Eckelmannclass action_plugin_publish_revisions extends DokuWiki_Action_Plugin {
61794c5faSDominik Eckelmann
71794c5faSDominik Eckelmann    private $hlp;
81794c5faSDominik Eckelmann
91794c5faSDominik Eckelmann    function __construct() {
101794c5faSDominik Eckelmann        $this->hlp = plugin_load('helper','publish');
111794c5faSDominik Eckelmann    }
121794c5faSDominik Eckelmann
131794c5faSDominik Eckelmann    function register(&$controller) {
141794c5faSDominik Eckelmann        $controller->register_hook('HTML_REVISIONSFORM_OUTPUT', 'BEFORE', $this, 'handle_revisions', array());
151794c5faSDominik Eckelmann    }
161794c5faSDominik Eckelmann
171794c5faSDominik Eckelmann    function handle_revisions(&$event, $param) {
181794c5faSDominik Eckelmann        global $ID;
19*909a4de8SDominik Eckelmann        global $INFO;
201794c5faSDominik Eckelmann
211794c5faSDominik Eckelmann        if (!$this->hlp->in_namespace($this->getConf('apr_namespaces'), $ID)) {
221794c5faSDominik Eckelmann            return;
231794c5faSDominik Eckelmann        }
241794c5faSDominik Eckelmann
251794c5faSDominik Eckelmann        $meta = p_get_metadata($ID);
261794c5faSDominik Eckelmann        $latest_rev = $meta['last_change']['date'];
271794c5faSDominik Eckelmann
281794c5faSDominik Eckelmann        $member = null;
291794c5faSDominik Eckelmann        foreach ($event->data->_content as $key => $ref) {
301794c5faSDominik Eckelmann            if($ref['_elem'] == 'opentag' && $ref['_tag'] == 'div' && $ref['class'] == 'li') {
311794c5faSDominik Eckelmann                $member = $key;
321794c5faSDominik Eckelmann            }
331794c5faSDominik Eckelmann
341794c5faSDominik Eckelmann            if ($member && $ref['_elem'] == 'tag' &&
351794c5faSDominik Eckelmann                $ref['_tag'] == 'input' && $ref['name'] == 'rev2[]'){
36*909a4de8SDominik Eckelmann
37*909a4de8SDominik Eckelmann                $revision = $ref['value'];
38*909a4de8SDominik Eckelmann                if ($revision == 'current') {
39*909a4de8SDominik Eckelmann                    $revision = $INFO['meta']['date']['modified'];
40*909a4de8SDominik Eckelmann                }
41*909a4de8SDominik Eckelmann                if ($this->hlp->isRevisionApproved($revision)) {
421794c5faSDominik Eckelmann                    $event->data->_content[$member]['class'] = 'li approved_revision';
431794c5faSDominik Eckelmann                } else {
441794c5faSDominik Eckelmann                    $event->data->_content[$member]['class'] = 'li unapproved_revision';
451794c5faSDominik Eckelmann                }
461794c5faSDominik Eckelmann                $member = null;
471794c5faSDominik Eckelmann            }
481794c5faSDominik Eckelmann        }
491794c5faSDominik Eckelmann
501794c5faSDominik Eckelmann        return true;
511794c5faSDominik Eckelmann    }
521794c5faSDominik Eckelmann
531794c5faSDominik Eckelmann}
54