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