xref: /plugin/structpublish/action/show.php (revision e394901a0f7c5b3f8d056c0f4d754d974f4f8413)
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