git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_WebCongresos/trunk@2 94ccb1af-fd9d-d947-8d90-7f70ea60afc8
188 lines
4.0 KiB
PHP
188 lines
4.0 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: loader.php 14401 2010-01-26 14:10:00Z louis $
|
|
* @package Joomla.Framework
|
|
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
|
|
* @license GNU/GPL, see LICENSE.php
|
|
* Joomla! is free software. This version may have been modified pursuant
|
|
* to the GNU General Public License, and as distributed it includes or
|
|
* is derivative of works licensed under the GNU General Public License or
|
|
* other free or open source software licenses.
|
|
* See COPYRIGHT.php for copyright notices and details.
|
|
*/
|
|
|
|
if(!defined('DS')) {
|
|
define( 'DS', DIRECTORY_SEPARATOR );
|
|
}
|
|
|
|
/**
|
|
* @package Joomla.Framework
|
|
*/
|
|
class JLoader
|
|
{
|
|
/**
|
|
* Loads a class from specified directories.
|
|
*
|
|
* @param string $name The class name to look for ( dot notation ).
|
|
* @param string $base Search this directory for the class.
|
|
* @param string $key String used as a prefix to denote the full path of the file ( dot notation ).
|
|
* @return void
|
|
* @since 1.5
|
|
*/
|
|
function import( $filePath, $base = null, $key = 'libraries.' )
|
|
{
|
|
static $paths;
|
|
|
|
if (!isset($paths)) {
|
|
$paths = array();
|
|
}
|
|
|
|
$keyPath = $key ? $key . $filePath : $filePath;
|
|
|
|
if (!isset($paths[$keyPath]))
|
|
{
|
|
if ( ! $base ) {
|
|
$base = dirname( __FILE__ );
|
|
}
|
|
|
|
$parts = explode( '.', $filePath );
|
|
|
|
$classname = array_pop( $parts );
|
|
switch($classname)
|
|
{
|
|
case 'helper' :
|
|
$classname = ucfirst(array_pop( $parts )).ucfirst($classname);
|
|
break;
|
|
|
|
default :
|
|
$classname = ucfirst($classname);
|
|
break;
|
|
}
|
|
|
|
$path = str_replace( '.', DS, $filePath );
|
|
|
|
if (strpos($filePath, 'joomla') === 0)
|
|
{
|
|
/*
|
|
* If we are loading a joomla class prepend the classname with a
|
|
* capital J.
|
|
*/
|
|
$classname = 'J'.$classname;
|
|
$classes = JLoader::register($classname, $base.DS.$path.'.php');
|
|
$rs = isset($classes[strtolower($classname)]);
|
|
}
|
|
else
|
|
{
|
|
/*
|
|
* If it is not in the joomla namespace then we have no idea if
|
|
* it uses our pattern for class names/files so just include.
|
|
*/
|
|
$rs = include($base.DS.$path.'.php');
|
|
}
|
|
|
|
$paths[$keyPath] = $rs;
|
|
}
|
|
|
|
return $paths[$keyPath];
|
|
}
|
|
|
|
/**
|
|
* Add a class to autoload
|
|
*
|
|
* @param string $classname The class name
|
|
* @param string $file Full path to the file that holds the class
|
|
* @return array|boolean Array of classes
|
|
* @since 1.5
|
|
*/
|
|
function & register ($class = null, $file = null)
|
|
{
|
|
static $classes;
|
|
|
|
if(!isset($classes)) {
|
|
$classes = array();
|
|
}
|
|
|
|
if($class && is_file($file))
|
|
{
|
|
// Force to lower case.
|
|
$class = strtolower($class);
|
|
$classes[$class] = $file;
|
|
|
|
// In php4 we load the class immediately.
|
|
if((version_compare( phpversion(), '5.0' ) < 0)) {
|
|
JLoader::load($class);
|
|
}
|
|
|
|
}
|
|
|
|
return $classes;
|
|
}
|
|
|
|
|
|
/**
|
|
* Load the file for a class
|
|
*
|
|
* @access public
|
|
* @param string $class The class that will be loaded
|
|
* @return boolean True on success
|
|
* @since 1.5
|
|
*/
|
|
function load( $class )
|
|
{
|
|
$class = strtolower($class); //force to lower case
|
|
|
|
if (class_exists($class)) {
|
|
return;
|
|
}
|
|
|
|
$classes = JLoader::register();
|
|
if(array_key_exists( strtolower($class), $classes)) {
|
|
include($classes[$class]);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* When calling a class that hasn't been defined, __autoload will attempt to
|
|
* include the correct file for that class.
|
|
*
|
|
* This function get's called by PHP. Never call this function yourself.
|
|
*
|
|
* @param string $class
|
|
* @access public
|
|
* @return boolean
|
|
* @since 1.5
|
|
*/
|
|
function __autoload($class)
|
|
{
|
|
if(JLoader::load($class)) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Global application exit.
|
|
*
|
|
* This function provides a single exit point for the framework.
|
|
*
|
|
* @param mixed Exit code or string. Defaults to zero.
|
|
*/
|
|
function jexit($message = 0) {
|
|
exit($message);
|
|
}
|
|
|
|
/**
|
|
* Intelligent file importer
|
|
*
|
|
* @access public
|
|
* @param string $path A dot syntax path
|
|
* @since 1.5
|
|
*/
|
|
function jimport( $path ) {
|
|
return JLoader::import($path);
|
|
}
|