11aeb2b4dSghi<?php 21aeb2b4dSghi 31aeb2b4dSghiif(!defined('DOKU_INC')) die(); 41aeb2b4dSghi 51aeb2b4dSghiclass action_plugin_approve_revisions extends DokuWiki_Action_Plugin { 61aeb2b4dSghi 750481663SSzymon Olewniczak function register(Doku_Event_Handler $controller) { 81aeb2b4dSghi $controller->register_hook('HTML_REVISIONSFORM_OUTPUT', 'BEFORE', $this, 'handle_revisions', array()); 91aeb2b4dSghi } 101aeb2b4dSghi 11d0c5854eSSzymon Olewniczak function handle_revisions(Doku_Event $event, $param) { 12d8ede060SSzymon Olewniczak global $INFO; 131aeb2b4dSghi 14*0c60a293SSzymon Olewniczak try { 15*0c60a293SSzymon Olewniczak /** @var \helper_plugin_approve_db $db_helper */ 16*0c60a293SSzymon Olewniczak $db_helper = plugin_load('helper', 'approve_db'); 17*0c60a293SSzymon Olewniczak $sqlite = $db_helper->getDB(); 18*0c60a293SSzymon Olewniczak } catch (Exception $e) { 19*0c60a293SSzymon Olewniczak msg($e->getMessage(), -1); 20*0c60a293SSzymon Olewniczak return; 21*0c60a293SSzymon Olewniczak } 22*0c60a293SSzymon Olewniczak /** @var helper_plugin_approve $helper */ 23*0c60a293SSzymon Olewniczak $helper = plugin_load('helper', 'approve'); 2450481663SSzymon Olewniczak 25*0c60a293SSzymon Olewniczak if (!$helper->use_approve_here($sqlite, $INFO['id'])) return; 26*0c60a293SSzymon Olewniczak 27*0c60a293SSzymon Olewniczak $res = $sqlite->query('SELECT rev, approved, ready_for_approval 28d8ede060SSzymon Olewniczak FROM revision 29d8ede060SSzymon Olewniczak WHERE page=?', $INFO['id']); 30*0c60a293SSzymon Olewniczak $approveRevisions = $sqlite->res2arr($res); 31d8ede060SSzymon Olewniczak $approveRevisions = array_combine(array_column($approveRevisions, 'rev'), $approveRevisions); 32d8ede060SSzymon Olewniczak 33d8ede060SSzymon Olewniczak $member = null; 341aeb2b4dSghi foreach ($event->data->_content as $key => $ref) { 35d8ede060SSzymon Olewniczak if(isset($ref['_elem']) && $ref['_elem'] == 'opentag' && $ref['_tag'] == 'div' && $ref['class'] == 'li') { 3655f447f4SSzymon Olewniczak $member = $key; 3755f447f4SSzymon Olewniczak } 3855f447f4SSzymon Olewniczak 39d8ede060SSzymon Olewniczak if ($member && $ref['_elem'] == 'tag' && 40d8ede060SSzymon Olewniczak $ref['_tag'] == 'input' && $ref['name'] == 'rev2[]'){ 41d8ede060SSzymon Olewniczak $revision = $ref['value']; 42d8ede060SSzymon Olewniczak if ($revision == 'current') { 43d8ede060SSzymon Olewniczak $revision = $INFO['meta']['date']['modified']; 44d8ede060SSzymon Olewniczak } 45d8ede060SSzymon Olewniczak if (!isset($approveRevisions[$revision])) { 46d8ede060SSzymon Olewniczak $class = 'plugin__approve_red'; 47d8ede060SSzymon Olewniczak } elseif ($approveRevisions[$revision]['approved']) { 48d8ede060SSzymon Olewniczak $class = 'plugin__approve_green'; 49d8ede060SSzymon Olewniczak } elseif ($this->getConf('ready_for_approval') && $approveRevisions[$revision]['ready_for_approval']) { 50d8ede060SSzymon Olewniczak $class = 'plugin__approve_ready'; 51d8ede060SSzymon Olewniczak } else { 52d8ede060SSzymon Olewniczak $class = 'plugin__approve_red'; 53d8ede060SSzymon Olewniczak } 54d8ede060SSzymon Olewniczak 55d8ede060SSzymon Olewniczak $event->data->_content[$member]['class'] = "li $class"; 56d8ede060SSzymon Olewniczak 57d8ede060SSzymon Olewniczak $member = null; 58d8ede060SSzymon Olewniczak } 591aeb2b4dSghi } 601aeb2b4dSghi } 611aeb2b4dSghi 621aeb2b4dSghi} 63