diff --git a/utils/Commands/UpdateextensionCommand.php b/utils/Commands/UpdateextensionCommand.php index a7eef574e..e73e4afc1 100644 --- a/utils/Commands/UpdateextensionCommand.php +++ b/utils/Commands/UpdateextensionCommand.php @@ -68,23 +68,21 @@ class UpdateextensionCommand extends Command $installs = []; /* Get a list of available extensions from the repository */ if($ret = $extmgr->updateExtensionList('', true)) { -// $output->writeln(sprintf("Updated extension list from repository.")); // list of installed extensions $extconfs = $extmgr->getExtensionConfiguration(); // list of extensions in repository, this will just return the // latest version of an extension $list = $extmgr->getExtensionList(); -// print_r($list); foreach($list as $extname=>$data) { $extversions = $extmgr->getExtensionListByName($extname); -// print_r($extversions); - $updates[$extname] = []; - $installs[$extname] = []; - $allowedversions = []; +// $updates[$extname] = []; +// $installs[$extname] = []; foreach($extversions as $version=>$extversion) { + /* Only version which pass the check will be offered for + * update or install. + */ $check = $extmgr->checkExtensionByName($extname, $extversion); if ($check) { - $allowedversions[] = ''.$version.''; if (isset($extconfs[$extname])) { if (\Seeddms\Seeddms\ExtensionMgr::cmpVersion($version, $extconfs[$extname]['version']) > 0) { $updates[$extname][$version] = $extversion; @@ -92,60 +90,64 @@ class UpdateextensionCommand extends Command } else { $installs[$extname][$version] = $extversion; } - } else { - $allowedversions[] = ''.$version.''; } } } $helper = new QuestionHelper(); - foreach($updates as $extname=>$update) { - $availableversions = array_keys($update); - if ($update) { - $output->writeln(sprintf("Extension '%s' can be updated from %s to %s.", $extname, $extconfs[$extname]['version'], implode(', ', $availableversions))); - $question = new Question(sprintf("Enter version to update: "), ''); - if ($answer = $helper->ask($input, $output, $question)) { - if (in_array($answer, $availableversions)) { - $output->writeln(sprintf("Update extension '%s' to version %s.", $extname, $answer)); - if ($tmpfile = $extmgr->getExtensionFromRepository($update[$answer]['filename'])) { + if($updates) { + $output->writeln(sprintf("%d extensions can be updated.", count($updates))); + foreach($updates as $extname=>$update) { + $availableversions = array_keys($update); + if ($update) { + $output->writeln(sprintf("Extension '%s' can be updated from %s to %s.", $extname, $extconfs[$extname]['version'], implode(', ', $availableversions))); + $question = new Question(sprintf("Enter version to update: "), ''); + if ($answer = $helper->ask($input, $output, $question)) { + if (in_array($answer, $availableversions)) { + $output->writeln(sprintf("Update extension '%s' to version %s.", $extname, $answer)); + if ($tmpfile = $extmgr->getExtensionFromRepository($update[$answer]['filename'])) { - if (0&&!$extmgr->updateExtension($tmpfile)) { - foreach ($extmgr->getErrorMsgs() as $msg) { - $output->writeln(sprintf("%s", $msg)); + if (0&&!$extmgr->updateExtension($tmpfile)) { + foreach ($extmgr->getErrorMsgs() as $msg) { + $output->writeln(sprintf("%s", $msg)); + } + unlink($tmpfile); + return Command::FAILURE; + } else { + unlink($tmpfile); } - unlink($tmpfile); - return Command::FAILURE; - } else { - unlink($tmpfile); } + } else { + $output->writeln(sprintf("Invalid version %s.", $answer)); } - } else { - $output->writeln(sprintf("Invalid version %s.", $answer)); } } } } - foreach($installs as $extname=>$install) { - $availableversions = array_keys($install); - if ($install) { - $output->writeln(sprintf("Extension '%s' can be installed as version %s.", $extname, implode(', ', $availableversions))); - $question = new Question(sprintf("Enter version to install: "), ''); - if ($answer = $helper->ask($input, $output, $question)) { - if (in_array($answer, $availableversions)) { - $output->writeln(sprintf("Install extension '%s' to version %s.", $extname, $answer)); - if ($tmpfile = $extmgr->getExtensionFromRepository($install[$answer]['filename'])) { + if($installs) { + $output->writeln(sprintf("%d extensions can be installed.", count($installs))); + foreach($installs as $extname=>$install) { + $availableversions = array_keys($install); + if ($install) { + $output->writeln(sprintf("Extension '%s' can be installed as version %s.", $extname, implode(', ', $availableversions))); + $question = new Question(sprintf("Enter version to install: "), ''); + if ($answer = $helper->ask($input, $output, $question)) { + if (in_array($answer, $availableversions)) { + $output->writeln(sprintf("Install extension '%s' to version %s.", $extname, $answer)); + if ($tmpfile = $extmgr->getExtensionFromRepository($install[$answer]['filename'])) { - if (0&&!$extmgr->updateExtension($tmpfile)) { - foreach ($extmgr->getErrorMsgs() as $msg) { - $output->writeln(sprintf("%s", $msg)); + if (0&&!$extmgr->updateExtension($tmpfile)) { + foreach ($extmgr->getErrorMsgs() as $msg) { + $output->writeln(sprintf("%s", $msg)); + } + unlink($tmpfile); + return Command::FAILURE; + } else { + unlink($tmpfile); } - unlink($tmpfile); - return Command::FAILURE; - } else { - unlink($tmpfile); } + } else { + $output->writeln(sprintf("Invalid version %s.", $answer)); } - } else { - $output->writeln(sprintf("Invalid version %s.", $answer)); } } }