Example #1
0
 /**
  * Register plugins into session (called only at session beginning)
  *
  * @param $plugins       Manager
  * @param $configuration Configuration
  */
 private function registerPlugins(Manager $plugins, Configuration $configuration)
 {
     $must_register = [];
     foreach ($configuration->getPlugins() as $level => $sub_plugins) {
         foreach ($sub_plugins as $class_name => $plugin_configuration) {
             // registers and activates only when weaver is set
             $plugin = $plugins->register($class_name, $level, $plugin_configuration, isset($weaver));
             // weaver is set : registers and actives all previous plugins
             if ($plugin instanceof IWeaver) {
                 $weaver = $plugin;
                 foreach ($must_register as $register) {
                     $plugins->register($register['class_name'], $register['level'], $register['plugin_configuration']);
                 }
                 unset($must_register);
             }
             // weaver is not set : keep plugin definition for further registering and activation
             if (!isset($weaver)) {
                 $must_register[] = ['plugin' => $plugin, 'class_name' => $class_name, 'level' => $level, 'plugin_configuration' => $plugin_configuration];
             }
             if ($plugin instanceof IAutoloader) {
                 $this->createApplication($configuration);
             }
         }
     }
     if (isset($weaver)) {
         $weaver->saveJoinpoints(Application::current()->getCacheDir() . SL . 'weaver.php');
     }
 }