xref: /plugin/combo/action/hiddenpage.php (revision 367745ad05e8a818af6b4c543d2e70f3438e58a2)
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