Not every subplugins were found by the plugin manager
authorFrederic Massart <fred@moodle.com>
Fri, 9 May 2014 07:26:53 +0000 (15:26 +0800)
committerFrederic Massart <fred@moodle.com>
Fri, 9 May 2014 07:26:53 +0000 (15:26 +0800)
lib/plugins.py

index 51d702d..7081797 100644 (file)
@@ -134,6 +134,7 @@ class PluginManager(object):
     @classmethod
     def getSubtypes(cls, M):
         """Get the sub plugins declared in an instance"""
+        regex = re.compile(r'\s*(?P<brackets>[\'"])(.*?)(?P=brackets)\s*=>\s*(?P=brackets)(.*?)(?P=brackets)')
         subtypes = {}
         for t in cls._supportSubtypes:
             path = cls.getTypeDirectory(t, M)
@@ -145,8 +146,6 @@ class PluginManager(object):
                 if not os.path.isfile(subpluginsfile):
                     continue
 
-                regex = re.compile(r'^\s*(?P<brackets>[\'"])(.*)(?P=brackets)\s*=>\s*(?P=brackets)(.*)(?P=brackets)')
-
                 searchOpen = False
                 f = open(subpluginsfile, 'r')
                 for line in f:
@@ -158,6 +157,11 @@ class PluginManager(object):
                         if search:
                             for match in search:
                                 subtypes[match[1]] = match[2].replace('admin/', '{admin}/')
+
+                    # Exit when we find a semi-colon.
+                    if searchOpen and ';' in line:
+                        break
+
         return subtypes
 
     @classmethod