xref: /plugin/combo/action/qualitymessage.php (revision 08ca4f8574731bd963770c530f549e32d13ebea4)
1<?php
2
3use ComboStrap\Analytics;
4use ComboStrap\LogUtility;
5use ComboStrap\Page;
6use ComboStrap\PagesIndex;
7use ComboStrap\PluginUtility;
8
9if (!defined('DOKU_INC')) die();
10if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/');
11
12
13require_once(__DIR__ . '/../class/Page.php');
14require_once(__DIR__ . '/../class/message.model.php');
15
16/**
17 *
18 * Show a quality message
19 *
20 *
21 *
22 */
23class action_plugin_combo_qualitymessage extends DokuWiki_Action_Plugin
24{
25
26    // a class can not start with a number
27    const QUALITY_BOX_CLASS = "quality-message";
28
29
30    function __construct()
31    {
32        // enable direct access to language strings
33        // ie $this->lang
34        $this->setupLocale();
35    }
36
37
38    function register(Doku_Event_Handler $controller)
39    {
40
41        $controller->register_hook(
42            'TPL_ACT_RENDER',
43            'BEFORE',
44            $this,
45            '_displayQualityMessage',
46            array()
47        );
48
49
50    }
51
52
53    /**
54     * Main function; dispatches the visual comment actions
55     * @param   $event Doku_Event
56     */
57    function _displayQualityMessage(&$event, $param)
58    {
59        if ($event->data == 'show') {
60            $page = Page::createFromEnvironment();
61            $analytics = $page->getAnalyticsFromFs();
62            $qualityInfoRules = $analytics[Analytics::QUALITY][Analytics::RULES][Analytics::INFO];
63
64            // Excluded rules
65            $excludedRules = array(
66                renderer_plugin_combo_analytics::RULE_AVERAGE_WORDS_BY_SECTION_MIN,
67                renderer_plugin_combo_analytics::RULE_AVERAGE_WORDS_BY_SECTION_MAX
68            );
69            foreach ($excludedRules as $filter) {
70                if (array_key_exists($filter, $qualityInfoRules)) {
71                    unset($qualityInfoRules[$filter]);
72                }
73            }
74
75            if (sizeof($qualityInfoRules) > 0) {
76
77                $qualityScore = $analytics[Analytics::QUALITY][renderer_plugin_combo_analytics::SCORING][renderer_plugin_combo_analytics::SCORE];
78                $message = new Message($this);
79                $message->addContent("<p>Well played, you got a quality score of {$qualityScore} !</p>");
80                $message->addContent("<p>You can still win a couple of points.</p>");
81                $message->addContent("<ul>");
82                foreach ($qualityInfoRules as $qualityRule => $qualityInfo) {
83                    $message->addContent("<li>");
84                    $message->addContent($qualityInfo);
85                    $message->addContent("</li>");
86                }
87                $message->addContent("</ul>");
88
89                $message->setSignatureCanonical("quality");
90                $message->setSignatureName("Quality module");
91                $message->setType(Message::TYPE_CLASSIC);
92                $message->setClass(self::QUALITY_BOX_CLASS);
93
94                $message->printMessage();
95
96            }
97        }
98
99    }
100
101
102}
103