HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.2.34
System: Linux atalantini.com 3.10.0-1127.13.1.el7.x86_64 #1 SMP Tue Jun 23 15:46:38 UTC 2020 x86_64
User: root (0)
PHP: 7.2.34
Disabled: NONE
Upload Files
File: /var/www/html/maisonimmobiliare/wp-content/plugins/3d-viewer/inc/Init.php
<?php

namespace BP3D;

if (!defined('ABSPATH')) {
    exit;
} //Exit if accessed directly

class Init{
    private static $instance = null;
    private function __construct() {
		add_action( 'init', [ $this, 'i18n' ] );
        add_action('woocommerce_after_register_post_type', [$this, 'load_woocommerce_files']);
	}

    public static function instance() {
		if ( is_null( self::$instance ) ) {
			self::$instance = new self();
			self::$instance->init();
		}
		return self::$instance;
	}

    public function i18n() {
		load_plugin_textdomain('model-viewer',false,dirname( plugin_basename( BP3D__FILE__ ) ) . '/languages/');
	}
   
    public static function get_services(){
        return [
            Base\Activate::class,
            Base\EnqueueAssets::class,
            Base\PostTypeModelViewer::class,
            Base\MenuOrder::class,
            Base\Import::class,
            Shortcode\Shortcode::class,
            Base\ExtendMimeType::class,
            Field\Viewer::class,
            Field\Settings::class,
            Woocommerce\ProductView::class,
            Helper\Utils::class,
            Helper\Block::class,
            Addons\Controls\Controls::class,
            Addons\Addons::class,
            Addons\Blocks::class,
            Template\ModelViewer::class,
        ];
    }

    public static function get_woocommerce_services(){
        return [
            Woocommerce\ProductMeta::class,
        ];
    }

    public static function init(){
        foreach(self::get_services() as $class){
            if($class = self::require_file($class)){
                $services = self::instantiate($class);
                if(method_exists($services, 'register')){
                    $services->register();
                }
            }
        }
    }

    public function load_woocommerce_files(){
        foreach(self::get_woocommerce_services() as $class){
            if($class = self::require_file($class)){
                $services = self::instantiate($class);
                if(method_exists($services, 'register')){
                    $services->register();
                }
            }
        }
    }

    public static function require_file($class){
        $file = str_replace('\\', '/', $class);
            
        if(file_exists(BP3D_PATH.str_replace('BP3D', 'inc', $file."Pro").'.php') && \bp3dv_fs()->is__premium_only() && \bp3dv_fs()->can_use_premium_code()){
            $file = BP3D_PATH.str_replace('BP3D', 'inc', $file."Pro").'.php';;
            $class = $class."Pro";
        }else {
            $file = BP3D_PATH.str_replace('BP3D', 'inc', $file).'.php';
        }

        if(file_exists($file)){
            require_once($file);
            return $class;
        }
        return false;
    }

    

    private static function instantiate($class){
        if(class_exists($class)){
            return new $class();
        }
        
        return new \stdClass();
    }
}