aboutsummaryrefslogtreecommitdiff
path: root/lib
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 /lib
parentf9c634a9fe0fb5ac4c5a391fea813603631afc0f (diff)
fixes #4133
Closes #4133 Merge request studip/studip!2978
Diffstat (limited to 'lib')
-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
24 files changed, 45 insertions, 48 deletions
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)
{