diff options
author | Jaime Perez Crespo <jaime.perez@uninett.no> | 2016-02-19 13:30:10 +0100 |
---|---|---|
committer | Jaime Perez Crespo <jaime.perez@uninett.no> | 2016-02-19 13:30:10 +0100 |
commit | 748daa08ca671265e66ecc5121f93f3947dba8fa (patch) | |
tree | 5ed559df3da44f2b5d5acf6fcc7631ec6b9045cd /lib | |
parent | 88ea9b8ab3d56db51d32b418046b1387dcbe93c3 (diff) | |
download | simplesamlphp-748daa08ca671265e66ecc5121f93f3947dba8fa.zip simplesamlphp-748daa08ca671265e66ecc5121f93f3947dba8fa.tar.gz simplesamlphp-748daa08ca671265e66ecc5121f93f3947dba8fa.tar.bz2 |
Add support for the new module namespace in SimpleSAML_Module::resolveClass().
Diffstat (limited to 'lib')
-rw-r--r-- | lib/SimpleSAML/Module.php | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/lib/SimpleSAML/Module.php b/lib/SimpleSAML/Module.php index 4868c56..be9cdbb 100644 --- a/lib/SimpleSAML/Module.php +++ b/lib/SimpleSAML/Module.php @@ -142,17 +142,31 @@ class SimpleSAML_Module assert('is_string($subclass) || is_null($subclass)'); $tmp = explode(':', $id, 2); - if (count($tmp) === 1) { + if (count($tmp) === 1) { // no module involved $className = $tmp[0]; - } else { - $className = 'sspmod_'.$tmp[0].'_'.$type.'_'.$tmp[1]; + if (!class_exists($className)) { + throw new Exception("Could not resolve '$id': no class named '$className'."); + } + } else { // should be a module + // make sure empty types are handled correctly + $type = (empty($type)) ? '_' : '_'.$type.'_'; + + // check for the old-style class names + $className = 'sspmod_'.$tmp[0].$type.$tmp[1]; + + if (!class_exists($className)) { + // check for the new-style class names, using namespaces + $type = str_replace('_', '\\', $type); + $newClassName = 'SimpleSAML\Module\\'.$tmp[0].$type.$tmp[1]; + + if (!class_exists($newClassName)) { + throw new Exception("Could not resolve '$id': no class named '$className' or '$newClassName'."); + } + $className = $newClassName; + } } - if (!class_exists($className)) { - throw new Exception( - 'Could not resolve \''.$id.'\': No class named \''.$className.'\'.' - ); - } elseif ($subclass !== null && !is_subclass_of($className, $subclass)) { + if ($subclass !== null && !is_subclass_of($className, $subclass)) { throw new Exception( 'Could not resolve \''.$id.'\': The class \''.$className.'\' isn\'t a subclass of \''.$subclass.'\'.' ); |