xref: /plugin/publish/action/start.php (revision 248339c4fdbea2827b9d99434ca08bdf627df7a7)
11794c5faSDominik Eckelmann<?php
21794c5faSDominik Eckelmann
31794c5faSDominik Eckelmannif(!defined('DOKU_INC')) die();
41794c5faSDominik Eckelmann
51794c5faSDominik Eckelmannclass action_plugin_publish_start extends DokuWiki_Action_Plugin {
61794c5faSDominik Eckelmann
7*248339c4SDominik Eckelmann    /**
8*248339c4SDominik Eckelmann     * @var helper_plugin_publish
9*248339c4SDominik Eckelmann     */
101794c5faSDominik Eckelmann    private $hlp;
111794c5faSDominik Eckelmann
121794c5faSDominik Eckelmann    function __construct() {
131794c5faSDominik Eckelmann        $this->hlp = plugin_load('helper','publish');
141794c5faSDominik Eckelmann    }
151794c5faSDominik Eckelmann
161794c5faSDominik Eckelmann    function register(&$controller) {
171794c5faSDominik Eckelmann        $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'handle_start', array());
181794c5faSDominik Eckelmann    }
191794c5faSDominik Eckelmann
201794c5faSDominik Eckelmann    function handle_start(&$event, $param) {
211794c5faSDominik Eckelmann        global $ACT;
221794c5faSDominik Eckelmann        global $REV;
231794c5faSDominik Eckelmann        global $INFO;
241794c5faSDominik Eckelmann        global $ID;
251794c5faSDominik Eckelmann
268655d91aSDominik Eckelmann        if ($ACT !== 'show') {
278655d91aSDominik Eckelmann            return;
288655d91aSDominik Eckelmann        }
291794c5faSDominik Eckelmann
308655d91aSDominik Eckelmann        if ($REV != '') {
318655d91aSDominik Eckelmann            return;
328655d91aSDominik Eckelmann        }
331794c5faSDominik Eckelmann
348655d91aSDominik Eckelmann        if ($INFO['perm'] != AUTH_READ) {
358655d91aSDominik Eckelmann            return;
368655d91aSDominik Eckelmann        }
371794c5faSDominik Eckelmann
381794c5faSDominik Eckelmann        global $_GET;
398655d91aSDominik Eckelmann        if($_GET['force_rev']) {
408655d91aSDominik Eckelmann            return;
418655d91aSDominik Eckelmann        }
421794c5faSDominik Eckelmann
438655d91aSDominik Eckelmann        if (!$this->hlp->in_namespace($this->getConf('apr_namespaces'), $ID)) {
448655d91aSDominik Eckelmann            return;
458655d91aSDominik Eckelmann        }
461794c5faSDominik Eckelmann
478655d91aSDominik Eckelmann        $latestApproved = $this->hlp->getLatestApprovedRevision();
488655d91aSDominik Eckelmann        if ($latestApproved) {
498655d91aSDominik Eckelmann            $REV = $latestApproved;
508655d91aSDominik Eckelmann            $INFO['rev'] = $latestApproved;
518655d91aSDominik Eckelmann        }
521794c5faSDominik Eckelmann    }
531794c5faSDominik Eckelmann
541794c5faSDominik Eckelmann}
55