From cbe01a34349d2f8d123c885184af47c8048ac6f1 Mon Sep 17 00:00:00 2001
From: Jaime Perez Crespo <jaime.perez@uninett.no>
Date: Wed, 9 Mar 2016 15:35:46 +0100
Subject: [PATCH] Add support for interfaces in our temporary autoloaders, not
 only for classes.

---
 lib/SimpleSAML/Module.php | 9 +++++----
 lib/_autoload_modules.php | 9 ++++-----
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/lib/SimpleSAML/Module.php b/lib/SimpleSAML/Module.php
index c9ff286f1..515f4ab14 100644
--- a/lib/SimpleSAML/Module.php
+++ b/lib/SimpleSAML/Module.php
@@ -42,14 +42,15 @@ class Module
         }
         require_once($file);
 
-        if (!class_exists($className, false)) {
+        if (!class_exists($className, false) && !interface_exists($className, false)) {
             // the file exists, but the class is not defined. Is it using namespaces?
             $nspath = join('\\', $path);
-            if (class_exists('SimpleSAML\Module\\'.$module.'\\'.$nspath)) {
+            if (class_exists('SimpleSAML\Module\\'.$module.'\\'.$nspath) ||
+                interface_exists('SimpleSAML\Module\\'.$module.'\\'.$nspath)) {
                 // the class has been migrated, create an alias and warn about it
                 \SimpleSAML\Logger::warning(
-                    "The class '$className' is now using namespaces, please use 'SimpleSAML\\Module\\$module\\".
-                    "$nspath' instead."
+                    "The class or interface '$className' is now using namespaces, please use 'SimpleSAML\\Module\\".
+                    $module."\\".$nspath."' instead."
                 );
                 class_alias("SimpleSAML\\Module\\$module\\$nspath", $className);
             }
diff --git a/lib/_autoload_modules.php b/lib/_autoload_modules.php
index 3e0c6cecf..0903896ba 100644
--- a/lib/_autoload_modules.php
+++ b/lib/_autoload_modules.php
@@ -31,18 +31,17 @@ function temporaryLoader($class)
     }
 
     // it exists, so it's not yet migrated to namespaces
-    if (class_exists($class, false)) {
+    if (class_exists($class, false) || interface_exists($class, false)) {
         return;
     }
 
     // it didn't exist, try to see if it was migrated to namespaces
     $new = join('\\', $path);
-    if (class_exists($new, false)) { // do not try to autoload it if it doesn't exist! It should!
+    if (class_exists($new, false) || interface_exists($class, false)) {
+        // do not try to autoload it if it doesn't exist! It should!
         class_alias($new, $class);
-        SimpleSAML\Logger::warning("The class '$class' is now using namespaces, please use '$new'.");
+        SimpleSAML\Logger::warning("The class or interface '$class' is now using namespaces, please use '$new'.");
     }
-
-
 }
 
 spl_autoload_register("temporaryLoader");
-- 
GitLab