xref: /plugin/description/action.php (revision e689d2932c90c4a915785840f66fe487918d7d88)
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