diff --git a/Module.php b/Module.php index eb11981b995d8db53b2ddf77bec33c3ecbc56e2c..692eadc7f778aa2b134d5e3ab84382ca013637f0 100644 --- a/Module.php +++ b/Module.php @@ -171,7 +171,7 @@ SQL; $data = []; $defaultSettings = $config[strtolower(__NAMESPACE__)]['config']; foreach ($defaultSettings as $name => $value) { - $data[$name] = $settings->get($name); + $data[$name] = $settings->get($name, $value); } $form->init(); @@ -185,10 +185,10 @@ SQL; $services = $this->getServiceLocator(); $config = $services->get('Config'); $settings = $services->get('Omeka\Settings'); + $form = $services->get('FormElementManager')->get(ConfigForm::class); $params = $controller->getRequest()->getPost(); - $form = $services->get('FormElementManager')->get(ConfigForm::class); $form->init(); $form->setData($params); if (!$form->isValid()) { @@ -196,19 +196,17 @@ SQL; return false; } - $data = $form->getData(); - + $params = $form->getData(); $defaultSettings = $config[strtolower(__NAMESPACE__)]['config']; - foreach ($data as $name => $value) { - if (array_key_exists($name, $defaultSettings)) { - if ($name === 'oaipmhrepository_namespace_id' && $value === 'localhost') { - $value = 'default.must.change'; - } elseif ($name === 'oaipmhrepository_metadata_formats') { - $value[] = 'oai_dc'; - $value = array_unique($value); - } - $settings->set($name, $value); + $params = array_intersect_key($params, $defaultSettings); + foreach ($params as $name => $value) { + if ($name === 'oaipmhrepository_namespace_id' && $value === 'localhost') { + $value = 'default.must.change'; + } elseif ($name === 'oaipmhrepository_metadata_formats') { + $value[] = 'oai_dc'; + $value = array_unique($value); } + $settings->set($name, $value); } }