xref: /template/strap/action/svg.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
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