* @license PHP License
* @package WB
* @subpackage service
*/
WBClass::load('WBService'
, 'WBService_Site'
);
/**
* Deliver mandator's site's html
*
* @version 0.1.2
* @package WB
* @subpackage service
*/
class WBService_Site_Mandator extends WBService_Site
{
/**
* Constructor
*
*/
public function __construct($params)
{
parent::__construct($params);
$this->initMandator($params);
if (empty($params['pathprefix'])) {
return;
}
$params['pathprefix'] = trim($params['pathprefix'], '/');
WBClass::load('WBString');
WBString::setSuperPlaceholder('service_html', sprintf('%s%s/', WBString::getSuperPlaceHolder('service_html'), $params['pathprefix']));
WBString::setSuperPlaceholder('self', sprintf('%s%s/', WBString::getSuperPlaceHolder('self'), $params['pathprefix']));
}
/**
* Run Content Component
*
* @param int $status
* @param patTemplate
* @param array
*/
protected function runContent(&$status, $tmpl, $params)
{
// mandator is not valid
if (!$this->mandator->isValid()) {
$status = 404;
$tmpl->addGlobalVar('area_content', 'Not Found');
return;
}
// Mandator does not have a homepage
if (!$this->mandator->hasHomepage()) {
$status = 404;
$tmpl->addGlobalVar('area_content', 'Not found. There is no homepage.');
return;
}
$this->cont = WBClass::create('WBContent_Composite');
$this->cont->setEnvironment(WBContent::ENV_SITE);
if (!isset($params['renderer']['bubbles']) || !is_array($params['renderer']['bubbles'])) {
$params['renderer']['bubbles'] = array();
}
$last = $this->mandator;
$dec = $this->conf->get('content/mandatordecorator', array());
if (!is_array($dec)) {
$dec = array($dec);
}
foreach ($dec as $d) {
$d = trim($d);
if (empty($d)) {
continue;
}
/** @var WBMandator_Decorator */
$inst = WBClass::create('WBMandator_Decorator_' . $d);
$inst->setMandator($last);
$last = $inst;
}
$m = $last->get();
foreach($m as $k => $v) {
$params['renderer']['bubbles']['homepage_' . $k] = $v;
}
$params['renderer']['params']['tmpl'] = $m['layouttemplate'];
$this->cont->configure('', $params, array());
$params = $this->cont->run();
$tmpl->addGlobalVar('area_content', $this->cont->getString());
$tmpl->addGlobalVars($this->cont->getBubbles());
$status = $this->cont->getStatusCode();
$this->res->useCache($this->cont->isCachable());
return $params;
}
}