File "mime-types.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/.wp-cli/wp-content/plugins/svg-support/functions/mime-types.php
File size: 2.61 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Add SVG mime types to WordPress
*
* Allows you to upload SVG files to the media library like any other image.
* Additionally provides a fix for WP 4.7.1 - 4.7.2 upload issues and for Avada theme.
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
/**
* Add Mime Types
*/
function bodhi_svgs_upload_mimes( $mimes = array() ) {
global $bodhi_svgs_options;
// Ensure the option is set
if ( !isset($bodhi_svgs_options['restrict']) ) {
return $mimes;
}
// Get the allowed roles from settings
$allowed_roles_array = (array) $bodhi_svgs_options['restrict'];
// Get the current user and their roles
$user = wp_get_current_user();
$current_user_roles = ( array ) $user->roles;
// Check if the user has the capability or the role
$is_role_allowed = array_intersect($allowed_roles_array, $current_user_roles);
if ( empty($is_role_allowed) || !current_user_can('upload_files') ) {
return $mimes;
}
// Allow SVG file upload
$mimes['svg'] = 'image/svg+xml';
$mimes['svgz'] = 'image/svg+xml';
return $mimes;
}
add_filter( 'upload_mimes', 'bodhi_svgs_upload_mimes', 99 );
/**
* Check Mime Types
*/
function bodhi_svgs_upload_check( $checked, $file, $filename, $mimes ) {
if ( ! $checked['type'] ) {
$check_filetype = wp_check_filetype( $filename, $mimes );
$ext = $check_filetype['ext'];
$type = $check_filetype['type'];
$proper_filename = $filename;
// Check if the file is an SVG or SVGZ
if ( ( $ext === 'svg' || $ext === 'svgz' ) && $type === 'image/svg+xml' ) {
$checked = compact( 'ext', 'type', 'proper_filename' );
}
}
return $checked;
}
add_filter( 'wp_check_filetype_and_ext', 'bodhi_svgs_upload_check', 10, 4 );
/**
* Mime Check fix for WP 4.7.1 / 4.7.2
*
* Fixes uploads for these 2 versions of WordPress.
* Issue was fixed in 4.7.3 core.
*/
function bodhi_svgs_allow_svg_upload( $data, $file, $filename, $mimes ) {
global $wp_version;
// Corrected the version check condition
if ( version_compare($wp_version, '4.7.1', '>=') && version_compare($wp_version, '4.7.3', '<') ) {
$filetype = wp_check_filetype( $filename, $mimes );
// Check if the file is an SVG or SVGZ
if ( ( $filetype['ext'] === 'svg' || $filetype['ext'] === 'svgz' ) && $filetype['type'] === 'image/svg+xml' ) {
return [
'ext' => $filetype['ext'],
'type' => $filetype['type'],
'proper_filename' => $data['proper_filename']
];
}
}
return $data;
}
add_filter( 'wp_check_filetype_and_ext', 'bodhi_svgs_allow_svg_upload', 10, 4 );