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}