diff --git a/app/controllers/activityfeed.php b/app/controllers/activityfeed.php index 2f93aa103d6932782d5f766dae3961df78f1c371..8e81912b32fd95716f8226868534b3852a8dced3 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 8de1b7984998b8e402495b64207061b473daf8c1..82c389b7a4d7055cda6025f15c0a584683124cb7 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 559868e3351ec66cde90222ac9256240b801ab7f..732b58611332a46f3b566508db5adf3ccbb5d47b 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 c0b098f89d873c4cf4d194bab1408efdfafe4809..7993c4b308d8ebfd3034fd8b6e52cf2add0cd509 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 214c2908b640eb45531dd9470382354453bb33bb..54aa0c489f7faae0f4d797a82b80c1ea65866d83 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 6588014be44208be81ff1e8d515f7c62a21f5124..aedf9b64081e3ec3444a9e3101c6b225ed6242bb 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 f0d502320f67e01ddc1a631729e877997c73c201..c1d807f314d71aa22f2434db3b5ba7317f9d4220 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 df397cdf42fac99909c43e7168da6bb0d1ae9f14..d37d1bb050aea1d76ea2eab34f8bc2322120cb86 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 402137e9a4941868bc974e8f49153da7ccdb0e90..876de5ada18f4a17a4d91e33633726766e967402 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 cbd63cf5c0f28dae9b61ca16bc3418f81bd88c52..0bb6c717b25057551cc7082536d4f5aee9f4e999 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 bebfe70ebf8253214244f45aaad40e3c48f11dbe..11b1949f7d09062fe33ae1f500cb73874b3e1f2c 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 3c77f4e50d77b3d2762ccb3778da1735ebd4c4d1..2d4de4e1593e1ed4cb01ded418c69d70584f2d53 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 fb1ce9652b9505da893c630efaf13342103aab88..9c800fdbbaa335d182d257f3f6d231b578182cfa 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 ba8e6f1a004fe2338ec54180ad5f26d6c81aee0b..d50b1f1bd1d89f0b38e50366df33c57e140582b3 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 3fa377728369965b0f43cce1ecbf52e8ab6f6106..b9a7cf737109dc20cf58619f7300aecaf2e23e07 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 201c4ffaab2ad975445ea8617ad43c80a0889f4f..c24d4f413bb20785cec3a0887f3dcdfd92fb6d08 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 6f805260300349cef016c1adad0c1fb60f94177a..4016b9dd04e5602369e28406c2ac550fd73cdf39 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 1899e539d9b38a2482b6781683265c4b7be791a6..a53eb080666bec8d4fb6e5046a427fdfa7ad6a7d 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 53a87dc796ad92cfd51f6191e87d72d14e48795a..87c493e9406586c1f6d427b583d5f6c5a03edd9a 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 eb7da10f3089ff3c11985d321ea79e4362af12e5..545454a26ac97a54dd8f1e6c3e4cccf286c13f38 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 53a7b73f6275093986f5dfdcf7e45713f44720db..c7630c50f0cabf80e0107add873e45022a14482d 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 49afe8769c3f1593ccf942278b8135eee5144039..9a398837adc2f11eaedb766695c1c8ea50191a90 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 3e80f98f481aff1d7ab022530074a36e601b32b7..7ed85460c461b39669fe72a8ef72341946be7866 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 bb7586ef8538d6970d4749e9b9dafa5e6986f969..8b45d422fe873e3ce9747ce47977154a722fb5ec 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 3237101c851451812f9538ea5bcc7be71f5a3279..98e08c0bd90d932427db85d3d477afc7538ef411 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 5568363ea30e9a6283001dcccab7f241e58aa908..9391e7d41094444f74980bf4d30177dbc61e937a 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 a777cc294704e433f5c2790033ae419b0db116d7..a1094d8fc9c97e21de75a3eb292d05f58f0b2e30 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 8fe4bc950e7215b1a005a2d0eae90e6e1b334983..e40685f612e57dd1aeb5dfad3bd539fb9bc6a2cb 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 4f441651ba70870a8277e2e5e4c00647b00ef100..d81bbbf100b23db2735d4810e92ad3495e70a00c 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 c3874d5d4a1ab0ffe2e7dbd7a535c805c3982c20..e6a2925df7562293b6d52e52a164c30a6125000f 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 ab9aa20877e2574740689a03cfc440ccf4f9073a..8997e780bef971c45fe3b3cbab17c12a98fdbea8 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 0ba296a52c3f830dc857de3ab1307e22093bdfd6..b38838ccc0d161053f1184f08d10124deca2dd23 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 f7d8ea34271e927f88a8b61497ce5ef90484ee05..4d114d5d4b547cb2a0b25aa18239b1695d9d89e1 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 dda25ee0ffd59a515756b4f9f404e69d4566e66c..8aa3d412b7594899be3c54a1d5e12e1656cb2265 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 9043ce36db8962773bf84babe56afce21f68dcbe..0d849ca07d962ca2710e0c45e80bbe8ac1a6bb8e 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 3a61c577f987ddd01dd9aa2542f9a258444e5b71..ae5a14e76865a5ce6bb7b6b96c66da6c56a90a0c 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 780559415e4aca5ff7c437ac7d880150f897677b..015e6cd491a8c76c759b8e62c177b92fbc8749b3 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 1b8723011523852c6c1269117b08035befa0bc49..99b3907e4fd6866178d88f616b3c9dfc5381be0d 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 ba82ee9a1dc590e23b007cd6ac46d53e3d39aecf..ff4d7a61268e663f4a33fe43e1f2eab50489a21f 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 308caebad8b82624f9af234acc1f508050487f3e..d3c5ec2cdf6a9bdaf0ce96fb168879538fe8832b 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 49c754c16a178796710ec23c417680b00beb930a..8fb654044044173fec6ebd457205d940761af2ca 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 0c2bcb68b89323b0a7ff9448f0800ae48cb1bc13..c9524e32caea5e2563a656a59336011526a87fad 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 aa6016fc4615b4dbf321eaeb00da6c4936ac58fd..590a600e4a884dd7d51563c49e6a6b1acfb456b7 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 f29a2de7f1b005bb19ba730913ccdd9b1fd6e62e..777182d4733ab7b30f581bbc22627ceb20edca8c 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 b71464cf3d2e79dc9ba48ed4cf6bcf0ef79ce9d8..a9dbc14d4a3cd21fda004cb70305a42b78d2113a 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 a1762c6742522be7db7b97682007c8ea77cef950..a72508228c1d4fa66bd6eda787ed6b1452f41c84 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 f6190e2f3e90cf10c2bd0ce690ea3b33df8e830d..a00adb6e07a7a7318a0da10f0ea5e2c414fccc8a 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 50dcfec2d9be15ea866398994d3ed8913e4a8ece..4827fe4db356aa50ac7e476a011ca5ba432dba0c 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 acd5ee32d607e19af3da9bcdae17bf19f5abf7f6..0a6d52afa402e4a9b7d177badc669b2ea1207806 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 ecf00cff7903a8dd29ff731cf107a2ce53159004..25974c5063127789c6a595445d8f5d1384330974 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 f08b5fa4064acb711de9f4b4b98f7714a709c727..fc81d7f36efef9ee632b2375136a9d0a481df080 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 b2d30fa23510f09bdb35d0413802f1e4d30e85fa..9f7863c60ed09a8579169979e10649cc529a57f2 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();