@@ -102,18 +102,27 @@ public static function get_step_interactionlib($subpluginname) {
102102 * @return null|base|libbase
103103 */
104104 private static function get_lib ($ subpluginname , $ subplugintype , $ libsubtype = '' ) {
105+ // Plugins defined in subplugins.json file.
105106 $ triggerlist = \core_component::get_plugin_list ('lifecycle ' . $ subplugintype );
106- if (!array_key_exists ($ subpluginname , $ triggerlist )) {
107- return null ;
108- }
109- $ filename = $ triggerlist [$ subpluginname ].'/ ' .$ libsubtype .'lib.php ' ;
110- if (file_exists ($ filename )) {
111- require_once ($ filename );
112- $ extendedclass = "tool_lifecycle \\$ subplugintype \\$ libsubtype$ subpluginname " ;
113- if (class_exists ($ extendedclass )) {
114- return new $ extendedclass ();
107+ if (array_key_exists ($ subpluginname , $ triggerlist )) {
108+ $ filename = $ triggerlist [$ subpluginname ].'/ ' .$ libsubtype .'lib.php ' ;
109+ if (file_exists ($ filename )) {
110+ require_once ($ filename );
111+ $ extendedclass = "tool_lifecycle \\$ subplugintype \\$ libsubtype$ subpluginname " ;
112+ if (class_exists ($ extendedclass )) {
113+ return new $ extendedclass ();
114+ }
115115 }
116116 }
117+
118+ // Plugins defined under "lifecycle" name space.
119+ // The base class has already been checked by get_trigger_types or get_steps_types.
120+ $ classname = !$ libsubtype ? $ subplugintype : $ libsubtype ;
121+ $ classname = "$ subpluginname \\lifecycle \\$ classname " ;
122+ if (class_exists ($ classname )) {
123+ return new $ classname ();
124+ }
125+
117126 return null ;
118127 }
119128}
0 commit comments