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