Make collabora_additional_options an attribute

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
This commit is contained in:
Pablo Zmdl 2026-01-19 12:21:23 +01:00
parent ca35006a85
commit 228440f2a8
4 changed files with 24 additions and 24 deletions

View file

@ -121,7 +121,7 @@ $app->get('/containers', function (Request $request, Response $response, array $
'skip_domain_validation' => $configurationManager->shouldDomainValidationBeSkipped($skip_domain_validation), 'skip_domain_validation' => $configurationManager->shouldDomainValidationBeSkipped($skip_domain_validation),
'talk_port' => $configurationManager->GetTalkPort(), 'talk_port' => $configurationManager->GetTalkPort(),
'collabora_dictionaries' => $configurationManager->collabora_dictionaries, 'collabora_dictionaries' => $configurationManager->collabora_dictionaries,
'collabora_additional_options' => $configurationManager->GetAdditionalCollaboraOptions(), 'collabora_additional_options' => $configurationManager->collabora_additional_options,
'automatic_updates' => $configurationManager->areAutomaticUpdatesEnabled(), 'automatic_updates' => $configurationManager->areAutomaticUpdatesEnabled(),
'is_backup_section_enabled' => $configurationManager->isBackupSectionEnabled(), 'is_backup_section_enabled' => $configurationManager->isBackupSectionEnabled(),
'is_imaginary_enabled' => $configurationManager->isImaginaryEnabled, 'is_imaginary_enabled' => $configurationManager->isImaginaryEnabled,

View file

@ -121,12 +121,12 @@ readonly class ConfigurationController {
} }
if (isset($request->getParsedBody()['delete_collabora_additional_options'])) { if (isset($request->getParsedBody()['delete_collabora_additional_options'])) {
$this->configurationManager->DeleteAdditionalCollaboraOptions(); $this->configurationManager->deleteAdditionalCollaboraOptions();
} }
if (isset($request->getParsedBody()['collabora_additional_options'])) { if (isset($request->getParsedBody()['collabora_additional_options'])) {
$additionalCollaboraOptions = $request->getParsedBody()['collabora_additional_options'] ?? ''; $additionalCollaboraOptions = $request->getParsedBody()['collabora_additional_options'] ?? '';
$this->configurationManager->SetAdditionalCollaboraOptions($additionalCollaboraOptions); $this->configurationManager->collabora_additional_options = $additionalCollaboraOptions;
} }
if (isset($request->getParsedBody()['delete_borg_backup_location_vars'])) { if (isset($request->getParsedBody()['delete_borg_backup_location_vars'])) {

View file

@ -148,6 +148,18 @@ class ConfigurationManager
} }
} }
/**
* @throws InvalidSettingConfigurationException
*/
public string $collabora_additional_options {
get => $this->get('collabora_additional_options', '');
set {
// This throws an exception if the validation fails.
$this->validateCollaboraAdditionalOptions($value);
$this->set('collabora_additional_options', $value);
}
}
public function GetConfig() : array public function GetConfig() : array
{ {
if ($this->config === [] && file_exists(DataConst::GetConfigFile())) if ($this->config === [] && file_exists(DataConst::GetConfigFile()))
@ -866,7 +878,7 @@ class ConfigurationManager
/** /**
* @throws InvalidSettingConfigurationException * @throws InvalidSettingConfigurationException
*/ */
public function SetAdditionalCollaboraOptions(string $additionalCollaboraOptions) : void { private function validateCollaboraAdditionalOptions(string $additionalCollaboraOptions) : void {
if ($additionalCollaboraOptions === "") { if ($additionalCollaboraOptions === "") {
throw new InvalidSettingConfigurationException("The additional options must not be empty!"); throw new InvalidSettingConfigurationException("The additional options must not be empty!");
} }
@ -874,32 +886,20 @@ class ConfigurationManager
if (!preg_match("#^--o:#", $additionalCollaboraOptions)) { if (!preg_match("#^--o:#", $additionalCollaboraOptions)) {
throw new InvalidSettingConfigurationException("The entered options must start with '--o:'. So the config does not seem to be a valid!"); throw new InvalidSettingConfigurationException("The entered options must start with '--o:'. So the config does not seem to be a valid!");
} }
$config = $this->GetConfig();
$config['collabora_additional_options'] = $additionalCollaboraOptions;
$this->WriteConfig($config);
}
public function GetAdditionalCollaboraOptions() : string {
$config = $this->GetConfig();
if(!isset($config['collabora_additional_options'])) {
$config['collabora_additional_options'] = '';
}
return $config['collabora_additional_options'];
} }
public function isCollaboraSubscriptionEnabled() : bool { public function isCollaboraSubscriptionEnabled() : bool {
if (str_contains($this->GetAdditionalCollaboraOptions(), '--o:support_key=')) { if (str_contains($this->collabora_additional_options, '--o:support_key=')) {
return true; return true;
} }
return false; return false;
} }
public function DeleteAdditionalCollaboraOptions() : void { /**
$config = $this->GetConfig(); * Provide an extra method since the corresponding attribute setter prevents setting an empty value.
$config['collabora_additional_options'] = ''; */
$this->WriteConfig($config); public function deleteAdditionalCollaboraOptions() : void {
$this->set('collabora_additional_options', '');
} }
public function GetApacheAdditionalNetwork() : string { public function GetApacheAdditionalNetwork() : string {

View file

@ -427,8 +427,8 @@ readonly class DockerActionManager {
} }
// Additional Collabora options // Additional Collabora options
if ($this->configurationManager->GetAdditionalCollaboraOptions() !== '') { if ($this->configurationManager->collabora_additional_options !== '') {
$requestBody['Cmd'] = [$this->configurationManager->GetAdditionalCollaboraOptions()]; $requestBody['Cmd'] = [$this->configurationManager->collabora_additional_options];
} }
} }