/** * indexAction * @author Cornelius Hansjakob <*****@*****.**> * @version 1.0 */ public function indexAction() { $this->view->addFilter('PageReplacer'); /** * get domain */ $strDomain = $_SERVER['SERVER_NAME']; /** * get uri */ $strUrl = $_SERVER['REQUEST_URI']; if (preg_match('/^\\/[a-zA-Z]{2}\\//', $strUrl)) { preg_match('/^\\/[a-zA-Z]{2}\\//', $strUrl, $arrMatches); $this->strLanguageCode = trim($arrMatches[0], '/'); foreach ($this->core->webConfig->languages->language->toArray() as $arrLanguage) { if (array_key_exists('code', $arrLanguage) && $arrLanguage['code'] == strtolower($this->strLanguageCode)) { $this->intLanguageId = $arrLanguage['id']; break; } } if ($this->intLanguageId == null) { $this->intLanguageId = $this->core->sysConfig->languages->default->id; $this->strLanguageCode = $this->core->sysConfig->languages->default->code; } $strUrl = preg_replace('/^\\/[a-zA-Z]{2}\\//', '', $strUrl); } else { $strUrl = preg_replace('/^\\//', '', $strUrl); $this->intLanguageId = $this->core->sysConfig->languages->default->id; $this->strLanguageCode = $this->core->sysConfig->languages->default->code; } $this->getModelUrls(); $this->getModelFolders(); $objTheme = $this->objModelFolders->getThemeByDomain($strDomain)->current(); $this->objUrlsData = $this->objModelUrls->loadByUrl($objTheme->idRootLevels, parse_url($strUrl, PHP_URL_PATH) === null ? '' : parse_url($strUrl, PHP_URL_PATH)); if (count($this->objUrlsData) > 0) { $objUrlData = $this->objUrlsData->current(); switch ($objUrlData->idUrlTypes) { // UrlType: Widget case $this->core->sysConfig->url_types->widget: $objWidget = new Widget(); $this->getModelWidgets(); $objWidgetInstance = $this->objModelWidgets->loadWidgetByInstanceId($objUrlData->relationId); $objWidget->setWidgetInstanceId($objUrlData->relationId); $this->_getParam('do') == null ? $objWidget->setAction('index') : $objWidget->setAction($this->_getParam('do')); $objWidget->setWidgetName($objWidgetInstance->name); $objWidget->setNavigationUrl(parse_url($strUrl, PHP_URL_PATH) === null ? '' : parse_url($strUrl, PHP_URL_PATH)); $objWidget->setWidgetTitle($objWidgetInstance->title); $objWidget->setRootLevelTitle($objTheme->title); $objWidget->setRootLevelId($objTheme->idRootLevels); $objWidget->setWidgetVersion($objUrlData->version); $objWidget->setLanguageId($objUrlData->idLanguages); $objWidget->setLanguageCode($this->strLanguageCode); $objWidget->setUrlParentId($objUrlData->idParent); Zend_Registry::set('Widget', $objWidget); $this->_forward($objWidget->getAction(), 'index', $objWidgetInstance->name); break; // UrlType: SubWidget // UrlType: SubWidget case $this->core->sysConfig->url_types->subwidget: $objWidget = new Widget(); $this->getModelWidgets(); $objWidgetInstance = $this->objModelWidgets->loadSubWidgetByInstanceId($objUrlData->relationId); $objWidget->setWidgetInstanceId($objUrlData->relationId); $this->_getParam('do') == null ? $objWidget->setAction('view') : $objWidget->setAction($this->_getParam('do')); $objWidget->setGenericFormTypesId($objWidgetInstance->idGenericFormTypes); $objWidget->setGenericFormId($objWidgetInstance->genericFormId); $objWidget->setGenericFormVersion($objWidgetInstance->version); $objWidget->setWidgetName($objWidgetInstance->name); $objWidget->setNavigationUrl(parse_url($strUrl, PHP_URL_PATH) === null ? '' : parse_url($strUrl, PHP_URL_PATH)); $objWidget->setWidgetTitle($objWidgetInstance->title); $objWidget->setRootLevelTitle($objTheme->title); $objWidget->setRootLevelId($objTheme->idRootLevels); $objWidget->setWidgetVersion($objUrlData->version); $objWidget->setLanguageId($objUrlData->idLanguages); $objWidget->setLanguageCode($this->strLanguageCode); Zend_Registry::set('Widget', $objWidget); $this->_forward($objWidget->getAction(), 'index', $objWidgetInstance->name); break; // Url Type: page // Url Type: page case $this->core->sysConfig->url_types->page: $arrFrontendOptions = array('lifetime' => 604800, 'automatic_serialization' => true); $arrBackendOptions = array('cache_dir' => GLOBAL_ROOT_PATH . 'tmp/cache/pages/'); // getting a Zend_Cache_Core object $this->objCache = Zend_Cache::factory('Output', 'File', $arrFrontendOptions, $arrBackendOptions); $strCacheId = 'page_' . $this->strLanguageCode . '_' . preg_replace('/[^a-zA-Z0-9_]/', '_', $strUrl); if ($this->core->sysConfig->cache->page == 'false' || $this->core->sysConfig->cache->page == 'true' && $this->objCache->test($strCacheId) == false || $this->core->sysConfig->cache->page == 'true' && isset($_SESSION['sesTestMode'])) { $objNavigation = new Navigation(); $objNavigation->setRootLevelId($objTheme->idRootLevels); $objNavigation->setLanguageId($this->intLanguageId); require_once dirname(__FILE__) . '/../helpers/navigation.inc.php'; Zend_Registry::set('Navigation', $objNavigation); $this->getModelPages(); $this->objUrlsData = $this->objModelPages->loadByUrl($objTheme->idRootLevels, $strUrl); foreach ($this->objUrlsData as $objPageData) { $this->objUrlsData = $objPageData; } if (count($this->objUrlsData) > 0) { $this->core->logger->debug('Cache: ' . $this->core->sysConfig->cache->page); if ($this->core->sysConfig->cache->page == 'true' && !isset($_SESSION['sesTestMode'])) { $this->core->logger->debug('Start caching...'); $this->objCache->start($strCacheId); $this->blnCachingStart = true; } $this->objPage = new Page(); $this->objPage->setRootLevelId($objTheme->idRootLevels); $this->objPage->setRootLevelTitle($objTheme->title); $this->objPage->setPageId($this->objUrlsData->relationId); $this->objPage->setPageVersion($this->objUrlsData->version); $this->objPage->setLanguageId($this->objUrlsData->idLanguages); $this->objPage->load(); /** * set values for replacers */ Zend_Registry::set('TemplateCss', $this->objPage->getTemplateId() == $this->core->sysConfig->page_types->page->portal_startpage_templateId ? '<link rel="stylesheet" type="text/css" media="screen" href="/website/themes/' . $objTheme->path . '/css/startpage.css"></link>' : '<link rel="stylesheet" type="text/css" media="screen" href="/website/themes/' . $objTheme->path . '/css/content.css"></link>'); Zend_Registry::set('TemplateJs', $this->objPage->getTemplateId() == $this->core->sysConfig->page_types->page->event_templateId ? '<script src="http://maps.google.com/maps?file=api&v=2&key=' . $this->core->webConfig->gmaps->key . '" type="text/javascript"></script>' : ''); $objNavigation->setPage($this->objPage); /** * get page template filename */ $this->view->template = $this->objPage->getTemplateFile(); $this->view->intRootLevelId = $this->objPage->getRootLevelId(); //$this->view->strRootLevelUrl = $this->core->sysConfig->url->base; $this->view->publisher = $this->objPage->getPublisherName(); $this->view->publishdate = $this->objPage->getPublishDate(); Zend_Registry::set('Page', $this->objPage); require_once dirname(__FILE__) . '/../helpers/page.inc.php'; $this->view->setScriptPath(GLOBAL_ROOT_PATH . 'public/website/themes/' . $objTheme->path . '/'); $this->renderScript('master.php'); } else { $this->view->setScriptPath(GLOBAL_ROOT_PATH . 'public/website/themes/' . $objTheme->path . '/'); $this->renderScript('error-404.php'); } } else { $this->_helper->viewRenderer->setNoRender(); echo $this->objCache->load($strCacheId); } // end page type } //end if type } else { $objNavigation = new Navigation(); $objNavigation->setRootLevelId($objTheme->idRootLevels); $objNavigation->setLanguageId($this->intLanguageId); require_once dirname(__FILE__) . '/../helpers/navigation.inc.php'; Zend_Registry::set('Navigation', $objNavigation); $this->view->setScriptPath(GLOBAL_ROOT_PATH . 'public/website/themes/' . $objTheme->path . '/'); $this->renderScript('error-404.php'); } }