From 578131e22a6b2208088ea4da5f9e16ea9798382c Mon Sep 17 00:00:00 2001 From: djmaze Date: Thu, 24 Sep 2020 09:58:35 +0200 Subject: [PATCH] Drop unavailable PDO drivers in admin contacts Based on good feedback in issue #11 by @phsc84 --- dev/Settings/Admin/Contacts.js | 57 +++++-------------- .../0.0.0/app/libraries/RainLoop/Actions.php | 5 +- .../app/localization/admin/_source.en.yml | 2 - .../v/0.0.0/app/localization/admin/de_DE.yml | 2 - .../v/0.0.0/app/localization/admin/en_US.yml | 2 - .../v/0.0.0/app/localization/admin/es_ES.yml | 2 - .../v/0.0.0/app/localization/admin/fr_FR.yml | 2 - .../v/0.0.0/app/localization/admin/nl_NL.yml | 2 - 8 files changed, 15 insertions(+), 59 deletions(-) diff --git a/dev/Settings/Admin/Contacts.js b/dev/Settings/Admin/Contacts.js index ae2e1d435..5c4ee2115 100644 --- a/dev/Settings/Admin/Contacts.js +++ b/dev/Settings/Admin/Contacts.js @@ -3,7 +3,6 @@ import ko from 'ko'; import { settingsSaveHelperSimpleFunction, defautOptionsAfterRender } from 'Common/Utils'; import { SaveSettingsStep, StorageResultType } from 'Common/Enums'; -import { i18n } from 'Common/Translator'; import Remote from 'Remote/Admin/Fetch'; import { command } from 'Knoin/Knoin'; @@ -15,50 +14,22 @@ class ContactsAdminSettings { this.enableContacts = ko.observable(!!settingsGet('ContactsEnable')); this.contactsSync = ko.observable(!!settingsGet('ContactsSync')); - const supportedTypes = [], - types = ['sqlite', 'mysql', 'pgsql'], - getTypeName = (name) => { - switch (name) { - case 'sqlite': - name = 'SQLite'; - break; - case 'mysql': - name = 'MySQL'; - break; - case 'pgsql': - name = 'PostgreSQL'; - break; - // no default - } + const supportedTypes = settingsGet('supportedPdoDrivers') || [], + types = [{ + id:'sqlite', + name:'SQLite' + },{ + id:'mysql', + name:'MySQL' + },{ + id:'pgsql', + name:'PostgreSQL' + }].filter(type => supportedTypes.includes(type.id)); - return name; - }; + this.contactsSupported = 0 < types.length; - if (settingsGet('SQLiteIsSupported')) { - supportedTypes.push('sqlite'); - } - if (settingsGet('MySqlIsSupported')) { - supportedTypes.push('mysql'); - } - if (settingsGet('PostgreSqlIsSupported')) { - supportedTypes.push('pgsql'); - } + this.contactsTypesOptions = types; - this.contactsSupported = 0 < supportedTypes.length; - - this.contactsTypes = ko.observableArray([]); - this.contactsTypesOptions = ko.computed(() => - this.contactsTypes().map(value => { - const disabled = !supportedTypes.includes(value); - return { - 'id': value, - 'name': getTypeName(value) + (disabled ? ' (' + i18n('HINTS/NOT_SUPPORTED') + ')' : ''), - 'disabled': disabled - }; - }) - ); - - this.contactsTypes(types); this.contactsType = ko.observable(''); this.mainContactsType = ko @@ -68,7 +39,7 @@ class ContactsAdminSettings { if (value !== this.contactsType()) { if (supportedTypes.includes(value)) { this.contactsType(value); - } else if (supportedTypes.length) { + } else if (types.length) { this.contactsType(''); } } else { diff --git a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php index 237d6ff1c..d901ee038 100644 --- a/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/rainloop/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -1326,10 +1326,7 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut $aResult['VerifySslCertificate'] = (bool) $oConfig->Get('ssl', 'verify_certificate', false); $aResult['AllowSelfSigned'] = (bool) $oConfig->Get('ssl', 'allow_self_signed', true); - $aDrivers = \class_exists('PDO') ? \PDO::getAvailableDrivers() : null; - $aResult['MySqlIsSupported'] = \is_array($aDrivers) ? \in_array('mysql', $aDrivers) : false; - $aResult['SQLiteIsSupported'] = \is_array($aDrivers) ? \in_array('sqlite', $aDrivers) : false; - $aResult['PostgreSqlIsSupported'] = \is_array($aDrivers) ? \in_array('pgsql', $aDrivers) : false; + $aResult['supportedPdoDrivers'] = \class_exists('PDO') ? \PDO::getAvailableDrivers() : []; $aResult['ContactsEnable'] = (bool) $oConfig->Get('contacts', 'enable', false); $aResult['ContactsSync'] = (bool) $oConfig->Get('contacts', 'allow_sync', false); diff --git a/rainloop/v/0.0.0/app/localization/admin/_source.en.yml b/rainloop/v/0.0.0/app/localization/admin/_source.en.yml index b37b0bb46..b813a1946 100644 --- a/rainloop/v/0.0.0/app/localization/admin/_source.en.yml +++ b/rainloop/v/0.0.0/app/localization/admin/_source.en.yml @@ -209,8 +209,6 @@ en: BETA: "beta" UNSTABLE: "unstable" WARNING: "Warning!" - NOT_SUPPORTED: "not supported" - REQUIRES_PHP_54: "requires PHP 5.4 or greater" ERRORS: DOMAIN_ALREADY_EXISTS: "Domain already exists" UNKNOWN_ERROR: "Unknown error" diff --git a/rainloop/v/0.0.0/app/localization/admin/de_DE.yml b/rainloop/v/0.0.0/app/localization/admin/de_DE.yml index 3c13e8b50..0c016a396 100644 --- a/rainloop/v/0.0.0/app/localization/admin/de_DE.yml +++ b/rainloop/v/0.0.0/app/localization/admin/de_DE.yml @@ -206,8 +206,6 @@ de_DE: BETA: "Beta" UNSTABLE: "Nicht stabil" WARNING: "Warnung!" - NOT_SUPPORTED: "Nicht unterstützt" - REQUIRES_PHP_54: "PHP 5.4 oder höher ist erforderlich" ERRORS: DOMAIN_ALREADY_EXISTS: "Domain existiert bereits" UNKNOWN_ERROR: "Unbekannter Fehler" diff --git a/rainloop/v/0.0.0/app/localization/admin/en_US.yml b/rainloop/v/0.0.0/app/localization/admin/en_US.yml index 7e3311aca..59ea704ce 100644 --- a/rainloop/v/0.0.0/app/localization/admin/en_US.yml +++ b/rainloop/v/0.0.0/app/localization/admin/en_US.yml @@ -206,8 +206,6 @@ en_US: BETA: "beta" UNSTABLE: "unstable" WARNING: "Warning!" - NOT_SUPPORTED: "not supported" - REQUIRES_PHP_54: "requires PHP 5.4 or greater" ERRORS: DOMAIN_ALREADY_EXISTS: "Domain already exists" UNKNOWN_ERROR: "Unknown error" diff --git a/rainloop/v/0.0.0/app/localization/admin/es_ES.yml b/rainloop/v/0.0.0/app/localization/admin/es_ES.yml index fb3922a2c..b9c5c9935 100644 --- a/rainloop/v/0.0.0/app/localization/admin/es_ES.yml +++ b/rainloop/v/0.0.0/app/localization/admin/es_ES.yml @@ -203,8 +203,6 @@ es_ES: BETA: "beta" UNSTABLE: "inestable" WARNING: "¡Atención!" - NOT_SUPPORTED: "no soportado" - REQUIRES_PHP_54: "requiere PHP 5.4 o superior" ERRORS: DOMAIN_ALREADY_EXISTS: "El Dominio ya existe" UNKNOWN_ERROR: "Error desconocido" diff --git a/rainloop/v/0.0.0/app/localization/admin/fr_FR.yml b/rainloop/v/0.0.0/app/localization/admin/fr_FR.yml index 4723ff57e..daac1a493 100644 --- a/rainloop/v/0.0.0/app/localization/admin/fr_FR.yml +++ b/rainloop/v/0.0.0/app/localization/admin/fr_FR.yml @@ -207,8 +207,6 @@ fr_FR: BETA: "bêta" UNSTABLE: "instable" WARNING: "ATTENTION !" - NOT_SUPPORTED: "non supporté" - REQUIRES_PHP_54: "nécessite PHP 5.4 ou supérieur" ERRORS: DOMAIN_ALREADY_EXISTS: "Le domaine existe déjà" UNKNOWN_ERROR: "Erreur inconnue" diff --git a/rainloop/v/0.0.0/app/localization/admin/nl_NL.yml b/rainloop/v/0.0.0/app/localization/admin/nl_NL.yml index 8eb995e61..8e8084450 100644 --- a/rainloop/v/0.0.0/app/localization/admin/nl_NL.yml +++ b/rainloop/v/0.0.0/app/localization/admin/nl_NL.yml @@ -206,8 +206,6 @@ nl_NL: BETA: "bèta" UNSTABLE: "onstabiel" WARNING: "Waarschuwing!" - NOT_SUPPORTED: "niet ondersteund" - REQUIRES_PHP_54: "vereist PHP 5.4 of hoger" ERRORS: DOMAIN_ALREADY_EXISTS: "Domein bestaat al" UNKNOWN_ERROR: "Onbekende fout"