From 0a3d9185745ca5fa4fea517bbee1e8ddba4923d7 Mon Sep 17 00:00:00 2001 From: Claus-Justus Heine Date: Tue, 30 Sep 2025 10:00:57 +0200 Subject: [PATCH] Display the current configuration with the occ "status" command if --verbose. Signed-off-by: Claus-Justus Heine --- lib/Command/Status.php | 1 + lib/Provider/Gateway/AGateway.php | 19 ++++++++++++++++++- lib/Provider/Gateway/IGateway.php | 2 ++ lib/Provider/Gateway/TConfigurable.php | 9 ++++++++- 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/lib/Command/Status.php b/lib/Command/Status.php index 58d04146..d2bf089a 100644 --- a/lib/Command/Status.php +++ b/lib/Command/Status.php @@ -31,6 +31,7 @@ protected function execute(InputInterface $input, OutputInterface $output) { $isConfigured = $gateway->isComplete(); $settings = $gateway->getSettings(); $output->writeln($settings->name . ': ' . ($isConfigured ? 'configured' : 'not configured')); + $output->write(print_r($gateway->getConfiguration(), true), true, OutputInterface::VERBOSITY_VERBOSE); } return 0; } diff --git a/lib/Provider/Gateway/AGateway.php b/lib/Provider/Gateway/AGateway.php index aaf53925..e268fd47 100644 --- a/lib/Provider/Gateway/AGateway.php +++ b/lib/Provider/Gateway/AGateway.php @@ -41,12 +41,29 @@ public function isComplete(?Settings $settings = null): bool { $providerId = $settings->id ?? $this->getProviderId(); $fields = []; foreach ($settings->fields as $field) { - $fields[] = $providerId . '_' . $field->field; + $fields[] = self::keyFromFieldName($providerId, $field->field); } $intersect = array_intersect($fields, $savedKeys); return count($intersect) === count($fields); } + #[\Override] + public function getConfiguration(?Settings $settings = null): array { + if (!is_object($settings)) { + $settings = $this->getSettings(); + } + $providerId = $settings->id ?? $this->getProviderId(); + $config = []; + foreach ($settings->fields as $field) { + $config[$field->field] = $this->appConfig->getValueString( + Application::APP_ID, + self::keyFromFieldName($providerId, $field->field), + $field->default, + ); + } + return $config; + } + #[\Override] public function getSettings(): Settings { if ($this->settings !== null) { diff --git a/lib/Provider/Gateway/IGateway.php b/lib/Provider/Gateway/IGateway.php index d137d14e..3a56e9dc 100644 --- a/lib/Provider/Gateway/IGateway.php +++ b/lib/Provider/Gateway/IGateway.php @@ -32,6 +32,8 @@ public function createSettings(): Settings; public function getSettings(): Settings; + public function getConfiguration(): array; + public function cliConfigure(InputInterface $input, OutputInterface $output): int; public function remove(?Settings $settings = null): void; diff --git a/lib/Provider/Gateway/TConfigurable.php b/lib/Provider/Gateway/TConfigurable.php index 3da8d766..68d1fa3a 100644 --- a/lib/Provider/Gateway/TConfigurable.php +++ b/lib/Provider/Gateway/TConfigurable.php @@ -44,6 +44,13 @@ public function __call(string $name, array $args) { throw new ConfigurationException('Invalid operation ' . $matches['operation']); } + /** + * @return string + */ + private static function keyFromFieldName(string $id, string $fieldName):string { + return $id . '_' . $fieldName; + } + /** * @throws ConfigurationException */ @@ -52,7 +59,7 @@ private function keyFromField(string $fieldName): string { $fields = $settings->fields; foreach ($fields as $field) { if ($field->field === $fieldName) { - return $settings->id . '_' . $fieldName; + return static::keyFromFieldName($settings->id, $fieldName); } } throw new ConfigurationException('Invalid configuration field: ' . $fieldName . ', check SCHEMA at ' . static::class);