Added type-hint 'array' for $onlyKeys because this should only be an array.
[core.git] / inc / classes / main / class_BaseFrameworkSystem.php
index cf137a7d3fd345a13eb3062920fb2edab15aebd7..79a60abeb3d09d1622ad580dfb3acf70541c9191 100644 (file)
@@ -361,8 +361,15 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                } elseif (is_array($args)) {
                        // Some arguments are there
                        foreach ($args as $arg) {
-                               // Add the type
-                               $argsString .= $this->replaceControlCharacters($arg) . ' (' . gettype($arg);
+                               // Add the value itself if not array. This prevents 'array to string conversion' message
+                               if (is_array($arg)) {
+                                       $argsString .= 'Array';
+                               } else {
+                                       $argsString .= $arg;
+                               }
+
+                               // Add data about the argument
+                               $argsString .= ' (' . gettype($arg);
 
                                if (is_string($arg)) {
                                        // Add length for strings
@@ -399,7 +406,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                ));
 
                // Return nothing
-               return null;
+               return NULL;
        }
 
        /**
@@ -714,7 +721,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) {
@@ -726,11 +733,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        }
 
        /**
-        * Checks wether an object equals this object. You should overwrite this
+        * Checks whether an object equals this object. You should overwrite this
         * method to implement own equality checks
         *
         * @param       $objectInstance         An instance of a FrameworkInterface object
-        * @return      $equals                         Wether both objects equals
+        * @return      $equals                         Whether both objects equals
         */
        public function equals (FrameworkInterface $objectInstance) {
                // Now test it
@@ -808,8 +815,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?
@@ -824,7 +831,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;
@@ -833,7 +840,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) {
@@ -949,7 +956,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?
@@ -958,7 +965,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));
                }
        }
 
@@ -975,17 +982,17 @@ 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();
        }
 
        /**
-        * Outputs a debug message wether to debug instance (should be set!) or dies with or pints the message
+        * Outputs a debug message whether to debug instance (should be set!) or dies with or pints the message
         *
         * @param       $message        Message we shall send out...
-        * @param       $doPrint        Wether we shall print or die here which first is the default
+        * @param       $doPrint        Whether we shall print or die here which first is the default
         * @return      void
         */
        public function debugOutput ($message, $doPrint = true) {
@@ -1072,7 +1079,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'],
@@ -1083,7 +1090,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)
                        );
@@ -1311,10 +1318,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        }
 
        /**
-        * Checks wether the given PHP extension is loaded
+        * Checks whether the given PHP extension is loaded
         *
         * @param       $phpExtension   The PHP extension we shall check
-        * @return      $isLoaded       Wether the PHP extension is loaded
+        * @return      $isLoaded       Whether the PHP extension is loaded
         */
        public final function isPhpExtensionLoaded ($phpExtension) {
                // Is it loaded?
@@ -1398,7 +1405,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Idles (sleeps) for given milliseconds
         *
-        * @return      $hasSlept       Wether it goes fine
+        * @return      $hasSlept       Whether it goes fine
         */
        public function idle ($milliSeconds) {
                // Sleep is fine by default
@@ -1899,10 +1906,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        }
 
        /**
-        * Checks wether the given encoded data was encoded with Base64
+        * Checks whether the given encoded data was encoded with Base64
         *
         * @param       $encodedData    Encoded data we shall check
-        * @return      $isBase64               Wether the encoded data is Base64
+        * @return      $isBase64               Whether the encoded data is Base64
         */
        protected function isBase64Encoded ($encodedData) {
                // Determine it
@@ -1938,7 +1945,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
         * @param       $onlyKeys                       Only use these keys for a cache key
         * @return      $cacheKey                       A cache key suitable for lookup/storage purposes
         */
-       protected function getCacheKeyByCriteria (Criteria $criteriaInstance, $onlyKeys = array()) {
+       protected function getCacheKeyByCriteria (Criteria $criteriaInstance, array $onlyKeys = array()) {
                // Generate it
                $cacheKey = sprintf("%s@%s",
                        $this->__toString(),
@@ -1974,6 +1981,48 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                // 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(('' . $ret . '' != '' . $num . '') && (!is_null($num)));
+               } // END - if
+
+               // Return result
+               return $ret;
+       }
 }
 
 // [EOF]