* @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; } }