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