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 20 if (!$this->hlp->in_namespace($this->getConf('apr_namespaces'), $ID)) { 21 return; 22 } 23 24 $meta = p_get_metadata($ID); 25 $latest_rev = $meta['last_change']['date']; 26 27 $member = null; 28 foreach ($event->data->_content as $key => $ref) { 29 if($ref['_elem'] == 'opentag' && $ref['_tag'] == 'div' && $ref['class'] == 'li') { 30 $member = $key; 31 } 32 33 if ($member && $ref['_elem'] == 'tag' && 34 $ref['_tag'] == 'input' && $ref['name'] == 'rev2[]'){ 35 if ($meta['approval'][$ref['value']] || 36 ($ref['value'] == 'current' && $meta['approval'][$latest_rev])) { 37 $event->data->_content[$member]['class'] = 'li approved_revision'; 38 } else { 39 $event->data->_content[$member]['class'] = 'li unapproved_revision'; 40 } 41 $member = null; 42 } 43 } 44 45 return true; 46 } 47 48} 49