mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 19:38:26 +00:00
f0fe2102ec
Merging: Revision: [1644] Bad merge last commit had second param in the class_exists() call Revision: [1643] Fixed errors introduced in last changes: Variable that was passed the loadController function was not expected controller class name, It was the name fo the class without Controller. This would cause the loading to fail, since it was possible that a class was already loaded with the name that was passed. Example NewsController and a model called News. Revision: [1642] Added patch for MySql 5 Revision: [1641] removing second parameter in the class_exists function calls. closes Ticket #209 git-svn-id: https://svn.cakephp.org/repo/trunk/cake@1645 3807eeeb-6ff5-0310-8944-8be069107fe0
149 lines
No EOL
4.5 KiB
PHP
149 lines
No EOL
4.5 KiB
PHP
<?php
|
|
/* SVN FILE: $Id$ */
|
|
|
|
/**
|
|
*
|
|
*
|
|
* PHP versions 4 and 5
|
|
*
|
|
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
|
|
* Copyright (c) 2005, Cake Software Foundation, Inc.
|
|
* 1785 E. Sahara Avenue, Suite 490-204
|
|
* Las Vegas, Nevada 89104
|
|
*
|
|
* Licensed under The MIT License
|
|
* Redistributions of files must retain the above copyright notice.
|
|
*
|
|
* @filesource
|
|
* @copyright Copyright (c) 2005, Cake Software Foundation, Inc.
|
|
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
|
|
* @package cake
|
|
* @subpackage cake.cake.libs.controller
|
|
* @since CakePHP v TBD
|
|
* @version $Revision$
|
|
* @modifiedby $LastChangedBy$
|
|
* @lastmodified $Date$
|
|
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
|
*/
|
|
|
|
/**
|
|
*
|
|
*
|
|
* @package cake
|
|
* @subpackage cake.cake.libs.controller
|
|
* @since CakePHP v TBD
|
|
*/
|
|
class Component extends Object
|
|
{
|
|
|
|
/**
|
|
* Enter description here...
|
|
*
|
|
* @var unknown_type
|
|
*/
|
|
var $components = array();
|
|
|
|
/**
|
|
* Enter description here...
|
|
*
|
|
* @var unknown_type
|
|
*/
|
|
var $controller = null;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @return Component
|
|
*/
|
|
function Component(&$controller)
|
|
{
|
|
$this->controller =& $controller;
|
|
if ($this->controller->components !== false)
|
|
{
|
|
$loaded = array();
|
|
$loaded = $this->_loadComponents($loaded,$this->controller->components);
|
|
foreach(array_keys($loaded) as $component)
|
|
{
|
|
$tempComponent =& $loaded[$component];
|
|
if(isset($tempComponent->components) && is_array($tempComponent->components))
|
|
{
|
|
foreach($tempComponent->components as $subComponent)
|
|
{
|
|
$this->controller->{$component}->{$subComponent} =& $loaded[$subComponent];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Enter description here...
|
|
*
|
|
* @param unknown_type $loaded
|
|
* @param unknown_type $components
|
|
* @return unknown
|
|
*/
|
|
function &_loadComponents(&$loaded, $components)
|
|
{
|
|
foreach ($components as $component)
|
|
{
|
|
if(in_array($component, array_keys($loaded)) !== true)
|
|
{
|
|
$componentFn = Inflector::underscore($component).'.php';
|
|
|
|
if(file_exists(COMPONENTS.$componentFn))
|
|
{
|
|
$componentFn = COMPONENTS.$componentFn;
|
|
}
|
|
else if(file_exists(LIBS.'controller'.DS.'components'.DS.$componentFn))
|
|
{
|
|
$componentFn = LIBS.'controller'.DS.'components'.DS.$componentFn;
|
|
}
|
|
|
|
$componentCn = $component.'Component';
|
|
|
|
if (is_file($componentFn))
|
|
{
|
|
require_once $componentFn;
|
|
|
|
if(class_exists($componentCn)===true)
|
|
{
|
|
if($componentCn == 'SessionComponent')
|
|
{
|
|
$param = $this->controller->base.'/';
|
|
}
|
|
else
|
|
{
|
|
$param = null;
|
|
}
|
|
$this->controller->{$component} =& new $componentCn($param);
|
|
$loaded[$component] =& $this->controller->{$component};
|
|
if (isset($this->controller->{$component}->components) && is_array($this->controller->{$component}->components))
|
|
{
|
|
$loaded =& $this->_loadComponents($loaded, $this->controller->{$component}->components);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$error =& new Controller();
|
|
$error->autoLayout = true;
|
|
$error->base = $this->controller->base;
|
|
call_user_func_array(array(&$error, 'missingComponentClass'), $component);
|
|
exit();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$error =& new Controller();
|
|
$error->autoLayout = true;
|
|
$error->base = $this->controller->base;
|
|
call_user_func_array(array(&$error, 'missingComponentFile'), Inflector::underscore($component));
|
|
exit();
|
|
}
|
|
}
|
|
}
|
|
return $loaded;
|
|
}
|
|
}
|
|
|
|
?>
|