xref: /plugin/publish/action/start.php (revision 4aab27f5a7597fbf5f68d942e4bd69208570c181)
11794c5faSDominik Eckelmann<?php
21794c5faSDominik Eckelmann
31794c5faSDominik Eckelmannclass action_plugin_publish_start extends DokuWiki_Action_Plugin {
41794c5faSDominik Eckelmann
5248339c4SDominik Eckelmann    /**
6248339c4SDominik Eckelmann     * @var helper_plugin_publish
7248339c4SDominik Eckelmann     */
81794c5faSDominik Eckelmann    private $hlp;
91794c5faSDominik Eckelmann
101794c5faSDominik Eckelmann    function __construct() {
111794c5faSDominik Eckelmann        $this->hlp = plugin_load('helper','publish');
121794c5faSDominik Eckelmann    }
131794c5faSDominik Eckelmann
145ccce1abSMichael Große    function register(Doku_Event_Handler $controller) {
151794c5faSDominik Eckelmann        $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'handle_start', array());
161794c5faSDominik Eckelmann    }
171794c5faSDominik Eckelmann
18a4264b97SAnna Dabrowska    function handle_start(Doku_Event $event) {
191794c5faSDominik Eckelmann        global $ACT;
201794c5faSDominik Eckelmann        global $REV;
211794c5faSDominik Eckelmann        global $INFO;
22*4aab27f5SLouis Ouellet        global $INPUT;
231794c5faSDominik Eckelmann        global $ID;
241794c5faSDominik Eckelmann
258655d91aSDominik Eckelmann        if ($ACT !== 'show') {
268655d91aSDominik Eckelmann            return;
278655d91aSDominik Eckelmann        }
281794c5faSDominik Eckelmann
29a4264b97SAnna Dabrowska        if (!empty($REV)) {
308655d91aSDominik Eckelmann            return;
318655d91aSDominik Eckelmann        }
321794c5faSDominik Eckelmann
338655d91aSDominik Eckelmann        if ($INFO['perm'] != AUTH_READ) {
348655d91aSDominik Eckelmann            return;
358655d91aSDominik Eckelmann        }
361794c5faSDominik Eckelmann
37*4aab27f5SLouis Ouellet        if($INPUT->has('force_rev')) {
388655d91aSDominik Eckelmann            return;
398655d91aSDominik Eckelmann        }
401794c5faSDominik Eckelmann
41d9258364SDominik Eckelmann        if (!$this->hlp->isActive()) {
428655d91aSDominik Eckelmann            return;
438655d91aSDominik Eckelmann        }
441794c5faSDominik Eckelmann
45546b37feSDominik Eckelmann        if (!$this->hlp->isCurrentRevisionApproved()) {
468655d91aSDominik Eckelmann            $latestApproved = $this->hlp->getLatestApprovedRevision();
478655d91aSDominik Eckelmann            if ($latestApproved) {
488655d91aSDominik Eckelmann                $REV = $latestApproved;
498655d91aSDominik Eckelmann                $INFO['rev'] = $latestApproved;
508655d91aSDominik Eckelmann            }
511794c5faSDominik Eckelmann        }
52546b37feSDominik Eckelmann    }
531794c5faSDominik Eckelmann}
54