diff options
Diffstat (limited to 'lib/_autoload_modules.php')
-rw-r--r-- | lib/_autoload_modules.php | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/_autoload_modules.php b/lib/_autoload_modules.php new file mode 100644 index 0000000..1ea5da0 --- /dev/null +++ b/lib/_autoload_modules.php @@ -0,0 +1,39 @@ +<?php + +/** + * This file implements a autoloader for simpleSAMLphp modules. + * + * @author Boy Baukema, SURFnet + * @package simpleSAMLphp + * @version $Id$ + */ + +/** + * Autoload function for simpleSAMLphp modules. + * + * @param string $className Name of the class. + */ +function SimpleSAML_autoload($className) +{ + $modulePrefixLength = strlen('sspmod_'); + $classPrefix = substr($className, 0, $modulePrefixLength); + if ($classPrefix !== 'sspmod_') { + return; + } + + $modNameEnd = strpos($className, '_', $modulePrefixLength); + $module = substr($className, $modulePrefixLength, $modNameEnd - $modulePrefixLength); + $moduleClass = substr($className, $modNameEnd + 1); + + if (!SimpleSAML_Module::isModuleEnabled($module)) { + return; + } + + $file = SimpleSAML_Module::getModuleDir($module) . '/lib/' . str_replace('_', '/', $moduleClass) . '.php'; + + if (file_exists($file)) { + require_once($file); + } +} + +spl_autoload_register('SimpleSAML_autoload'); |