From d534d2700ac64fa05c257b8a809ac00a158a744b Mon Sep 17 00:00:00 2001 From: djmaze Date: Thu, 21 Oct 2021 15:28:56 +0200 Subject: [PATCH] Show if optional PHP extensions are loaded on Admin -> About page --- dev/Remote/Admin/Fetch.js | 6 ++++++ dev/Settings/Admin/About.js | 7 +++++++ .../0.0.0/app/libraries/RainLoop/Actions/Admin.php | 12 ++++++++++++ .../templates/Views/Admin/AdminSettingsAbout.html | 14 +++++++++++++- 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/dev/Remote/Admin/Fetch.js b/dev/Remote/Admin/Fetch.js index ff89fb919..a9cec7a9d 100644 --- a/dev/Remote/Admin/Fetch.js +++ b/dev/Remote/Admin/Fetch.js @@ -203,6 +203,12 @@ class RemoteAdminFetch extends AbstractFetchRemote { this.defaultRequest(fCallback, 'AdminPasswordUpdate', oData); } + /** + * @param {?Function} fCallback + */ + phpExtensions(fCallback) { + this.defaultRequest(fCallback, 'AdminPHPExtensions'); + } } export default new RemoteAdminFetch(); diff --git a/dev/Settings/Admin/About.js b/dev/Settings/Admin/About.js index ccdce33b7..71989d42c 100644 --- a/dev/Settings/Admin/About.js +++ b/dev/Settings/Admin/About.js @@ -1,8 +1,15 @@ import ko from 'ko'; import { Settings } from 'Common/Globals'; +import Remote from 'Remote/Admin/Fetch'; export class AboutAdminSettings /*extends AbstractViewSettings*/ { constructor() { this.version = ko.observable(Settings.app('version')); + this.phpextensions = ko.observableArray(); } + + onBuild() { + Remote.phpExtensions((iError, data) => iError || this.phpextensions(data.Result)); + } + } diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Admin.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Admin.php index 0c73f12c4..1f4d87cb0 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Admin.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Admin.php @@ -694,6 +694,18 @@ trait Admin ('plugin' !== $sType ? array('Reload' => true) : true) : false); } + public function DoAdminPHPExtensions() : array + { + $aResult = []; + foreach (['curl','gd','gmagick','imagick','intl','ldap','pdo_mysql','pdo_pgsql','pdo_sqlite','xxtea','zip'] as $name) { + $aResult[] = [ + 'name' => $name, + 'loaded' => extension_loaded($name) + ]; + } + return $this->DefaultResponse(__FUNCTION__, $aResult); + } + private function pluginEnable(string $sName, bool $bEnable = true) : bool { if (!\strlen($sName)) diff --git a/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsAbout.html b/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsAbout.html index 398fa1c2c..158c9d812 100644 --- a/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsAbout.html +++ b/snappymail/v/0.0.0/app/templates/Views/Admin/AdminSettingsAbout.html @@ -10,11 +10,23 @@ https://snappymail.eu/ -
+

SnappyMail

An advanced fork of RainLoop

+ +

PHP optional extensions

+ + + + + + + + + +
ExtensionLoaded