xref: /plugin/publish/action/start.php (revision a4264b97505956ebfb113595a120408c64edbc32)
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
18*a4264b97SAnna Dabrowska    function handle_start(Doku_Event $event) {
191794c5faSDominik Eckelmann        global $ACT;
201794c5faSDominik Eckelmann        global $REV;
211794c5faSDominik Eckelmann        global $INFO;
221794c5faSDominik Eckelmann        global $ID;
231794c5faSDominik Eckelmann
248655d91aSDominik Eckelmann        if ($ACT !== 'show') {
258655d91aSDominik Eckelmann            return;
268655d91aSDominik Eckelmann        }
271794c5faSDominik Eckelmann
28*a4264b97SAnna Dabrowska        if (!empty($REV)) {
298655d91aSDominik Eckelmann            return;
308655d91aSDominik Eckelmann        }
311794c5faSDominik Eckelmann
328655d91aSDominik Eckelmann        if ($INFO['perm'] != AUTH_READ) {
338655d91aSDominik Eckelmann            return;
348655d91aSDominik Eckelmann        }
351794c5faSDominik Eckelmann
361794c5faSDominik Eckelmann        global $_GET;
378655d91aSDominik Eckelmann        if($_GET['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