15bbfd4a0SIkuo Obataya<?php 2*d409808bSgithub-actions[bot] 3e689d293SMark Prins/* 4e689d293SMark Prins * @phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps 5e689d293SMark Prins * @noinspection AutoloadingIssuesInspection 65bbfd4a0SIkuo Obataya */ 75bbfd4a0SIkuo Obataya 8e689d293SMark Prins/** 9e689d293SMark Prins * Description action plugin. 10e689d293SMark Prins * 11e689d293SMark Prins * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 12e689d293SMark Prins * @author Ikuo Obataya <I.Obataya@gmail.com> 13e689d293SMark Prins * @author Matthias Schulte <dokuwiki@lupo49.de>. 14e689d293SMark Prins * @author Mark C. Prins <mprins@users.sf.net> 15e689d293SMark Prins * 16e689d293SMark Prins */ 17e874628fSMatthias Schulte 18e689d293SMark Prinsuse dokuwiki\Extension\ActionPlugin; 19e689d293SMark Prinsuse dokuwiki\Extension\Event; 20e689d293SMark Prinsuse dokuwiki\Extension\EventHandler; 215bbfd4a0SIkuo Obataya 22e689d293SMark Prinsconst KEYWORD_SOURCE_ABSTRACT = 'abstract'; 23e689d293SMark Prinsconst KEYWORD_SOURCE_GLOBAL = 'global'; 24e689d293SMark Prinsconst KEYWORD_SOURCE_SYNTAX = 'syntax'; 25e874628fSMatthias Schulte 26e689d293SMark Prinsclass action_plugin_description extends ActionPlugin 27e689d293SMark Prins{ 28e689d293SMark Prins final public function register(EventHandler $controller): void 29e689d293SMark Prins { 30*d409808bSgithub-actions[bot] $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'description', []); 315bbfd4a0SIkuo Obataya } 32e874628fSMatthias Schulte 335bbfd4a0SIkuo Obataya /** 34b78c60d0Slupo49 * Add an abstract, global value or a specified string to meta header 355bbfd4a0SIkuo Obataya */ 36e689d293SMark Prins final public function description(Event $event, $param): void 37e689d293SMark Prins { 38e689d293SMark Prins if (empty($event->data) || empty($event->data['meta'])) { 39e689d293SMark Prins return; 40e689d293SMark Prins } 415bbfd4a0SIkuo Obataya 425bbfd4a0SIkuo Obataya global $ID; 43e874628fSMatthias Schulte $source = $this->getConf('keyword_source'); 44e689d293SMark Prins if (empty($source)) { 45e689d293SMark Prins $source = 'abstract'; 46e689d293SMark Prins } 47e874628fSMatthias Schulte 48e689d293SMark Prins if ($source === KEYWORD_SOURCE_ABSTRACT) { 49cca55c74SMark Prins if (auth_quickaclcheck($ID) < AUTH_READ) { 50cca55c74SMark Prins // don't add meta header when user has no read permissions 51cca55c74SMark Prins return; 52cca55c74SMark Prins } 53cca55c74SMark Prins 545bbfd4a0SIkuo Obataya $d = p_get_metadata($ID, 'description'); 55e689d293SMark Prins if (empty($d)) { 56e689d293SMark Prins return; 57e689d293SMark Prins } 585bbfd4a0SIkuo Obataya 595bbfd4a0SIkuo Obataya $a = str_replace("\n", " ", $d['abstract']); 60e689d293SMark Prins if (empty($a)) { 61e689d293SMark Prins return; 62e689d293SMark Prins } 63e874628fSMatthias Schulte } 64e874628fSMatthias Schulte 65e689d293SMark Prins if ($source === KEYWORD_SOURCE_GLOBAL) { 66e874628fSMatthias Schulte $a = $this->getConf('global_description'); 67e689d293SMark Prins if (empty($a)) { 68e689d293SMark Prins return; 69e689d293SMark Prins } 70e874628fSMatthias Schulte } 71e874628fSMatthias Schulte 72e689d293SMark Prins if ($source === KEYWORD_SOURCE_SYNTAX) { 73cca55c74SMark Prins if (auth_quickaclcheck($ID) < AUTH_READ) { 74cca55c74SMark Prins // don't add meta header when user has no read permissions 75cca55c74SMark Prins return; 76cca55c74SMark Prins } 77e874628fSMatthias Schulte $metadata = p_get_metadata($ID); 78917d5640Slupo49 $a = $metadata['plugin_description']['keywords']; 79e689d293SMark Prins if (empty($a)) { 80e689d293SMark Prins return; 81e689d293SMark Prins } 82e874628fSMatthias Schulte } 835bbfd4a0SIkuo Obataya 84*d409808bSgithub-actions[bot] $m = ["name" => "description", "content" => $a]; 855bbfd4a0SIkuo Obataya $event->data['meta'][] = $m; 865bbfd4a0SIkuo Obataya } 875bbfd4a0SIkuo Obataya} 88