From ac6469ab7daaa1a83634290949fb5098a33dd761 Mon Sep 17 00:00:00 2001 From: Meik Sievertsen Date: Sun, 7 Jun 2009 18:07:13 +0000 Subject: [PATCH] merge nils' changes into 3.2.x (i am still not sure if we want to have them in 3.0.x - therefore i suggest we test them in 3.2.x) The default search plugin in 3.0.x will not change, but if the test goes well we may allow this to be installed in 3.0.x through the "contrib method" git-svn-id: file:///svn/phpbb/trunk@9558 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/Zend/Exception.php | 30 +++++++++++ phpBB/includes/Zend/loader.php | 58 ++++++++++++++++++++ phpBB/includes/ezcomponents/loader.php | 73 ++++++++++++++++++++++++++ 3 files changed, 161 insertions(+) create mode 100644 phpBB/includes/Zend/Exception.php create mode 100644 phpBB/includes/Zend/loader.php create mode 100644 phpBB/includes/ezcomponents/loader.php diff --git a/phpBB/includes/Zend/Exception.php b/phpBB/includes/Zend/Exception.php new file mode 100644 index 0000000000..599d8a033e --- /dev/null +++ b/phpBB/includes/Zend/Exception.php @@ -0,0 +1,30 @@ += 5.2.4 and spl_autoload_register() required', E_USER_ERROR); +} + +/** +* Autoload function for Zend framework classes +*/ +function phpbb_zend_autoload($class_name) +{ + global $phpbb_root_path; + + if (strpos($class_name, '_') !== false) + { + $path = str_replace('_', '/', $class_name) . '.php'; + require("{$phpbb_root_path}includes/" . $path); + return true; + } +} + +/** +* @ignore +*/ +// make sure Zend is in the include path +ini_set( 'include_path', ini_get( 'include_path' ) . PATH_SEPARATOR . $phpbb_root_path . 'includes' ); + +// check whether a regular autoload function already exists, so we can load it into the spl stack afterwards +$register_autoload = false; +if (function_exists('__autoload')) +{ + $register_autoload = true; +} + +spl_autoload_register('phpbb_zend_autoload'); + +// load the old autoload function into the spl stack if necessary +if ($register_autoload) +{ + spl_autoload_register('__autoload'); +} \ No newline at end of file diff --git a/phpBB/includes/ezcomponents/loader.php b/phpBB/includes/ezcomponents/loader.php new file mode 100644 index 0000000000..62aaa7667d --- /dev/null +++ b/phpBB/includes/ezcomponents/loader.php @@ -0,0 +1,73 @@ +loaded = array(); + if (version_compare(PHP_VERSION, '5.2.1', '<')) + { + trigger_error('PHP >= 5.2.1 required', E_USER_ERROR); + } + } + + /** + * Loads all classes of a particular component. + * The base component is always loaded first. + * + * @param $component string Lower case component name + */ + function load_component($component) + { + global $phpbb_root_path; + + // don't allow loading the same component twice + if (isset($this->loaded[$component]) && $this->loaded[$component]) + { + return; + } + + // make sure base is always loaded first + if ($component != 'base' && !isset($this->loaded['base'])) + { + $this->load_component('base'); + } + + $ezc_path = $phpbb_root_path . 'includes/ezcomponents/'; + + // retrieve the autoload list + $classes = include($ezc_path . ucfirst($component) . '/' . $component . '_autoload.php'); + + // include all files related to this component + foreach ($classes as $class => $path) + { + include($ezc_path . $path); + } + } +} \ No newline at end of file