xref: /plugin/publish/action/hide.php (revision 687bc0f198c5f80164f05faf069165f2c44f805d)
117d0ef8fSDominik Eckelmann<?php
217d0ef8fSDominik Eckelmann
317d0ef8fSDominik Eckelmannif(!defined('DOKU_INC')) die();
417d0ef8fSDominik Eckelmann
517d0ef8fSDominik Eckelmannclass action_plugin_publish_hide extends DokuWiki_Action_Plugin {
617d0ef8fSDominik Eckelmann
717d0ef8fSDominik Eckelmann    /**
817d0ef8fSDominik Eckelmann     * @var helper_plugin_publish
917d0ef8fSDominik Eckelmann     */
1017d0ef8fSDominik Eckelmann    private $hlp;
1117d0ef8fSDominik Eckelmann
1217d0ef8fSDominik Eckelmann    function __construct() {
1317d0ef8fSDominik Eckelmann        $this->hlp = plugin_load('helper','publish');
1417d0ef8fSDominik Eckelmann    }
1517d0ef8fSDominik Eckelmann
16c2a737a8SDominik Eckelmann    function register(Doku_Event_Handler &$controller) {
1717d0ef8fSDominik Eckelmann        $controller->register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'hide', array());
185eecc2e6SDominik Eckelmann        $controller->register_hook('PAGEUTILS_ID_HIDEPAGE', 'BEFORE', $this, 'hidePage', array());
1917d0ef8fSDominik Eckelmann    }
2017d0ef8fSDominik Eckelmann
2117d0ef8fSDominik Eckelmann    /**
2217d0ef8fSDominik Eckelmann     * @param Doku_Event $event
2317d0ef8fSDominik Eckelmann     * @param array $param
2417d0ef8fSDominik Eckelmann     */
255eecc2e6SDominik Eckelmann    function hide(Doku_Event &$event, $param) {
26*687bc0f1SRené Corinth
27*687bc0f1SRené Corinth        // if the actual namespace is aet in the no_apr_namespace
28*687bc0f1SRené Corinth        global $ID;
29*687bc0f1SRené Corinth        $no_apr_namespaces = $this->getConf('no_apr_namespaces');
30*687bc0f1SRené Corinth        if (!empty($no_apr_namespaces)) {
31*687bc0f1SRené Corinth            if ($this->hlp->in_namespace($no_apr_namespaces, $ID)) {
32*687bc0f1SRené Corinth                return false;
33*687bc0f1SRené Corinth            }
34*687bc0f1SRené Corinth        }
35*687bc0f1SRené Corinth
362b00c146SDominik Eckelmann        if (!$this->hlp->isHiddenForUser()) {
3717d0ef8fSDominik Eckelmann            return;
3817d0ef8fSDominik Eckelmann        }
3917d0ef8fSDominik Eckelmann
4017d0ef8fSDominik Eckelmann        global $ACT;
4117d0ef8fSDominik Eckelmann        if (!in_array($ACT, array('show', 'edit', 'source', 'diff'))) {
4217d0ef8fSDominik Eckelmann            return;
4317d0ef8fSDominik Eckelmann        }
4417d0ef8fSDominik Eckelmann
4517d0ef8fSDominik Eckelmann        $ACT = 'denied';
4617d0ef8fSDominik Eckelmann
4717d0ef8fSDominik Eckelmann        $event->preventDefault();
4817d0ef8fSDominik Eckelmann        $event->stopPropagation();
4917d0ef8fSDominik Eckelmann
5017d0ef8fSDominik Eckelmann        print p_locale_xhtml('denied');
515eecc2e6SDominik Eckelmann    }
5217d0ef8fSDominik Eckelmann
535eecc2e6SDominik Eckelmann    function hidePage(Doku_Event &$event, $params) {
545eecc2e6SDominik Eckelmann        if (!$this->hlp->isHiddenForUser($event->data['id'])) {
555eecc2e6SDominik Eckelmann            return;
565eecc2e6SDominik Eckelmann        }
575eecc2e6SDominik Eckelmann
585eecc2e6SDominik Eckelmann        $event->data['hidden'] = true;
5917d0ef8fSDominik Eckelmann    }
6017d0ef8fSDominik Eckelmann
6117d0ef8fSDominik Eckelmann}