/** * Sets the URI path and query values based on given parameters. * * @param array $p_params * An array of valid URL parameters * @param boolean $p_preview * If true, will keep the preview parameters in the URL * * @return void */ protected function buildURI(array &$p_params = array(), $p_preview = false) { if ($this->isValidCache()) { return; } $parameter = count($p_params) > 0 ? strtolower(array_shift($p_params)) : null; switch ($parameter) { case 'language': case 'publication': $this->m_buildPath = $this->getURILanguage(); if ($p_preview) { $this->m_buildQueryArray = $this->getQueryArray(CampURI::$m_previewParameters); } else { $this->m_buildQueryArray = array(); } $p_params = array(); break; case 'issue': $this->m_buildPath = $this->getURIIssue(); if ($p_preview) { $this->m_buildQueryArray = $this->getQueryArray(CampURI::$m_previewParameters); } else { $this->m_buildQueryArray = array(); } $p_params = array(); break; case 'section': $this->m_buildPath = $this->getURISection(); if ($p_preview) { $this->m_buildQueryArray = $this->getQueryArray(CampURI::$m_previewParameters); } else { $this->m_buildQueryArray = array(); } $p_params = array(); break; case 'article': $this->m_buildPath = $this->getURIArticle(); if ($p_preview) { $this->m_buildQueryArray = $this->getQueryArray(CampURI::$m_previewParameters); } else { $this->m_buildQueryArray = array(); } $p_params = array(); break; case 'template': case 'id': $option = isset($p_params[0]) ? array_shift($p_params) : null; if (is_null($option)) { break; } if (is_null($this->_themePath)) { $this->_themePath = CampSystem::GetThemePath($this->m_language->number, $this->m_publication->identifier, $this->m_issue->number); } $pathRsc = new Resource(); $pathRsc->setName('buildPage'); $pathRsc->setPath($this->_themePath . $option); $resourceId = new ResourceId('template_engine/classes/CampURIShortNames'); $pathRsc = $resourceId->getService(ISyncResourceService::NAME)->getSynchronized($pathRsc); if (!is_null($pathRsc) && $pathRsc->exists()) { $this->m_buildQueryArray[CampRequest::TEMPLATE_ID] = $pathRsc->getId(); } break; default: if (!empty($parameter)) { array_unshift($p_params, $parameter); $count = count($p_params); parent::buildURI($p_params, $p_preview); if (count($p_params) == $count) { array_shift($p_params); } } } if (count($p_params) > 0) { $this->buildURI($p_params); } if (!is_null($this->m_language) && $this->m_language->defined() && is_null($this->m_buildPath)) { $this->m_buildPath = $this->m_config->getSetting('SUBDIR') . '/' . $this->m_language->code . '/'; if (!is_null($this->m_issue) && $this->m_issue->defined()) { $this->m_buildPath .= $this->m_issue->url_name . '/'; if (!is_null($this->m_section) && $this->m_section->defined()) { $this->m_buildPath .= $this->m_section->url_name . '/'; if (!is_null($this->m_article) && $this->m_article->defined()) { $this->m_buildPath = $this->getURIArticle(); } } } } if (is_null($this->m_buildQuery)) { $this->m_buildQuery = CampURI::QueryArrayToString($this->m_buildQueryArray); } $this->validateCache(true); }
public function getThemePath() { if (is_null($this->_themePath)) { $this->_themePath = CampSystem::GetThemePath($this->language->number, $this->publication->identifier, $this->issue->number); } return $this->_themePath; }