Back to Opencart

File system\library\response.php

docs/api/source-system.library.response.html

4.1.0.37.6 KB
Original Source

Namespaces

Classes

| 1: | <?php | | 2: | /** | | 3: | * @package OpenCart | | 4: | * | | 5: | * @author Daniel Kerr | | 6: | * @copyright Copyright (c) 2005 - 2022, OpenCart, Ltd. (https://www.opencart.com/) | | 7: | * @license https://opensource.org/licenses/GPL-3.0 | | 8: | * | | 9: | * @see https://www.opencart.com | | 10: | */ | | 11: | namespace Opencart\System\Library; | | 12: | /** | | 13: | * Class Response | | 14: | * | | 15: | * Stores the response so the correct headers can go out before the response output is shown. | | 16: | */ | | 17: | class Response { | | 18: | /** | | 19: | * @var array<int, string> | | 20: | */ | | 21: | private array $headers = []; | | 22: | /** | | 23: | * @var int | | 24: | */ | | 25: | private int $level = 0; | | 26: | /** | | 27: | * @var string | | 28: | */ | | 29: | private string $output = ''; | | 30: | | | 31: | /** | | 32: | * Constructor | | 33: | * | | 34: | * @param string $header | | 35: | */ | | 36: | public function addHeader(string $header): void { | | 37: | $this->headers[] = $header; | | 38: | } | | 39: | | | 40: | /** | | 41: | * getHeaders | | 42: | * | | 43: | * @return array<int, string> | | 44: | */ | | 45: | public function getHeaders(): array { | | 46: | return $this->headers; | | 47: | } | | 48: | | | 49: | /** | | 50: | * Redirect | | 51: | * | | 52: | * @param string $url | | 53: | * @param int $status | | 54: | * | | 55: | * @return void | | 56: | */ | | 57: | public function redirect(string $url, int $status = 302): void { | | 58: | header('Location: ' . str_replace(['&', "\n", "\r"], ['&', '', ''], $url), true, $status); | | 59: | exit(); | | 60: | } | | 61: | | | 62: | /** | | 63: | * setCompression | | 64: | * | | 65: | * @param int $level | | 66: | * | | 67: | * @return void | | 68: | */ | | 69: | public function setCompression(int $level): void { | | 70: | $this->level = $level; | | 71: | } | | 72: | | | 73: | /** | | 74: | * setOutput | | 75: | * | | 76: | * @param string $output | | 77: | * | | 78: | * @return void | | 79: | */ | | 80: | public function setOutput(string $output): void { | | 81: | $this->output = $output; | | 82: | } | | 83: | | | 84: | /** | | 85: | * getOutput | | 86: | * | | 87: | * @return string | | 88: | */ | | 89: | public function getOutput(): string { | | 90: | return $this->output; | | 91: | } | | 92: | | | 93: | /** | | 94: | * Compress | | 95: | * | | 96: | * @param string $data | | 97: | * @param int $level | | 98: | * | | 99: | * @return string | | 100: | */ | | 101: | private function compress(string $data, int $level = 0): string { | | 102: | if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false)) { | | 103: | $encoding = 'gzip'; | | 104: | } | | 105: | | | 106: | if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false)) { | | 107: | $encoding = 'x-gzip'; | | 108: | } | | 109: | | | 110: | if (!isset($encoding) || ($level < -1 || $level > 9)) { | | 111: | return $data; | | 112: | } | | 113: | | | 114: | if (!extension_loaded('zlib') || ini_get('zlib.output_compression')) { | | 115: | return $data; | | 116: | } | | 117: | | | 118: | if (headers_sent()) { | | 119: | return $data; | | 120: | } | | 121: | | | 122: | if (connection_status()) { | | 123: | return $data; | | 124: | } | | 125: | | | 126: | $this->addHeader('Content-Encoding: ' . $encoding); | | 127: | | | 128: | return gzencode($data, $level); | | 129: | } | | 130: | | | 131: | /** | | 132: | * Output | | 133: | * | | 134: | * Displays the set HTML output | | 135: | * | | 136: | * @return void | | 137: | */ | | 138: | public function output(): void { | | 139: | if ($this->output) { | | 140: | $output = $this->level ? $this->compress($this->output, $this->level) : $this->output; | | 141: | | | 142: | if (!headers_sent()) { | | 143: | foreach ($this->headers as $header) { | | 144: | header($header, true); | | 145: | } | | 146: | } | | 147: | | | 148: | echo $output; | | 149: | } | | 150: | } | | 151: | } | | 152: | |

OpenCart API API documentation generated by ApiGen dev-master