1<?php 2 3if(!defined('DOKU_INC')) die(); 4 5class action_plugin_approve_prettyprint extends DokuWiki_Action_Plugin { 6 7 function register(Doku_Event_Handler $controller) { 8 $controller->register_hook('DOKUWIKI_STARTED', 'AFTER', $this, '_printingInfo'); 9 } 10 11 function _printingInfo(Doku_Event $event, $param) { 12 global $JSINFO, $INFO; 13 14 try { 15 /** @var \helper_plugin_approve_db $db_helper */ 16 $db_helper = plugin_load('helper', 'approve_db'); 17 $sqlite = $db_helper->getDB(); 18 } catch (Exception $e) { 19 msg($e->getMessage(), -1); 20 return; 21 } 22 /** @var helper_plugin_approve $helper */ 23 $helper = plugin_load('helper', 'approve'); 24 25 $JSINFO['approve'] = ['prettyprint' => false]; 26 27 if (!$this->getConf('prettyprint')) return; 28 if (!$helper->use_approve_here($sqlite, $INFO['id'], $approver)) return; 29 30 31 $JSINFO['approve']['prettyprint'] = true; 32 $JSINFO['approve']['lang'] = array( 33 'approved' => $this->getLang('approved'), 34 'marked_approve_ready' => $this->getLang('marked_approve_ready'), 35 'draft' => $this->getLang('draft'), 36 'by' => $this->getLang('by'), 37 'date' => $this->getLang('hdr_updated'), 38 'version' => $this->getLang('version'), 39 'approver' => $this->getLang('approver') 40 ); 41 42 $last_change_date = @filemtime(wikiFN($INFO['id'])); 43 $rev = !$INFO['rev'] ? $last_change_date : $INFO['rev']; 44 45 $res = $sqlite->query('SELECT ready_for_approval, ready_for_approval_by, 46 approved, approved_by, version 47 FROM revision 48 WHERE page=? AND rev=?', $INFO['id'], $rev); 49 50 $approve = $sqlite->res_fetch_assoc($res); 51 52 if ($approve['approved']) { 53 $JSINFO['approve']['status'] = 'approved'; 54 $JSINFO['approve']['author'] = userlink($approve['approved_by'], true); 55 $JSINFO['approve']['date'] = dformat(strtotime($approve['approved'])); 56 $JSINFO['approve']['version'] = $approve['version']; 57 } elseif ($this->getConf('ready_for_approval') && $approve['ready_for_approval']) { 58 $JSINFO['approve']['status'] = 'ready for approval'; 59 $JSINFO['approve']['author'] = userlink($approve['ready_for_approval_by'], true); 60 $JSINFO['approve']['date'] = dformat(strtotime($approve['ready_for_approval'])); 61 } else { 62 $JSINFO['approve']['status'] = 'draft'; 63 if ($INFO['editor']) { 64 $JSINFO['approve']['author'] = userlink($INFO['editor'], true); 65 } else { 66 $JSINFO['approve']['author'] = ''; 67 } 68 $JSINFO['approve']['date'] = dformat($rev); 69 } 70 $JSINFO['approve']['approver'] = userlink($approver, true); 71 } 72 73} 74