1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace ComboStrap\Api; 4*04fd306cSNickeau 5*04fd306cSNickeauuse ComboStrap\ExceptionNotFound; 6*04fd306cSNickeauuse ComboStrap\ExecutionContext; 7*04fd306cSNickeauuse ComboStrap\HttpResponseStatus; 8*04fd306cSNickeauuse ComboStrap\Identity; 9*04fd306cSNickeauuse ComboStrap\Mime; 10*04fd306cSNickeauuse ComboStrap\QualityTag; 11*04fd306cSNickeauuse ComboStrap\WikiPath; 12*04fd306cSNickeauuse dokuwiki\Extension\Event; 13*04fd306cSNickeau 14*04fd306cSNickeau/** 15*04fd306cSNickeau * Return the quality report in HTML 16*04fd306cSNickeau */ 17*04fd306cSNickeauclass QualityMessageHandler 18*04fd306cSNickeau{ 19*04fd306cSNickeau 20*04fd306cSNickeau public const CALL_ID = "combo-quality-message"; 21*04fd306cSNickeau public const CANONICAL = "quality:dynamic_monitoring"; 22*04fd306cSNickeau 23*04fd306cSNickeau /** 24*04fd306cSNickeau * Disable the message totally 25*04fd306cSNickeau */ 26*04fd306cSNickeau public const CONF_DISABLE_QUALITY_MONITORING = "disableDynamicQualityMonitoring"; 27*04fd306cSNickeau /** 28*04fd306cSNickeau * The quality rules that will not show 29*04fd306cSNickeau * up in the messages 30*04fd306cSNickeau */ 31*04fd306cSNickeau public const CONF_EXCLUDED_QUALITY_RULES_FROM_DYNAMIC_MONITORING = "excludedQualityRulesFromDynamicMonitoring"; 32*04fd306cSNickeau 33*04fd306cSNickeau 34*04fd306cSNickeau public static function handle(Event $event) 35*04fd306cSNickeau { 36*04fd306cSNickeau 37*04fd306cSNickeau // no other ajax call handlers needed 38*04fd306cSNickeau $event->stopPropagation(); 39*04fd306cSNickeau $event->preventDefault(); 40*04fd306cSNickeau 41*04fd306cSNickeau $executingContext = ExecutionContext::getActualOrCreateFromEnv(); 42*04fd306cSNickeau 43*04fd306cSNickeau /** 44*04fd306cSNickeau * Shared check between post and get HTTP method 45*04fd306cSNickeau */ 46*04fd306cSNickeau /** 47*04fd306cSNickeau * Shared check between post and get HTTP method 48*04fd306cSNickeau */ 49*04fd306cSNickeau try { 50*04fd306cSNickeau $id = ApiRouter::getRequestParameter("id"); 51*04fd306cSNickeau } catch (ExceptionNotFound $e) { 52*04fd306cSNickeau $executingContext->response() 53*04fd306cSNickeau ->setStatus(HttpResponseStatus::BAD_REQUEST) 54*04fd306cSNickeau ->setEvent($event) 55*04fd306cSNickeau ->setCanonical(QualityMessageHandler::CANONICAL) 56*04fd306cSNickeau ->setBody("The page id should not be empty", Mime::getHtml()) 57*04fd306cSNickeau ->end(); 58*04fd306cSNickeau return; 59*04fd306cSNickeau } 60*04fd306cSNickeau 61*04fd306cSNickeau /** 62*04fd306cSNickeau * Quality is just for the writers 63*04fd306cSNickeau */ 64*04fd306cSNickeau if (!Identity::isWriter($id)) { 65*04fd306cSNickeau $executingContext->response() 66*04fd306cSNickeau ->setStatus(HttpResponseStatus::NOT_AUTHORIZED) 67*04fd306cSNickeau ->setEvent($event) 68*04fd306cSNickeau ->setBody("Quality is only for writer", Mime::getHtml()) 69*04fd306cSNickeau ->end(); 70*04fd306cSNickeau return; 71*04fd306cSNickeau } 72*04fd306cSNickeau 73*04fd306cSNickeau 74*04fd306cSNickeau $markupPath = WikiPath::createMarkupPathFromId($id); 75*04fd306cSNickeau $message = QualityTag::createQualityReport($markupPath); 76*04fd306cSNickeau $status = $message->getStatus(); 77*04fd306cSNickeau 78*04fd306cSNickeau 79*04fd306cSNickeau $executingContext->response() 80*04fd306cSNickeau ->setStatus($status) 81*04fd306cSNickeau ->setEvent($event) 82*04fd306cSNickeau ->setCanonical(QualityMessageHandler::CANONICAL) 83*04fd306cSNickeau ->setBody($message->getContent(), Mime::getHtml()) 84*04fd306cSNickeau ->end(); 85*04fd306cSNickeau } 86*04fd306cSNickeau} 87