1007225e5Sgerardnico<?php 2007225e5Sgerardnico 3007225e5Sgerardnico 404fd306cSNickeauuse ComboStrap\ExceptionCompile; 5007225e5Sgerardnicouse ComboStrap\PluginUtility; 64cadd4f8SNickeauuse ComboStrap\Site; 704fd306cSNickeauuse ComboStrap\SlotSystem; 821913ab3SNickeauuse ComboStrap\TplUtility; 9007225e5Sgerardnico 10007225e5Sgerardnico/** 11007225e5Sgerardnico * Class action_plugin_combo_hidden 12007225e5Sgerardnico * Hide page 1385e82846SNickeau * 1485e82846SNickeau * 1585e82846SNickeau * More on the official [[doku>config:hidepages|DokuWiki documentation]] 16007225e5Sgerardnico */ 17007225e5Sgerardnicoclass action_plugin_combo_hiddenpage extends DokuWiki_Action_Plugin 18007225e5Sgerardnico{ 19007225e5Sgerardnico 20007225e5Sgerardnico 2121913ab3SNickeau const CANONICAL = ""; 2221913ab3SNickeau 23007225e5Sgerardnico public function register(Doku_Event_Handler $controller) 24007225e5Sgerardnico { 25007225e5Sgerardnico /** 26007225e5Sgerardnico * https://www.dokuwiki.org/devel:event:pageutils_id_hidepage 27007225e5Sgerardnico */ 28007225e5Sgerardnico $controller->register_hook('PAGEUTILS_ID_HIDEPAGE', 'BEFORE', $this, 'handleIsHidden', array()); 29007225e5Sgerardnico } 30007225e5Sgerardnico 31007225e5Sgerardnico function handleIsHidden(&$event, $param) 32007225e5Sgerardnico { 33*d4f86651Sgerardnico 34007225e5Sgerardnico 35007225e5Sgerardnico /** 3685e82846SNickeau * Caching the slot and private namespace 37007225e5Sgerardnico */ 38*d4f86651Sgerardnico $namesToHide = []; 39*d4f86651Sgerardnico $namesToHide[] = SlotSystem::getSidebarName(); 40*d4f86651Sgerardnico $namesToHide[] = SlotSystem::getPageHeaderSlotName(); 41*d4f86651Sgerardnico $namesToHide[] = PluginUtility::COMBOSTRAP_NAMESPACE_NAME; 42*d4f86651Sgerardnico $namesToHide[] = SlotSystem::getPageFooterSlotName(); 43*d4f86651Sgerardnico $namesToHide[] = SlotSystem::getMainSideSlotName(); 44*d4f86651Sgerardnico $namesToHide[] = SlotSystem::getMainFooterSlotName(); 45*d4f86651Sgerardnico $namesToHide[] = SlotSystem::getMainHeaderSlotName(); 46*d4f86651Sgerardnico // Remove empty string elements 47*d4f86651Sgerardnico $namesToHidenotEmpty = array_filter($namesToHide, function ($value) { 48*d4f86651Sgerardnico return trim($value) !== ''; 49*d4f86651Sgerardnico }); 50*d4f86651Sgerardnico $pattern = "(" . implode('|', $namesToHidenotEmpty) . ")"; 51007225e5Sgerardnico if (preg_match('/' . $pattern . '/ui', ':' . $event->data['id'])) { 52007225e5Sgerardnico $event->data['hidden'] = true; 53007225e5Sgerardnico } 54007225e5Sgerardnico 55007225e5Sgerardnico } 56007225e5Sgerardnico 57007225e5Sgerardnico 58007225e5Sgerardnico} 59