121913ab3SNickeau<?php 221913ab3SNickeau 321913ab3SNickeau 437748cd8SNickeaurequire_once(__DIR__ . '/../ComboStrap/PluginUtility.php'); 521913ab3SNickeau 6*04fd306cSNickeauuse ComboStrap\DirectoryLayout; 7a6bf47aaSNickeauuse ComboStrap\Identity; 821913ab3SNickeau 921913ab3SNickeau 1021913ab3SNickeau/** 1121913ab3SNickeau * Class action_plugin_combo_svg 1221913ab3SNickeau * Returned an svg optimized version 1321913ab3SNickeau */ 1421913ab3SNickeauclass action_plugin_combo_svg extends DokuWiki_Action_Plugin 1521913ab3SNickeau{ 1621913ab3SNickeau 1721913ab3SNickeau 1821913ab3SNickeau public function register(Doku_Event_Handler $controller) 1921913ab3SNickeau { 2021913ab3SNickeau 2121913ab3SNickeau 2221913ab3SNickeau /** 2321913ab3SNickeau * Hack the upload is done via the ajax.php file 2421913ab3SNickeau * {@link media_upload()} 2521913ab3SNickeau */ 2621913ab3SNickeau $controller->register_hook('AUTH_ACL_CHECK', 'BEFORE', $this, 'svg_mime'); 2737748cd8SNickeau 2821913ab3SNickeau /** 2921913ab3SNickeau * When the parsing of a page starts 3021913ab3SNickeau */ 3121913ab3SNickeau $controller->register_hook('PARSER_WIKITEXT_PREPROCESS', 'BEFORE', $this, 'svg_mime'); 3221913ab3SNickeau 3337748cd8SNickeau 3437748cd8SNickeau } 3521913ab3SNickeau 3621913ab3SNickeau 3721913ab3SNickeau /** 3821913ab3SNickeau * @param Doku_Event $event 3921913ab3SNickeau * {@link media_save} is checking the authorized mime type 4021913ab3SNickeau * Svg is not by default, we add it here if the user is admin or 4121913ab3SNickeau * in a specified group 4221913ab3SNickeau */ 4321913ab3SNickeau public function svg_mime(Doku_Event &$event) 4421913ab3SNickeau { 4521913ab3SNickeau 4621913ab3SNickeau self::allowSvgIfAuthorized(); 4721913ab3SNickeau 4821913ab3SNickeau } 4921913ab3SNickeau 5021913ab3SNickeau /** 5121913ab3SNickeau * 5221913ab3SNickeau */ 5321913ab3SNickeau public static function allowSvgIfAuthorized() 5421913ab3SNickeau { 5537748cd8SNickeau $isAdmin = Identity::isAdmin(); 56*04fd306cSNickeau $isMember = Identity::isMember("@" . Identity::CONF_DESIGNER_GROUP_NAME); 5721913ab3SNickeau 5837748cd8SNickeau if ($isAdmin || $isMember) { 5921913ab3SNickeau /** 6021913ab3SNickeau * Enhance the svg mime type 6121913ab3SNickeau * {@link getMimeTypes()} 6221913ab3SNickeau */ 6321913ab3SNickeau global $config_cascade; 64*04fd306cSNickeau $svgMimeConf = DirectoryLayout::getComboResourcesDirectory()->resolve("conf")->resolve("svg.mime.conf")->toAbsoluteId(); 6521913ab3SNickeau $config_cascade['mime']['local'][] = $svgMimeConf; 6621913ab3SNickeau } 6721913ab3SNickeau 6821913ab3SNickeau } 6921913ab3SNickeau 7021913ab3SNickeau 7121913ab3SNickeau} 72