From ede021029a412793b5d892e534ea181937c3de87 Mon Sep 17 00:00:00 2001 From: Nonimart Date: Tue, 1 Jul 2025 17:34:39 +0200 Subject: [PATCH] FEATURE Handling svg support --- functions.php | 18 +++++++++++++ includes/logos.php | 65 ++++++++++++++++++++++++++++++---------------- 2 files changed, 61 insertions(+), 22 deletions(-) diff --git a/functions.php b/functions.php index 4f7b7d8..34d1c63 100644 --- a/functions.php +++ b/functions.php @@ -3,6 +3,7 @@ require_once(__DIR__ . '/includes/errorlog.php'); require_once(__DIR__ . '/includes/init.php'); require_once(__DIR__ . '/includes/post_types.php'); +require_once(__DIR__ . '/includes/logos.php'); require_once(__DIR__ . '/includes/columns.php'); require_once(__DIR__ . '/includes/revue.php'); require_once(__DIR__ . '/includes/auteurs.php'); @@ -10,3 +11,20 @@ require_once(__DIR__ . '/includes/article.php'); require_once(__DIR__ . '/includes/api.php'); require_once(__DIR__ . '/includes/renderPostsDatas.php'); require_once(__DIR__ . '/includes/utilities.php'); + +// Support SVG - Solution de secours +add_filter('upload_mimes', function ($mimes) { + $mimes['svg'] = 'image/svg+xml'; + $mimes['svgz'] = 'image/svg+xml'; + return $mimes; +}, 999); + +// Forcer la reconnaissance des fichiers SVG +add_filter('wp_check_filetype_and_ext', function ($data, $file, $filename, $mimes) { + if (strtolower(pathinfo($filename, PATHINFO_EXTENSION)) === 'svg') { + $data['ext'] = 'svg'; + $data['type'] = 'image/svg+xml'; + $data['proper_filename'] = $filename; + } + return $data; +}, 10, 4); diff --git a/includes/logos.php b/includes/logos.php index 104bafc..c133339 100755 --- a/includes/logos.php +++ b/includes/logos.php @@ -4,31 +4,52 @@ ENABLE SVG ------------------------------*/ -/* */ - -function cc_mime_types($mimes) +function dynamiques_allow_svg_upload($mimes) { -$mimes['svg'] = 'image/svg+xml'; -return $mimes; + // Autoriser SVG pour tous les utilisateurs connectés + $mimes['svg'] = 'image/svg+xml'; + $mimes['svgz'] = 'image/svg+xml'; + return $mimes; } -add_filter('upload_mimes', 'cc_mime_types'); +add_filter('upload_mimes', 'dynamiques_allow_svg_upload', 10, 1); +// Vérifier les permissions utilisateur pour SVG +function dynamiques_check_svg_permissions($file) +{ + if ($file['type'] === 'image/svg+xml') { + // Autoriser pour les administrateurs et éditeurs + if (current_user_can('upload_files')) { + return $file; + } else { + $file['error'] = 'Vous n\'avez pas les permissions pour uploader des fichiers SVG.'; + } + } + return $file; +} +add_filter('wp_handle_upload_prefilter', 'dynamiques_check_svg_permissions'); -// ############################# -// AJOUT D'UN ESPACE LOGO CUSTOM -// ############################# +// Debug: afficher les types MIME autorisés +// write_log(get_allowed_mime_types()); -// function add_logo_customizer_settings($wp_customize) -// { -// $wp_customize->add_setting('logo_semlex_dark'); +// Solution alternative : utiliser un hook plus tôt +function dynamiques_early_svg_support() +{ + add_filter('upload_mimes', function ($mimes) { + $mimes['svg'] = 'image/svg+xml'; + $mimes['svgz'] = 'image/svg+xml'; + return $mimes; + }, 1); +} +add_action('init', 'dynamiques_early_svg_support', 1); -// // Add a control to upload the hover logo -// $wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'logo_semlex_dark', array( -// 'label' => 'Logo Semlex Sombre', -// 'section' => 'title_tagline', //this is the section where the custom-logo from WordPress is -// 'settings' => 'logo_semlex_dark', -// 'priority' => 8 // show it just below the custom-logo -// ))); -// } - -// add_action('customize_register', 'add_logo_customizer_settings'); \ No newline at end of file +// Désactiver la vérification stricte des types MIME pour SVG +function dynamiques_disable_mime_check($data, $file, $filename, $mimes) +{ + if (pathinfo($filename, PATHINFO_EXTENSION) === 'svg') { + $data['ext'] = 'svg'; + $data['type'] = 'image/svg+xml'; + $data['proper_filename'] = $filename; + } + return $data; +} +add_filter('wp_check_filetype_and_ext', 'dynamiques_disable_mime_check', 10, 4);