xref: /plugin/combo/action/metadescription.php (revision 5f891b7e09648e05e78f5882f3fdde1e9df9b0f1)
1007225e5Sgerardnico<?php
2007225e5Sgerardnico
3007225e5Sgerardnicouse ComboStrap\LogUtility;
4*5f891b7eSNickeauuse ComboStrap\Page;
5007225e5Sgerardnico
6007225e5Sgerardnico
7007225e5Sgerardnico/**
8007225e5Sgerardnico * Take the metadata description
9007225e5Sgerardnico *
10007225e5Sgerardnico */
11007225e5Sgerardnico
12007225e5Sgerardnico
13007225e5Sgerardnicoclass action_plugin_combo_metadescription extends DokuWiki_Action_Plugin
14007225e5Sgerardnico{
15007225e5Sgerardnico
16007225e5Sgerardnico    const DESCRIPTION_META_KEY = 'description';
17007225e5Sgerardnico    const DESCRIPTION_PROPERTY = 'og:description';
18007225e5Sgerardnico
19007225e5Sgerardnico    public function register(Doku_Event_Handler $controller)
20007225e5Sgerardnico    {
21007225e5Sgerardnico        $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'description_modification', array());
22007225e5Sgerardnico    }
23007225e5Sgerardnico
24007225e5Sgerardnico    /**
25007225e5Sgerardnico     * Add a meta-data description
26*5f891b7eSNickeau     * @param $event
27*5f891b7eSNickeau     * @param $param
28007225e5Sgerardnico     */
29007225e5Sgerardnico    function description_modification(&$event, $param)
30007225e5Sgerardnico    {
31007225e5Sgerardnico
32007225e5Sgerardnico        global $ID;
33*5f891b7eSNickeau        if (empty($ID)) {
34*5f891b7eSNickeau            return;  // Admin call for instance
35*5f891b7eSNickeau        }
36007225e5Sgerardnico
37007225e5Sgerardnico        /**
38007225e5Sgerardnico         * Description
39007225e5Sgerardnico         * https://www.dokuwiki.org/devel:metadata
40007225e5Sgerardnico         */
41*5f891b7eSNickeau        $page = new Page($ID);
42007225e5Sgerardnico
43*5f891b7eSNickeau        $description = $page->getDescriptionOrElseDokuWiki();
44007225e5Sgerardnico        if (empty($description)) {
45007225e5Sgerardnico            $this->sendDestInfo($ID);
46007225e5Sgerardnico            return;
47007225e5Sgerardnico        }
48007225e5Sgerardnico
49007225e5Sgerardnico        // Add it to the meta
50007225e5Sgerardnico        $event->data['meta'][] = array("name" => self::DESCRIPTION_META_KEY, "content" => $description);
51007225e5Sgerardnico        $event->data['meta'][] = array("property" => self::DESCRIPTION_PROPERTY, "content" => $description);
52007225e5Sgerardnico
53007225e5Sgerardnico
54007225e5Sgerardnico    }
55007225e5Sgerardnico
56007225e5Sgerardnico    /**
57007225e5Sgerardnico     * Just send a test info
58007225e5Sgerardnico     * @param $ID
59007225e5Sgerardnico     */
60007225e5Sgerardnico    public function sendDestInfo($ID)
61007225e5Sgerardnico    {
62007225e5Sgerardnico        if (defined('DOKU_UNITTEST')) {
63007225e5Sgerardnico            // When you make a admin test call, the page ID = start and there is no meta
64007225e5Sgerardnico            // When there is only an icon, there is also no meta
65007225e5Sgerardnico            global $INPUT;
66007225e5Sgerardnico            $showActions = ["show", ""]; // Empty for the test
67007225e5Sgerardnico            if (in_array($INPUT->str("do"), $showActions)) {
68007225e5Sgerardnico                LogUtility::msg("Page ($ID): The description should never be null when rendering the page", LogUtility::LVL_MSG_INFO);
69007225e5Sgerardnico            }
70007225e5Sgerardnico        }
71007225e5Sgerardnico    }
72007225e5Sgerardnico
73007225e5Sgerardnico
74007225e5Sgerardnico}
75