xref: /plugin/publish/action/revisions.php (revision d925836499a451841905892e9450b59427c1ea5a)
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
7*d9258364SDominik Eckelmann    /**
8*d9258364SDominik Eckelmann     * @var helper_plugin_publish
9*d9258364SDominik Eckelmann     */
101794c5faSDominik Eckelmann    private $hlp;
111794c5faSDominik Eckelmann
121794c5faSDominik Eckelmann    function __construct() {
131794c5faSDominik Eckelmann        $this->hlp = plugin_load('helper','publish');
141794c5faSDominik Eckelmann    }
151794c5faSDominik Eckelmann
16*d9258364SDominik Eckelmann    function register(Doku_Event_Handler &$controller) {
171794c5faSDominik Eckelmann        $controller->register_hook('HTML_REVISIONSFORM_OUTPUT', 'BEFORE', $this, 'handle_revisions', array());
181794c5faSDominik Eckelmann    }
191794c5faSDominik Eckelmann
20*d9258364SDominik Eckelmann    function handle_revisions(Doku_Event &$event, $param) {
211794c5faSDominik Eckelmann        global $ID;
22909a4de8SDominik Eckelmann        global $INFO;
231794c5faSDominik Eckelmann
24*d9258364SDominik Eckelmann        if (!$this->hlp->isActive()) {
251794c5faSDominik Eckelmann            return;
261794c5faSDominik Eckelmann        }
271794c5faSDominik Eckelmann
281794c5faSDominik Eckelmann        $meta = p_get_metadata($ID);
291794c5faSDominik Eckelmann        $latest_rev = $meta['last_change']['date'];
301794c5faSDominik Eckelmann
311794c5faSDominik Eckelmann        $member = null;
321794c5faSDominik Eckelmann        foreach ($event->data->_content as $key => $ref) {
331794c5faSDominik Eckelmann            if($ref['_elem'] == 'opentag' && $ref['_tag'] == 'div' && $ref['class'] == 'li') {
341794c5faSDominik Eckelmann                $member = $key;
351794c5faSDominik Eckelmann            }
361794c5faSDominik Eckelmann
371794c5faSDominik Eckelmann            if ($member && $ref['_elem'] == 'tag' &&
381794c5faSDominik Eckelmann                $ref['_tag'] == 'input' && $ref['name'] == 'rev2[]'){
39909a4de8SDominik Eckelmann
40909a4de8SDominik Eckelmann                $revision = $ref['value'];
41909a4de8SDominik Eckelmann                if ($revision == 'current') {
42909a4de8SDominik Eckelmann                    $revision = $INFO['meta']['date']['modified'];
43909a4de8SDominik Eckelmann                }
44909a4de8SDominik Eckelmann                if ($this->hlp->isRevisionApproved($revision)) {
451794c5faSDominik Eckelmann                    $event->data->_content[$member]['class'] = 'li approved_revision';
461794c5faSDominik Eckelmann                } else {
471794c5faSDominik Eckelmann                    $event->data->_content[$member]['class'] = 'li unapproved_revision';
481794c5faSDominik Eckelmann                }
491794c5faSDominik Eckelmann                $member = null;
501794c5faSDominik Eckelmann            }
511794c5faSDominik Eckelmann        }
521794c5faSDominik Eckelmann
531794c5faSDominik Eckelmann        return true;
541794c5faSDominik Eckelmann    }
551794c5faSDominik Eckelmann
561794c5faSDominik Eckelmann}
57