X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fresponse%2Fclass_HttpResponse.php;h=5a21d8988aea96d544f2a8a69a440a0b82c39eb4;hb=c9beed8839a04b5a170f2aca90b86623d097c5ad;hp=52ad2a76db0ad226d10c7312a8e3ec5445d6e769;hpb=838cbd34450e0b29c5b749d86a526871dac461ac;p=shipsimu.git diff --git a/inc/classes/main/response/class_HttpResponse.php b/inc/classes/main/response/class_HttpResponse.php index 52ad2a7..5a21d89 100644 --- a/inc/classes/main/response/class_HttpResponse.php +++ b/inc/classes/main/response/class_HttpResponse.php @@ -63,7 +63,7 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable { $this->setObjectDescription("HTTP response"); // Create unique ID number - $this->createUniqueID(); + $this->generateUniqueId(); // Clean up a little $this->removeNumberFormaters(); @@ -136,7 +136,7 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable { * @param $output Output we shall sent in the HTTP response * @return void */ - public function setReponseBody ($output) { + public function setResponseBody ($output) { $this->responseBody = $output; } @@ -167,7 +167,7 @@ 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}"); @@ -187,7 +187,7 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable { } // Clear response header and body - $this->setReponseBody(""); + $this->setResponseBody(""); $this->resetResponseHeaders(); } @@ -221,6 +221,89 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable { // Adds the resolved message id to the fatal message list $this->fatalMessages[] = $this->getApplicationInstance()->getLanguageInstance()->getMessage($messageId); } + + /** + * Adds a cookie to the response + * + * @param $cookieName Cookie's name + * @param $cookieValue Value to store in the cookie + * @param $encrypted Do some extra encryption on the value + * @return void + * @throws ResponseHeadersAlreadySentException If headers are already sent + */ + public function addCookie ($cookieName, $cookieValue, $encrypted = false) { + // Are headers already sent? + if (headers_sent()) { + // Throw an exception here + throw new ResponseHeadersAlreadySentException($this, self::EXCEPTION_HEADERS_ALREADY_SENT); + } // END - if + + // Shall we encrypt the cookie? + if ($encrypted === true) { + // @TODO Encryption of cookie data not yet supported + } // END - if + + // Set the cookie + //echo $cookieName."=".$cookieValue. + // ", expire=".(time()+$this->getConfigInstance()->readConfig('cookie_expire')). + // ", path=".$this->getConfigInstance()->readConfig('cookie_path'). + // ", domain=".$this->getConfigInstance()->readConfig('cookie_domain'). + // ", ssl=".$this->getConfigInstance()->readConfig('cookie_ssl'); + setcookie( + $cookieName, + $cookieValue, + (time() + $this->getConfigInstance()->readConfig('cookie_expire')), + $this->getConfigInstance()->readConfig('cookie_path'), + $this->getConfigInstance()->readConfig('cookie_domain'), + $this->getConfigInstance()->readConfig('cookie_ssl') + ); + } + + /** + * Redirect to a configured URL. The URL can be absolute or relative. In + * case of relative URL it will be extended automatically. + * + * @param $configEntry The configuration entry which holds our URL + * @return void + * @throws ResponseHeadersAlreadySentException If headers are already sent + */ + public function redirectToConfiguredUrl ($configEntry) { + // Is the header not yet sent? + if (headers_sent()) { + // Throw an exception here + throw new ResponseHeadersAlreadySentException($this, self::EXCEPTION_HEADERS_ALREADY_SENT); + } // END - if + + // Get the url from config + $url = $this->getConfigInstance()->readConfig($configEntry); + + // Do we have a "http" in front of the URL? + if (substr(strtolower($url), 0, 4) != "http") { + // Is there a / in front of the relative URL? + if (substr($url, 0, 1) == "/") $url = substr($url, 1); + + // No, then extend it with our base URL + $url = $this->getConfigInstance()->readConfig('base_url') . "/" . $url; + } // END - if + + // Clean response headers + $this->resetResponseHeaders(); + + // Add redirect header + $this->addHeader("Location", $url); + + // Set correct response status + $this->setResponseStatus("301 Moved Permanently"); + + // Clear the body + $this->setResponseBody(""); + + // Flush the result + $this->flushBuffer(); + + // All done here... + exit(); + } } // [EOF]