From 639d258e2aaa4a79161cc161903ce0192b04e59a Mon Sep 17 00:00:00 2001
From: Marcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de>
Date: Tue, 4 Jun 2024 08:57:37 +0000
Subject: [PATCH] Create plugins using the dependency injection.

Closes #4247

Merge request studip/studip!3078
---
 lib/bootstrap-definitions.php              | 1 +
 lib/plugins/engine/PluginManager.class.php | 2 +-
 tests/functional/_bootstrap.php            | 1 +
 tests/jsonapi/_bootstrap.php               | 1 +
 4 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/lib/bootstrap-definitions.php b/lib/bootstrap-definitions.php
index 8afb8ce5fbc..e3bf88ac4a0 100644
--- a/lib/bootstrap-definitions.php
+++ b/lib/bootstrap-definitions.php
@@ -67,4 +67,5 @@ return [
 
         return $pdo;
     }),
+    PluginManager::class => DI\factory([PluginManager::class, 'getInstance']),
 ];
diff --git a/lib/plugins/engine/PluginManager.class.php b/lib/plugins/engine/PluginManager.class.php
index fc81d7f36ef..7e36fa0ae4a 100644
--- a/lib/plugins/engine/PluginManager.class.php
+++ b/lib/plugins/engine/PluginManager.class.php
@@ -591,7 +591,7 @@ class PluginManager
         }
 
         if ($plugin_class) {
-            $plugin = $plugin_class->newInstance();
+            $plugin = app()->get($class);
         }
 
         return $this->plugin_cache[$class] = $plugin;
diff --git a/tests/functional/_bootstrap.php b/tests/functional/_bootstrap.php
index 1745a1a0b7d..322883d9a63 100644
--- a/tests/functional/_bootstrap.php
+++ b/tests/functional/_bootstrap.php
@@ -19,6 +19,7 @@ $inc_path .= PATH_SEPARATOR . __DIR__ . '/../../config';
 ini_set('include_path', $inc_path);
 
 require 'lib/classes/StudipAutoloader.php';
+require 'lib/helpers.php';
 require 'lib/functions.php';
 require_once 'lib/language.inc.php';
 require 'lib/visual.inc.php';
diff --git a/tests/jsonapi/_bootstrap.php b/tests/jsonapi/_bootstrap.php
index dea1c813910..7987b34e91d 100644
--- a/tests/jsonapi/_bootstrap.php
+++ b/tests/jsonapi/_bootstrap.php
@@ -29,6 +29,7 @@ date_default_timezone_set('Europe/Berlin');
 
 require 'config.inc.php';
 
+require 'lib/helpers.php';
 require 'lib/functions.php';
 require 'lib/language.inc.php';
 require 'lib/visual.inc.php';
-- 
GitLab