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