1e394901aSAnna Dabrowska<?php 2e394901aSAnna Dabrowska 3e394901aSAnna Dabrowskause dokuwiki\plugin\structpublish\meta\Revision; 4e394901aSAnna Dabrowska 5e394901aSAnna Dabrowskaclass action_plugin_structpublish_show extends DokuWiki_Action_Plugin 6e394901aSAnna Dabrowska{ 7e394901aSAnna Dabrowska /** @var \helper_plugin_structpublish_permissions */ 8e394901aSAnna Dabrowska protected $permissionsHelper; 9e394901aSAnna Dabrowska 10e394901aSAnna Dabrowska /** 11e394901aSAnna Dabrowska * @inheritDoc 12e394901aSAnna Dabrowska */ 13e394901aSAnna Dabrowska public function register(Doku_Event_Handler $controller) 14e394901aSAnna Dabrowska { 15*51066f27SAnna Dabrowska $controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'handleShow'); 16e394901aSAnna Dabrowska } 17e394901aSAnna Dabrowska 18e394901aSAnna Dabrowska public function handleShow(Doku_Event $event) 19e394901aSAnna Dabrowska { 20e394901aSAnna Dabrowska if ($event->data != 'show') return; 21e394901aSAnna Dabrowska 22e394901aSAnna Dabrowska 23e394901aSAnna Dabrowska global $ID; 24e394901aSAnna Dabrowska global $REV; 25*51066f27SAnna Dabrowska global $INFO; 26e394901aSAnna Dabrowska 27*51066f27SAnna Dabrowska $this->permissionsHelper = plugin_load('helper', 'structpublish_permissions'); 28e394901aSAnna Dabrowska $sqlite = $this->permissionsHelper->getDb(); 29*51066f27SAnna Dabrowska $dbHelper = plugin_load('helper', 'structpublish_db'); 30e394901aSAnna Dabrowska 31e394901aSAnna Dabrowska $currentRevision = new Revision($sqlite, $ID, $INFO['currentrev']); 32*51066f27SAnna Dabrowska if ( 33*51066f27SAnna Dabrowska $currentRevision->getStatus() !== Revision::STATUS_PUBLISHED 34*51066f27SAnna Dabrowska && !$dbHelper->IS_PUBLISHER($ID) 35*51066f27SAnna Dabrowska ) { 36e394901aSAnna Dabrowska /** @var Revision $latestPublished */ 37*51066f27SAnna Dabrowska $latestPublished = $currentRevision->getLatestPublishedRev(); 38e394901aSAnna Dabrowska if (!$latestPublished) { 39e394901aSAnna Dabrowska $event->data = 'denied'; 40e394901aSAnna Dabrowska 41e394901aSAnna Dabrowska $event->preventDefault(); 42e394901aSAnna Dabrowska $event->stopPropagation(); 43e394901aSAnna Dabrowska 44e394901aSAnna Dabrowska print p_locale_xhtml('denied'); 45e394901aSAnna Dabrowska } 46e394901aSAnna Dabrowska 47*51066f27SAnna Dabrowska $REV = $latestPublished; 48*51066f27SAnna Dabrowska $INFO['rev'] = $latestPublished; 49e394901aSAnna Dabrowska } 50e394901aSAnna Dabrowska } 51e394901aSAnna Dabrowska} 52