X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=framework%2Fmain%2Fclasses%2Fclass_BaseFrameworkSystem.php;h=b6e5924fafa8e98f9cebc55047fae94806708d38;hb=df3701b7230349ee2bc711caba98809ac943363c;hp=8bc95e335785ec07a4503b477cfd72fd0e316e42;hpb=6d6b58a1042e6ad5d6277f8ff5144c95f1abd427;p=core.git diff --git a/framework/main/classes/class_BaseFrameworkSystem.php b/framework/main/classes/class_BaseFrameworkSystem.php index 8bc95e33..b6e5924f 100644 --- a/framework/main/classes/class_BaseFrameworkSystem.php +++ b/framework/main/classes/class_BaseFrameworkSystem.php @@ -4,52 +4,34 @@ namespace Org\Mxchange\CoreFramework\Object; // Import framework stuff use Org\Mxchange\CoreFramework\Bootstrap\FrameworkBootstrap; -use Org\Mxchange\CoreFramework\Compressor\Compressor; -use Org\Mxchange\CoreFramework\Configuration\FrameworkConfiguration; -use Org\Mxchange\CoreFramework\Connection\Database\DatabaseConnection; -use Org\Mxchange\CoreFramework\Controller\Controller; use Org\Mxchange\CoreFramework\Criteria\Criteria; use Org\Mxchange\CoreFramework\Criteria\Local\LocalSearchCriteria; use Org\Mxchange\CoreFramework\Criteria\Local\LocalUpdateCriteria; use Org\Mxchange\CoreFramework\Crypto\Cryptable; -use Org\Mxchange\CoreFramework\Crypto\RandomNumber\RandomNumberGenerator; use Org\Mxchange\CoreFramework\Database\Frontend\DatabaseWrapper; use Org\Mxchange\CoreFramework\EntryPoint\ApplicationEntryPoint; use Org\Mxchange\CoreFramework\Factory\Database\Wrapper\DatabaseWrapperFactory; use Org\Mxchange\CoreFramework\Factory\ObjectFactory; -use Org\Mxchange\CoreFramework\Filesystem\Block; -use Org\Mxchange\CoreFramework\Filesystem\FilePointer; -use Org\Mxchange\CoreFramework\Filesystem\FrameworkDirectory; use Org\Mxchange\CoreFramework\Filesystem\PathWriteProtectedException; use Org\Mxchange\CoreFramework\Generic\FrameworkInterface; use Org\Mxchange\CoreFramework\Generic\NullPointerException; use Org\Mxchange\CoreFramework\Generic\UnsupportedOperationException; use Org\Mxchange\CoreFramework\Handler\Handleable; -use Org\Mxchange\CoreFramework\Handler\Stream\IoHandler; use Org\Mxchange\CoreFramework\Helper\Helper; -use Org\Mxchange\CoreFramework\Index\Indexable; use Org\Mxchange\CoreFramework\Lists\Listable; use Org\Mxchange\CoreFramework\Loader\ClassLoader; use Org\Mxchange\CoreFramework\Localization\ManageableLanguage; use Org\Mxchange\CoreFramework\Manager\ManageableApplication; -use Org\Mxchange\CoreFramework\Menu\RenderableMenu; -use Org\Mxchange\CoreFramework\Middleware\Compressor\CompressorChannel; use Org\Mxchange\CoreFramework\Middleware\Debug\DebugMiddleware; -use Org\Mxchange\CoreFramework\Parser\Parseable; use Org\Mxchange\CoreFramework\Registry\GenericRegistry; -use Org\Mxchange\CoreFramework\Registry\Register; -use Org\Mxchange\CoreFramework\Resolver\Resolver; use Org\Mxchange\CoreFramework\Result\Database\CachedDatabaseResult; use Org\Mxchange\CoreFramework\Result\Search\SearchableResult; -use Org\Mxchange\CoreFramework\Stacker\Stackable; use Org\Mxchange\CoreFramework\State\Stateable; use Org\Mxchange\CoreFramework\Stream\Input\InputStream; use Org\Mxchange\CoreFramework\Stream\Output\OutputStreamer; use Org\Mxchange\CoreFramework\Stream\Output\OutputStream; -use Org\Mxchange\CoreFramework\String\Utils\StringUtils; -use Org\Mxchange\CoreFramework\Template\CompileableTemplate; use Org\Mxchange\CoreFramework\User\ManageableAccount; -use Org\Mxchange\CoreFramework\Visitor\Visitor; +use Org\Mxchange\CoreFramework\Utils\String\StringUtils; // Import SPL stuff use \stdClass; @@ -95,7 +77,7 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac /** * The real class name */ - private $realClass = 'BaseFrameworkSystem'; + private $realClass = __CLASS__; /** * Search criteria instance @@ -107,21 +89,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac */ private $updateInstance = NULL; - /** - * The file I/O instance for the template loader - */ - private $fileIoInstance = NULL; - - /** - * Resolver instance - */ - private $resolverInstance = NULL; - - /** - * Template engine instance - */ - private $templateInstance = NULL; - /** * Database result instance */ @@ -132,16 +99,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac */ private $userInstance = NULL; - /** - * A controller instance - */ - private $controllerInstance = NULL; - - /** - * Instance of a RNG - */ - private $rngInstance = NULL; - /** * Instance of a crypto helper */ @@ -157,36 +114,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac */ private $listInstance = NULL; - /** - * Instance of a menu - */ - private $menuInstance = NULL; - - /** - * Instance of the image - */ - private $imageInstance = NULL; - - /** - * Instance of the stacker - */ - private $stackInstance = NULL; - - /** - * A Compressor instance - */ - private $compressorInstance = NULL; - - /** - * A Parseable instance - */ - private $parserInstance = NULL; - - /** - * A database wrapper instance - */ - private $databaseInstance = NULL; - /** * A helper instance for the form */ @@ -207,109 +134,26 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac */ private $handlerInstance = NULL; - /** - * Visitor handler instance - */ - private $visitorInstance = NULL; - /** * An instance of a database wrapper class */ private $wrapperInstance = NULL; - /** - * An instance of a file I/O pointer class (not handler) - */ - private $pointerInstance = NULL; - - /** - * An instance of an Indexable class - */ - private $indexInstance = NULL; - - /** - * An instance of a Block class - */ - private $blockInstance = NULL; - - /** - * A FrameworkDirectory instance - */ - private $directoryInstance = NULL; - - /** - * The concrete output instance - */ - private $outputInstance = NULL; - /** * State instance */ private $stateInstance = NULL; - /** - * Registry instance (implementing Register) - */ - private $registryInstance = NULL; - /** * Call-back instance */ private $callbackInstance = NULL; - /** - * Thousands separator - */ - private $thousands = '.'; // German - - /** - * Decimal separator - */ - private $decimals = ','; // German - /** * Generic array */ private $genericArray = array(); - /** - * Command name - */ - private $commandName = ''; - - /** - * Controller name - */ - private $controllerName = ''; - - /** - * Array with bitmasks and such for pack/unpack methods to support both - * 32-bit and 64-bit systems - */ - private $packingData = array( - 32 => array( - 'step' => 3, - 'left' => 0xffff0000, - 'right' => 0x0000ffff, - 'factor' => 16, - 'format' => 'II', - ), - 64 => array( - 'step' => 7, - 'left' => 0xffffffff00000000, - 'right' => 0x00000000ffffffff, - 'factor' => 32, - 'format' => 'NN' - ) - ); - - /** - * Simple 64-bit check, thanks to "Salman A" from stackoverflow.com: - * - * The integer size is 4 bytes on 32-bit and 8 bytes on a 64-bit system. - */ - private $archArrayElement = false; - /*********************** * Exception codes.... * ***********************/ @@ -379,50 +223,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac const EXCEPTION_INVALID_SOCKET = 0x03e; const EXCEPTION_SELF_INSTANCE = 0x03f; - /** - * Hexadecimal->Decimal translation array - */ - private static $hexdec = array( - '0' => 0, - '1' => 1, - '2' => 2, - '3' => 3, - '4' => 4, - '5' => 5, - '6' => 6, - '7' => 7, - '8' => 8, - '9' => 9, - 'a' => 10, - 'b' => 11, - 'c' => 12, - 'd' => 13, - 'e' => 14, - 'f' => 15 - ); - - /** - * Decimal->hexadecimal translation array - */ - private static $dechex = array( - 0 => '0', - 1 => '1', - 2 => '2', - 3 => '3', - 4 => '4', - 5 => '5', - 6 => '6', - 7 => '7', - 8 => '8', - 9 => '9', - 10 => 'a', - 11 => 'b', - 12 => 'c', - 13 => 'd', - 14 => 'e', - 15 => 'f' - ); - /** * Startup time in miliseconds */ @@ -434,24 +234,15 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac * @param $className Name of the class * @return void */ - protected function __construct ($className) { + protected function __construct (string $className) { // Set real class $this->setRealClass($className); - // Set configuration instance if no registry ... - if (!$this instanceof Register) { - // ... because registries doesn't need to be configured - $this->setConfigInstance(FrameworkBootstrap::getConfigurationInstance()); - } // END - if - // Is the startup time set? (0 cannot be true anymore) if (self::$startupTime == 0) { // Then set it self::$startupTime = microtime(true); } // END - if - - // Set array element - $this->archArrayElement = (PHP_INT_SIZE === 8 ? 64 : 32); } /** @@ -699,25 +490,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac return $this->resultInstance; } - /** - * Setter for template engine instances - * - * @param $templateInstance An instance of a template engine class - * @return void - */ - protected final function setTemplateInstance (CompileableTemplate $templateInstance) { - $this->templateInstance = $templateInstance; - } - - /** - * Getter for template engine instances - * - * @return $templateInstance An instance of a template engine class - */ - protected final function getTemplateInstance () { - return $this->templateInstance; - } - /** * Setter for search instance * @@ -756,46 +528,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac return $this->updateInstance; } - /** - * Setter for resolver instance - * - * @param $resolverInstance Instance of a command resolver class - * @return void - */ - public final function setResolverInstance (Resolver $resolverInstance) { - $this->resolverInstance = $resolverInstance; - } - - /** - * Getter for resolver instance - * - * @return $resolverInstance Instance of a command resolver class - */ - public final function getResolverInstance () { - return $this->resolverInstance; - } - - /** - * Setter for language instance - * - * @param $configInstance The configuration instance which shall - * be FrameworkConfiguration - * @return void - */ - public final function setConfigInstance (FrameworkConfiguration $configInstance) { - GenericRegistry::getRegistry()->addInstance('config', $configInstance); - } - - /** - * Getter for configuration instance - * - * @return $configInstance Configuration instance - */ - public final function getConfigInstance () { - $configInstance = GenericRegistry::getRegistry()->getInstance('config'); - return $configInstance; - } - /** * Setter for debug instance * @@ -839,49 +571,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac return $webOutputInstance; } - /** - * Setter for database instance - * - * @param $databaseInstance The instance for the database connection (forced DatabaseConnection) - * @return void - */ - public final function setDatabaseInstance (DatabaseConnection $databaseInstance) { - GenericRegistry::getRegistry()->addInstance('db_instance', $databaseInstance); - } - - /** - * Getter for database layer - * - * @return $databaseInstance The database layer instance - */ - public final function getDatabaseInstance () { - // Get instance - $databaseInstance = GenericRegistry::getRegistry()->getInstance('db_instance'); - - // Return instance - return $databaseInstance; - } - - /** - * Setter for compressor channel - * - * @param $compressorInstance An instance of CompressorChannel - * @return void - */ - public final function setCompressorChannel (CompressorChannel $compressorInstance) { - GenericRegistry::getRegistry()->addInstance('compressor', $compressorInstance); - } - - /** - * Getter for compressor channel - * - * @return $compressorInstance The compressor channel - */ - public final function getCompressorChannel () { - $compressorInstance = GenericRegistry::getRegistry()->getInstance('compressor'); - return $compressorInstance; - } - /** * Private getter for language instance * @@ -903,25 +592,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac GenericRegistry::getRegistry()->addInstance('language', $langInstance); } - /** - * Private getter for file IO instance - * - * @return $fileIoInstance An instance to the file I/O sub-system - */ - protected final function getFileIoInstance () { - return $this->fileIoInstance; - } - - /** - * Setter for file I/O instance - * - * @param $fileIoInstance An instance to the file I/O sub-system - * @return void - */ - public final function setFileIoInstance (IoHandler $fileIoInstance) { - $this->fileIoInstance = $fileIoInstance; - } - /** * Protected setter for user instance * @@ -941,44 +611,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac return $this->userInstance; } - /** - * Setter for controller instance (this surely breaks a bit the MVC patterm) - * - * @param $controllerInstance An instance of the controller - * @return void - */ - public final function setControllerInstance (Controller $controllerInstance) { - $this->controllerInstance = $controllerInstance; - } - - /** - * Getter for controller instance (this surely breaks a bit the MVC patterm) - * - * @return $controllerInstance An instance of the controller - */ - public final function getControllerInstance () { - return $this->controllerInstance; - } - - /** - * Setter for RNG instance - * - * @param $rngInstance An instance of a random number generator (RNG) - * @return void - */ - protected final function setRngInstance (RandomNumberGenerator $rngInstance) { - $this->rngInstance = $rngInstance; - } - - /** - * Getter for RNG instance - * - * @return $rngInstance An instance of a random number generator (RNG) - */ - public final function getRngInstance () { - return $this->rngInstance; - } - /** * Setter for Cryptable instance * @@ -1017,101 +649,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac return $this->listInstance; } - /** - * Setter for the menu instance - * - * @param $menuInstance A RenderableMenu instance - * @return void - */ - protected final function setMenuInstance (RenderableMenu $menuInstance) { - $this->menuInstance = $menuInstance; - } - - /** - * Getter for the menu instance - * - * @return $menuInstance A RenderableMenu instance - */ - protected final function getMenuInstance () { - return $this->menuInstance; - } - - /** - * Setter for image instance - * - * @param $imageInstance An instance of an image - * @return void - */ - public final function setImageInstance (BaseImage $imageInstance) { - $this->imageInstance = $imageInstance; - } - - /** - * Getter for image instance - * - * @return $imageInstance An instance of an image - */ - public final function getImageInstance () { - return $this->imageInstance; - } - - /** - * Setter for stacker instance - * - * @param $stackInstance An instance of an stacker - * @return void - */ - public final function setStackInstance (Stackable $stackInstance) { - $this->stackInstance = $stackInstance; - } - - /** - * Getter for stacker instance - * - * @return $stackInstance An instance of an stacker - */ - public final function getStackInstance () { - return $this->stackInstance; - } - - /** - * Setter for compressor instance - * - * @param $compressorInstance An instance of an compressor - * @return void - */ - public final function setCompressorInstance (Compressor $compressorInstance) { - $this->compressorInstance = $compressorInstance; - } - - /** - * Getter for compressor instance - * - * @return $compressorInstance An instance of an compressor - */ - public final function getCompressorInstance () { - return $this->compressorInstance; - } - - /** - * Setter for Parseable instance - * - * @param $parserInstance An instance of an Parseable - * @return void - */ - public final function setParserInstance (Parseable $parserInstance) { - $this->parserInstance = $parserInstance; - } - - /** - * Getter for Parseable instance - * - * @return $parserInstance An instance of an Parseable - */ - public final function getParserInstance () { - return $this->parserInstance; - } - /** * Setter for DatabaseWrapper instance * @@ -1207,25 +744,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac return $this->handlerInstance; } - /** - * Setter for visitor instance - * - * @param $visitorInstance A Visitor instance - * @return void - */ - protected final function setVisitorInstance (Visitor $visitorInstance) { - $this->visitorInstance = $visitorInstance; - } - - /** - * Getter for visitor instance - * - * @return $visitorInstance A Visitor instance - */ - protected final function getVisitorInstance () { - return $this->visitorInstance; - } - /** * Setter for Iterator instance * @@ -1245,98 +763,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac return $this->iteratorInstance; } - /** - * Setter for FilePointer instance - * - * @param $pointerInstance An instance of an FilePointer class - * @return void - */ - protected final function setPointerInstance (FilePointer $pointerInstance) { - $this->pointerInstance = $pointerInstance; - } - - /** - * Getter for FilePointer instance - * - * @return $pointerInstance An instance of an FilePointer class - */ - public final function getPointerInstance () { - return $this->pointerInstance; - } - - /** - * Unsets pointer instance which triggers a call of __destruct() if the - * instance is still there. This is surely not fatal on already "closed" - * file pointer instances. - * - * I don't want to mess around with above setter by giving it a default - * value NULL as setter should always explicitly only set (existing) object - * instances and NULL is NULL. - * - * @return void - */ - protected final function unsetPointerInstance () { - // Simply it to NULL - $this->pointerInstance = NULL; - } - - /** - * Setter for Indexable instance - * - * @param $indexInstance An instance of an Indexable class - * @return void - */ - protected final function setIndexInstance (Indexable $indexInstance) { - $this->indexInstance = $indexInstance; - } - - /** - * Getter for Indexable instance - * - * @return $indexInstance An instance of an Indexable class - */ - public final function getIndexInstance () { - return $this->indexInstance; - } - - /** - * Setter for Block instance - * - * @param $blockInstance An instance of an Block class - * @return void - */ - protected final function setBlockInstance (Block $blockInstance) { - $this->blockInstance = $blockInstance; - } - - /** - * Getter for Block instance - * - * @return $blockInstance An instance of an Block class - */ - public final function getBlockInstance () { - return $this->blockInstance; - } - - /** - * Setter for FrameworkDirectory instance - * - * @param $directoryInstance A FrameworkDirectory instance - * @return void - */ - protected final function setDirectoryInstance (FrameworkDirectory $directoryInstance) { - $this->directoryInstance = $directoryInstance; - } - - /** - * Getter for FrameworkDirectory instance - * - * @return $directoryInstance A FrameworkDirectory instance - */ - protected final function getDirectoryInstance () { - return $this->directoryInstance; - } - /** * Setter for state instance * @@ -1356,44 +782,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac return $this->stateInstance; } - /** - * Setter for output instance - * - * @param $outputInstance The debug output instance - * @return void - */ - public final function setOutputInstance (OutputStreamer $outputInstance) { - $this->outputInstance = $outputInstance; - } - - /** - * Getter for output instance - * - * @return $outputInstance The debug output instance - */ - public final function getOutputInstance () { - return $this->outputInstance; - } - - /** - * Setter for registry instance - * - * @param $registryInstance An instance of a Register class - * @return void - */ - protected final function setRegistryInstance (Register $registryInstance) { - $this->registryInstance = $registryInstance; - } - - /** - * Getter for registry instance - * - * @return $registryInstance The debug registry instance - */ - public final function getRegistryInstance () { - return $this->registryInstance; - } - /** * Setter for call-back instance * @@ -1413,44 +801,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac return $this->callbackInstance; } - /** - * Setter for command name - * - * @param $commandName Last validated command name - * @return void - */ - protected final function setCommandName ($commandName) { - $this->commandName = $commandName; - } - - /** - * Getter for command name - * - * @return $commandName Last validated command name - */ - protected final function getCommandName () { - return $this->commandName; - } - - /** - * Setter for controller name - * - * @param $controllerName Last validated controller name - * @return void - */ - protected final function setControllerName ($controllerName) { - $this->controllerName = $controllerName; - } - - /** - * Getter for controller name - * - * @return $controllerName Last validated controller name - */ - protected final function getControllerName () { - return $this->controllerName; - } - /** * Checks whether an object equals this object. You should overwrite this * method to implement own equality checks @@ -1481,35 +831,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac return crc32($this->__toString()); } - /** - * Formats computer generated price values into human-understandable formats - * with thousand and decimal separators. - * - * @param $value The in computer format value for a price - * @param $currency The currency symbol (use HTML-valid characters!) - * @param $decNum Number of decimals after commata - * @return $price The for the current language formated price string - * @throws MissingDecimalsThousandsSeparatorException If decimals or - * thousands separator - * is missing - */ - public function formatCurrency ($value, $currency = '€', $decNum = 2) { - // Are all required attriutes set? - if ((!isset($this->decimals)) || (!isset($this->thousands))) { - // Throw an exception - throw new MissingDecimalsThousandsSeparatorException($this, self::EXCEPTION_ATTRIBUTES_ARE_MISSING); - } // END - if - - // Cast the number - $value = (float) $value; - - // Reformat the US number - $price = number_format($value, $decNum, $this->decimals, $this->thousands) . $currency; - - // Return as string... - return $price; - } - /** * Appends a trailing slash to a string * @@ -1526,36 +847,6 @@ abstract class BaseFrameworkSystem extends stdClass implements FrameworkInterfac return $str; } - /** - * Prepare the template engine (HtmlTemplateEngine by default) for a given - * application helper instance (ApplicationHelper by default). - * - * @param $applicationInstance An application helper instance or - * null if we shall use the default - * @return $templateInstance The template engine instance - * @throws NullPointerException If the discovered application - * instance is still null - */ - protected function prepareTemplateInstance (ManageableApplication $applicationInstance = NULL) { - // Is the application instance set? - if (is_null($applicationInstance)) { - // Get the current instance - $applicationInstance = GenericRegistry::getRegistry()->getInstance('application'); - - // Still null? - if (is_null($applicationInstance)) { - // Thrown an exception - throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); - } // END - if - } // END - if - - // Initialize the template engine - $templateInstance = ObjectFactory::createObjectByConfiguredName('html_template_class'); - - // Return the prepared instance - return $templateInstance; - } - /** * Debugs this instance by putting out it's full content * @@ -1776,7 +1067,7 @@ Loaded includes: } // END - if } else { // Are debug times enabled? - if ($this->getConfigInstance()->getConfigEntry('debug_' . FrameworkBootstrap::getRequestTypeFromSystem() . '_output_timings') == 'Y') { + if (FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('debug_' . FrameworkBootstrap::getRequestTypeFromSystem() . '_output_timings') == 'Y') { // Prepent it $message = $this->getPrintableExecutionTime() . $message; } // END - if @@ -1792,29 +1083,6 @@ Loaded includes: } } - /** - * Converts e.g. a command from URL to a valid class by keeping out bad characters - * - * @param $str The string, what ever it is needs to be converted - * @return $className Generated class name - */ - public static final function convertToClassName ($str) { - // Init class name - $className = ''; - - // Convert all dashes in underscores - $str = StringUtils::convertDashesToUnderscores($str); - - // Now use that underscores to get classname parts for hungarian style - foreach (explode('_', $str) as $strPart) { - // Make the class name part lower case and first upper case - $className .= ucfirst(strtolower($strPart)); - } // END - foreach - - // Return class name - return $className; - } - /** * Marks up the code by adding e.g. line numbers * @@ -1877,7 +1145,7 @@ Loaded includes: $timeArray = explode(':', $dateTime[1]); // Construct the timestamp - $readable = sprintf($this->getConfigInstance()->getConfigEntry('german_date_time'), + $readable = sprintf(FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('german_date_time'), $dateArray[0], $dateArray[1], $dateArray[2], @@ -1907,11 +1175,11 @@ Loaded includes: // Generate it from config and localize dependencies switch ($this->getLanguageInstance()->getLanguageCode()) { case 'de': // German format is a bit different to default - $localized = number_format($value, $this->getConfigInstance()->getConfigEntry('decimals'), ',', '.'); + $localized = number_format($value, FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('decimals'), ',', '.'); break; default: // US, etc. - $localized = number_format($value, $this->getConfigInstance()->getConfigEntry('decimals'), '.', ','); + $localized = number_format($value, FrameworkBootstrap::getConfigurationInstance()->getConfigEntry('decimals'), '.', ','); break; } // END - switch @@ -1959,7 +1227,7 @@ Loaded includes: * @return $fieldValue Field value from the user * @throws NullPointerException If the result instance is null */ - public final function getField ($fieldName) { + public final function getField (string $fieldName) { // Default field value $fieldValue = NULL; @@ -2002,7 +1270,7 @@ Loaded includes: * @return $isSet Whether the given field name is set * @throws NullPointerException If the result instance is null */ - public function isFieldSet ($fieldName) { + public function isFieldSet (string $fieldName) { // Get result instance $resultInstance = $this->getResultInstance(); @@ -2128,143 +1396,6 @@ Loaded includes: // Return result return $hasSlept; } - /** - * Converts a hexadecimal string, even with negative sign as first string to - * a decimal number using BC functions. - * - * This work is based on comment #86673 on php.net documentation page at: - * - * - * @param $hex Hexadecimal string - * @return $dec Decimal number - */ - protected function hex2dec ($hex) { - // Convert to all lower-case - $hex = strtolower($hex); - - // Detect sign (negative/positive numbers) - $sign = ''; - if (substr($hex, 0, 1) == '-') { - $sign = '-'; - $hex = substr($hex, 1); - } // END - if - - // Decode the hexadecimal string into a decimal number - $dec = 0; - for ($i = strlen($hex) - 1, $e = 1; $i >= 0; $i--, $e = bcmul($e, 16)) { - $factor = self::$hexdec[substr($hex, $i, 1)]; - $dec = bcadd($dec, bcmul($factor, $e)); - } // END - for - - // Return the decimal number - return $sign . $dec; - } - - /** - * Converts even very large decimal numbers, also signed, to a hexadecimal - * string. - * - * This work is based on comment #97756 on php.net documentation page at: - * - * - * @param $dec Decimal number, even with negative sign - * @param $maxLength Optional maximum length of the string - * @return $hex Hexadecimal string - */ - protected function dec2hex ($dec, $maxLength = 0) { - // maxLength can be zero or devideable by 2 - assert(($maxLength == 0) || (($maxLength % 2) == 0)); - - // Detect sign (negative/positive numbers) - $sign = ''; - if ($dec < 0) { - $sign = '-'; - $dec = abs($dec); - } // END - if - - // Encode the decimal number into a hexadecimal string - $hex = ''; - do { - $hex = self::$dechex[($dec % (2 ^ 4))] . $hex; - $dec /= (2 ^ 4); - } while ($dec >= 1); - - /* - * Leading zeros are required for hex-decimal "numbers". In some - * situations more leading zeros are wanted, so check for both - * conditions. - */ - if ($maxLength > 0) { - // Prepend more zeros - $hex = str_pad($hex, $maxLength, '0', STR_PAD_LEFT); - } elseif ((strlen($hex) % 2) != 0) { - // Only make string's length dividable by 2 - $hex = '0' . $hex; - } - - // Return the hexadecimal string - return $sign . $hex; - } - - /** - * Converts a ASCII string (0 to 255) into a decimal number. - * - * @param $asc The ASCII string to be converted - * @return $dec Decimal number - */ - protected function asc2dec ($asc) { - // Convert it into a hexadecimal number - $hex = bin2hex($asc); - - // And back into a decimal number - $dec = $this->hex2dec($hex); - - // Return it - return $dec; - } - - /** - * Converts a decimal number into an ASCII string. - * - * @param $dec Decimal number - * @return $asc An ASCII string - */ - protected function dec2asc ($dec) { - // First convert the number into a hexadecimal string - $hex = $this->dec2hex($dec); - - // Then convert it into the ASCII string - $asc = $this->hex2asc($hex); - - // Return it - return $asc; - } - - /** - * Converts a hexadecimal number into an ASCII string. Negative numbers - * are not allowed. - * - * @param $hex Hexadecimal string - * @return $asc An ASCII string - */ - protected function hex2asc ($hex) { - // Check for length, it must be devideable by 2 - //* DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('hex='.$hex); - assert((strlen($hex) % 2) == 0); - - // Walk the string - $asc = ''; - for ($idx = 0; $idx < strlen($hex); $idx+=2) { - // Get the decimal number of the chunk - $part = hexdec(substr($hex, $idx, 2)); - - // Add it to the final string - $asc .= chr($part); - } // END - for - - // Return the final string - return $asc; - } /** * Checks whether the given encoded data was encoded with Base64 @@ -3019,7 +2150,7 @@ Loaded includes: * @param $boolean Boolean value * @return $translated Translated boolean value */ - public static final function translateBooleanToYesNo ($boolean) { + public static final function translateBooleanToYesNo (bool $boolean) { // Make sure it is really boolean assert(is_bool($boolean)); @@ -3030,74 +2161,6 @@ Loaded includes: return $translated; } - /** - * Encodes raw data (almost any type) by "serializing" it and then pack it - * into a "binary format". - * - * @param $rawData Raw data (almost any type) - * @return $encoded Encoded data - */ - protected function encodeData ($rawData) { - // Make sure no objects or resources pass through - assert(!is_object($rawData)); - assert(!is_resource($rawData)); - - // First "serialize" it (json_encode() is faster than serialize()) - $encoded = $this->packString(json_encode($rawData)); - - // And return it - return $encoded; - } - - /** - * Pack a string into a "binary format". Please execuse me that this is - * widely undocumented. :-( - * - * @param $str Unpacked string - * @return $packed Packed string - * @todo Improve documentation - */ - protected function packString ($str) { - // Debug message - //* NOISY-DEBUG */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('str=' . $str . ' - CALLED!'); - - // First compress the string (gzcompress is okay) - $str = gzcompress($str); - - // Init variable - $packed = ''; - - // And start the "encoding" loop - for ($idx = 0; $idx < strlen($str); $idx += $this->packingData[$this->archArrayElement]['step']) { - $big = 0; - for ($i = 0; $i < $this->packingData[$this->archArrayElement]['step']; $i++) { - $factor = ($this->packingData[$this->archArrayElement]['step'] - 1 - $i); - - if (($idx + $i) <= strlen($str)) { - $ord = ord(substr($str, ($idx + $i), 1)); - - $add = $ord * pow(256, $factor); - - $big += $add; - - //print 'idx=' . $idx . ',i=' . $i . ',ord=' . $ord . ',factor=' . $factor . ',add=' . $add . ',big=' . $big . PHP_EOL; - } // END - if - } // END - for - - $l = ($big & $this->packingData[$this->archArrayElement]['left']) >>$this->packingData[$this->archArrayElement]['factor']; - $r = $big & $this->packingData[$this->archArrayElement]['right']; - - $chunk = str_pad(pack($this->packingData[$this->archArrayElement]['format'], $l, $r), 8, '0', STR_PAD_LEFT); - //* NOISY-DEBUG */ print 'big=' . $big . ',chunk('.strlen($chunk) . ')='.md5($chunk).PHP_EOL; - - $packed .= $chunk; - } // END - for - - // Return it - //* NOISY-DEBUG */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('packed=' . $packed . ' - EXIT!'); - return $packed; - } - /** * Creates a full-qualified file name (FQFN) for given file name by adding * a configured temporary file path to it.