File: /home/prospack/public_html/wp-content/plugins/xpro-elementor-addons/widgets/lottie/json-handler.php
<?php
namespace XproElementorAddons\Widget;
defined( 'ABSPATH' ) || exit;
class Xpro_Elementor_Json_Handler {
const MIME_TYPE = 'application/json';
const EXT = 'json';
/**
* The plugin instance.
*/
public static $instance = null;
/**
* constructor function.
*/
public function __construct() {
add_filter( 'upload_mimes', array( $this, 'upload_mimes' ) );
add_filter( 'wp_handle_upload_prefilter', array( $this, 'wp_handle_upload_prefilter' ) );
add_filter( 'wp_check_filetype_and_ext', array( $this, 'wp_check_filetype_and_ext' ), 10, 4 );
}
/**
* Instance.
*/
public static function instance() {
if ( is_null( self::$instance ) ) {
// Fire when Xpro_Elementor_Lite instance.
self::$instance = new self();
}
return self::$instance;
}
/**
* Adds json file format
*/
public function upload_mimes( $allowed_types ) {
$allowed_types[ self::EXT ] = self::MIME_TYPE;
return $allowed_types;
}
public function wp_handle_upload_prefilter( $file ) {
if ( self::MIME_TYPE !== $file['type'] ) {
return $file;
}
$ext = pathinfo( $file['name'], PATHINFO_EXTENSION );
if ( self::EXT !== $ext ) {
$file['error'] = sprintf(
/* translators: %s: Name */
__( 'The uploaded %s file is not supported. Please upload a valid JSON file', 'xpro-elementor-addons' ),
$file['name']
);
return $file;
}
return $file;
}
public function wp_check_filetype_and_ext( $data, $file, $filename, $mimes ) {
if ( ! empty( $data['ext'] ) && ! empty( $data['type'] ) ) {
return $data;
}
$filetype = wp_check_filetype( $filename, $mimes );
if ( self::EXT === $filetype['ext'] ) {
$data['ext'] = self::EXT;
$data['type'] = self::MIME_TYPE;
}
return $data;
}
}
// Run the instance.
Xpro_Elementor_Json_Handler::instance();