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