route = $route; $this->routeParts = explode('/', $route); $this->request = $request; } public function setEditable($isEditable) { $this->isEditable = $isEditable; } public function init() { NavigationModel::init($this->routeParts, $this->isEditable); $navigation = new NavigationView(NavigationModel::getData(), NavigationModel::getNavigationPath()); $navigation->setEditable($this->isEditable); $navigation->init(); $registry = Registry::getInstance(); $registry->navID = NavigationModel::getActiveNavID(); $registry->navigationPath = NavigationModel::getNavigationPath(); $this->contents['title'] = NavigationModel::getTitle(); $this->contents['navigation'] = $navigation->render(); $this->contents['headline'] = NavigationModel::getHeadline(); $this->contents['content'] = ''; $keyVisual = NavigationModel::getKeyVisual(); $this->contents['keyVisual'] = $this->buildContents($keyVisual); $tmpContents = NavigationModel::getContents(); /** * @var Database $modelClass */ foreach ($tmpContents as $data) { $this->contents['content'] .= $this->buildContents($data); } $pageView = new StandardView($this->contents, 'index'); $pageView->setEditable($this->isEditable); echo $pageView->render(); } /** * @param array $data * @return string */ protected function buildContents(array $data) { /** * Abfangen von nicht behandelbaren Abfragen durch den mod_rewrite * z.B. nicht vorhandene Bilder */ if (!isset($data['Controller'])) { return ''; } /** * @var Database $modelClass */ $modelData = array(); $modelClass = 'Model\\' . $data['Controller'] . 'Model'; $viewClass = 'View\\' . $data['Controller'] . 'View'; if (class_exists($modelClass, true)) { if (isset($data['ID'])) { $modelData = $modelClass::getItem($data['ID']); } if (isset($data['IDs'])) { $tmpModelData = $data; unset($tmpModelData['Controller']); unset($tmpModelData['IDs']); $modelClass::setFilter($data['IDs']); $modelData = $modelClass::getIndex(); $modelData = array_merge($modelData, $tmpModelData); } } else { /** * TODO: ErrorHandler bauen */ return ''; } if (empty($modelData)) { /** * TODO: ErrorHandler bauen */ return ''; } if (class_exists($viewClass, true)) { $dataView = new $viewClass($modelData, $data['Controller']); } else { $dataView = new StandardView($modelData, $data['Controller']); } $dataView->setEditable($this->isEditable); return $dataView->render(); } }