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 { 1551066f27SAnna 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; 2551066f27SAnna Dabrowska global $INFO; 26e394901aSAnna Dabrowska 2751066f27SAnna Dabrowska $this->permissionsHelper = plugin_load('helper', 'structpublish_permissions'); 28*40f4519bSAnna Dabrowska /** @var helper_plugin_structpublish_db $dbHelper */ 2951066f27SAnna Dabrowska $dbHelper = plugin_load('helper', 'structpublish_db'); 30e394901aSAnna Dabrowska 31*40f4519bSAnna Dabrowska if (!$this->permissionsHelper->isPublishable()) return; 32*40f4519bSAnna Dabrowska 33*40f4519bSAnna Dabrowska $currentRevision = new Revision($dbHelper->getDB(), $ID, $INFO['currentrev']); 3451066f27SAnna Dabrowska if ( 3551066f27SAnna Dabrowska $currentRevision->getStatus() !== Revision::STATUS_PUBLISHED 3651066f27SAnna Dabrowska && !$dbHelper->IS_PUBLISHER($ID) 3751066f27SAnna Dabrowska ) { 38e394901aSAnna Dabrowska /** @var Revision $latestPublished */ 3951066f27SAnna Dabrowska $latestPublished = $currentRevision->getLatestPublishedRev(); 40e394901aSAnna Dabrowska if (!$latestPublished) { 41e394901aSAnna Dabrowska $event->data = 'denied'; 42e394901aSAnna Dabrowska 43e394901aSAnna Dabrowska $event->preventDefault(); 44e394901aSAnna Dabrowska $event->stopPropagation(); 45e394901aSAnna Dabrowska 46e394901aSAnna Dabrowska print p_locale_xhtml('denied'); 47e394901aSAnna Dabrowska } 48e394901aSAnna Dabrowska 4951066f27SAnna Dabrowska $REV = $latestPublished; 5051066f27SAnna Dabrowska $INFO['rev'] = $latestPublished; 51e394901aSAnna Dabrowska } 52e394901aSAnna Dabrowska } 53e394901aSAnna Dabrowska} 54