Account status page partly implemented, backtrace now without own saveBacktrace(...
[shipsimu.git] / inc / classes / main / class_BaseFrameworkSystem.php
index a828dc7deee1be148fca3f1c390309cf2153d06a..48d9e3a0eb405c0de8d70e00b42799270ac5e1ca 100644 (file)
@@ -33,6 +33,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
         */
        private static $langInstance = null;
 
+       /**
+        * Debug instance
+        */
+       private static $debugInstance = null;
+
        /**
         * Instance of a request class
         */
@@ -307,6 +312,44 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                }
        }
 
+       /**
+        * Setter for search instance
+        *
+        * @param       $searchInstance         Searchable criteria instance
+        * @return      void
+        */
+       public final function setSearchInstance (LocalSearchCriteria $searchInstance) {
+               $this->searchInstance = $searchInstance;
+       }
+
+       /**
+        * Getter for search instance
+        *
+        * @return      $searchInstance         Searchable criteria instance
+        */
+       public final function getSearchInstance () {
+               return $this->searchInstance;
+       }
+
+       /**
+        * 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
         *
@@ -321,29 +364,30 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Getter for configuration instance
         *
-        * @return      $cfhInstance - Configuration instance
+        * @return      $cfgInstance    Configuration instance
         */
        protected final function getConfigInstance () {
-               return Registry::getRegistry()->getInstance('config');
+               $cfgInstance = Registry::getRegistry()->getInstance('config');
+               return $cfgInstance;
        }
 
        /**
         * Setter for debug instance
         *
-        * @param               $debugInstance  The instance for debug output class
+        * @param       $debugInstance  The instance for debug output class
         * @return      void
         */
        public final function setDebugInstance (DebugMiddleware $debugInstance) {
-               Registry::getRegistry()->addInstance('debug', $debugInstance);
+               self::$debugInstance = $debugInstance;
        }
 
        /**
         * Getter for debug instance
         *
-        * @return      $debug - Instance to class DebugConsoleOutput or DebugWebOutput
+        * @return      $debugInstance  Instance to class DebugConsoleOutput or DebugWebOutput
         */
        public final function getDebugInstance () {
-               return Registry::getRegistry()->getInstance('debug');
+               return self::$debugInstance;
        }
 
        /**
@@ -941,29 +985,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                }
        }
 
-       /**
-        * 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 function convertToClassName ($str) {
-               // Init class name
-               $className = "";
-
-               // Convert all dashes in underscores
-               $str = str_replace("-", "_", $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;
-       }
-
        /**
         * Outputs a debug backtrace and stops further script execution
         *
@@ -978,41 +999,88 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        }
 
        /**
-        * Setter for search instance
+        * Outputs a debug message wether to debug instance (should be set!) or dies with or pints the message
         *
-        * @param       $searchInstance         Searchable criteria instance
+        * @param       $message        Message we shall send out...
+        * @param       $doPrint        Wether we shall print or die here which last is the default
         * @return      void
         */
-       public final function setSearchInstance (LocalSearchCriteria $searchInstance) {
-               $this->searchInstance = $searchInstance;
-       }
+       public function debugOutput ($message, $doPrint = false) {
+               // Get debug instance
+               $debugInstance = $this->getDebugInstance();
 
-       /**
-        * Getter for search instance
-        *
-        * @return      $searchInstance         Searchable criteria instance
-        */
-       public final function getSearchInstance () {
-               return $this->searchInstance;
+               // Is the debug instance there?
+               if (is_object($debugInstance)) {
+                       // Use debug output handler
+                       $debugInstance->output($message);
+                       if (!$doPrint) die(); // Die here if not printed
+               } else {
+                       // Put directly out
+                       // DO NOT REWRITE THIS TO app_die() !!!
+                       if ($doPrint) {
+                               print($message);
+                       } else {
+                               die($message);
+                       }
+               }
        }
 
        /**
-        * Setter for resolver instance
+        * Converts e.g. a command from URL to a valid class by keeping out bad characters
         *
-        * @param       $resolverInstance               Instance of a command resolver class
-        * @return      void
+        * @param       $str            The string, what ever it is needs to be converted
+        * @return      $className      Generated class name
         */
-       public final function setResolverInstance (Resolver $resolverInstance) {
-               $this->resolverInstance = $resolverInstance;
+       public function convertToClassName ($str) {
+               // Init class name
+               $className = "";
+
+               // Convert all dashes in underscores
+               $str = str_replace("-", "_", $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;
        }
 
        /**
-        * Getter for resolver instance
+        * Marks up the code by adding e.g. line numbers
         *
-        * @return      $resolverInstance               Instance of a command resolver class
-        */
-       public final function getResolverInstance () {
-               return $this->resolverInstance;
+        * @param       $phpCode                Unmarked PHP code
+        * @return      $markedCode             Marked PHP code
+        */
+       public function markupCode ($phpCode) {
+               // Get last error
+               $errorArray = error_get_last();
+
+               // Init the code with error message
+               $markedCode = "";
+               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>",
+                               basename($errorArray['file']),
+                               $errorArray['line'],
+                               $errorArray['message'],
+                               $errorArray['type']
+                       );
+               } // END - if
+
+               // Add line number to the code
+               foreach (explode("\n", $phpCode) as $lineNo=>$code) {
+                       // Add line numbers
+                       $markedCode .= sprintf("<span id=\"code_line\">%s</span>: %s\n",
+                               ($lineNo+1),
+                               htmlentities($code, ENT_QUOTES)
+                       );
+               } // END - foreach
+
+               // Return the code
+               return $markedCode;
        }
 }