Commit 5d294d36 authored by Côme Chilliet's avatar Côme Chilliet
Browse files

Merge branch '6152-add-subscription-screen' into '1.4-dev'

Resolve "Add subscription screen"

See merge request fusiondirectory/fd!893
Showing with 35 additions and 6 deletions
+35 -6
...@@ -30,6 +30,8 @@ class subscriptionInfo extends simplePlugin ...@@ -30,6 +30,8 @@ class subscriptionInfo extends simplePlugin
'fdSubscriptionEndDate' => 'EndDate', 'fdSubscriptionEndDate' => 'EndDate',
]; ];
public static $sectionName = 'FusionDirectory Subscription';
public static function plInfo (): array public static function plInfo (): array
{ {
return [ return [
...@@ -175,7 +177,7 @@ class subscriptionInfo extends simplePlugin ...@@ -175,7 +177,7 @@ class subscriptionInfo extends simplePlugin
htmlescape(_('No data. Did you forgot to upload a file?')) htmlescape(_('No data. Did you forgot to upload a file?'))
); );
$error->display(); $error->display();
} elseif (($data = parse_ini_string($data)) === FALSE) { } elseif (($data = parse_ini_string($data, TRUE)) === FALSE) {
/* Import of INI failed */ /* Import of INI failed */
$error = new SimplePluginError( $error = new SimplePluginError(
$this->attributesAccess['import_file'], $this->attributesAccess['import_file'],
...@@ -183,12 +185,39 @@ class subscriptionInfo extends simplePlugin ...@@ -183,12 +185,39 @@ class subscriptionInfo extends simplePlugin
); );
$error->display(); $error->display();
} else { } else {
/* Import data and save it to the LDAP */ /* Check content of ini file */
foreach (static::$subscriptionAttributes as $attr => $iniVar) { $errorText = NULL;
$this->attributesAccess[$attr]->setValue($data[$iniVar] ?? ''); if (!isset($data[static::$sectionName])) {
$errorText = sprintf(_('Missing section "%s" in imported file'), static::$sectionName);
} else {
$data = $data[static::$sectionName];
foreach (static::$subscriptionAttributes as $attr => $iniVar) {
if ($this->attributesAccess[$attr]->isRequired() && (!isset($data[$iniVar]) || ($data[$iniVar] === ''))) {
$errorText = sprintf(_('Missing attribute "%s" in imported file'), $iniVar);
break;
}
}
}
if ($errorText !== NULL) {
$error = new SimplePluginError(
$this->attributesAccess['import_file'],
htmlescape($errorText)
);
$error->display();
} else {
/* Import data and save it to the LDAP */
foreach (static::$subscriptionAttributes as $attr => $iniVar) {
$this->attributesAccess[$attr]->setValue($data[$iniVar] ?? '');
}
$errors = $this->parent->save();
if (count($errors) > 0) {
msg_dialog::displayChecks($errors);
/* Reset fields to LDAP value */
foreach (array_keys(static::$subscriptionAttributes) as $attr) {
$this->attributesAccess[$attr]->setValue($this->attributesAccess[$attr]->getInitialValue());
}
}
} }
$errors = $this->parent->save();
msg_dialog::displayChecks($errors);
} }
/* Avoid double import */ /* Avoid double import */
$this->import_file = ''; $this->import_file = '';
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment