]> git.mxchange.org Git - shipsimu.git/blobdiff - inc/classes/main/class_BaseFrameworkSystem.php
A lot debug messages removed, mailer with stubs added, resend link basicly finished...
[shipsimu.git] / inc / classes / main / class_BaseFrameworkSystem.php
index 9432fa656ccb117cc29bf1dd6c58e01a308da587..ea3201f20a0cfbcb0c5d5555504e607d7d737696 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
         */
@@ -48,6 +53,16 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
         */
        private $searchInstance = null;
 
+       /**
+        * The file I/O instance for the template loader
+        */
+       private $fileIoInstance = null;
+
+       /**
+        * Resolver instance
+        */
+       private $resolverInstance = null;
+
        /**
         * The real class name
         */
@@ -73,11 +88,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
         */
        private $decimals  = ","; // German
 
-       /**
-        * The file I/O instance for the template loader
-        */
-       private $fileIoInstance = null;
-
        /***********************
         * Exception codes.... *
         ***********************/
@@ -130,14 +140,12 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        const EXCEPTION_MISSING_LANGUAGE_HANDLER     = 0x02e;
        const EXCEPTION_MISSING_FILE_IO_HANDLER      = 0x02f;
        const EXCEPTION_MISSING_ELEMENT              = 0x030;
-       const EXCEPTION_INVALID_COMMAND              = 0x031;
-       const EXCEPTION_INVALID_CONTROLLER           = 0x032;
-       const EXCEPTION_HEADERS_ALREADY_SENT         = 0x033;
-       const EXCEPTION_DEFAUL_CONTROLLER_GONE       = 0x034;
-       const EXCEPTION_CLASS_NOT_FOUND              = 0x035;
-       const EXCEPTION_REQUIRED_INTERFACE_MISSING   = 0x036;
-       const EXCEPTION_FATAL_ERROR                  = 0x037;
-       const EXCEPTION_FILE_NOT_FOUND               = 0x038;
+       const EXCEPTION_HEADERS_ALREADY_SENT         = 0x031;
+       const EXCEPTION_DEFAUL_CONTROLLER_GONE       = 0x032;
+       const EXCEPTION_CLASS_NOT_FOUND              = 0x033;
+       const EXCEPTION_REQUIRED_INTERFACE_MISSING   = 0x034;
+       const EXCEPTION_FATAL_ERROR                  = 0x035;
+       const EXCEPTION_FILE_NOT_FOUND               = 0x036;
 
        /**
         * In the super constructor these system classes shall be ignored or else
@@ -168,16 +176,17 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Private super constructor
         *
+        * @param       $className      Name of the class
         * @return      void
         */
-       protected function __construct ($class) {
+       protected function __construct ($className) {
                // Set real class
-               $this->setRealClass($class);
+               $this->setRealClass($className);
 
                // Initialize the class if the registry is there
                if ((class_exists('Registry')) && (Registry::isInitialized() === false)) {
                        $this->initInstance();
-               }
+               } // END - if
        }
 
        /**
@@ -190,10 +199,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                if ($this->__toString() != "DestructedObject") {
                        // Debug message
                        if ((defined('DEBUG_DESTRUCTOR')) && (is_object($this->getDebugInstance()))) {
-                               $this->getDebugInstance()->output(sprintf("[%s:] Das Objekt <strong>%s</strong> wird zerst&ouml;rt.<br />\n",
+                               $this->getDebugInstance()->output(sprintf("[%s:] Das Objekt <strong>%s</strong> wird zerst&ouml;rt.",
                                        __CLASS__, $this->__toString()
                                ));
-                       }
+                       } // END - if
 
                        // Destroy all informations about this class but keep some text about it alive
                        $this->setObjectDescription(sprintf("Entferntes Objekt <em>%s</em>", $this->__toString()));
@@ -201,7 +210,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                        $this->resetUniqueID();
                } elseif ((defined('DEBUG_DESTRUCTOR')) && (is_object($this->getDebugInstance()))) {
                        // Already destructed object
-                       $this->getDebugInstance()->output(sprintf("[%s:] Das Objekt <strong>%s</strong> wurde bereits zerst&ouml;rt.<br />\n",
+                       $this->getDebugInstance()->output(sprintf("[%s:] Das Objekt <strong>%s</strong> wurde bereits zerst&ouml;rt.",
                                __CLASS__, $this->__toString()
                        ));
                }
@@ -262,6 +271,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                        $argsString = sprintf("!INVALID:%s!", $args);
                }
 
+               // Output stub message
                $this->getDebugInstance()->output(sprintf("[%s::%s] Stub! Args: %s",
                        $this->__toString(),
                        $methodName,
@@ -304,6 +314,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
         *
@@ -318,29 +366,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;
        }
 
        /**
@@ -640,10 +689,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Validate if given object is the same as current
         *
-        * @param               $object An object instance for comparison with this class
+        * @param       $object An object instance for comparison with this class
         * @return      boolean The result of comparing both's unique ID
         */
