1e394901aSAnna Dabrowska<?php 2e394901aSAnna Dabrowska 3e31c94d7SAndreas Gohruse dokuwiki\plugin\structpublish\meta\Constants; 4e394901aSAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Revision; 5e394901aSAnna Dabrowska 6e394901aSAnna Dabrowskaclass action_plugin_structpublish_show extends DokuWiki_Action_Plugin 7e394901aSAnna Dabrowska{ 8e394901aSAnna Dabrowska /** 9e394901aSAnna Dabrowska * @inheritDoc 10e394901aSAnna Dabrowska */ 11e394901aSAnna Dabrowska public function register(Doku_Event_Handler $controller) 12e394901aSAnna Dabrowska { 1351066f27SAnna Dabrowska $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handleShow'); 14e394901aSAnna Dabrowska } 15e394901aSAnna Dabrowska 16e394901aSAnna Dabrowska public function handleShow(Doku_Event $event) 17e394901aSAnna Dabrowska { 18e394901aSAnna Dabrowska if ($event->data != 'show') return; 19e394901aSAnna Dabrowska 20e394901aSAnna Dabrowska global $ID; 21e394901aSAnna Dabrowska global $REV; 2251066f27SAnna Dabrowska global $INFO; 23e394901aSAnna Dabrowska 2440f4519bSAnna Dabrowska /** @var helper_plugin_structpublish_db $dbHelper */ 2551066f27SAnna Dabrowska $dbHelper = plugin_load('helper', 'structpublish_db'); 26e394901aSAnna Dabrowska 27939e6e3cSAnna Dabrowska if (!$dbHelper->isPublishable()) return; 2840f4519bSAnna Dabrowska 2940f4519bSAnna Dabrowska $currentRevision = new Revision($dbHelper->getDB(), $ID, $INFO['currentrev']); 30dafa9812SAnna Dabrowska /** @var action_plugin_structpublish_sqlitefunction $functions */ 31dafa9812SAnna Dabrowska $functions = plugin_load('action', 'structpublish_sqlitefunction'); 3251066f27SAnna Dabrowska if ( 33e31c94d7SAndreas Gohr $currentRevision->getStatus() !== Constants::STATUS_PUBLISHED 34dafa9812SAnna Dabrowska && !$functions->IS_PUBLISHER($ID) 3551066f27SAnna Dabrowska ) { 36*0dcf68caSAnna Dabrowska $latestPublishedRev = $currentRevision->getLatestPublishedRevision()->getRev(); 378d2065f7SAnna Dabrowska if (!$latestPublishedRev) { 38e394901aSAnna Dabrowska $event->data = 'denied'; 3963483f20SAndreas Gohr // FIXME we could add our own action to display a custom message instead of standard denied action 40e394901aSAnna Dabrowska } 41e394901aSAnna Dabrowska 428d2065f7SAnna Dabrowska $REV = $latestPublishedRev; 438d2065f7SAnna Dabrowska $INFO['rev'] = $latestPublishedRev; 44e394901aSAnna Dabrowska } 45e394901aSAnna Dabrowska } 46e394901aSAnna Dabrowska} 47