/** * 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': $this->m_buildPath = $this->buildPath(CampSystem::GetTemplate($this->m_language->number, $this->m_publication->identifier)); $keepParams = CampURITemplatePath::$m_languageParameters; if ($p_preview) { $keepParams = array_merge(CampURI::$m_previewParameters, $keepParams); } $this->m_buildQueryArray = $this->getQueryArray($keepParams); $p_params = array(); break; case 'publication': $this->m_buildPath = $this->buildPath(CampSystem::GetTemplate($this->m_language->number, $this->m_publication->identifier)); $keepParams = CampURITemplatePath::$m_languageParameters; if ($p_preview) { $keepParams = array_merge(CampURI::$m_previewParameters, $keepParams); } $this->m_buildQueryArray = $this->getQueryArray($keepParams); $p_params = array(); break; case 'issue': $this->m_buildPath = $this->buildPath(CampSystem::GetIssueTemplate($this->m_language->number, $this->m_publication->identifier, $this->m_issue->number)); $keepParams = CampURITemplatePath::$m_issueParameters; if ($p_preview) { $keepParams = array_merge(CampURI::$m_previewParameters, $keepParams); } $this->m_buildQueryArray = $this->getQueryArray($keepParams); $p_params = array(); break; case 'section': $this->m_buildPath = $this->buildPath(CampSystem::GetSectionTemplate($this->m_language->number, $this->m_publication->identifier, $this->m_issue->number, $this->m_section->number)); $keepParams = CampURITemplatePath::$m_sectionParameters; if ($p_preview) { $keepParams = array_merge(CampURI::$m_previewParameters, $keepParams); } $this->m_buildQueryArray = $this->getQueryArray($keepParams); $p_params = array(); break; case 'article': $this->m_buildPath = $this->buildPath(CampSystem::GetArticleTemplate($this->m_language->number, $this->m_publication->identifier, $this->m_issue->number, $this->m_section->number)); $keepParams = CampURITemplatePath::$m_articleParameters; if ($p_preview) { $keepParams = array_merge(CampURI::$m_previewParameters, $keepParams); } $this->m_buildQueryArray = $this->getQueryArray($keepParams); $p_params = array(); break; case 'template': $option = isset($p_params[0]) ? array_shift($p_params) : null; if (!is_null($option) && $this->isValidTemplate($option)) { $this->m_buildPath = $this->buildPath($option); } 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_buildPath)) { $template = $this->getTemplate(); if (empty($template)) { CampTemplate::singleton()->trigger_error('Invalid template in context'); return; } $this->m_buildPath = $this->buildPath($template); } if (is_null($this->m_buildQuery)) { $this->m_buildQuery = CampURI::QueryArrayToString($this->m_buildQueryArray); } $this->validateCache(true); } // fn buildURI
/** * */ public function getTemplate($p_templateIdOrName = null) { if (!is_null($this->m_template)) { return $this->m_template->name; } if (!empty($p_templateIdOrName)) { $tplObj = new Template($p_templateIdOrName); if (!$tplObj->exists()) { return null; } $template = $tplObj->getName(); } elseif (is_null($this->m_errorCode)) { $template = CampSystem::GetTemplate($this->language->number, $this->publication->identifier, $this->issue->number, $this->section->number, $this->article->number); } else { return null; } return $template; } // fn getTemplate
/** * */ public function getTemplate($p_templateIdOrName = null) { if (!is_null($this->m_template)) { return $this->m_template->name; } if (!empty($p_templateIdOrName)) { $tplObj = new MetaTemplate($p_templateIdOrName); if (!$tplObj->defined()) { $template = CampSystem::GetInvalidURLTemplate($this->publication->identifier, $this->issue->number, $this->language->number, !$this->m_preview); $template = substr($template, strlen($this->getThemePath())); } else { $template = $tplObj->name; } } elseif (is_null($this->m_errorCode)) { $template = CampSystem::GetTemplate($this->language->number, $this->publication->identifier, $this->issue->number, $this->section->number, $this->article->number); if (is_null($template)) { $template = CampSystem::GetInvalidURLTemplate($this->publication->identifier, $this->issue->number, $this->language->number, !$this->m_preview); } $template = substr($template, strlen($this->getThemePath())); } else { return null; } $filePath = CS_PATH_TEMPLATES . DIR_SEP . $this->getThemePath() . $template; if (!file_exists($filePath)) { return null; } return $template; }