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) { 17*adc7dac8SHenk-B $controller->register_hook('FORM_REVISIONS_OUTPUT', 'AFTER', $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; 3181624315SHenk-B for ($pos = 0; $pos < $event->data->elementCount(); $pos++) { 3281624315SHenk-B $ref = $event->data->getElementAt($pos); 3381624315SHenk-B if ($ref->getType() != 'tagclose') { 3481624315SHenk-B if ($ref->val() == 'div' && $ref->attr('class') == 'li') 3581624315SHenk-B $member = $event->data->getElementAt($pos); 361794c5faSDominik Eckelmann 3781624315SHenk-B if ($member && $ref->attr('name') == 'rev2[]'){ 3881624315SHenk-B $revision = $ref->attr('value'); 39909a4de8SDominik Eckelmann if ($revision == 'current') { 40e0fdb4d5SAnna Dabrowska // handle minor revisions and external edits 41e0fdb4d5SAnna Dabrowska $revision = isset($meta['last_change']['date']) ? 42e0fdb4d5SAnna Dabrowska $meta['last_change']['date'] : 43e0fdb4d5SAnna Dabrowska $INFO['meta']['date']['modified']; 44909a4de8SDominik Eckelmann } 45909a4de8SDominik Eckelmann if ($this->hlp->isRevisionApproved($revision)) { 4681624315SHenk-B $member->addClass('approved_revision'); 471794c5faSDominik Eckelmann } else { 4881624315SHenk-B $member->addClass('unapproved_revision'); 491794c5faSDominik Eckelmann } 501794c5faSDominik Eckelmann $member = null; 511794c5faSDominik Eckelmann } 521794c5faSDominik Eckelmann } 5381624315SHenk-B } 541794c5faSDominik Eckelmann return true; 551794c5faSDominik Eckelmann } 561794c5faSDominik Eckelmann 571794c5faSDominik Eckelmann} 58