Sindbad~EG File Manager

Current Path : /proc/2302468/cwd/plugins/fluentform/framework/Foundation/
Upload File :
Current File : //proc/2302468/cwd/plugins/fluentform/framework/Foundation/Bootstrap.php

<?php

namespace FluentForm\Framework\Foundation;

use FluentForm\App\Modules\Activator;
use FluentForm\App\Modules\Deactivator;

class Bootstrap
{
    /**
     * The main plugin file path
     * @var strring
     */
    protected static $file = null;

    /**
     * The base dir path of the plugin
     * @var strring
     */
    protected static $basePath = null;

    /**
     * The app config (/config/app.php)
     * @var strring
     */
    protected static $config = array();

    /**
     * Conveniently start the framework
     * @param  string $file
     * @return $
     */
    public static function run($file)
    {
        if (!extension_loaded('pdo')) {
            add_action('admin_notices', function () {
                echo '<div class="notice notice-warning"><p>Fluent Forms Plugin requires PDO extension. Please install <code>pdo_mysql</code> extension or ask your hosting prover to install it. After PDO enabled, deactivate and activate Fluent Forms again</p></div>';
            });
            return;
        }

        static::init($file);
        static::registerHooks();
        static::registerAutoLoader();
        static::registerApplication();
    }

    /**
     * Initialize the framework
     * @param  string $file [the main plugin file path]
     * @return void
     */
    public static function init($file)
    {
        static::$file = $file;
        static::$basePath = plugin_dir_path($file);
    }

    /**
     * Register activation/deactivation hooks
     * @return void
     */
    public static function registerHooks()
    {
        static::registerActivationHook();
        static::registerDeactivationHook();
    }

    /**
     * Register activation hook
     * @return bool
     */
    public static function registerActivationHook()
    {
        return register_activation_hook(
            static::$file, array(__CLASS__, 'activate')
        );
    }


    public static function registerDeactivationHook()
    {
        return register_deactivation_hook(
            static::$file, array(__CLASS__, 'deactivate')
        );
    }

    /**
     * Validate and activate the plugin
     * @return void
     */
    public static function activate($netowrkwide = false)
    {
        static::validatePlugin();
        if (file_exists($activator = static::$basePath . 'app/Modules/Activator.php')) {
            include_once $activator;
        }

        if (class_exists('FluentForm\App\Modules\Activator')) {
            (new Activator)->handleActivation($netowrkwide);
        }
    }

    public static function deactivate()
    {
        if (file_exists($deactivator = static::$basePath . 'app/Modules/Deactivator.php')) {
            include_once $deactivator;
        }
        if (class_exists('FluentForm\App\Modules\Deactivator')) {
            (new Deactivator())->handleDeactivation();
        }
    }

    /**
     * Validate the plugin by checking all rquired files/settings
     * @return void
     */
    public static function validatePlugin()
    {
        if (!file_exists($glueJson = static::$basePath . 'glue.json')) {
            die('The [glue.json] file is missing from "' . static::$basePath . '" directory.');
        }

        static::$config = json_decode(file_get_contents($glueJson), true);

        $configPath = static::$basePath . 'config';

        if (!file_exists($file = $configPath . '/app.php')) {
            die('The [config.php] file is missing from "' . $configPath . '" directory.');
        }

        static::$config = array_merge(include $file, static::$config);

        if (!($autoload = @static::$config['autoload'])) {
            die('The [autoload] key is not specified or invalid in "' . $glueJson . '" file.');
        }

        if (!($namespace = @$autoload['namespace'])) {
            die('The [namespace] key is not specified or invalid in "' . $glueJson . '" file.');
        }

        $namespaceMapping = (array)@$autoload['mapping'];


        if (!$namespaceMapping) {
            die('The [mapping] key is not specified or invalid in "' . $glueJson . '" file.');
        }
    }

    /**
     * Register the autoloader
     * @return void
     */
    public static function registerAutoLoader()
    {
        if (!static::$config) {
            static::$config = json_decode(file_get_contents(static::$basePath . 'glue.json'), true);
            static::$config = array_merge(include static::$basePath . 'config/app.php', static::$config);
        }

        spl_autoload_register([__CLASS__, 'loader']);
    }

    /**
     * Framework's custom autoloader
     * @param  string $class
     * @return mixed
     */
    public static function loader($class)
    {
        $namespace = static::$config['autoload']['namespace'];

        if (substr($class, 0, strlen($namespace)) !== $namespace) {
            return false;
        }

        foreach (static::$config['autoload']['mapping'] as $key => $value) {
            $className = str_replace(
                array('\\', $key, $namespace),
                array('/', $value, $namespace),
                $class
            );

            $className = substr_replace($className, '', 0, strlen($namespace));

            $file = static::$basePath . trim($className, '/') . '.php';

            if (is_readable($file)) {
                return include $file;
            }
        }
    }

    /**
     * Register "init" hook to run the plugin
     * @return void
     */
    public static function registerApplication()
    {
        add_action('plugins_loaded', function () {
            Application::run(static::$file, static::$config);
            do_action('fluentform_loaded');
        }, 1);
    }
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists