Assert only if requested so :(
[core.git] / inc / classes / main / class_BaseFrameworkSystem.php
index 479e8a7a6e8b18fd8a4c80868fc1fc02ad491eda..fed352a4cfb4e371a635529a59b74540a52cac05 100644 (file)
@@ -169,12 +169,12 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        private $wrapperInstance = NULL;
 
        /**
-        * Thousands seperator
+        * Thousands separator
         */
        private $thousands = '.'; // German
 
        /**
-        * Decimal seperator
+        * Decimal separator
         */
        private $decimals  = ','; // German
 
@@ -313,7 +313,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                // Set configuration instance if no registry ...
                if (!$this instanceof Register) {
                        // ... because registries doesn't need to be configured
-                       $this->setConfigInstance(FrameworkConfiguration::getInstance());
+                       $this->setConfigInstance(FrameworkConfiguration::getSelfInstance());
                } // END - if
 
                // Is the startup time set? (0 cannot be true anymore)
@@ -364,10 +364,19 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                                // Add the type
                                $argsString .= $this->replaceControlCharacters($arg) . ' (' . gettype($arg);
 
-                               // Add length if type is string
                                if (is_string($arg)) {
+                                       // Add length for strings
                                        $argsString .= ', '.strlen($arg);
-                               } // END - if
+                               } elseif (is_array($arg)) {
+                                       // .. or size if array
+                                       $argsString .= ', '.count($arg);
+                               } elseif ($arg === true) {
+                                       // ... is boolean 'true'
+                                       $argsString .= ', true';
+                               } elseif ($arg === false) {
+                                       // ... is boolean 'true'
+                                       $argsString .= ', false';
+                               }
 
                                // Closing bracket
                                $argsString .= '), ';
@@ -390,7 +399,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                ));
 
                // Return nothing
-               return null;
+               return NULL;
        }
 
        /**
@@ -705,7 +714,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Setter for the real class name
         *
-        * @param               $realClass      Class name (string)
+        * @param       $realClass      Class name (string)
         * @return      void
         */
        public final function setRealClass ($realClass) {
@@ -748,21 +757,21 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
 
        /**
         * Formats computer generated price values into human-understandable formats
-        * with thousand and decimal seperators.
+        * 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      MissingDecimalsThousandsSeperatorException      If decimals or
-        *                                                                                              thousands seperator
+        * @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 MissingDecimalsThousandsSeperatorException($this, self::EXCEPTION_ATTRIBUTES_ARE_MISSING);
+                       throw new MissingDecimalsThousandsSeparatorException($this, self::EXCEPTION_ATTRIBUTES_ARE_MISSING);
                } // END - if
 
                // Cast the number
@@ -799,8 +808,8 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Appends a trailing slash to a string
         *
-        * @param       $str            A string (maybe) without trailing slash
-        * @return      $str            A string with an auto-appended trailing slash
+        * @param       $str    A string (maybe) without trailing slash
+        * @return      $str    A string with an auto-appended trailing slash
         */
        public final function addMissingTrailingSlash ($str) {
                // Is there a trailing slash?
@@ -815,7 +824,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Private getter for file IO instance
         *
-        * @return      $fileIoInstance An instance to the file I/O sub-system
+        * @return      $fileIoInstance         An instance to the file I/O sub-system
         */
        protected final function getFileIoInstance () {
                return $this->fileIoInstance;
@@ -824,7 +833,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Setter for file I/O instance
         *
-        * @param       $fileIoInstance An instance to the file I/O sub-system
+        * @param       $fileIoInstance         An instance to the file I/O sub-system
         * @return      void
         */
        public final function setFileIoInstance (FileIoHandler $fileIoInstance) {
@@ -893,7 +902,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                ApplicationEntryPoint::app_die(sprintf("<div class=\"debug_header\">%s debug output:</div><div class=\"debug_content\">%s</div>\nLoaded includes: <div class=\"debug_include_list\">%s</div>",
                        $this->__toString(),
                        $content,
-                       ClassLoader::getInstance()->getPrintableIncludeList()
+                       ClassLoader::getSelfInstance()->getPrintableIncludeList()
                ));
        }
 
@@ -940,7 +949,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                // Is the extra message given?
                if (!empty($message)) {
                        // Then add it as well
-                       $stubMessage .= sprintf(" Message: <span id=\"stub_message\">%s</span>", $message);
+                       $stubMessage .= sprintf(' Message: <span id="stub_message">%s</span>', $message);
                } // END - if
 
                // Debug instance is there?
@@ -949,7 +958,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                        $this->debugOutput($stubMessage);
                } else {
                        // Trigger an error
-                       trigger_error($stubMessage . "<br />\n");
+                       trigger_error($stubMessage . '<br />' + chr(10));
                }
        }
 
@@ -966,9 +975,9 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                        printf("Message: %s<br />\n", $message);
                } // END - if
 
-               print("<pre>\n");
+               print('<pre>');
                debug_print_backtrace();
-               print("</pre>");
+               print('</pre>');
                exit();
        }
 
@@ -1063,7 +1072,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                // Init the code with error message
                if (is_array($errorArray)) {
                        // Get error infos
-                       $markedCode = sprintf("<div id=\"error_header\">File: <span id=\"error_data\">%s</span>, Line: <span id=\"error_data\">%s</span>, Message: <span id=\"error_data\">%s</span>, Type: <span id=\"error_data\">%s</span></div>",
+                       $markedCode = sprintf('<div id="error_header">File: <span id="error_data">%s</span>, Line: <span id="error_data">%s</span>, Message: <span id="error_data">%s</span>, Type: <span id="error_data">%s</span></div>',
                                basename($errorArray['file']),
                                $errorArray['line'],
                                $errorArray['message'],
@@ -1074,7 +1083,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                // Add line number to the code
                foreach (explode(chr(10), $phpCode) as $lineNo => $code) {
                        // Add line numbers
-                       $markedCode .= sprintf("<span id=\"code_line\">%s</span>: %s\n",
+                       $markedCode .= sprintf('<span id="code_line">%s</span>: %s' + chr(10),
                                ($lineNo + 1),
                                htmlentities($code, ENT_QUOTES)
                        );
@@ -1403,8 +1412,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                        // New PHP 5.1.0 function found, ignore errors
                        $hasSlept = @time_sleep_until($sleepUntil);
                } else {
-                       // My Sun Station doesn't have that function even with latest PHP
-                       // package. :(
+                       /*
+                        * My Sun station doesn't have that function even with latest PHP
+                        * package. :(
+                        */
                        usleep($milliSeconds * 1000);
                }
 
@@ -1662,10 +1673,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Setter for handler instance
         *
-        * @param       $handlerInstance        A Networkable instance
+        * @param       $handlerInstance        An instance of a Handleable class
         * @return      void
         */
-       protected final function setHandlerInstance (Networkable $handlerInstance) {
+       protected final function setHandlerInstance (Handleable $handlerInstance) {
                $this->handlerInstance = $handlerInstance;
        }
 
@@ -1958,11 +1969,53 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                $executionTime = microtime(true) - $this->getStartupTime();
 
                // Pack it in nice braces
-               $executionTime = sprintf('[ %01.4f ] ', $executionTime);
+               $executionTime = sprintf('[ %01.5f ] ', $executionTime);
 
                // And return it
                return $executionTime;
        }
+
+       /**
+        * Hashes a given string with a simple but stronger hash function (no salts)
+        *
+        * @param       $str    The string to be hashed
+        * @return      $hash   The hash from string $str
+        */
+       public function hashString ($str) {
+               // Hash given string with (better secure) hasher
+               $hash = mhash(MHASH_SHA256, $str);
+
+               // Return it
+               return $hash;
+       }
+
+       /**
+        * Checks whether the given number is really a number (only chars 0-9).
+        *
+        * @param       $num            A string consisting only chars between 0 and 9
+        * @param       $castValue      Whether to cast the value to double. Do only use this to secure numbers from Requestable classes.
+        * @param       $assertMismatch         Whether to assert mismatches
+        * @return      $ret            The (hopefully) secured numbered value
+        */
+       public function bigintval ($num, $castValue = true, $assertMismatch = false) {
+               // Filter all numbers out
+               $ret = preg_replace('/[^0123456789]/', '', $num);
+
+               // Shall we cast?
+               if ($castValue === true) {
+                       // Cast to biggest numeric type
+                       $ret = (double) $ret;
+               } // END - if
+
+               // Assert only if requested
+               if ($assertMismatch === true) {
+                       // Has the whole value changed?
+                       assert(($assertMismatch === true)('' . $ret . '' != '' . $num . '') && (!is_null($num)));
+               } // END - if
+
+               // Return result
+               return $ret;
+       }
 }
 
 // [EOF]