Current File : /pages/54/47/d0016649/home/htdocs/ob_maxi/wp-content/plugins/digimember/system/base/library.php
<?php

abstract class ncore_Library extends ncore_Class
{
    public function __construct( ncore_ApiCore $api, $file='', $dir='' )
    {
        parent::__construct( $api, $file, $dir );

        $this->init();
    }

    public function api()
    {
        return $this->api;
    }

    protected function init()
    {
    }

    protected function pluginDir()
    {
        return 'plugin';
    }

    protected function loadPluginClass( $file, $plugin_dir=false )
    {
        if (!$plugin_dir)
        {
            $plugin_dir = $this->pluginDir();
        }

        $class =& $this->loaded_classes[ "$plugin_dir/$file" ];

        $class_loaded = !empty($class);
        if ($class_loaded)
        {
            return $class;
        }

        $base_class_loaded = in_array( $plugin_dir, $this->loaded_base_classes );
        if (!$base_class_loaded)
        {
            $this->loaded_base_classes[] = $plugin_dir;
            $this->loadPluginClass( 'base', $plugin_dir );
        }

        $lib_dir = $this->baseName();

        $sys_dir = $this->api->sysDir();
        $app_dir = $this->api->appDir();

        $load = $this;

        $path = "$sys_dir/library/$lib_dir/$plugin_dir/$file.php";
        if (file_exists( $path ))
        {
            $class = $this->renderClassName( $file, $plugin_dir, 'system' );

            require_once $path;
        }

        $path = "$app_dir/library/$lib_dir/$plugin_dir/$file.php";
        if (file_exists( $path ))
        {
            $application = $this->api->pluginName();
            $class = $this->renderClassName( $file, $plugin_dir, $application );

            require_once $path;
        }

        return $class;
    }

    protected function renderClassName( $file, $plugin_dir, $application='system' )
    {
        $base_name = $this->api->className( $application, $this->baseName(), $dir = '' );

        $file = ucfirst( $file );
        $plugin_dir = ucfirst( $plugin_dir );

        return $base_name . '_' . ncore_camelCase( $plugin_dir . $file );

    }

    private $loaded_base_classes = array();
    private $loaded_classes = array();

}