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