Current File : /home/raydofqv/raydget.vip/wp-content/plugins/3d-viewer/3d-viewer-block//plugin.php
<?php
if (!defined('ABSPATH')) {
exit;
}
// Constant
if (!defined('BP3D_VERSION')) {
define('BP3D_VERSION', isset($_SERVER['HTTP_HOST']) && 'localhost' === $_SERVER['HTTP_HOST'] ? time() : '1.0.8');
}
define('TDVB_DIR', plugin_dir_url(__FILE__));
// 3D Viewer Block
class TDVB3DViewerBlock
{
function __construct()
{
add_action('enqueue_block_assets', [$this, 'enqueueBlockAssets']);
add_filter('script_loader_tag', [$this, 'scriptLoaderTag'], 10, 3);
add_action('wp_ajax_bp3d_pipe_checker', [$this, 'bp3d_pipe_checker']);
add_filter('upload_mimes', [$this, 'uploadMimes']);
if (version_compare($GLOBALS['wp_version'], '5.1') >= 0) {
add_filter('wp_check_filetype_and_ext', [$this, 'wpCheckFiletypeAndExt'], 10, 5);
} else {
add_filter('wp_check_filetype_and_ext', [$this, 'wpCheckFiletypeAndExt'], 10, 4);
}
}
function enqueueBlockAssets()
{
wp_register_script('bp3d-model-viewer', BP3D_DIR . 'public/js/model-viewer.latest.min.js', [], BP3D_VERSION, true);
}
function scriptLoaderTag($tag, $handle, $src)
{
if ('bp3d-model-viewer' !== $handle) {
return $tag;
}
$tag = '<script type="module" src="' . esc_url($src) . '"></script>';
return $tag;
}
function bp3d_pipe_checker()
{
$nonce = sanitize_text_field(wp_unslash($_GET['_wpnonce'] ?? ''));
if (!wp_verify_nonce($nonce, 'wp_ajax')) {
wp_send_json_error();
}
wp_send_json_success([
'isPipe' => false
]);
}
//Allow some additional file types for upload
function uploadMimes($mimes)
{
// New allowed mime types.
$mimes['glb'] = 'model/gltf-binary';
$mimes['gltf'] = 'model/gltf-binary';
return $mimes;
}
function wpCheckFiletypeAndExt($data, $file, $filename, $mimes, $real_mime = null)
{
// If file extension is 2 or more
$f_sp = explode('.', $filename);
$f_exp_count = count($f_sp);
if ($f_exp_count <= 1) {
return $data;
} else {
$f_name = $f_sp[0];
$ext = $f_sp[$f_exp_count - 1];
}
if ($ext == 'glb' || $ext == 'gltf') {
$type = 'model/gltf-binary';
$proper_filename = '';
return compact('ext', 'type', 'proper_filename');
} else {
return $data;
}
}
}
new TDVB3DViewerBlock;
// Require files
require_once plugin_dir_path(__FILE__) . 'inc/block.php';