File "class-wc-autoloader.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/class-wc-autoloader.php
File size: 2.41 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

defined('ABSPATH') || exit;
class WC_Autoloader
{
    private $include_path = '';
    public function __construct()
    {
        if (function_exists('__autoload')) {
            spl_autoload_register('__autoload');
        }
        spl_autoload_register(array($this, 'autoload'));
        $this->include_path = untrailingslashit(plugin_dir_path(WC_PLUGIN_FILE)) . '/includes/';
    }
    private function get_file_name_from_class($class)
    {
        return 'class-' . str_replace('_', '-', $class) . '.php';
    }
    private function load_file($path)
    {
        if ($path && is_readable($path)) {
            include_once $path;
            return true;
        }
        return false;
    }
    public function autoload($class)
    {
        $class = strtolower($class);
        if (0 !== strpos($class, 'wc_')) {
            return;
        }
        $file = $this->get_file_name_from_class($class);
        $path = '';
        if (0 === strpos($class, 'wc_addons_gateway_')) {
            $path = $this->include_path . 'gateways/' . substr(str_replace('_', '-', $class), 18) . '/';
        } elseif (0 === strpos($class, 'wc_gateway_')) {
            $path = $this->include_path . 'gateways/' . substr(str_replace('_', '-', $class), 11) . '/';
        } elseif (0 === strpos($class, 'wc_shipping_')) {
            $path = $this->include_path . 'shipping/' . substr(str_replace('_', '-', $class), 12) . '/';
        } elseif (0 === strpos($class, 'wc_shortcode_')) {
            $path = $this->include_path . 'shortcodes/';
        } elseif (0 === strpos($class, 'wc_meta_box')) {
            $path = $this->include_path . 'admin/meta-boxes/';
        } elseif (0 === strpos($class, 'wc_admin')) {
            $path = $this->include_path . 'admin/';
        } elseif (0 === strpos($class, 'wc_payment_token_')) {
            $path = $this->include_path . 'payment-tokens/';
        } elseif (0 === strpos($class, 'wc_log_handler_')) {
            $path = $this->include_path . 'log-handlers/';
        } elseif (0 === strpos($class, 'wc_integration')) {
            $path = $this->include_path . 'integrations/' . substr(str_replace('_', '-', $class), 15) . '/';
        } elseif (0 === strpos($class, 'wc_notes_')) {
            $path = $this->include_path . 'admin/notes/';
        }
        if (empty($path) || !$this->load_file($path . $file)) {
            $this->load_file($this->include_path . $file);
        }
    }
}
new WC_Autoloader();