xref: /plugin/publish/action/start.php (revision 8655d91a14ca25bb1c5b1618a27c7db99fb251de)
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
71794c5faSDominik Eckelmann    private $hlp;
81794c5faSDominik Eckelmann
91794c5faSDominik Eckelmann    function __construct() {
101794c5faSDominik Eckelmann        $this->hlp = plugin_load('helper','publish');
111794c5faSDominik Eckelmann    }
121794c5faSDominik Eckelmann
131794c5faSDominik Eckelmann    function register(&$controller) {
141794c5faSDominik Eckelmann        $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'handle_start', array());
151794c5faSDominik Eckelmann    }
161794c5faSDominik Eckelmann
171794c5faSDominik Eckelmann    function handle_start(&$event, $param) {
181794c5faSDominik Eckelmann        global $ACT;
191794c5faSDominik Eckelmann        global $REV;
201794c5faSDominik Eckelmann        global $INFO;
211794c5faSDominik Eckelmann        global $ID;
221794c5faSDominik Eckelmann
23*8655d91aSDominik Eckelmann        if ($ACT !== 'show') {
24*8655d91aSDominik Eckelmann            return;
25*8655d91aSDominik Eckelmann        }
261794c5faSDominik Eckelmann
27*8655d91aSDominik Eckelmann        if ($REV != '') {
28*8655d91aSDominik Eckelmann            return;
29*8655d91aSDominik Eckelmann        }
301794c5faSDominik Eckelmann
31*8655d91aSDominik Eckelmann        if ($INFO['perm'] != AUTH_READ) {
32*8655d91aSDominik Eckelmann            return;
33*8655d91aSDominik Eckelmann        }
341794c5faSDominik Eckelmann
351794c5faSDominik Eckelmann        global $_GET;
36*8655d91aSDominik Eckelmann        if($_GET['force_rev']) {
37*8655d91aSDominik Eckelmann            return;
38*8655d91aSDominik Eckelmann        }
391794c5faSDominik Eckelmann
40*8655d91aSDominik Eckelmann        if (!$this->hlp->in_namespace($this->getConf('apr_namespaces'), $ID)) {
41*8655d91aSDominik Eckelmann            return;
42*8655d91aSDominik Eckelmann        }
431794c5faSDominik Eckelmann
44*8655d91aSDominik Eckelmann        $latestApproved = $this->hlp->getLatestApprovedRevision();
45*8655d91aSDominik Eckelmann        if ($latestApproved) {
46*8655d91aSDominik Eckelmann            $REV = $latestApproved;
47*8655d91aSDominik Eckelmann            $INFO['rev'] = $latestApproved;
48*8655d91aSDominik Eckelmann        }
491794c5faSDominik Eckelmann    }
501794c5faSDominik Eckelmann
511794c5faSDominik Eckelmann}
52