private function __construct(Component $component) { $this->component = $component; $page = $component->getPage() == null ? "" : get_class($component->getPage()); $resourceName = self::PROPERTIES_CACHE_NAME . '_' . $page . '_' . $component->getComponentPath(); if (CacheManager::resourceExists($resourceName, CacheManager::APPLICATION_SCOPE)) { $this->properties = CacheManager::loadResource($resourceName, CacheManager::APPLICATION_SCOPE); } else { $this->properties = $this->getProperties($this->component); CacheManager::saveResource($resourceName, $this->properties, CacheManager::APPLICATION_SCOPE); } }
private function renderComponentHeader(Component $component, Response $response, $headerResponse) { $header = new HeaderContainer(HeaderResolver::HEADER_ID); $page = $component->getPage(); $page->addOrReplace($header); PiconApplication::get()->getComponentRenderHeadListener()->onHeadRendering($component, $headerResponse); $page->renderHead($headerResponse); $component->renderHeadContainer($header, $headerResponse); $callback = function (Component &$component) use($headerResponse, $header) { $component->renderHeadContainer($header, $headerResponse); return Component::VISITOR_CONTINUE_TRAVERSAL; }; if ($component instanceof MarkupContainer) { $component->visitChildren(Component::getIdentifier(), $callback); } }
public function c($componentId, $action = 'index', $params = null) { if (is_object($this->_module)) { $conf = $this->_module->getConfig('component_' . $componentId, $this->_module->getCurrentAction()); if (!is_array($conf)) { $conf = $this->_module->getConfig('component_' . $componentId); } } else { $conf = null; } if (is_array($conf)) { $module = $conf[0]; $action = empty($conf[1]) ? 'index' : $conf[1]; } elseif ($conf == '__none') { return; } else { $module = $componentId; } $c = new Component($module, $action, $params); $c->execute(); return $this->comment('Start component ' . $module . '/' . $action . ' routed to ' . $c->getPage()->getCurrentModule() . '/' . $c->getPage()->getCurrentAction()) . $c->display() . $this->comment('End component ' . $module . '/' . $action); }