/**
  * 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&amp;v=2&amp;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');
     }
 }