mirror of
https://github.com/Ekokumppanit/ystavakylaecard.git
synced 2026-01-26 03:04:00 +00:00
265
application/core/MY_Loader.php
Normal file
265
application/core/MY_Loader.php
Normal file
@@ -0,0 +1,265 @@
|
||||
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
/**
|
||||
* Sparks
|
||||
*
|
||||
* An open source application development framework for PHP 5.1.6 or newer
|
||||
*
|
||||
* @package CodeIgniter
|
||||
* @author CodeIgniter Reactor Dev Team
|
||||
* @author Kenny Katzgrau <katzgrau@gmail.com>
|
||||
* @since CodeIgniter Version 1.0
|
||||
* @filesource
|
||||
*/
|
||||
|
||||
/**
|
||||
* Loader Class
|
||||
*
|
||||
* Loads views and files
|
||||
*
|
||||
* @package CodeIgniter
|
||||
* @subpackage Libraries
|
||||
* @author CodeIgniter Reactor Dev Team
|
||||
* @author Kenny Katzgrau <katzgrau@gmail.com>
|
||||
* @category Loader
|
||||
* @link http://codeigniter.com/user_guide/libraries/loader.html
|
||||
*/
|
||||
class MY_Loader extends CI_Loader
|
||||
{
|
||||
/**
|
||||
* Keep track of which sparks are loaded. This will come in handy for being
|
||||
* speedy about loading files later.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
var $_ci_loaded_sparks = array();
|
||||
|
||||
/**
|
||||
* Is this version less than CI 2.1.0? If so, accomodate
|
||||
* @bubbafoley's world-destroying change at: http://bit.ly/sIqR7H
|
||||
* @var bool
|
||||
*/
|
||||
var $_is_lt_210 = false;
|
||||
|
||||
/**
|
||||
* Constructor. Define SPARKPATH if it doesn't exist, initialize parent
|
||||
*/
|
||||
function __construct()
|
||||
{
|
||||
if(!defined('SPARKPATH'))
|
||||
{
|
||||
define('SPARKPATH', 'sparks/');
|
||||
}
|
||||
|
||||
$this->_is_lt_210 = (is_callable(array('CI_Loader', 'ci_autoloader'))
|
||||
|| is_callable(array('CI_Loader', '_ci_autoloader')));
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* To accomodate CI 2.1.0, we override the initialize() method instead of
|
||||
* the ci_autoloader() method. Once sparks is integrated into CI, we
|
||||
* can avoid the awkward version-specific logic.
|
||||
* @return Loader
|
||||
*/
|
||||
function initialize()
|
||||
{
|
||||
parent::initialize();
|
||||
|
||||
if(!$this->_is_lt_210)
|
||||
{
|
||||
$this->ci_autoloader();
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a spark by it's path within the sparks directory defined by
|
||||
* SPARKPATH, such as 'markdown/1.0'
|
||||
* @param string $spark The spark path withint he sparks directory
|
||||
* @param <type> $autoload An optional array of items to autoload
|
||||
* in the format of:
|
||||
* array (
|
||||
* 'helper' => array('somehelper')
|
||||
* )
|
||||
* @return <type>
|
||||
*/
|
||||
function spark($spark, $autoload = array())
|
||||
{
|
||||
if(is_array($spark))
|
||||
{
|
||||
foreach($spark as $s)
|
||||
{
|
||||
$this->spark($s);
|
||||
}
|
||||
}
|
||||
|
||||
$spark = ltrim($spark, '/');
|
||||
$spark = rtrim($spark, '/');
|
||||
|
||||
$spark_path = SPARKPATH . $spark . '/';
|
||||
$parts = explode('/', $spark);
|
||||
$spark_slug = strtolower($parts[0]);
|
||||
|
||||
# If we've already loaded this spark, bail
|
||||
if(array_key_exists($spark_slug, $this->_ci_loaded_sparks))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
# Check that it exists. CI Doesn't check package existence by itself
|
||||
if(!file_exists($spark_path))
|
||||
{
|
||||
show_error("Cannot find spark path at $spark_path");
|
||||
}
|
||||
|
||||
if(count($parts) == 2)
|
||||
{
|
||||
$this->_ci_loaded_sparks[$spark_slug] = $spark;
|
||||
}
|
||||
|
||||
$this->add_package_path($spark_path);
|
||||
|
||||
foreach($autoload as $type => $read)
|
||||
{
|
||||
if($type == 'library')
|
||||
$this->library($read);
|
||||
elseif($type == 'model')
|
||||
$this->model($read);
|
||||
elseif($type == 'config')
|
||||
$this->config($read);
|
||||
elseif($type == 'helper')
|
||||
$this->helper($read);
|
||||
elseif($type == 'view')
|
||||
$this->view($read);
|
||||
else
|
||||
show_error ("Could not autoload object of type '$type' ($read) for spark $spark");
|
||||
}
|
||||
|
||||
// Looks for a spark's specific autoloader
|
||||
$this->ci_autoloader($spark_path);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Pre-CI 2.0.3 method for backward compatility.
|
||||
*
|
||||
* @param null $basepath
|
||||
* @return void
|
||||
*/
|
||||
function _ci_autoloader($basepath = NULL)
|
||||
{
|
||||
$this->ci_autoloader($basepath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specific Autoloader (99% ripped from the parent)
|
||||
*
|
||||
* The config/autoload.php file contains an array that permits sub-systems,
|
||||
* libraries, and helpers to be loaded automatically.
|
||||
*
|
||||
* @param array|null $basepath
|
||||
* @return void
|
||||
*/
|
||||
function ci_autoloader($basepath = NULL)
|
||||
{
|
||||
if($basepath !== NULL)
|
||||
{
|
||||
$autoload_path = $basepath.'config/autoload'.EXT;
|
||||
}
|
||||
else
|
||||
{
|
||||
$autoload_path = APPPATH.'config/autoload'.EXT;
|
||||
}
|
||||
|
||||
if(! file_exists($autoload_path))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
include($autoload_path);
|
||||
|
||||
if ( ! isset($autoload))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if($this->_is_lt_210 || $basepath !== NULL)
|
||||
{
|
||||
// Autoload packages
|
||||
if (isset($autoload['packages']))
|
||||
{
|
||||
foreach ($autoload['packages'] as $package_path)
|
||||
{
|
||||
$this->add_package_path($package_path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Autoload sparks
|
||||
if (isset($autoload['sparks']))
|
||||
{
|
||||
foreach ($autoload['sparks'] as $spark)
|
||||
{
|
||||
$this->spark($spark);
|
||||
}
|
||||
}
|
||||
|
||||
if($this->_is_lt_210 || $basepath !== NULL)
|
||||
{
|
||||
if (isset($autoload['config']))
|
||||
{
|
||||
// Load any custom config file
|
||||
if (count($autoload['config']) > 0)
|
||||
{
|
||||
$CI =& get_instance();
|
||||
foreach ($autoload['config'] as $key => $val)
|
||||
{
|
||||
$CI->config->load($val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Autoload helpers and languages
|
||||
foreach (array('helper', 'language') as $type)
|
||||
{
|
||||
if (isset($autoload[$type]) AND count($autoload[$type]) > 0)
|
||||
{
|
||||
$this->$type($autoload[$type]);
|
||||
}
|
||||
}
|
||||
|
||||
// A little tweak to remain backward compatible
|
||||
// The $autoload['core'] item was deprecated
|
||||
if ( ! isset($autoload['libraries']) AND isset($autoload['core']))
|
||||
{
|
||||
$autoload['libraries'] = $autoload['core'];
|
||||
}
|
||||
|
||||
// Load libraries
|
||||
if (isset($autoload['libraries']) AND count($autoload['libraries']) > 0)
|
||||
{
|
||||
// Load the database driver.
|
||||
if (in_array('database', $autoload['libraries']))
|
||||
{
|
||||
$this->database();
|
||||
$autoload['libraries'] = array_diff($autoload['libraries'], array('database'));
|
||||
}
|
||||
|
||||
// Load all other libraries
|
||||
foreach ($autoload['libraries'] as $item)
|
||||
{
|
||||
$this->library($item);
|
||||
}
|
||||
}
|
||||
|
||||
// Autoload models
|
||||
if (isset($autoload['model']))
|
||||
{
|
||||
$this->model($autoload['model']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user