questlab/responses/WebResponse.inc
2015-04-25 16:22:31 +02:00

251 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
);
}
}
?>