summaryrefslogtreecommitdiffstats
path: root/lib/_autoload_modules.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/_autoload_modules.php')
-rw-r--r--lib/_autoload_modules.php39
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');