aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2024-05-15 20:50:29 +0000
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2024-05-15 20:50:29 +0000
commit5b4b7f540bdaaba71557ffd528319025ebf028d2 (patch)
tree59e5efad02c53fda815c5ce945f24ca5a65241ea
parentf9c634a9fe0fb5ac4c5a391fea813603631afc0f (diff)
fixes #4133
Closes #4133 Merge request studip/studip!2978
-rw-r--r--app/controllers/activityfeed.php4
-rw-r--r--app/controllers/admin/courses.php14
-rw-r--r--app/controllers/admin/extern.php2
-rw-r--r--app/controllers/admin/sem_classes.php2
-rw-r--r--app/controllers/admin/user.php2
-rw-r--r--app/controllers/blubber.php2
-rw-r--r--app/controllers/contents/courseware.php2
-rw-r--r--app/controllers/course/contentmodules.php2
-rw-r--r--app/controllers/course/overview.php2
-rw-r--r--app/controllers/course/wiki.php2
-rw-r--r--app/controllers/file.php10
-rw-r--r--app/controllers/files.php6
-rw-r--r--app/controllers/institute/basicdata.php2
-rw-r--r--app/controllers/privacy.php2
-rw-r--r--app/controllers/profile.php2
-rw-r--r--app/controllers/profilemodules.php2
-rw-r--r--app/controllers/questionnaire.php2
-rw-r--r--app/controllers/quickselection.php2
-rw-r--r--app/controllers/start.php4
-rw-r--r--app/views/course/details/index.php2
-rw-r--r--app/views/file/add_files_window.php2
-rw-r--r--app/views/file/choose_destination.php2
-rw-r--r--app/views/institute/overview/index.php2
-rw-r--r--app/views/questionnaire/_overview_questionnaire.php2
-rw-r--r--app/views/questionnaire/context.php2
-rw-r--r--db/migrations/1.154_recalculate_score.php2
-rw-r--r--db/migrations/1.314_step_00349.php4
-rw-r--r--lib/archiv.inc.php2
-rw-r--r--lib/classes/JsonApi/RouteMap.php4
-rw-r--r--lib/classes/Metrics.php2
-rw-r--r--lib/classes/MyRealmModel.php2
-rw-r--r--lib/classes/Privacy.php2
-rw-r--r--lib/classes/Score.class.php2
-rw-r--r--lib/classes/Seminar.class.php2
-rw-r--r--lib/classes/Siteinfo.php4
-rw-r--r--lib/classes/StudipKing.class.php2
-rw-r--r--lib/classes/UserManagement.class.php2
-rw-r--r--lib/classes/Visibility.php2
-rw-r--r--lib/classes/WidgetHelper.php2
-rw-r--r--lib/extern/ExternPage.php2
-rw-r--r--lib/extern/ExternPagePersonDetails.php2
-rw-r--r--lib/filesystem/LibraryFile.class.php2
-rw-r--r--lib/models/BlubberThread.php2
-rw-r--r--lib/models/Questionnaire.php4
-rw-r--r--lib/models/User.class.php2
-rw-r--r--lib/navigation/AdminNavigation.php2
-rw-r--r--lib/navigation/ContentsNavigation.php2
-rw-r--r--lib/navigation/ProfileNavigation.php2
-rw-r--r--lib/navigation/StartNavigation.php2
-rw-r--r--lib/plugins/engine/PluginEngine.class.php21
-rw-r--r--lib/plugins/engine/PluginManager.class.php22
-rw-r--r--public/api.php2
52 files changed, 88 insertions, 91 deletions
diff --git a/app/controllers/activityfeed.php b/app/controllers/activityfeed.php
index 2f93aa1..8e81912 100644
--- a/app/controllers/activityfeed.php
+++ b/app/controllers/activityfeed.php
@@ -53,7 +53,7 @@ class ActivityfeedController extends AuthenticatedController
unset($modules[Context::INSTITUTE]['participants']);
unset($modules[Context::INSTITUTE]['schedule']);
- $standard_plugins = PluginManager::getInstance()->getPlugins("StandardPlugin");
+ $standard_plugins = PluginManager::getInstance()->getPlugins(StandardPlugin::class);
foreach ($standard_plugins as $plugin) {
if ($plugin instanceof ActivityProvider) {
$modules[Context::COURSE][$plugin->getPluginName()] = $plugin->getPluginName();
@@ -67,7 +67,7 @@ class ActivityfeedController extends AuthenticatedController
'blubber' => _('Blubber'),
];
- $homepage_plugins = PluginEngine::getPlugins('HomepagePlugin');
+ $homepage_plugins = PluginEngine::getPlugins(HomepagePlugin::class);
foreach ($homepage_plugins as $plugin) {
if ($plugin->isActivated($GLOBALS['user']->id, 'user')) {
if ($plugin instanceof ActivityProvider) {
diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php
index 8de1b79..82c389b 100644
--- a/app/controllers/admin/courses.php
+++ b/app/controllers/admin/courses.php
@@ -490,7 +490,7 @@ class Admin_CoursesController extends AuthenticatedController
]);
break;
default:
- foreach (PluginManager::getInstance()->getPlugins('AdminCourseAction') as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(AdminCourseAction::class) as $plugin) {
if ($GLOBALS['user']->cfg->MY_COURSES_ACTION_AREA === get_class($plugin)) {
$multimode = $plugin->useMultimode();
if ($multimode) {
@@ -711,7 +711,7 @@ class Admin_CoursesController extends AuthenticatedController
$d['last_activity_raw'] = $last_activity;
}
- foreach (PluginManager::getInstance()->getPlugins('AdminCourseContents') as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(AdminCourseContents::class) as $plugin) {
foreach ($plugin->adminAvailableContents() as $index => $label) {
if (in_array($plugin->getPluginId() . '_' . $index, $activated_fields)) {
$content = $plugin->adminAreaGetCourseContent($course, $index);
@@ -837,7 +837,7 @@ class Admin_CoursesController extends AuthenticatedController
$d['action'] = $template->render();
break;
default:
- foreach (PluginManager::getInstance()->getPlugins('AdminCourseAction') as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(AdminCourseAction::class) as $plugin) {
if ($GLOBALS['user']->cfg->MY_COURSES_ACTION_AREA === get_class($plugin)) {
$output = $plugin->getAdminCourseActionTemplate($course->getId());
$d['action'] = $output instanceof Flexi_Template ? $output->render() : (string) $output;
@@ -1029,7 +1029,7 @@ class Admin_CoursesController extends AuthenticatedController
$row['institute'] = $course->home_institut ? (string) $course->home_institut['name'] : $course['institut_id'];
}
- foreach (PluginManager::getInstance()->getPlugins('AdminCourseContents') as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(AdminCourseContents::class) as $plugin) {
foreach ($plugin->adminAvailableContents() as $index => $label) {
if (in_array($plugin->getPluginId() . "_" . $index, $filter_config)) {
$content = $plugin->adminAreaGetCourseContent($course, $index);
@@ -1048,7 +1048,7 @@ class Admin_CoursesController extends AuthenticatedController
foreach ($filter_config as $index) {
$captions[$index] = $view_filters[$index];
}
- foreach (PluginManager::getInstance()->getPlugins('AdminCourseContents') as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(AdminCourseContents::class) as $plugin) {
foreach ($plugin->adminAvailableContents() as $index => $label) {
if (in_array($plugin->getPluginId() . "_" . $index, $filter_config)) {
$captions[$plugin->getPluginId() . "_" . $index] = $label;
@@ -1446,7 +1446,7 @@ class Admin_CoursesController extends AuthenticatedController
ksort($actions);
- foreach (PluginManager::getInstance()->getPlugins('AdminCourseAction') as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(AdminCourseAction::class) as $plugin) {
$actions[get_class($plugin)] = [
'name' => $plugin->getPluginName(),
'title' => $plugin->getPluginName(),
@@ -1486,7 +1486,7 @@ class Admin_CoursesController extends AuthenticatedController
'contents' => _('Inhalt'),
'last_activity' => _('Letzte Aktivität'),
];
- foreach (PluginManager::getInstance()->getPlugins('AdminCourseContents') as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(AdminCourseContents::class) as $plugin) {
foreach ($plugin->adminAvailableContents() as $index => $label) {
$views[$plugin->getPluginId() . "_" . $index] = $label;
}
diff --git a/app/controllers/admin/extern.php b/app/controllers/admin/extern.php
index 559868e..732b586 100644
--- a/app/controllers/admin/extern.php
+++ b/app/controllers/admin/extern.php
@@ -440,7 +440,7 @@ class Admin_ExternController extends AuthenticatedController
*/
protected function fetchPlugins(bool $is_system): void
{
- $plugins = PluginEngine::getPlugins('ExternPagePlugin');
+ $plugins = PluginEngine::getPlugins(ExternPagePlugin::class);
foreach ($plugins as $plugin) {
if (
$is_system === $plugin->isSystemPage()
diff --git a/app/controllers/admin/sem_classes.php b/app/controllers/admin/sem_classes.php
index c0b098f..7993c4b 100644
--- a/app/controllers/admin/sem_classes.php
+++ b/app/controllers/admin/sem_classes.php
@@ -65,7 +65,7 @@ class Admin_SemClassesController extends AuthenticatedController
{
Navigation::activateItem("/admin/locations/sem_classes");
- $plugins = PluginManager::getInstance()->getPlugins("StudipModule");
+ $plugins = PluginManager::getInstance()->getPlugins(StudipModule::class);
$this->sem_class = SemClass::getClasses()[Request::get("id")];
$modules = [];
foreach ($this->sem_class->getModuleObjects() as $plugin) {
diff --git a/app/controllers/admin/user.php b/app/controllers/admin/user.php
index 214c290..54aa0c4 100644
--- a/app/controllers/admin/user.php
+++ b/app/controllers/admin/user.php
@@ -1474,7 +1474,7 @@ class Admin_UserController extends AuthenticatedController
'details' => "files",
];
- foreach (PluginEngine::getPlugins('ForumModule') as $plugin) {
+ foreach (PluginEngine::getPlugins(ForumModule::class) as $plugin) {
$table = $plugin->getEntryTableInfo();
$queries[] = [
'desc' => $plugin->getPluginName() . ' - ' . _("Anzahl der Postings"),
diff --git a/app/controllers/blubber.php b/app/controllers/blubber.php
index 6588014..aedf9b6 100644
--- a/app/controllers/blubber.php
+++ b/app/controllers/blubber.php
@@ -419,7 +419,7 @@ class BlubberController extends AuthenticatedController
PluginManager::getInstance()->setPluginActivated(
PluginManager::getInstance()
- ->getPlugin('Blubber')
+ ->getPlugin(Blubber::class)
->getPluginId(),
$course->getId(),
true
diff --git a/app/controllers/contents/courseware.php b/app/controllers/contents/courseware.php
index f0d5023..c1d807f 100644
--- a/app/controllers/contents/courseware.php
+++ b/app/controllers/contents/courseware.php
@@ -262,7 +262,7 @@ class Contents_CoursewareController extends CoursewareController
*/
private function isCoursewareEnabled($course_id): bool
{
- $studip_module = PluginManager::getInstance()->getPlugin('CoursewareModule');
+ $studip_module = PluginManager::getInstance()->getPlugin(CoursewareModule::class);
if (!$studip_module || !$studip_module->isActivated($course_id)) {
return false;
diff --git a/app/controllers/course/contentmodules.php b/app/controllers/course/contentmodules.php
index df397cd..d37d1bb 100644
--- a/app/controllers/course/contentmodules.php
+++ b/app/controllers/course/contentmodules.php
@@ -273,7 +273,7 @@ class Course_ContentmodulesController extends AuthenticatedController
{
$list = [];
- foreach (PluginEngine::getPlugins('StudipModule') as $plugin) {
+ foreach (PluginEngine::getPlugins(StudipModule::class) as $plugin) {
if (!$plugin->isActivatableForContext($context)) {
continue;
}
diff --git a/app/controllers/course/overview.php b/app/controllers/course/overview.php
index 402137e..876de5a 100644
--- a/app/controllers/course/overview.php
+++ b/app/controllers/course/overview.php
@@ -111,7 +111,7 @@ class Course_OverviewController extends AuthenticatedController
$this->avatar = StudygroupAvatar::getAvatar($this->course_id);
}
- $this->plugins = PluginEngine::getPlugins('StandardPlugin', $this->course_id);
+ $this->plugins = PluginEngine::getPlugins(StandardPlugin::class, $this->course_id);
$sidebar = Sidebar::get();
diff --git a/app/controllers/course/wiki.php b/app/controllers/course/wiki.php
index cbd63cf..0bb6c71 100644
--- a/app/controllers/course/wiki.php
+++ b/app/controllers/course/wiki.php
@@ -18,7 +18,7 @@ class Course_WikiController extends AuthenticatedController
parent::before_filter($action, $args);
object_set_visit_module('wiki');
$this->range = Context::get();
- $this->plugin = PluginManager::getInstance()->getPlugin('CoreWiki');
+ $this->plugin = PluginManager::getInstance()->getPlugin(CoreWiki::class);
PageLayout::setTitle(Navigation::getItem('/course/wiki')->getTitle());
}
diff --git a/app/controllers/file.php b/app/controllers/file.php
index bebfe70..11b1949 100644
--- a/app/controllers/file.php
+++ b/app/controllers/file.php
@@ -1103,7 +1103,7 @@ class FileController extends AuthenticatedController
return;
}
- $this->library_plugins = $plugin_manager->getPlugins('LibraryPlugin');
+ $this->library_plugins = $plugin_manager->getPlugins(LibraryPlugin::class);
//Build the query parameter array:
$search_parameters = [];
@@ -1182,7 +1182,7 @@ class FileController extends AuthenticatedController
);
}
} elseif (Request::get('search_id')) {
- $this->library_plugins = $plugin_manager->getPlugins('LibraryPlugin');
+ $this->library_plugins = $plugin_manager->getPlugins(LibraryPlugin::class);
$this->search_id = Request::get('search_id');
$this->page = Request::get('page');
@@ -1462,7 +1462,7 @@ class FileController extends AuthenticatedController
$this->current_folder = $this->to_folder_type;
$this->marked_element_ids = [];
- $plugins = PluginManager::getInstance()->getPlugins('FileUploadHook');
+ $plugins = PluginManager::getInstance()->getPlugins(FileUploadHook::class);
$redirects = [];
foreach ($plugins as $plugin) {
@@ -1685,7 +1685,7 @@ class FileController extends AuthenticatedController
);
}
- $plugins = PluginManager::getInstance()->getPlugins('FileUploadHook');
+ $plugins = PluginManager::getInstance()->getPlugins(FileUploadHook::class);
$redirect = null;
foreach ($plugins as $upload_hook_plugin) {
$url = $upload_hook_plugin->getAdditionalUploadWizardPage($file_ref);
@@ -1820,7 +1820,7 @@ class FileController extends AuthenticatedController
$payload['html'][] = FilesystemVueDataManager::getFileVueData($this->file, $this->top_folder);
- $plugins = PluginManager::getInstance()->getPlugins('FileUploadHook');
+ $plugins = PluginManager::getInstance()->getPlugins(FileUploadHook::class);
$redirects = [];
foreach ($plugins as $plugin) {
diff --git a/app/controllers/files.php b/app/controllers/files.php
index 3c77f4e..2d4de4e 100644
--- a/app/controllers/files.php
+++ b/app/controllers/files.php
@@ -68,7 +68,7 @@ class FilesController extends AuthenticatedController
$this->url_for("files/index"),
Icon::create("files", "clickable")
);
- foreach (PluginManager::getInstance()->getPlugins('FilesystemPlugin') as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(FilesystemPlugin::class) as $plugin) {
if ($plugin->isPersonalFileArea()) {
$subnav = $plugin->getFileSelectNavigation();
$sources->addLink(
@@ -110,7 +110,7 @@ class FilesController extends AuthenticatedController
}
$config_urls = [];
- foreach (PluginManager::getInstance()->getPlugins('FilesystemPlugin') as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(FilesystemPlugin::class) as $plugin) {
$url = $plugin->filesystemConfigurationURL();
if ($url) {
$navigation = $plugin->getFileSelectNavigation();
@@ -647,7 +647,7 @@ class FilesController extends AuthenticatedController
PageLayout::setTitle(_('Dateibereich zur Konfiguration auswählen'));
$this->configure_urls = [];
- foreach (PluginManager::getInstance()->getPlugins('FilesystemPlugin') as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(FilesystemPlugin::class) as $plugin) {
$url = $plugin->filesystemConfigurationURL();
if ($url) {
$navigation = $plugin->getFileSelectNavigation();
diff --git a/app/controllers/institute/basicdata.php b/app/controllers/institute/basicdata.php
index fb1ce96..9c800fd 100644
--- a/app/controllers/institute/basicdata.php
+++ b/app/controllers/institute/basicdata.php
@@ -435,7 +435,7 @@ class Institute_BasicdataController extends AuthenticatedController
}
// delete all contents in forum-modules
- foreach (PluginEngine::getPlugins('ForumModule') as $plugin) {
+ foreach (PluginEngine::getPlugins(ForumModule::class) as $plugin) {
$plugin->deleteContents($i_id); // delete content irrespective of plugin-activation in the seminar
if ($plugin->isActivated($i_id)) { // only show a message, if the plugin is activated, to not confuse the user
$details[] = sprintf(_('Einträge in %s gelöscht.'), $plugin->getPluginName());
diff --git a/app/controllers/privacy.php b/app/controllers/privacy.php
index ba8e6f1..d50b1f1 100644
--- a/app/controllers/privacy.php
+++ b/app/controllers/privacy.php
@@ -305,7 +305,7 @@ class PrivacyController extends AuthenticatedController
$storage->addFileRef($fileref);
}
- foreach (PluginEngine::getPlugins('PrivacyPlugin') as $plugin) {
+ foreach (PluginEngine::getPlugins(PrivacyPlugin::class) as $plugin) {
$plugin->exportUserData($storage);
}
diff --git a/app/controllers/profile.php b/app/controllers/profile.php
index 3fa3777..b9a7cf7 100644
--- a/app/controllers/profile.php
+++ b/app/controllers/profile.php
@@ -210,7 +210,7 @@ class ProfileController extends AuthenticatedController
}
// Hompageplugins
- $homepageplugins = PluginEngine::getPlugins('HomepagePlugin');
+ $homepageplugins = PluginEngine::getPlugins(HomepagePlugin::class);
$render = '';
$layout = $GLOBALS['template_factory']->open('shared/content_box');
diff --git a/app/controllers/profilemodules.php b/app/controllers/profilemodules.php
index 201c4ff..c24d4f4 100644
--- a/app/controllers/profilemodules.php
+++ b/app/controllers/profilemodules.php
@@ -106,7 +106,7 @@ class ProfileModulesController extends AuthenticatedController
$plugins = [];
// Get homepage plugins from database.
- foreach (PluginEngine::getPlugins('HomepagePlugin') as $plugin) {
+ foreach (PluginEngine::getPlugins(HomepagePlugin::class) as $plugin) {
if ($plugin->isActivatableForContext($this->user)) {
$plugins[$plugin->getPluginId()] = $plugin;
}
diff --git a/app/controllers/questionnaire.php b/app/controllers/questionnaire.php
index 6f80526..4016b9d 100644
--- a/app/controllers/questionnaire.php
+++ b/app/controllers/questionnaire.php
@@ -493,7 +493,7 @@ class QuestionnaireController extends AuthenticatedController
$course_assignment['user_id'] = $GLOBALS['user']->id;
$course_assignment->store();
}
- foreach (PluginManager::getInstance()->getPlugins("QuestionnaireAssignmentPlugin") as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(QuestionnaireAssignmentPlugin::class) as $plugin) {
$plugin->storeQuestionnaireAssignments($this->questionnaire);
}
diff --git a/app/controllers/quickselection.php b/app/controllers/quickselection.php
index 1899e53..a53eb08 100644
--- a/app/controllers/quickselection.php
+++ b/app/controllers/quickselection.php
@@ -27,7 +27,7 @@ class QuickselectionController extends AuthenticatedController
UserConfig::get($GLOBALS['user']->id)->store('QUICK_SELECTION', $names);
- $template = PluginEngine::getPlugin('QuickSelection')->getPortalTemplate();
+ $template = PluginEngine::getPlugin(QuickSelection::class)->getPortalTemplate();
$this->response->add_header('X-Dialog-Close', 1);
$this->response->add_header('X-Dialog-Execute', 'STUDIP.QuickSelection.update');
diff --git a/app/controllers/start.php b/app/controllers/start.php
index 53a87dc..87c493e 100644
--- a/app/controllers/start.php
+++ b/app/controllers/start.php
@@ -132,7 +132,7 @@ class StartController extends AuthenticatedController
*/
private function getAvailableWidgets($user_id)
{
- $all_widgets = PluginEngine::getPlugins('PortalPlugin');
+ $all_widgets = PluginEngine::getPlugins(PortalPlugin::class);
$user_widgets = WidgetUser::getWidgets($user_id);
$used_widgets = array_merge(...$user_widgets);
$available = [];
@@ -190,7 +190,7 @@ class StartController extends AuthenticatedController
PageLayout::setTitle(sprintf(_('Standard-Startseite für "%s" bearbeiten'), ucfirst($permission)));
- $this->widgets = PluginEngine::getPlugins('PortalPlugin');
+ $this->widgets = PluginEngine::getPlugins(PortalPlugin::class);
$this->initial_widgets = WidgetDefault::getWidgets($permission);
$this->permission = $permission;
}
diff --git a/app/views/course/details/index.php b/app/views/course/details/index.php
index eb7da10..545454a 100644
--- a/app/views/course/details/index.php
+++ b/app/views/course/details/index.php
@@ -496,7 +496,7 @@ if (!empty($mvv_tree)) : ?>
</article>
<? endif ?>
-<? foreach (PluginManager::getInstance()->getPlugins('DetailspagePlugin') as $plugin) : ?>
+<? foreach (PluginManager::getInstance()->getPlugins(DetailspagePlugin::class) as $plugin) : ?>
<? $template = $plugin->getDetailspageTemplate($course) ?>
<? if ($template) : ?>
<article class="studip">
diff --git a/app/views/file/add_files_window.php b/app/views/file/add_files_window.php
index 53a7b73..c7630c5 100644
--- a/app/views/file/add_files_window.php
+++ b/app/views/file/add_files_window.php
@@ -69,7 +69,7 @@ if ($folder_id) {
<?= _('OER Campus') ?>
</a>
<? endif ?>
- <? foreach (PluginManager::getInstance()->getPlugins('FilesystemPlugin') as $plugin) : ?>
+ <? foreach (PluginManager::getInstance()->getPlugins(FilesystemPlugin::class) as $plugin) : ?>
<? if ($plugin->isSource()) : ?>
<? $nav = $plugin->getFileSelectNavigation() ?>
<? if ($nav): ?>
diff --git a/app/views/file/choose_destination.php b/app/views/file/choose_destination.php
index 49afe87..9a39883 100644
--- a/app/views/file/choose_destination.php
+++ b/app/views/file/choose_destination.php
@@ -64,7 +64,7 @@ $options = array_filter([
</button>
</div>
- <? foreach (PluginManager::getInstance()->getPlugins('FilesystemPlugin') as $plugin) : ?>
+ <? foreach (PluginManager::getInstance()->getPlugins(FilesystemPlugin::class) as $plugin) : ?>
<? if ($plugin->isPersonalFileArea()) : ?>
<? $nav = $plugin->getFileSelectNavigation() ?>
<? if ($nav) : ?>
diff --git a/app/views/institute/overview/index.php b/app/views/institute/overview/index.php
index 3e80f98..7ed8546 100644
--- a/app/views/institute/overview/index.php
+++ b/app/views/institute/overview/index.php
@@ -54,7 +54,7 @@
<?
// display plugins
-$plugins = PluginEngine::getPlugins('StandardPlugin', $institute_id);
+$plugins = PluginEngine::getPlugins(StandardPlugin::class, $institute_id);
$layout = $GLOBALS['template_factory']->open('shared/index_box');
foreach ($plugins as $plugin) {
diff --git a/app/views/questionnaire/_overview_questionnaire.php b/app/views/questionnaire/_overview_questionnaire.php
index bb7586e..8b45d42 100644
--- a/app/views/questionnaire/_overview_questionnaire.php
+++ b/app/views/questionnaire/_overview_questionnaire.php
@@ -51,7 +51,7 @@
<?= htmlReady(Institute::find($assignment['range_id'])->name) ?>
<? else : ?>
<?
- foreach (PluginManager::getInstance()->getPlugins("QuestionnaireAssignmentPlugin") as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(QuestionnaireAssignmentPlugin::class) as $plugin) {
$name = $plugin->getQuestionnaireAssignmentName($assignment);
if ($name) {
echo htmlReady($name);
diff --git a/app/views/questionnaire/context.php b/app/views/questionnaire/context.php
index 3237101..98e08c0 100644
--- a/app/views/questionnaire/context.php
+++ b/app/views/questionnaire/context.php
@@ -93,7 +93,7 @@
<? endif ?>
<?
- foreach (PluginManager::getInstance()->getPlugins("QuestionnaireAssignmentPlugin") as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(QuestionnaireAssignmentPlugin::class) as $plugin) {
$template = $plugin->getQuestionnaireAssignmentEditTemplate($this->questionnaire);
if ($template) {
echo $template->render();
diff --git a/db/migrations/1.154_recalculate_score.php b/db/migrations/1.154_recalculate_score.php
index 5568363..9391e7d 100644
--- a/db/migrations/1.154_recalculate_score.php
+++ b/db/migrations/1.154_recalculate_score.php
@@ -130,7 +130,7 @@ class RecalculateScore extends Migration {
'date_column' => "chdate"
];
- foreach (PluginManager::getInstance()->getPlugins("ScorePlugin") as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(ScorePlugin::class) as $plugin) {
foreach ((array) $plugin->getPluginActivityTables() as $table) {
if ($table['table']) {
$tables[] = $table;
diff --git a/db/migrations/1.314_step_00349.php b/db/migrations/1.314_step_00349.php
index a777cc2..a1094d8 100644
--- a/db/migrations/1.314_step_00349.php
+++ b/db/migrations/1.314_step_00349.php
@@ -98,8 +98,8 @@ class Step00349 extends Migration
'participants' => 'CoreParticipants',
'courseware' => 'CoursewareModule'
];
- PluginManager::getInstance()->getPlugin('CoreForum');
- PluginManager::getInstance()->getPlugin('Blubber');
+ PluginManager::getInstance()->getPlugin(CoreForum::class);
+ PluginManager::getInstance()->getPlugin(Blubber::class);
foreach ($core_plugins as $plugin) {
try {
diff --git a/lib/archiv.inc.php b/lib/archiv.inc.php
index 8fe4bc9..e40685f 100644
--- a/lib/archiv.inc.php
+++ b/lib/archiv.inc.php
@@ -64,7 +64,7 @@ function lastActivity ($sem_id)
WHERE `range_id` = :id";
}
- foreach (PluginEngine::getPlugins('ForumModule') as $plugin) {
+ foreach (PluginEngine::getPlugins(ForumModule::class) as $plugin) {
$table = $plugin->getEntryTableInfo();
$queries[] = 'SELECT MAX(`'. $table['chdate'] .'`) AS chdate FROM `'. $table['table'] .'` WHERE `'. $table['seminar_id'] .'` = :id';
}
diff --git a/lib/classes/JsonApi/RouteMap.php b/lib/classes/JsonApi/RouteMap.php
index 4f44165..d81bbbf 100644
--- a/lib/classes/JsonApi/RouteMap.php
+++ b/lib/classes/JsonApi/RouteMap.php
@@ -122,7 +122,7 @@ class RouteMap
$this->addAuthenticatedContactsRoutes($group);
$this->addAuthenticatedCoursesRoutes($group);
- if (\PluginManager::getInstance()->getPlugin('CoursewareModule')) {
+ if (\PluginManager::getInstance()->getPlugin(\CoursewareModule::class)) {
$this->addAuthenticatedCoursewareRoutes($group);
}
@@ -155,7 +155,7 @@ class RouteMap
$group->get('/studip/properties', Routes\Studip\PropertiesIndex::class);
- if (\PluginManager::getInstance()->getPlugin('CoursewareModule')) {
+ if (\PluginManager::getInstance()->getPlugin(\CoursewareModule::class)) {
$group->get('/public/courseware/{link_id}/courseware-structural-elements/{id}', Routes\Courseware\PublicStructuralElementsShow::class);
$group->get('/public/courseware/{link_id}/courseware-structural-elements', Routes\Courseware\PublicStructuralElementsIndex::class);
}
diff --git a/lib/classes/Metrics.php b/lib/classes/Metrics.php
index c3874d5..e6a2925 100644
--- a/lib/classes/Metrics.php
+++ b/lib/classes/Metrics.php
@@ -191,7 +191,7 @@ class Metrics {
// cache the activated MetricsPlugins
if (!self::$metricPlugins) {
- self::$metricPlugins = \PluginEngine::getPlugins('MetricsPlugin');
+ self::$metricPlugins = \PluginEngine::getPlugins(MetricsPlugin::class);
}
// call every MetricPlugin
diff --git a/lib/classes/MyRealmModel.php b/lib/classes/MyRealmModel.php
index ab9aa20..8997e78 100644
--- a/lib/classes/MyRealmModel.php
+++ b/lib/classes/MyRealmModel.php
@@ -475,7 +475,7 @@ class MyRealmModel
public static function setObjectVisits($object, $user_id, $timestamp = null)
{
// load plugins, so they have a chance to register themselves as observers
- PluginEngine::getPlugins('StandardPlugin');
+ PluginEngine::getPlugins(StandardPlugin::class);
// Update news and votes
$query = "INSERT INTO object_user_visits
diff --git a/lib/classes/Privacy.php b/lib/classes/Privacy.php
index 0ba296a..b38838c 100644
--- a/lib/classes/Privacy.php
+++ b/lib/classes/Privacy.php
@@ -114,7 +114,7 @@ class Privacy
}
if (!$section || $section === 'plugins') {
- foreach (PluginEngine::getPlugins('PrivacyPlugin') as $plugin) {
+ foreach (PluginEngine::getPlugins(PrivacyPlugin::class) as $plugin) {
$plugin->exportUserData($storage);
}
}
diff --git a/lib/classes/Score.class.php b/lib/classes/Score.class.php
index f7d8ea3..4d114d5 100644
--- a/lib/classes/Score.class.php
+++ b/lib/classes/Score.class.php
@@ -212,7 +212,7 @@ class Score
'date_column' => 'chdate'
];
- foreach (PluginManager::getInstance()->getPlugins('ScorePlugin') as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(ScorePlugin::class) as $plugin) {
foreach ((array) $plugin->getPluginActivityTables() as $table) {
if ($table['table']) {
$tables[] = $table;
diff --git a/lib/classes/Seminar.class.php b/lib/classes/Seminar.class.php
index dda25ee..8aa3d41 100644
--- a/lib/classes/Seminar.class.php
+++ b/lib/classes/Seminar.class.php
@@ -1565,7 +1565,7 @@ class Seminar
SeminarCycleDate::deleteBySQL('seminar_id = ' . DBManager::get()->quote($s_id));
// Alle weiteren Postings zu diesem Seminar in den Forums-Modulen löschen
- foreach (PluginEngine::getPlugins('ForumModule') as $plugin) {
+ foreach (PluginEngine::getPlugins(ForumModule::class) as $plugin) {
$plugin->deleteContents($s_id); // delete content irrespective of plugin-activation in the seminar
if ($plugin->isActivated($s_id)) { // only show a message, if the plugin is activated, to not confuse the user
diff --git a/lib/classes/Siteinfo.php b/lib/classes/Siteinfo.php
index 9043ce3..0d849ca 100644
--- a/lib/classes/Siteinfo.php
+++ b/lib/classes/Siteinfo.php
@@ -480,7 +480,7 @@ class SiteinfoMarkupEngine {
// get TopTen of seminars from all ForumModules and add up the
// count for seminars with more than one active ForumModule
// to get a combined toplist
- foreach (PluginEngine::getPlugins('ForumModule') as $plugin) {
+ foreach (PluginEngine::getPlugins(ForumModule::class) as $plugin) {
$new_seminars = $plugin->getTopTenSeminars();
foreach ($new_seminars as $sem) {
if (!isset($seminars[$sem['seminar_id']])) {
@@ -589,7 +589,7 @@ class SiteinfoMarkupEngine {
$count = 0;
// sum up number of postings for all availabe ForumModules
- foreach (PluginEngine::getPlugins('ForumModule') as $plugin) {
+ foreach (PluginEngine::getPlugins(ForumModule::class) as $plugin) {
$count += $plugin->getNumberOfPostings();
}
diff --git a/lib/classes/StudipKing.class.php b/lib/classes/StudipKing.class.php
index 3a61c57..ae5a14e 100644
--- a/lib/classes/StudipKing.class.php
+++ b/lib/classes/StudipKing.class.php
@@ -118,7 +118,7 @@ class StudipKing {
$kings = [];
// sum up postings for all users from all ForumModules available
- foreach (PluginEngine::getPlugins('ForumModule') as $plugin) {
+ foreach (PluginEngine::getPlugins(ForumModule::class) as $plugin) {
$table = $plugin->getEntryTableInfo();
$query = "SELECT user_id AS id, COUNT(*) AS num FROM ". $table['table'] ." GROUP BY user_id";
$new_kings = self::select_kings($query);
diff --git a/lib/classes/UserManagement.class.php b/lib/classes/UserManagement.class.php
index 7805594..015e6cd 100644
--- a/lib/classes/UserManagement.class.php
+++ b/lib/classes/UserManagement.class.php
@@ -898,7 +898,7 @@ class UserManagement
// Load privacy plugins to ensure all event handlers can react to the
// UserDataDidRemove event
- PluginEngine::getPlugins('PrivacyPlugin');
+ PluginEngine::getPlugins(PrivacyPlugin::class);
// delete user from instituts
$this->logInstUserDel($this->user_data['auth_user_md5.user_id']);
diff --git a/lib/classes/Visibility.php b/lib/classes/Visibility.php
index 1b87230..99b3907 100644
--- a/lib/classes/Visibility.php
+++ b/lib/classes/Visibility.php
@@ -614,7 +614,7 @@ class Visibility
private function createHomepagePluginEntries($user)
{
self::getUser($user);
- $homepageplugins = PluginEngine::getPlugins('HomepagePlugin');
+ $homepageplugins = PluginEngine::getPlugins(HomepagePlugin::class);
foreach ($homepageplugins as $plugin) {
self::addPrivacySetting($plugin->getPluginName(), ("plugin".$plugin->getPluginId()), 'plugins', 1, $user, null, $plugin->getPluginId());
}
diff --git a/lib/classes/WidgetHelper.php b/lib/classes/WidgetHelper.php
index ba82ee9..ff4d7a6 100644
--- a/lib/classes/WidgetHelper.php
+++ b/lib/classes/WidgetHelper.php
@@ -348,7 +348,7 @@ class WidgetHelper
*/
public static function getAvailableWidgets($user_id = null)
{
- $all_widgets = PluginEngine::getPlugins('PortalPlugin');
+ $all_widgets = PluginEngine::getPlugins(PortalPlugin::class);
$used_widgets = is_null($user_id)
? []
diff --git a/lib/extern/ExternPage.php b/lib/extern/ExternPage.php
index 308caeb..d3c5ec2 100644
--- a/lib/extern/ExternPage.php
+++ b/lib/extern/ExternPage.php
@@ -110,7 +110,7 @@ abstract class ExternPage
$page_name = 'ExternPage' . $config->type;
if (!class_exists($page_name)) {
// lookup plugins
- $plugins = PluginEngine::getPlugins('ExternPagePlugin');
+ $plugins = PluginEngine::getPlugins(ExternPagePlugin::class);
foreach ($plugins as $plugin) {
if ($config->type === $plugin->getExternPageName()) {
return $plugin->getExternPage($config);
diff --git a/lib/extern/ExternPagePersonDetails.php b/lib/extern/ExternPagePersonDetails.php
index 49c754c..8fb6540 100644
--- a/lib/extern/ExternPagePersonDetails.php
+++ b/lib/extern/ExternPagePersonDetails.php
@@ -439,7 +439,7 @@ class ExternPagePersonDetails extends ExternPage
private function getContentHomepagePlugins(User $user)
{
$content = [];
- $plugins = PluginEngine::getPlugins('HomepagePlugin');
+ $plugins = PluginEngine::getPlugins(HomepagePlugin::class);
foreach ($plugins as $plugin) {
$template = $plugin->getHomepageTemplate($user->id);
if ($template) {
diff --git a/lib/filesystem/LibraryFile.class.php b/lib/filesystem/LibraryFile.class.php
index 0c2bcb6..c9524e3 100644
--- a/lib/filesystem/LibraryFile.class.php
+++ b/lib/filesystem/LibraryFile.class.php
@@ -212,7 +212,7 @@ class LibraryFile extends StandardFile
);
if (Config::get()->LITERATURE_ENABLE && Context::get() && $GLOBALS['perm']->have_studip_perm('tutor', Context::getId())) {
$plugin_manager = PluginManager::getInstance();
- $library_plugins = $plugin_manager->getPlugins('LibraryPlugin');
+ $library_plugins = $plugin_manager->getPlugins(LibraryPlugin::class);
if (count($library_plugins)) {
$plugin = $library_plugins[0];
$action_menu->addLink(
diff --git a/lib/models/BlubberThread.php b/lib/models/BlubberThread.php
index aa6016f..590a600 100644
--- a/lib/models/BlubberThread.php
+++ b/lib/models/BlubberThread.php
@@ -1081,7 +1081,7 @@ class BlubberThread extends SimpleORMap implements PrivacyObject
FROM user_inst
WHERE user_id = ?";
$institut_ids = DBManager::get()->fetchFirst($query, [$user_id]);
- $blubberplugin = PluginManager::getInstance()->getPlugin("Blubber");
+ $blubberplugin = PluginManager::getInstance()->getPlugin(Blubber::class);
if (!$blubberplugin) {
return [];
}
diff --git a/lib/models/Questionnaire.php b/lib/models/Questionnaire.php
index f29a2de..777182d 100644
--- a/lib/models/Questionnaire.php
+++ b/lib/models/Questionnaire.php
@@ -129,7 +129,7 @@ class Questionnaire extends SimpleORMap implements PrivacyObject
return true;
} else {
//now look through all plugin if this assignment is related to plugin contents:
- foreach (PluginManager::getInstance()->getPlugins("QuestionnaireAssignmentPlugin") as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(QuestionnaireAssignmentPlugin::class) as $plugin) {
if ($plugin->isQuestionnaireViewable($assignment)) {
return true;
}
@@ -172,7 +172,7 @@ class Questionnaire extends SimpleORMap implements PrivacyObject
return true;
} else {
//now look through all plugin if this assignment is related to plugin contents:
- foreach (PluginManager::getInstance()->getPlugins("QuestionnaireAssignmentPlugin") as $plugin) {
+ foreach (PluginManager::getInstance()->getPlugins(QuestionnaireAssignmentPlugin::class) as $plugin) {
if ($plugin->isQuestionnaireEditable($assignment)) {
return true;
}
diff --git a/lib/models/User.class.php b/lib/models/User.class.php
index b71464c..a9dbc14 100644
--- a/lib/models/User.class.php
+++ b/lib/models/User.class.php
@@ -1189,7 +1189,7 @@ class User extends AuthUserMd5 implements Range, PrivacyObject, Studip\Calendar\
// Restliche Daten übertragen
// ForumsModule migrieren
- foreach (PluginEngine::getPlugins('ForumModule') as $plugin) {
+ foreach (PluginEngine::getPlugins(ForumModule::class) as $plugin) {
$plugin->migrateUser($old_id, $new_id);
}
diff --git a/lib/navigation/AdminNavigation.php b/lib/navigation/AdminNavigation.php
index a1762c6..a725082 100644
--- a/lib/navigation/AdminNavigation.php
+++ b/lib/navigation/AdminNavigation.php
@@ -126,7 +126,7 @@ class AdminNavigation extends Navigation
$navigation->addSubNavigation('banner', new Navigation(_('Werbebanner'), 'dispatch.php/admin/banner'));
}
- if (PluginManager::getInstance()->getPlugin('CoursewareModule')) {
+ if (PluginManager::getInstance()->getPlugin(CoursewareModule::class)) {
$navigation->addSubNavigation(
'courseware',
new Navigation(
diff --git a/lib/navigation/ContentsNavigation.php b/lib/navigation/ContentsNavigation.php
index f6190e2..a00adb6 100644
--- a/lib/navigation/ContentsNavigation.php
+++ b/lib/navigation/ContentsNavigation.php
@@ -42,7 +42,7 @@ class ContentsNavigation extends Navigation
$this->addSubNavigation('overview', $overview);
- if (PluginManager::getInstance()->getPlugin('CoursewareModule')) {
+ if (PluginManager::getInstance()->getPlugin(CoursewareModule::class)) {
$courseware = new Navigation(_('Courseware'));
$courseware->setDescription(_('Erstellen und Sammeln von Lernmaterialien'));
$courseware->setImage(Icon::create('courseware'));
diff --git a/lib/navigation/ProfileNavigation.php b/lib/navigation/ProfileNavigation.php
index 50dcfec..4827fe4 100644
--- a/lib/navigation/ProfileNavigation.php
+++ b/lib/navigation/ProfileNavigation.php
@@ -139,7 +139,7 @@ class ProfileNavigation extends Navigation
// Add consultations if appropriate
if (Config::get()->CONSULTATION_ENABLED) {
- $plugin = PluginEngine::getPlugin('ConsultationModule');
+ $plugin = PluginEngine::getPlugin(ConsultationModule::class);
if ($current_user && $plugin && PluginManager::getInstance()->isPluginActivatedForUser($plugin->getPluginId(), $current_user->id)) {
$this->addSubNavigation('consultation', new ConsultationNavigation($current_user));
}
diff --git a/lib/navigation/StartNavigation.php b/lib/navigation/StartNavigation.php
index acd5ee3..0a6d52a 100644
--- a/lib/navigation/StartNavigation.php
+++ b/lib/navigation/StartNavigation.php
@@ -222,7 +222,7 @@ class StartNavigation extends Navigation
// contents
$navigation = new Navigation(_('Mein Arbeitsplatz'), 'dispatch.php/contents/overview');
- if (PluginManager::getInstance()->getPlugin('CoursewareModule')) {
+ if (PluginManager::getInstance()->getPlugin(CoursewareModule::class)) {
$navigation->addSubNavigation('courseware',
new Navigation(_('Courseware'), 'dispatch.php/contents/courseware'));
}
diff --git a/lib/plugins/engine/PluginEngine.class.php b/lib/plugins/engine/PluginEngine.class.php
index ecf00cf..25974c5 100644
--- a/lib/plugins/engine/PluginEngine.class.php
+++ b/lib/plugins/engine/PluginEngine.class.php
@@ -3,8 +3,7 @@
/**
* Factory Class for the plugin engine
* @author Dennis Reil, <dennis.reil@offis.de>
- * @package pluginengine
- * @subpackage engine
+ * @template P of StudIPPlugin
*/
class PluginEngine
@@ -38,27 +37,28 @@ class PluginEngine
global $user, $perm;
// load system plugins
- self::getPlugins('SystemPlugin');
+ self::getPlugins(SystemPlugin::class);
// load homepage plugins
- self::getPlugins('HomepagePlugin');
+ self::getPlugins(HomepagePlugin::class);
// load course plugins
if (Context::getId()) {
- self::getPlugins('StudipModule');
- self::getPlugins('StandardPlugin');
+ self::getPlugins(StudipModule::class);
+ self::getPlugins(StandardPlugin::class);
}
// load admin plugins
if (is_object($user) && $perm->have_perm('admin')) {
- self::getPlugins('AdministrationPlugin');
+ self::getPlugins(AdministrationPlugin::class);
}
}
/**
* Get instance of the plugin specified by plugin class name.
*
- * @param string $class class name of plugin
+ * @param class-string<P> $class class name of plugin
+ * @return P
*/
public static function getPlugin ($class)
{
@@ -70,10 +70,9 @@ class PluginEngine
* returns all enabled plugins. The optional context parameter can be
* used to get only plugins that are activated in the given context.
*
- * @template T
- * @param T $type plugin type or null (all types)
+ * @param class-string<P>|null $type plugin type or null (all types)
* @param string $context context range id (optional)
- * @return T[] all plugins of the specified type
+ * @return P[]|StudIPPlugin[] all plugins of the specified type
*/
public static function getPlugins ($type, $context = null)
{
diff --git a/lib/plugins/engine/PluginManager.class.php b/lib/plugins/engine/PluginManager.class.php
index f08b5fa..fc81d7f 100644
--- a/lib/plugins/engine/PluginManager.class.php
+++ b/lib/plugins/engine/PluginManager.class.php
@@ -1,14 +1,11 @@
<?php
-# Lifter010: TODO
-/*
+/**
* PluginManager.class.php - plugin manager for Stud.IP
*
- * Copyright (c) 2009 Elmar Ludwig
+ * @copyright 2009 Elmar Ludwig
+ * @license GPL2 or any later version
*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
+ * @template P of StudIPPlugin
*/
class PluginManager
@@ -576,7 +573,7 @@ class PluginManager
* Get instance of the plugin specified by plugin meta data.
*
* @param array $plugin_info plugin meta data
- * @return object
+ * @return P
*/
protected function getCachedPlugin ($plugin_info)
{
@@ -603,8 +600,8 @@ class PluginManager
/**
* Get instance of the plugin specified by plugin class name.
*
- * @param string $class class name of plugin
- * @return object
+ * @param class-string<P> $class class name of plugin
+ * @return P|null
*/
public function getPlugin ($class)
{
@@ -623,7 +620,7 @@ class PluginManager
* Get instance of the plugin specified by plugin id.
*
* @param int $id id of the plugin
- * @return object $plugin
+ * @return P|null $plugin
*/
public function getPluginById ($id)
{
@@ -643,8 +640,9 @@ class PluginManager
* returns all enabled plugins. The optional context parameter can be
* used to get only plugins that are activated in the given context.
*
- * @param string $type plugin type or null (all types)
+ * @param class-string<P>|null $type plugin type or null (all types)
* @param string $context context range id (optional)
+ * @return P[]|StudIPPlugin[]
*/
public function getPlugins ($type, $context = null)
{
diff --git a/public/api.php b/public/api.php
index b2d30fa..9f7863c 100644
--- a/public/api.php
+++ b/public/api.php
@@ -43,7 +43,7 @@ namespace RESTAPI {
require 'lib/bootstrap-api.php';
// Initialize RESTAPI plugins
- \PluginEngine::getPlugins('RESTAPIPlugin');
+ \PluginEngine::getPlugins(RESTAPIPlugin::class);
$uri = \Request::pathInfo();