D7net Mini Sh3LL v1
Current File : /var/www/html/hpsc/../informatica/media/jce/../../matlab/../libraries/f0f/autoloader/component.php
<?php
/**
* @package FrameworkOnFramework
* @subpackage autoloader
* @copyright Copyright (C) 2010-2016 Nicholas K. Dionysopoulos / Akeeba Ltd. All rights reserved.
* @license GNU General Public License version 2, or later
*/
defined('F0F_INCLUDED') or die();
/**
* An autoloader for F0F-powered components. It allows the autoloading of
* various classes related to the operation of a component, from Controllers
* and Models to Helpers and Fields. If a class doesn't exist, it will be
* created on the fly.
*
* @package FrameworkOnFramework
* @subpackage autoloader
* @since 2.1
*/
class F0FAutoloaderComponent
{
/**
* An instance of this autoloader
*
* @var F0FAutoloaderComponent
*/
public static $autoloader = null;
/**
* The path to the F0F root directory
*
* @var string
*/
public static $fofPath = null;
/**
* An array holding component names and their F0F-ness status
*
* @var array
*/
protected static $fofComponents = array();
/**
* Initialise this autoloader
*
* @return F0FAutoloaderComponent
*/
public static function init()
{
if (self::$autoloader == null)
{
self::$autoloader = new self;
}
return self::$autoloader;
}
/**
* Public constructor. Registers the autoloader with PHP.
*/
public function __construct()
{
self::$fofPath = realpath(__DIR__ . '/../');
spl_autoload_register(array($this,'autoload_fof_controller'));
spl_autoload_register(array($this,'autoload_fof_model'));
spl_autoload_register(array($this,'autoload_fof_view'));
spl_autoload_register(array($this,'autoload_fof_table'));
spl_autoload_register(array($this,'autoload_fof_helper'));
spl_autoload_register(array($this,'autoload_fof_toolbar'));
spl_autoload_register(array($this,'autoload_fof_field'));
}
/**
* Returns true if this is a F0F-powered component, i.e. if it has a fof.xml
* file in its main directory.
*
* @param string $component The component's name
*
* @return boolean
*/
public function isF0FComponent($component)
{
if (!isset($fofComponents[$component]))
{
$componentPaths = F0FPlatform::getInstance()->getComponentBaseDirs($component);
$fofComponents[$component] = file_exists($componentPaths['admin'] . '/fof.xml');
}
return $fofComponents[$component];
}
/**
* Creates class aliases. On systems where eval() is enabled it creates a
* real class. On other systems it merely creates an alias. The eval()
* method is preferred as class_aliases result in the name of the class
* being instanciated not being available, making it impossible to create
* a class instance without passing a $config array :(
*
* @param string $original The name of the original (existing) class
* @param string $alias The name of the new (aliased) class
* @param boolean $autoload Should I try to autoload the $original class?
*
* @return void
*/
private function class_alias($original, $alias, $autoload = true)
{
static $hasEval = null;
if (is_null($hasEval))
{
$hasEval = false;
if (function_exists('ini_get'))
{
$disabled_functions = ini_get('disabled_functions');
if (!is_string($disabled_functions))
{
$hasEval = true;
}
else
{
$disabled_functions = explode(',', $disabled_functions);
$hasEval = !in_array('eval', $disabled_functions);
}
}
}
if (!class_exists($original, $autoload))
{
return;
}
if ($hasEval)
{
$phpCode = "class $alias extends $original {}";
eval($phpCode);
}
else
{
class_alias($original, $alias, $autoload);
}
}
/**
* Autoload Controllers
*
* @param string $class_name The name of the class to load
*
* @return void
*/
public function autoload_fof_controller($class_name)
{
F0FPlatform::getInstance()->logDebug(__METHOD__ . "() autoloading $class_name");
static $isCli = null, $isAdmin = null;
if (is_null($isCli) && is_null($isAdmin))
{
list($isCli, $isAdmin) = F0FDispatcher::isCliAdmin();
}
if (strpos($class_name, 'Controller') === false)
{
return;
}
// Change from camel cased into a lowercase array
$class_modified = preg_replace('/(\s)+/', '_', $class_name);
$class_modified = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $class_modified));
$parts = explode('_', $class_modified);
// We need three parts in the name
if (count($parts) != 3)
{
return;
}
// We need the second part to be "controller"
if ($parts[1] != 'controller')
{
return;
}
// Get the information about this class
$component_raw = $parts[0];
$component = 'com_' . $parts[0];
$view = $parts[2];
// Is this an F0F 2.1 or later component?
if (!$this->isF0FComponent($component))
{
return;
}
// Get the alternate view and class name (opposite singular/plural name)
$alt_view = F0FInflector::isSingular($view) ? F0FInflector::pluralize($view) : F0FInflector::singularize($view);
$alt_class = F0FInflector::camelize($component_raw . '_controller_' . $alt_view);
// Get the component's paths
$componentPaths = F0FPlatform::getInstance()->getComponentBaseDirs($component);
// Get the proper and alternate paths and file names
$file = "/controllers/$view.php";
$altFile = "/controllers/$alt_view.php";
$path = $componentPaths['main'];
$altPath = $componentPaths['alt'];
// Try to find the proper class in the proper path
if (file_exists($path . $file))
{
@include_once $path . $file;
}
// Try to find the proper class in the alternate path
if (!class_exists($class_name) && file_exists($altPath . $file))
{
@include_once $altPath . $file;
}
// Try to find the alternate class in the proper path
if (!class_exists($alt_class) && file_exists($path . $altFile))
{
@include_once $path . $altFile;
}
// Try to find the alternate class in the alternate path
if (!class_exists($alt_class) && file_exists($altPath . $altFile))
{
@include_once $altPath . $altFile;
}
// If the alternate class exists just map the class to the alternate
if (!class_exists($class_name) && class_exists($alt_class))
{
$this->class_alias($alt_class, $class_name);
}
// No class found? Map to F0FController
elseif (!class_exists($class_name))
{
if ($view != 'default')
{
$defaultClass = F0FInflector::camelize($component_raw . '_controller_default');
$this->class_alias($defaultClass, $class_name);
}
else
{
$this->class_alias('F0FController', $class_name);
}
}
}
/**
* Autoload Models
*
* @param string $class_name The name of the class to load
*
* @return void
*/
public function autoload_fof_model($class_name)
{
F0FPlatform::getInstance()->logDebug(__METHOD__ . "() autoloading $class_name");
static $isCli = null, $isAdmin = null;
if (is_null($isCli) && is_null($isAdmin))
{
list($isCli, $isAdmin) = F0FDispatcher::isCliAdmin();
}
if (strpos($class_name, 'Model') === false)
{
return;
}
// Change from camel cased into a lowercase array
$class_modified = preg_replace('/(\s)+/', '_', $class_name);
$class_modified = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $class_modified));
$parts = explode('_', $class_modified);
// We need three parts in the name
if (count($parts) != 3)
{
return;
}
// We need the second part to be "model"
if ($parts[1] != 'model')
{
return;
}
// Get the information about this class
$component_raw = $parts[0];
$component = 'com_' . $parts[0];
$view = $parts[2];
// Is this an F0F 2.1 or later component?
if (!$this->isF0FComponent($component))
{
return;
}
// Get the alternate view and class name (opposite singular/plural name)
$alt_view = F0FInflector::isSingular($view) ? F0FInflector::pluralize($view) : F0FInflector::singularize($view);
$alt_class = F0FInflector::camelize($component_raw . '_model_' . $alt_view);
// Get the proper and alternate paths and file names
$componentPaths = F0FPlatform::getInstance()->getComponentBaseDirs($component);
$file = "/models/$view.php";
$altFile = "/models/$alt_view.php";
$path = $componentPaths['main'];
$altPath = $componentPaths['alt'];
// Try to find the proper class in the proper path
if (file_exists($path . $file))
{
@include_once $path . $file;
}
// Try to find the proper class in the alternate path
if (!class_exists($class_name) && file_exists($altPath . $file))
{
@include_once $altPath . $file;
}
// Try to find the alternate class in the proper path
if (!class_exists($alt_class) && file_exists($path . $altFile))
{
@include_once $path . $altFile;
}
// Try to find the alternate class in the alternate path
if (!class_exists($alt_class) && file_exists($altPath . $altFile))
{
@include_once $altPath . $altFile;
}
// If the alternate class exists just map the class to the alternate
if (!class_exists($class_name) && class_exists($alt_class))
{
$this->class_alias($alt_class, $class_name);
}
// No class found? Map to F0FModel
elseif (!class_exists($class_name))
{
if ($view != 'default')
{
$defaultClass = F0FInflector::camelize($component_raw . '_model_default');
$this->class_alias($defaultClass, $class_name);
}
else
{
$this->class_alias('F0FModel', $class_name, true);
}
}
}
/**
* Autoload Views
*
* @param string $class_name The name of the class to load
*
* @return void
*/
public function autoload_fof_view($class_name)
{
F0FPlatform::getInstance()->logDebug(__METHOD__ . "() autoloading $class_name");
static $isCli = null, $isAdmin = null;
if (is_null($isCli) && is_null($isAdmin))
{
list($isCli, $isAdmin) = F0FDispatcher::isCliAdmin();
}
if (strpos($class_name, 'View') === false)
{
return;
}
// Change from camel cased into a lowercase array
$class_modified = preg_replace('/(\s)+/', '_', $class_name);
$class_modified = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $class_modified));
$parts = explode('_', $class_modified);
// We need at least three parts in the name
if (count($parts) < 3)
{
return;
}
// We need the second part to be "view"
if ($parts[1] != 'view')
{
return;
}
// Get the information about this class
$component_raw = $parts[0];
$component = 'com_' . $parts[0];
$view = $parts[2];
if (count($parts) > 3)
{
$format = $parts[3];
}
else
{
$input = new F0FInput;
$format = $input->getCmd('format', 'html', 'cmd');
}
// Is this an F0F 2.1 or later component?
if (!$this->isF0FComponent($component))
{
return;
}
// Get the alternate view and class name (opposite singular/plural name)
$alt_view = F0FInflector::isSingular($view) ? F0FInflector::pluralize($view) : F0FInflector::singularize($view);
$alt_class = F0FInflector::camelize($component_raw . '_view_' . $alt_view);
// Get the proper and alternate paths and file names
$componentPaths = F0FPlatform::getInstance()->getComponentBaseDirs($component);
$protoFile = "/models/$view";
$protoAltFile = "/models/$alt_view";
$path = $componentPaths['main'];
$altPath = $componentPaths['alt'];
$formats = array($format);
if ($format != 'html')
{
$formats[] = 'raw';
}
foreach ($formats as $currentFormat)
{
$file = $protoFile . '.' . $currentFormat . '.php';
$altFile = $protoAltFile . '.' . $currentFormat . '.php';
// Try to find the proper class in the proper path
if (!class_exists($class_name) && file_exists($path . $file))
{
@include_once $path . $file;
}
// Try to find the proper class in the alternate path
if (!class_exists($class_name) && file_exists($altPath . $file))
{
@include_once $altPath . $file;
}
// Try to find the alternate class in the proper path
if (!class_exists($alt_class) && file_exists($path . $altFile))
{
@include_once $path . $altFile;
}
// Try to find the alternate class in the alternate path
if (!class_exists($alt_class) && file_exists($altPath . $altFile))
{
@include_once $altPath . $altFile;
}
}
// If the alternate class exists just map the class to the alternate
if (!class_exists($class_name) && class_exists($alt_class))
{
$this->class_alias($alt_class, $class_name);
}
// No class found? Map to F0FModel
elseif (!class_exists($class_name))
{
if ($view != 'default')
{
$defaultClass = F0FInflector::camelize($component_raw . '_view_default');
$this->class_alias($defaultClass, $class_name);
}
else
{
if (!file_exists(self::$fofPath . '/view/' . $format . '.php'))
{
$default_class = 'F0FView';
}
else
{
$default_class = 'F0FView' . ucfirst($format);
}
$this->class_alias($default_class, $class_name, true);
}
}
}
/**
* Autoload Tables
*
* @param string $class_name The name of the class to load
*
* @return void
*/
public function autoload_fof_table($class_name)
{
F0FPlatform::getInstance()->logDebug(__METHOD__ . "() autoloading $class_name");
static $isCli = null, $isAdmin = null;
if (is_null($isCli) && is_null($isAdmin))
{
list($isCli, $isAdmin) = F0FDispatcher::isCliAdmin();
}
if (strpos($class_name, 'Table') === false)
{
return;
}
// Change from camel cased into a lowercase array
$class_modified = preg_replace('/(\s)+/', '_', $class_name);
$class_modified = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $class_modified));
$parts = explode('_', $class_modified);
// We need three parts in the name
if (count($parts) != 3)
{
return;
}
// We need the second part to be "model"
if ($parts[1] != 'table')
{
return;
}
// Get the information about this class
$component_raw = $parts[0];
$component = 'com_' . $parts[0];
$view = $parts[2];
// Is this an F0F 2.1 or later component?
if (!$this->isF0FComponent($component))
{
return;
}
// Get the alternate view and class name (opposite singular/plural name)
$alt_view = F0FInflector::isSingular($view) ? F0FInflector::pluralize($view) : F0FInflector::singularize($view);
$alt_class = F0FInflector::camelize($component_raw . '_table_' . $alt_view);
// Get the proper and alternate paths and file names
$componentPaths = F0FPlatform::getInstance()->getComponentBaseDirs($component);
$file = "/tables/$view.php";
$altFile = "/tables/$alt_view.php";
$path = $componentPaths['admin'];
// Try to find the proper class in the proper path
if (file_exists($path . $file))
{
@include_once $path . $file;
}
// Try to find the alternate class in the proper path
if (!class_exists($alt_class) && file_exists($path . $altFile))
{
@include_once $path . $altFile;
}
// If the alternate class exists just map the class to the alternate
if (!class_exists($class_name) && class_exists($alt_class))
{
$this->class_alias($alt_class, $class_name);
}
// No class found? Map to F0FModel
elseif (!class_exists($class_name))
{
if ($view != 'default')
{
$defaultClass = F0FInflector::camelize($component_raw . '_table_default');
$this->class_alias($defaultClass, $class_name);
}
else
{
$this->class_alias('F0FTable', $class_name, true);
}
}
}
/**
* Autoload Helpers
*
* @param string $class_name The name of the class to load
*
* @return void
*/
public function autoload_fof_helper($class_name)
{
F0FPlatform::getInstance()->logDebug(__METHOD__ . "() autoloading $class_name");
static $isCli = null, $isAdmin = null;
if (is_null($isCli) && is_null($isAdmin))
{
list($isCli, $isAdmin) = F0FDispatcher::isCliAdmin();
}
if (strpos($class_name, 'Helper') === false)
{
return;
}
// Change from camel cased into a lowercase array
$class_modified = preg_replace('/(\s)+/', '_', $class_name);
$class_modified = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $class_modified));
$parts = explode('_', $class_modified);
// We need three parts in the name
if (count($parts) != 3)
{
return;
}
// We need the second part to be "model"
if ($parts[1] != 'helper')
{
return;
}
// Get the information about this class
$component_raw = $parts[0];
$component = 'com_' . $parts[0];
$view = $parts[2];
// Is this an F0F 2.1 or later component?
if (!$this->isF0FComponent($component))
{
return;
}
// Get the alternate view and class name (opposite singular/plural name)
$alt_view = F0FInflector::isSingular($view) ? F0FInflector::pluralize($view) : F0FInflector::singularize($view);
$alt_class = F0FInflector::camelize($component_raw . '_helper_' . $alt_view);
// Get the proper and alternate paths and file names
$componentPaths = F0FPlatform::getInstance()->getComponentBaseDirs($component);
$file = "/helpers/$view.php";
$altFile = "/helpers/$alt_view.php";
$path = $componentPaths['main'];
$altPath = $componentPaths['alt'];
// Try to find the proper class in the proper path
if (file_exists($path . $file))
{
@include_once $path . $file;
}
// Try to find the proper class in the alternate path
if (!class_exists($class_name) && file_exists($altPath . $file))
{
@include_once $altPath . $file;
}
// Try to find the alternate class in the proper path
if (!class_exists($alt_class) && file_exists($path . $altFile))
{
@include_once $path . $altFile;
}
// Try to find the alternate class in the alternate path
if (!class_exists($alt_class) && file_exists($altPath . $altFile))
{
@include_once $altPath . $altFile;
}
// If the alternate class exists just map the class to the alternate
if (!class_exists($class_name) && class_exists($alt_class))
{
$this->class_alias($alt_class, $class_name);
}
}
/**
* Autoload Toolbars
*
* @param string $class_name The name of the class to load
*
* @return void
*/
public function autoload_fof_toolbar($class_name)
{
F0FPlatform::getInstance()->logDebug(__METHOD__ . "() autoloading $class_name");
static $isCli = null, $isAdmin = null;
if (is_null($isCli) && is_null($isAdmin))
{
list($isCli, $isAdmin) = F0FDispatcher::isCliAdmin();
}
if (strpos($class_name, 'Toolbar') === false)
{
return;
}
// Change from camel cased into a lowercase array
$class_modified = preg_replace('/(\s)+/', '_', $class_name);
$class_modified = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $class_modified));
$parts = explode('_', $class_modified);
// We need two parts in the name
if (count($parts) != 2)
{
return;
}
// We need the second part to be "model"
if ($parts[1] != 'toolbar')
{
return;
}
// Get the information about this class
$component_raw = $parts[0];
$component = 'com_' . $parts[0];
$platformDirs = F0FPlatform::getInstance()->getPlatformBaseDirs();
// Get the proper and alternate paths and file names
$file = "/components/$component/toolbar.php";
$path = ($isAdmin || $isCli) ? $platformDirs['admin'] : $platformDirs['public'];
$altPath = ($isAdmin || $isCli) ? $platformDirs['public'] : $platformDirs['admin'];
// Try to find the proper class in the proper path
if (file_exists($path . $file))
{
@include_once $path . $file;
}
// Try to find the proper class in the alternate path
if (!class_exists($class_name) && file_exists($altPath . $file))
{
@include_once $altPath . $file;
}
// No class found? Map to F0FToolbar
if (!class_exists($class_name))
{
$this->class_alias('F0FToolbar', $class_name, true);
}
}
/**
* Autoload Fields
*
* @param string $class_name The name of the class to load
*
* @return void
*/
public function autoload_fof_field($class_name)
{
F0FPlatform::getInstance()->logDebug(__METHOD__ . "() autoloading $class_name");
// @todo
}
}
AnonSec - 2021 | Recode By D7net