X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fresponse%2Fclass_HttpResponse.php;h=074373d1ea00655dec310069f75ebe6e9ef26463;hb=389f3abad52f9cde3323db5d3d187562fe801a71;hp=8172191acf66aedd2b36cacce1658213a4b82c00;hpb=af51358ab86a9d468bc642fdcaf931a339e6e439;p=hub.git diff --git a/inc/classes/main/response/class_HttpResponse.php b/inc/classes/main/response/class_HttpResponse.php index 8172191ac..074373d1e 100644 --- a/inc/classes/main/response/class_HttpResponse.php +++ b/inc/classes/main/response/class_HttpResponse.php @@ -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,10 +60,10 @@ 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(); + $this->generateUniqueId(); // Clean up a little $this->removeNumberFormaters(); @@ -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'; @@ -140,17 +167,28 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable { $this->addHeader('Pragma:', 'no-cache'); // HTTP/1.0 // Define the charset to be used - $this->addHeader('Content-Type:', 'text/html; charset=utf-8'); + //$this->addHeader('Content-Type:', sprintf("text/html; charset=%s", $this->getConfigInstance()->readConfig('header_charset'))); foreach ($this->responseHeaders as $name=>$value) { header("{$name}: {$value}"); } } - // 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]