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