15bbfd4a0SIkuo Obataya<?php 2d409808bSgithub-actions[bot] 3e689d293SMark Prins/** 4e689d293SMark Prins * Description action plugin. 5e689d293SMark Prins * 6e689d293SMark Prins * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 7e689d293SMark Prins * @author Ikuo Obataya <I.Obataya@gmail.com> 8e689d293SMark Prins * @author Matthias Schulte <dokuwiki@lupo49.de>. 9e689d293SMark Prins * @author Mark C. Prins <mprins@users.sf.net> 10e689d293SMark Prins * 11*ab9621a8SMark Prins * @phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps 12*ab9621a8SMark Prins * @noinspection AutoloadingIssuesInspection 13e689d293SMark Prins */ 14e874628fSMatthias Schulte 15e689d293SMark Prinsuse dokuwiki\Extension\ActionPlugin; 16e689d293SMark Prinsuse dokuwiki\Extension\Event; 17e689d293SMark Prinsuse dokuwiki\Extension\EventHandler; 185bbfd4a0SIkuo Obataya 19e689d293SMark Prinsconst KEYWORD_SOURCE_ABSTRACT = 'abstract'; 20e689d293SMark Prinsconst KEYWORD_SOURCE_GLOBAL = 'global'; 21e689d293SMark Prinsconst KEYWORD_SOURCE_SYNTAX = 'syntax'; 22e874628fSMatthias Schulte 23e689d293SMark Prinsclass action_plugin_description extends ActionPlugin 24e689d293SMark Prins{ 25e689d293SMark Prins final public function register(EventHandler $controller): void 26e689d293SMark Prins { 27d409808bSgithub-actions[bot] $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'description', []); 285bbfd4a0SIkuo Obataya } 29e874628fSMatthias Schulte 305bbfd4a0SIkuo Obataya /** 31b78c60d0Slupo49 * Add an abstract, global value or a specified string to meta header 325bbfd4a0SIkuo Obataya */ 33*ab9621a8SMark Prins final public function description(Event $event): void 34e689d293SMark Prins { 35e689d293SMark Prins if (empty($event->data) || empty($event->data['meta'])) { 36e689d293SMark Prins return; 37e689d293SMark Prins } 385bbfd4a0SIkuo Obataya 395bbfd4a0SIkuo Obataya global $ID; 40e874628fSMatthias Schulte $source = $this->getConf('keyword_source'); 41e689d293SMark Prins if (empty($source)) { 42e689d293SMark Prins $source = 'abstract'; 43e689d293SMark Prins } 44e874628fSMatthias Schulte 45*ab9621a8SMark Prins $metaContent = ''; 46*ab9621a8SMark Prins switch ($source) { 47*ab9621a8SMark Prins case KEYWORD_SOURCE_ABSTRACT: 48cca55c74SMark Prins if (auth_quickaclcheck($ID) < AUTH_READ) { 49cca55c74SMark Prins // don't add meta header when user has no read permissions 50cca55c74SMark Prins return; 51cca55c74SMark Prins } 525bbfd4a0SIkuo Obataya $d = p_get_metadata($ID, 'description'); 53e689d293SMark Prins if (empty($d)) { 54e689d293SMark Prins return; 55e689d293SMark Prins } 56*ab9621a8SMark Prins $metaContent = str_replace("\n", " ", $d['abstract']); 57*ab9621a8SMark Prins if (empty($metaContent)) { 58e689d293SMark Prins return; 59e689d293SMark Prins } 60*ab9621a8SMark Prins break; 61*ab9621a8SMark Prins case KEYWORD_SOURCE_GLOBAL: 62*ab9621a8SMark Prins $metaContent = $this->getConf('global_description'); 63*ab9621a8SMark Prins if (empty($metaContent)) { 64e689d293SMark Prins return; 65e689d293SMark Prins } 66*ab9621a8SMark Prins break; 67*ab9621a8SMark Prins case KEYWORD_SOURCE_SYNTAX: 68cca55c74SMark Prins if (auth_quickaclcheck($ID) < AUTH_READ) { 69cca55c74SMark Prins // don't add meta header when user has no read permissions 70cca55c74SMark Prins return; 71cca55c74SMark Prins } 72e874628fSMatthias Schulte $metadata = p_get_metadata($ID); 73*ab9621a8SMark Prins $metaContent = $metadata['plugin_description']['keywords']; 74*ab9621a8SMark Prins if (empty($metaContent)) { 75e689d293SMark Prins return; 76e689d293SMark Prins } 77*ab9621a8SMark Prins break; 78*ab9621a8SMark Prins 79e874628fSMatthias Schulte } 805bbfd4a0SIkuo Obataya 81*ab9621a8SMark Prins $event->data['meta'][] = ["name" => "description", "content" => $metaContent]; 825bbfd4a0SIkuo Obataya } 835bbfd4a0SIkuo Obataya} 84