From 5bb190d9740abc0b4db2bc01107a9fe2c1ff66f4 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Thu, 3 Mar 2022 10:44:15 +0100 Subject: [PATCH] Improve \MailSo\Base\Utils::FunctionExistsAndEnabled() --- .../0.0.0/app/libraries/MailSo/Base/Utils.php | 33 +++++++++++-------- .../0.0.0/app/libraries/RainLoop/Actions.php | 2 +- .../libraries/RainLoop/Common/PdoAbstract.php | 2 +- .../RainLoop/Config/AbstractConfig.php | 2 +- .../AddressBook/Classes/Property.php | 2 +- .../Providers/AddressBook/PdoAddressBook.php | 5 --- 6 files changed, 23 insertions(+), 23 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php b/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php index 8b4d14cad..cd9548049 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Base/Utils.php @@ -1143,24 +1143,29 @@ abstract class Utils return (false === $sResult) ? $sStr : $sResult; } - public static function FunctionExistsAndEnabled($mFunctionNameOrNames) : bool + public static function FunctionsExistAndEnabled(array $aFunctionNames) : bool { - if (\is_array($mFunctionNameOrNames)) - { - foreach ($mFunctionNameOrNames as $sFunctionName) - { - if (!static::FunctionExistsAndEnabled($sFunctionName)) - { - return false; - } + foreach ($aFunctionNames as $sFunctionName) { + if (!static::FunctionExistsAndEnabled($sFunctionName)) { + return false; } - - return true; } + return true; + } - return !empty($mFunctionNameOrNames) - && \function_exists($mFunctionNameOrNames) - && \is_callable($mFunctionNameOrNames); + private static $disabled_functions = null; + public static function FunctionExistsAndEnabled(string $sFunctionName) : bool + { + if (null === static::$disabled_functions) { + static::$disabled_functions = \array_map('trim', \explode(',', \ini_get('disable_functions'))); + } +/* + $disabled_classes = \explode(',', \ini_get('disable_classes')); + \in_array($function, $disabled_classes); +*/ + return \function_exists($sFunctionName) + && !\in_array($sFunctionName, static::$disabled_functions); +// && \is_callable($mFunctionNameOrNames); } public static function ClearNullBite($mValue) : string diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php index 52fb93754..9fd13fd7e 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -547,7 +547,7 @@ class Actions break; case ('APCU' === $sDriver) && - \MailSo\Base\Utils::FunctionExistsAndEnabled(array( + \MailSo\Base\Utils::FunctionsExistAndEnabled(array( 'apcu_store', 'apcu_fetch', 'apcu_delete', 'apcu_clear_cache')): $oDriver = new \MailSo\Cache\Drivers\APCU($sKey); diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Common/PdoAbstract.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Common/PdoAbstract.php index 074f2601b..54de31b80 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Common/PdoAbstract.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Common/PdoAbstract.php @@ -104,7 +104,7 @@ abstract class PdoAbstract } // else if ('sqlite' === $sType && 'sqlite' === $sPdoType && $this->bSqliteCollate) // { -// if (\method_exists($oPdo, 'sqliteCreateCollation') && \MailSo\Base\Utils::FunctionExistsAndEnabled('mb_strtoupper')) +// if (\method_exists($oPdo, 'sqliteCreateCollation')) // { // $oPdo->sqliteCreateCollation('SQLITE_NOCASE_UTF8', array($this, 'sqliteNoCaseCollationHelper')); // $bCaseFunc = true; diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/AbstractConfig.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/AbstractConfig.php index 1cb303ebb..25a5e3939 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/AbstractConfig.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/AbstractConfig.php @@ -45,7 +45,7 @@ abstract class AbstractConfig implements \JsonSerializable $this->aData = $this->defaultValues(); $this->bUseApcCache = APP_USE_APCU_CACHE && - \MailSo\Base\Utils::FunctionExistsAndEnabled(array('apcu_fetch', 'apcu_store')); + \MailSo\Base\Utils::FunctionsExistAndEnabled(array('apcu_fetch', 'apcu_store')); } protected abstract function defaultValues() : array; diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/Classes/Property.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/Classes/Property.php index 1b6a2443d..02bdcff8c 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/Classes/Property.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/Classes/Property.php @@ -129,7 +129,7 @@ class Property implements \JsonSerializable } // lower value for searching - if ($this->IsValueForLower() && \MailSo\Base\Utils::FunctionExistsAndEnabled('mb_strtolower')) + if ($this->IsValueForLower()) { $this->ValueLower = (string) \mb_strtolower($this->Value, 'UTF-8'); } diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/PdoAddressBook.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/PdoAddressBook.php index 41be99428..5393d5c18 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/PdoAddressBook.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/PdoAddressBook.php @@ -1382,11 +1382,6 @@ SQLITEINITIAL; private function specialConvertSearchValueLower(string $sSearch, string $sEscapeSign = '=') : string { - if (!\MailSo\Base\Utils::FunctionExistsAndEnabled('mb_strtolower')) - { - return ''; - } - return '%'.\str_replace(array($sEscapeSign, '_', '%'), array($sEscapeSign.$sEscapeSign, $sEscapeSign.'_', $sEscapeSign.'%'), (string) \mb_strtolower($sSearch, 'UTF-8')).'%';