xref: /plugin/combo/action/hiddenpage.php (revision 4cadd4f8c541149bdda95f080e38a6d4e3a640ca)
1007225e5Sgerardnico<?php
2007225e5Sgerardnico
3007225e5Sgerardnico
4*4cadd4f8SNickeauuse ComboStrap\ExceptionCombo;
5007225e5Sgerardnicouse ComboStrap\PluginUtility;
6*4cadd4f8SNickeauuse ComboStrap\Site;
7007225e5Sgerardnicouse ComboStrap\TplConstant;
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    {
33007225e5Sgerardnico        global $conf;
34007225e5Sgerardnico
35007225e5Sgerardnico        /**
3685e82846SNickeau         * Caching the slot and private namespace
37007225e5Sgerardnico         */
38007225e5Sgerardnico        $pattern = "(" . $conf['sidebar'] . "|" . PluginUtility::COMBOSTRAP_NAMESPACE_NAME;
39007225e5Sgerardnico        if ($conf['template'] == PluginUtility::TEMPLATE_STRAP_NAME) {
40*4cadd4f8SNickeau            try {
41*4cadd4f8SNickeau                Site::loadStrapUtilityTemplateIfPresentAndSameVersion();
42*4cadd4f8SNickeau            } catch (ExceptionCombo $e) {
43*4cadd4f8SNickeau                return;
44*4cadd4f8SNickeau            }
45531e725cSNickeau
46531e725cSNickeau            $pattern .= "|" . TplUtility::getFooterSlotPageName();
47531e725cSNickeau            $pattern .= "|" . TplUtility::getSideKickSlotPageName();
48531e725cSNickeau            $pattern .= "|" . TplUtility::getHeaderSlotPageName();
49*4cadd4f8SNickeau            $pattern .= "|" . TplUtility::getMainFooterSlotName();
50*4cadd4f8SNickeau            $pattern .= "|" . TplUtility::getMainHeaderSlotName();
51531e725cSNickeau
524bbe70e0Sgerardnico        }
53007225e5Sgerardnico        $pattern .= ")";
54007225e5Sgerardnico        if (preg_match('/' . $pattern . '/ui', ':' . $event->data['id'])) {
55007225e5Sgerardnico            $event->data['hidden'] = true;
56007225e5Sgerardnico        }
57007225e5Sgerardnico
58007225e5Sgerardnico    }
59007225e5Sgerardnico
60007225e5Sgerardnico
61007225e5Sgerardnico}
62