250 lines
6.2 KiB
PHP
250 lines
6.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* NRE
|
|
*
|
|
* @author coderkun <olli@coderkun.de>
|
|
* @copyright 2013 coderkun (http://www.coderkun.de)
|
|
* @license http://www.gnu.org/licenses/gpl.html
|
|
* @link http://www.coderkun.de/projects/nre
|
|
*/
|
|
|
|
namespace nre\responses;
|
|
|
|
|
|
/**
|
|
* Representation of a web-response.
|
|
*
|
|
* @author coderkun <olli@coderkun.de>
|
|
*/
|
|
class WebResponse extends \nre\core\Response
|
|
{
|
|
/**
|
|
* Applied GET-parameters
|
|
*
|
|
* @var array
|
|
*/
|
|
private $getParams = array();
|
|
/**
|
|
* Changed header lines
|
|
*
|
|
* @var array
|
|
*/
|
|
private $headers = array();
|
|
|
|
|
|
|
|
|
|
/**
|
|
* Add a parameter.
|
|
*
|
|
* @param mixed $value Value of parameter
|
|
*/
|
|
public function addParam($value)
|
|
{
|
|
if(array_key_exists('layout', $this->getParams)) {
|
|
parent::addParam($value);
|
|
}
|
|
else {
|
|
$this->addGetParam('layout', $value);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Add multiple parameters.
|
|
*
|
|
* @param mixed $value1 Value of first parameter
|
|
* @param mixed … Values of further parameters
|
|
*/
|
|
public function addParams($value1)
|
|
{
|
|
$this->addParam($value1);
|
|
|
|
$this->params = array_merge(
|
|
$this->params,
|
|
array_slice(
|
|
func_get_args(),
|
|
1
|
|
)
|
|
);
|
|
}
|
|
|
|
|
|
/**
|
|
* Delete all stored parameters (from offset on).
|
|
*
|
|
* @param int $offset Offset-index
|
|
*/
|
|
public function clearParams($offset=0)
|
|
{
|
|
if($offset == 0) {
|
|
unset($this->getParams['layout']);
|
|
}
|
|
|
|
parent::clearParams(max(0, $offset-1));
|
|
}
|
|
|
|
|
|
/**
|
|
* Get a parameter.
|
|
*
|
|
* @param int $index Index of parameter
|
|
* @param string $defaultIndex Index of default configuration value for this parameter
|
|
* @return string Value of parameter
|
|
*/
|
|
public function getParam($index, $defaultIndex=null)
|
|
{
|
|
if($index == 0) {
|
|
return $this->getGetParam('layout', $defaultIndex);
|
|
}
|
|
else {
|
|
return parent::getParam($index-1, $defaultIndex);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Get all parameters from index on.
|
|
*
|
|
* @param int $offset Offset-index
|
|
* @return array Parameter values
|
|
*/
|
|
public function getParams($offset=0)
|
|
{
|
|
if($offset == 0)
|
|
{
|
|
if(!array_key_exists('layout', $this->getParams)) {
|
|
return array();
|
|
}
|
|
|
|
return array_merge(
|
|
array(
|
|
$this->getParams['layout']
|
|
),
|
|
$this->params
|
|
);
|
|
}
|
|
|
|
|
|
return array_slice($this->params, $offset-1);
|
|
}
|
|
|
|
|
|
/**
|
|
* Add a GET-parameter.
|
|
*
|
|
* @param string $key Key of GET-parameter
|
|
* @param mixed $value Value of GET-parameter
|
|
*/
|
|
public function addGetParam($key, $value)
|
|
{
|
|
$this->getParams[$key] = $value;
|
|
}
|
|
|
|
|
|
/**
|
|
* Add multiple GET-parameters.
|
|
*
|
|
* @param array $params Associative arary with key-value GET-parameters
|
|
*/
|
|
public function addGetParams($params)
|
|
{
|
|
$this->getParams = array_merge(
|
|
$this->getParams,
|
|
$params
|
|
);
|
|
}
|
|
|
|
|
|
/**
|
|
* Get a GET-parameter.
|
|
*
|
|
* @param int $key Index of GET-parameter
|
|
* @param string $defaultIndex Index of default configuration value for this parameter
|
|
* @return string Value of GET-parameter
|
|
*/
|
|
public function getGetParam($key, $defaultIndex=null)
|
|
{
|
|
// Check key
|
|
if(array_key_exists($key, $this->getParams))
|
|
{
|
|
// Return value
|
|
return $this->getParams[$key];
|
|
}
|
|
|
|
// Return default value
|
|
return \nre\core\Config::getDefault($defaultIndex);
|
|
}
|
|
|
|
|
|
/**
|
|
* Get all GET-parameters.
|
|
*
|
|
* @return array All GET-parameters
|
|
*/
|
|
public function getGetParams()
|
|
{
|
|
return $this->getParams;
|
|
}
|
|
|
|
|
|
/**
|
|
* Add a line to the response header.
|
|
*
|
|
* @param string $headerLine Header line
|
|
* @param bool $replace Replace existing header line
|
|
* @param int $http_response_code HTTP-response code
|
|
*/
|
|
public function addHeader($headerLine, $replace=true, $http_response_code=null)
|
|
{
|
|
$this->headers[] = $this->newHeader($headerLine, $replace, $http_response_code);
|
|
}
|
|
|
|
|
|
/**
|
|
* Clear all stored headers.
|
|
*/
|
|
public function clearHeaders()
|
|
{
|
|
$this->headers = array();
|
|
}
|
|
|
|
|
|
/**
|
|
* Send stored headers.
|
|
*/
|
|
public function header()
|
|
{
|
|
foreach($this->headers as $header)
|
|
{
|
|
header(
|
|
$header['string'],
|
|
$header['replace'],
|
|
$header['responseCode']
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
* Create a new header line.
|
|
*
|
|
* @param string $headerLine Header line
|
|
* @param bool $replace Replace existing header line
|
|
* @param int $http_response_code HTTP-response code
|
|
*/
|
|
private function newHeader($headerLine, $replace=true, $http_response_code=null)
|
|
{
|
|
return array(
|
|
'string' => $headerLine,
|
|
'replace' => $replace,
|
|
'responseCode' => $http_response_code
|
|
);
|
|
}
|
|
|
|
}
|
|
|
|
?>
|