diff options
| author | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2024-05-15 20:50:29 +0000 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2024-05-15 20:50:29 +0000 |
| commit | 5b4b7f540bdaaba71557ffd528319025ebf028d2 (patch) | |
| tree | 59e5efad02c53fda815c5ce945f24ca5a65241ea /lib | |
| parent | f9c634a9fe0fb5ac4c5a391fea813603631afc0f (diff) | |
fixes #4133
Closes #4133
Merge request studip/studip!2978
Diffstat (limited to 'lib')
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) { |