-       public final function equals ($object) {
+       public final function equals (FrameworkInterface $object) {
                return ($this->getUniqueID() == $object->getUniqueID());
        }
 
@@ -651,8 +700,8 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
         * Compare if both simulation part description and class name matches
         * (shall be enougth)
         *
-        * @param               $itemInstance   An object instance to an other class
-        * @return      boolean         The result of comparing class name simulation part description
+        * @param       $itemInstance   An object instance to an other class
+        * @return      boolean                 The result of comparing class name simulation part description
         */
        public function itemMatches ($itemInstance) {
                return (
@@ -667,11 +716,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        /**
         * Compare class name of this and given class name
         *
-        * @param               $class  The class name as string from the other class
+        * @param               $className      The class name as string from the other class
         * @return      boolean The result of comparing both class names
         */
-       public final function isClass ($class) {
-               return ($this->__toString() == $class);
+       public final function isClass ($className) {
+               return ($this->__toString() == $className);
        }
 
        /**
@@ -894,7 +943,11 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                );
 
                // Output it
-               ApplicationEntryPoint::app_die(sprintf("<strong>%s debug output:</strong>%s", $this->__toString(), $content));
+               ApplicationEntryPoint::app_die(sprintf("<strong>%s debug output:</strong><div id=\"debug_content\">%s</div>Loaded includes: <div id=\"debug_include_list\">%s</div>",
+                       $this->__toString(),
+                       $content,
+                       ClassLoader::getInstance()->getPrintableIncludeList()
+               ));
        }
 
        /**
@@ -934,6 +987,46 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
                }
        }
 
+       /**
+        * Outputs a debug backtrace and stops further script execution
+        *
+        * @return      void
+        */
+       public function debugBacktrace () {
+               // Sorry, there is no other way getting this nice backtrace
+               print "<pre>\n";
+               debug_print_backtrace();
+               print "</pre>";
+               exit;
+       }
+
+       /**
+        * Outputs a debug message wether 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 last is the default
+        * @return      void
+        */
+       public function debugOutput ($message, $doPrint = false) {
+               // Get debug instance
+               $debugInstance = $this->getDebugInstance();
+
+               // 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);
+                       }
+               }
+       }
+
        /**
         * Converts e.g. a command from URL to a valid class by keeping out bad characters
         *
@@ -958,35 +1051,38 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
        }
 
        /**
-        * Outputs a debug backtrace and stops further script execution
+        * Marks up the code by adding e.g. line numbers
         *
-        * @return      void
+        * @param       $phpCode                Unmarked PHP code
+        * @return      $markedCode             Marked PHP code
         */
-       public function debugBacktrace () {
-               // Sorry, there is no other way getting this nice backtrace
-               print "<pre>\n";
-               debug_print_backtrace();
-               print "</pre>";
-               exit;
-       }
-
-       /**
-        * Setter for search instance
-        *
-        * @param       $searchInstance         Searchable criteria instance
-        * @return      void
-        */
-       public final function setSearchInstance (LocalSearchCriteria $searchInstance) {
-               $this->searchInstance = $searchInstance;
-       }
+       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
 
-       /**
-        * Getter for search instance
-        *
-        * @return      $searchInstance         Searchable criteria instance
-        */
-       public final function getSearchInstance () {
-               return $this->searchInstance;
+               // Return the code
+               return $markedCode;
        }
 }