aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2023-03-22 12:03:31 +0000
committerDavid Siegfried <david.siegfried@uni-vechta.de>2023-03-22 12:03:31 +0000
commit0838788bb47538f24f4d714f782689aecfb57c9f (patch)
tree16e0d1e022cd155e0b55e419212c479dd91b43eb
parentb8ac06e96379c20d55009144c580089a0a7404aa (diff)
use PluginAdministration::registerPlugin() in cli command `plugin:register`, fixes #702
Closes #702 Merge request studip/studip!1579
-rw-r--r--cli/Commands/Plugins/PluginRegister.php62
1 files changed, 10 insertions, 52 deletions
diff --git a/cli/Commands/Plugins/PluginRegister.php b/cli/Commands/Plugins/PluginRegister.php
index a9ae129..f30e5d8 100644
--- a/cli/Commands/Plugins/PluginRegister.php
+++ b/cli/Commands/Plugins/PluginRegister.php
@@ -22,61 +22,19 @@ class PluginRegister extends AbstractPluginCommand
protected function execute(InputInterface $input, OutputInterface $output): int
{
$pluginpath = $input->getArgument('pluginpath');
- $pluginManager = \PluginManager::getInstance();
- $manifest = $pluginManager->getPluginManifest($pluginpath);
- if (!$manifest) {
- $output->writeln('<error>The plugin\'s manifest is missing.</error>');
- return Command::FAILURE;
- }
- // get plugin meta data
- $pluginclass = $manifest['pluginclassname'];
- $origin = $manifest['origin'];
- $minVersion = $manifest['studipMinVersion'];
- $maxVersion = $manifest['studipMaxVersion'];
+ try {
+ // This will try to set the language to english so we have a
+ // consistent usage of english in cli commands.
+ setTempLanguage(false, 'en_GB');
- // check for compatible version
- if (
- (isset($minVersion) && \StudipVersion::olderThan($minVersion)) ||
- (isset($maxVersion) && \StudipVersion::newerThan($maxVersion))
- ) {
- $output->writeln('<error>The plugin is not compatible with this version of Stud.IP.</error>');
+ $plugin_administration = new \PluginAdministration();
+ $plugin_administration->registerPlugin($pluginpath);
+ } catch (\PluginInstallationException $e) {
+ $output->writeln("<error>{$e->getMessage()}</error>");
return Command::FAILURE;
- }
-
- // determine the plugin path
- $pluginregistered = $pluginManager->getPluginInfo($pluginclass);
-
- // create database schema if needed
- if (isset($manifest['dbscheme']) && !$pluginregistered) {
- $schemafile = $pluginpath . '/' . $manifest['dbscheme'];
- $contents = file_get_contents($schemafile);
- $statements = preg_split("/;[[:space:]]*\n/", $contents, -1, PREG_SPLIT_NO_EMPTY);
- $db = \DBManager::get();
- foreach ($statements as $statement) {
- $db->exec($statement);
- }
- }
-
- // check for migrations
- if (is_dir($pluginpath . '/migrations')) {
- $schemaVersion = new \DBSchemaVersion($manifest['pluginname']);
- $migrator = new \Migrator($pluginpath . '/migrations', $schemaVersion);
- $migrator->migrateTo(null);
- }
-
- $pluginpath = $origin . '/' . $pluginclass;
-
- // now register the plugin in the database
- $pluginid = $pluginManager->registerPlugin($manifest['pluginname'], $pluginclass, $pluginpath);
-
- // register additional plugin classes in this package
- $additionalclasses = $manifest['additionalclasses'];
-
- if (is_array($additionalclasses)) {
- foreach ($additionalclasses as $class) {
- $pluginManager->registerPlugin($class, $class, $pluginpath, $pluginid);
- }
+ } finally {
+ restoreLanguage();
}
$output->writeln('The plugin was successfully registered.');