DaPortal
<?php //$Id$
//Copyright (c) 2014-2016 Pierre Pronchery <khorben@defora.org>
//This file is part of DeforaOS Web DaPortal
//
//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, version 3 of the License.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program. If not, see <http://www.gnu.org/licenses/>.
//PageResponse
class PageResponse extends Response
{
//public
//methods
//accessors
//PageResponse::get
public function get($name)
{
if(($ret = parent::get($name)) !== FALSE)
return $ret;
//XXX fallback on page properties
//XXX an engine is required
if(($page = $this->getContent()) !== NULL)
return $page->get($name);
return FALSE;
}
//PageResponse::setContent
public function setContent($content)
{
if(!($content instanceof PageElement))
$content = NULL;
return parent::setContent($content);
}
//useful
//PageResponse::render
public function render(Engine $engine)
{
$page = $this->getContent();
$type = $this->getType();
if($type === FALSE)
$type = $engine->getDefaultType();
switch($type)
{
case 'text/html':
if(($template = Template::attachDefault(
$engine)) === FALSE)
break;
if(($p = $template->render($engine, $page))
!== FALSE)
$page = $p;
break;
}
$error = _('Could not determine the proper output format');
if(($output = Format::attachDefault($engine, $type)) !== FALSE)
{
if(is_null($page))
$page = new Page();
$output->render($engine, $page);
}
else
{
$engine->log(LOG_ERR, $error);
return Response::$CODE_EIO;
}
return $this->getCode();
}
}
?>