From 5b4b7f540bdaaba71557ffd528319025ebf028d2 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Wed, 15 May 2024 20:50:29 +0000 Subject: [PATCH] fixes #4133 Closes #4133 Merge request studip/studip!2978 --- app/controllers/activityfeed.php | 4 ++-- app/controllers/admin/courses.php | 14 ++++++------ app/controllers/admin/extern.php | 2 +- app/controllers/admin/sem_classes.php | 2 +- app/controllers/admin/user.php | 2 +- app/controllers/blubber.php | 2 +- app/controllers/contents/courseware.php | 2 +- app/controllers/course/contentmodules.php | 2 +- app/controllers/course/overview.php | 2 +- app/controllers/course/wiki.php | 2 +- app/controllers/file.php | 10 ++++----- app/controllers/files.php | 6 ++--- app/controllers/institute/basicdata.php | 2 +- app/controllers/privacy.php | 2 +- app/controllers/profile.php | 2 +- app/controllers/profilemodules.php | 2 +- app/controllers/questionnaire.php | 2 +- app/controllers/quickselection.php | 2 +- app/controllers/start.php | 4 ++-- app/views/course/details/index.php | 2 +- app/views/file/add_files_window.php | 2 +- app/views/file/choose_destination.php | 2 +- app/views/institute/overview/index.php | 2 +- .../questionnaire/_overview_questionnaire.php | 2 +- app/views/questionnaire/context.php | 2 +- db/migrations/1.154_recalculate_score.php | 2 +- db/migrations/1.314_step_00349.php | 4 ++-- lib/archiv.inc.php | 2 +- lib/classes/JsonApi/RouteMap.php | 4 ++-- lib/classes/Metrics.php | 2 +- lib/classes/MyRealmModel.php | 2 +- lib/classes/Privacy.php | 2 +- lib/classes/Score.class.php | 2 +- lib/classes/Seminar.class.php | 2 +- lib/classes/Siteinfo.php | 4 ++-- lib/classes/StudipKing.class.php | 2 +- lib/classes/UserManagement.class.php | 2 +- lib/classes/Visibility.php | 2 +- lib/classes/WidgetHelper.php | 2 +- lib/extern/ExternPage.php | 2 +- lib/extern/ExternPagePersonDetails.php | 2 +- lib/filesystem/LibraryFile.class.php | 2 +- lib/models/BlubberThread.php | 2 +- lib/models/Questionnaire.php | 4 ++-- lib/models/User.class.php | 2 +- lib/navigation/AdminNavigation.php | 2 +- lib/navigation/ContentsNavigation.php | 2 +- lib/navigation/ProfileNavigation.php | 2 +- lib/navigation/StartNavigation.php | 2 +- lib/plugins/engine/PluginEngine.class.php | 21 +++++++++--------- lib/plugins/engine/PluginManager.class.php | 22 +++++++++---------- public/api.php | 2 +- 52 files changed, 88 insertions(+), 91 deletions(-) diff --git a/app/controllers/activityfeed.php b/app/controllers/activityfeed.php index 2f93aa103d6..8e81912b32f 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 8de1b798499..82c389b7a4d 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 559868e3351..732b5861133 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 c0b098f89d8..7993c4b308d 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 214c2908b64..54aa0c489f7 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 6588014be44..aedf9b64081 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 f0d502320f6..c1d807f314d 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 df397cdf42f..d37d1bb050a 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 402137e9a49..876de5ada18 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 cbd63cf5c0f..0bb6c717b25 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 bebfe70ebf8..11b1949f7d0 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 3c77f4e50d7..2d4de4e1593 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 fb1ce9652b9..9c800fdbbaa 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 ba8e6f1a004..d50b1f1bd1d 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 3fa37772836..b9a7cf73710 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 201c4ffaab2..c24d4f413bb 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 6f805260300..4016b9dd04e 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 1899e539d9b..a53eb080666 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 53a87dc796a..87c493e9406 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 eb7da10f308..545454a26ac 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 53a7b73f627..c7630c50f0c 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 49afe8769c3..9a398837adc 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 3e80f98f481..7ed85460c46 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 bb7586ef853..8b45d422fe8 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 3237101c851..98e08c0bd90 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 5568363ea30..9391e7d4109 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 a777cc29470..a1094d8fc9c 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 8fe4bc950e7..e40685f612e 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 4f441651ba7..d81bbbf100b 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 c3874d5d4a1..e6a2925df75 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 ab9aa20877e..8997e780bef 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 0ba296a52c3..b38838ccc0d 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 f7d8ea34271..4d114d5d4b5 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 dda25ee0ffd..8aa3d412b75 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 9043ce36db8..0d849ca07d9 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 3a61c577f98..ae5a14e7686 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 780559415e4..015e6cd491a 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 1b872301152..99b3907e4fd 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 ba82ee9a1dc..ff4d7a61268 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 308caebad8b..d3c5ec2cdf6 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 49c754c16a1..8fb65404404 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 0c2bcb68b89..c9524e32cae 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 aa6016fc461..590a600e4a8 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 f29a2de7f1b..777182d4733 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 b71464cf3d2..a9dbc14d4a3 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 a1762c67425..a72508228c1 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 f6190e2f3e9..a00adb6e07a 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 50dcfec2d9b..4827fe4db35 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 acd5ee32d60..0a6d52afa40 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 ecf00cff790..25974c50631 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 f08b5fa4064..fc81d7f36ef 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 b2d30fa2351..9f7863c60ed 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(); -- GitLab