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 7d9258364SDominik Eckelmann /** 8d9258364SDominik Eckelmann * @var helper_plugin_publish 9d9258364SDominik Eckelmann */ 101794c5faSDominik Eckelmann private $hlp; 111794c5faSDominik Eckelmann 121794c5faSDominik Eckelmann function __construct() { 131794c5faSDominik Eckelmann $this->hlp = plugin_load('helper','publish'); 141794c5faSDominik Eckelmann } 151794c5faSDominik Eckelmann 165ccce1abSMichael Große function register(Doku_Event_Handler $controller) { 171794c5faSDominik Eckelmann $controller->register_hook('HTML_REVISIONSFORM_OUTPUT', 'BEFORE', $this, 'handle_revisions', array()); 181794c5faSDominik Eckelmann } 191794c5faSDominik Eckelmann 20d9258364SDominik Eckelmann function handle_revisions(Doku_Event &$event, $param) { 211794c5faSDominik Eckelmann global $ID; 22909a4de8SDominik Eckelmann global $INFO; 231794c5faSDominik Eckelmann 24d9258364SDominik Eckelmann if (!$this->hlp->isActive()) { 251794c5faSDominik Eckelmann return; 261794c5faSDominik Eckelmann } 271794c5faSDominik Eckelmann 281794c5faSDominik Eckelmann $meta = p_get_metadata($ID); 291794c5faSDominik Eckelmann 301794c5faSDominik Eckelmann $member = null; 311794c5faSDominik Eckelmann foreach ($event->data->_content as $key => $ref) { 32a224d022SSam Wilson if(isset($ref['_elem']) && $ref['_elem'] == 'opentag' && $ref['_tag'] == 'div' && $ref['class'] == 'li') { 331794c5faSDominik Eckelmann $member = $key; 341794c5faSDominik Eckelmann } 351794c5faSDominik Eckelmann 36fe1c2e04SPhy if ($member && isset($ref['_elem']) && $ref['_elem'] == 'tag' && 371794c5faSDominik Eckelmann $ref['_tag'] == 'input' && $ref['name'] == 'rev2[]'){ 38909a4de8SDominik Eckelmann 39909a4de8SDominik Eckelmann $revision = $ref['value']; 40909a4de8SDominik Eckelmann if ($revision == 'current') { 41*e0fdb4d5SAnna Dabrowska // handle minor revisions and external edits 42*e0fdb4d5SAnna Dabrowska $revision = isset($meta['last_change']['date']) ? 43*e0fdb4d5SAnna Dabrowska $meta['last_change']['date'] : 44*e0fdb4d5SAnna Dabrowska $INFO['meta']['date']['modified']; 45909a4de8SDominik Eckelmann } 46909a4de8SDominik Eckelmann if ($this->hlp->isRevisionApproved($revision)) { 471794c5faSDominik Eckelmann $event->data->_content[$member]['class'] = 'li approved_revision'; 481794c5faSDominik Eckelmann } else { 491794c5faSDominik Eckelmann $event->data->_content[$member]['class'] = 'li unapproved_revision'; 501794c5faSDominik Eckelmann } 511794c5faSDominik Eckelmann $member = null; 521794c5faSDominik Eckelmann } 531794c5faSDominik Eckelmann } 541794c5faSDominik Eckelmann 551794c5faSDominik Eckelmann return true; 561794c5faSDominik Eckelmann } 571794c5faSDominik Eckelmann 581794c5faSDominik Eckelmann} 59