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