]> git.mxchange.org Git - hub.git/blobdiff - inc/classes/main/response/class_HttpResponse.php
Code merge from latest ship-simu code
[hub.git] / inc / classes / main / response / class_HttpResponse.php
index 8172191acf66aedd2b36cacce1658213a4b82c00..52ad2a76db0ad226d10c7312a8e3ec5445d6e769 100644 (file)
@@ -45,6 +45,11 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable {
         */
        private $templateEngine = null;
 
+       /**
+        * Fatal resolved messages from filters and so on
+        */
+       private $fatalMessages = array();
+
        /**
         * Protected constructor
         *
@@ -55,7 +60,7 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable {
                parent::__construct(__CLASS__);
 
                // Set part description
-               $this->setObjectDescription("HTTP-Antwort");
+               $this->setObjectDescription("HTTP response");
 
                // Create unique ID number
                $this->createUniqueID();
@@ -75,6 +80,9 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable {
                // Get a new instance
                $responseInstance = new HttpResponse();
 
+               // Set the application instance
+               $responseInstance->setApplicationInstance($appInstance);
+
                // Initialize the template engine here
                $responseInstance->initTemplateEngine($appInstance);
 
@@ -103,6 +111,15 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable {
                $this->responseHeaders[$name] = $value;
        }
 
+       /**
+        * Reset the header array
+        *
+        * @return      void
+        */
+       public final function resetResponseHeaders () {
+               $this->responseHeaders = array();
+       }
+
        /**
         * "Writes" data to the response body
         *
@@ -113,6 +130,16 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable {
                $this->responseBody .= $output;
        }
 
+       /**
+        * Sets the response body to something new
+        *
+        * @param       $output         Output we shall sent in the HTTP response
+        * @return      void
+        */
+       public function setReponseBody ($output) {
+               $this->responseBody = $output;
+       }
+
        /**
         * Flushs the cached HTTP response to the outer world
         *
@@ -128,7 +155,7 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable {
                        throw new ResponseHeadersAlreadySentException($this, self::EXCEPTION_HEADERS_ALREADY_SENT);
                } elseif (!headers_sent()) {
                        // Send headers out
-                       header("HTTP/1.0 {$this->responseStatus}");
+                       header("HTTP/1.1 {$this->responseStatus}");
 
                        // Used later
                        $now = gmdate('D, d M Y H:i:s') . ' GMT';
@@ -147,10 +174,21 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable {
                        }
                }
 
-               // Flush the output to the world
-               $this->getWebOutputInstance()->output($this->responseBody);
-               $this->reponseBody = "";
-               $this->responseHeaders = array();
+               // Are there some error messages?
+               if (count($this->fatalMessages) == 0) {
+                       // Flush the output to the world
+                       $this->getWebOutputInstance()->output($this->responseBody);
+               } else {
+                       // Display all error messages
+                       $this->getApplicationInstance()->handleFatalMessages($this->fatalMessages);
+
+                       // Send the error messages out to the world
+                       $this->getWebOutputInstance()->output($this->responseBody);
+               }
+
+               // Clear response header and body
+               $this->setReponseBody("");
+               $this->resetResponseHeaders();
        }
 
        /**
@@ -171,6 +209,18 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable {
        public final function getTemplateEngine () {
                return $this->templateEngine;
        }
+
+       /**
+        * Adds a fatal message id to the response. The added messages can then be
+        * processed and outputed to the world
+        *
+        * @param       $messageId      The message id we shall add
+        * @return      void
+        */
+       public final function addFatalMessage ($messageId) {
+               // Adds the resolved message id to the fatal message list
+               $this->fatalMessages[] = $this->getApplicationInstance()->getLanguageInstance()->getMessage($messageId);
+       }
 }
 
 // [EOF]