protected function getDefaultSiteName() { $defaultAlias = new Alias($this->m_dbObject->getDefaultAliasId()); if (!$defaultAlias->exists()) { return null; } $subdir = CampConfig::singleton()->getSetting('SUBDIR'); return $defaultAlias->getName() . $subdir; }
/** * Campsite set_publication function plugin * * Type: function * Name: set_publication * Purpose: * * @param array * $p_params[name] The Name of the publication to be set * $p_params[identifier] The Identifier of the publication to be set * @param object * $p_smarty The Smarty object */ function smarty_function_set_publication($p_params, &$p_smarty) { // gets the context variable $campsite = $p_smarty->getTemplateVars('gimme'); if (isset($p_params['identifier'])) { $attrName = 'identifier'; $attrValue = $p_params['identifier']; $publicationId = intval($p_params['identifier']); } elseif (isset($p_params['name'])) { $attrName = 'name'; $attrValue = $p_params['name']; $publications = Publication::GetPublications($p_params['name']); if (!empty($publications)) { $publicationId = $publications[0]->getPublicationId(); } else { $campsite->publication->trigger_invalid_value_error($attrName, $attrValue, $p_smarty); return false; } } elseif (isset($p_params['alias'])) { $aliasObj = new Alias($p_params['alias']); if (!$aliasObj->exists()) { $campsite->publication->trigger_invalid_value_error($attrName, $attrValue, $p_smarty); return false; } $publicationId = $aliasObj->getPublicationId(); } else { $property = array_shift(array_keys($p_params)); CampTemplate::singleton()->trigger_error("invalid parameter '{$property}' in set_publication"); return false; } if ($campsite->publication->defined && $campsite->publication->identifier == $publicationId) { return; } $publicationObj = new MetaPublication($publicationId); if ($publicationObj->defined) { $campsite->publication = $publicationObj; } else { $campsite->publication->trigger_invalid_value_error($attrName, $attrValue, $p_smarty); } }
/** * Returns the appropiate URI instance. * * @param string $p_uri * The URI to work with * @return CampURI */ public static function GetURIInstance() { static $uriInstance = null; if (!is_null($uriInstance)) { return clone($uriInstance); } $alias = new Alias($_SERVER['HTTP_HOST']); if ($alias->exists()) { $publication = new Publication($alias->getPublicationId()); $urlType = $publication->getUrlTypeId(); } // sets url type to default if necessary if (!isset($urlType)) { $config = self::GetConfigInstance(); $urlType = $config->getSetting('campsite.url_default_type'); } // instanciates the corresponding URI object switch ($urlType) { case 1: $uriInstance = new CampURITemplatePath(); break; case 2: $uriInstance = new CampURIShortNames(); break; } return $uriInstance; } // fn GetURI
/** * Sets the URL values. * * Algorithm: * - identify object (e.g.: publication, language, issue, section, article) * - object defined * - valid object? * - yes: set * - no: return error * - object undefined * - has default value? * - yes: set * - no: * - object mandatory? * - yes: return error * - no: continue * * @return PEAR_Error * */ private function setURL() { $this->setQueryVar('acid', null); $this->m_publication = null; $this->m_language = null; $this->m_issue = null; $this->m_section = null; $this->m_article = null; // gets the publication object based on site name (URI host) $alias = preg_replace('/^'.$this->getScheme().':\/\//', '', $this->getBase()); $aliasObj = new Alias($alias); if ($aliasObj->exists()) { $this->m_publication = new MetaPublication($aliasObj->getPublicationId()); } if (is_null($this->m_publication) || !$this->m_publication->defined()) { return new PEAR_Error("Invalid site name '$alias' in URL.", self::INVALID_SITE_NAME); } // reads parameters values if any $params = str_replace($this->m_config->getSetting('SUBDIR'), '', $this->getPath()); $cParams = explode('/', trim($params, '/')); $cParamsSize = sizeof($cParams); if ($cParamsSize >= 1) { $cLangCode = $cParams[0]; } if ($cParamsSize >= 2) { $cIssueSName = $cParams[1]; } if ($cParamsSize >= 3) { $cSectionSName = $cParams[2]; } if ($cParamsSize >= 4) { $cArticleSName = $cParams[3]; } // gets the language identifier and sets the language code if (!empty($cLangCode)) { $langArray = Language::GetLanguages(null, $cLangCode); if (is_array($langArray) && sizeof($langArray) == 1) { $this->m_language = new MetaLanguage($langArray[0]->getLanguageId()); } } else { $this->m_language = new MetaLanguage($this->m_publication->default_language->number); } if (is_null($this->m_language) || !$this->m_language->defined()) { return new PEAR_Error("Invalid language identifier in URL.", self::INVALID_LANGUAGE); } // gets the issue number and sets the issue short name if (!empty($cIssueSName)) { $publishedOnly = !$this->m_preview; $issueArray = Issue::GetIssues($this->m_publication->identifier, $this->m_language->number, null, $cIssueSName, null, $publishedOnly); if (is_array($issueArray) && sizeof($issueArray) == 1) { $this->m_issue = new MetaIssue($this->m_publication->identifier, $this->m_language->number, $issueArray[0]->getIssueNumber()); } else { return new PEAR_Error("Invalid issue identifier in URL.", self::INVALID_ISSUE); } } else { $issueObj = Issue::GetCurrentIssue($this->m_publication->identifier, $this->m_language->number); $this->m_issue = new MetaIssue($this->m_publication->identifier, $this->m_language->number, $issueObj->getIssueNumber()); if (!$this->m_issue->defined()) { return new PEAR_Error("No published issue was found.", self::INVALID_ISSUE); } } // gets the section number and sets the section short name if (!empty($cSectionSName)) { $sectionArray = Section::GetSections($this->m_publication->identifier, $this->m_issue->number, $this->m_language->number, $cSectionSName); if (is_array($sectionArray) && sizeof($sectionArray) == 1) { $this->m_section = new MetaSection($this->m_publication->identifier, $this->m_issue->number, $this->m_language->number, $sectionArray[0]->getSectionNumber()); } else { return new PEAR_Error("Invalid section identifier in URL.", self::INVALID_SECTION); } } // gets the article number and sets the article short name if (!empty($cArticleSName)) { // we pass article short name as article identifier as they are // the same for Campsite, we will have to change this in the future $articleObj = new Article($this->m_language->number, $cArticleSName); if (!$articleObj->exists() || (!$this->m_preview && !$articleObj->isPublished())) { return new PEAR_Error("Invalid article identifier in URL.", self::INVALID_ARTICLE); } $this->m_article = new MetaArticle($this->m_language->number, $articleObj->getArticleNumber()); } $templateId = CampRequest::GetVar(CampRequest::TEMPLATE_ID); $this->m_template = new MetaTemplate($this->getTemplate($templateId)); if (!$this->m_template->defined()) { return new PEAR_Error("Invalid template in URL or no default template specified.", self::INVALID_TEMPLATE); } $this->m_validURI = true; $this->validateCache(false); } // fn setURL
/** * Sets the URL values. * * @return void */ private function setURL() { $this->setQueryVar('tpl', null); $this->setQueryVar('acid', null); $this->m_publication = null; $this->m_language = null; $this->m_issue = null; $this->m_section = null; $this->m_article = null; // gets the publication object based on site name (URI host) $alias = preg_replace('/^'.$this->getScheme().':\/\//', '', $this->getBase()); $aliasObj = new Alias($alias); if ($aliasObj->exists()) { $this->m_publication = new MetaPublication($aliasObj->getPublicationId()); } if (is_null($this->m_publication) || !$this->m_publication->defined()) { return new PEAR_Error("Invalid site name '$alias' in URL.", self::INVALID_SITE_NAME); } // sets the language identifier if (CampRequest::GetVar(CampRequest::LANGUAGE_ID) > 0) { $this->m_language = new MetaLanguage(CampRequest::GetVar(CampRequest::LANGUAGE_ID)); } else { $this->m_language = new MetaLanguage($this->m_publication->default_language->number); } if (!$this->m_language->defined()) { return new PEAR_Error("Invalid language identifier in URL.", self::INVALID_LANGUAGE); } // sets the issue number if (CampRequest::GetVar(CampRequest::ISSUE_NR) > 0) { $this->m_issue = new MetaIssue($this->m_publication->identifier, $this->m_language->number, CampRequest::GetVar(CampRequest::ISSUE_NR)); } else { $issueObj = Issue::GetCurrentIssue($this->m_publication->identifier, $this->m_language->number); $this->m_issue = new MetaIssue($this->m_publication->identifier, $this->m_language->number, $issueObj->getIssueNumber()); } if (!$this->m_issue->defined()) { return new PEAR_Error("Invalid issue identifier in URL.", self::INVALID_ISSUE); } // sets the section if any if (CampRequest::GetVar(CampRequest::SECTION_NR) > 0) { $this->m_section = new MetaSection($this->m_publication->identifier, $this->m_issue->number, $this->m_language->number, CampRequest::GetVar(CampRequest::SECTION_NR)); if (!$this->m_section->defined()) { return new PEAR_Error("Invalid section identifier in URL.", self::INVALID_SECTION); } } // sets the article if any if (CampRequest::GetVar(CampRequest::ARTICLE_NR) > 0) { $this->m_article = new MetaArticle($this->m_language->number, CampRequest::GetVar(CampRequest::ARTICLE_NR)); if (!$this->m_article->defined()) { return new PEAR_Error("Invalid article identifier in URL.", self::INVALID_ARTICLE); } } $this->m_template = new MetaTemplate($this->getTemplate($this->readTemplate())); if (!$this->m_template->defined()) { return new PEAR_Error("Invalid template in URL or no default template specified.", self::INVALID_TEMPLATE); } $this->m_validURI = true; $this->validateCache(false); } // fn setURL
/** * Get publication by site name * * @return MetaPublication */ private function _getPublication() { $alias = preg_replace('/^' . $this->getScheme() . ':\\/\\//', '', $this->getBase()); $aliasObj = new Alias($alias); if ($aliasObj->exists()) { $publication = new MetaPublication($aliasObj->getPublicationId()); } if (empty($publication) || !$publication->defined()) { throw new InvalidArgumentException("Invalid site name '{$alias}' in URL.", self::INVALID_SITE_NAME); } return $publication; }
protected function getDefaultSiteName() { $publicationService = \Zend_Registry::get('container')->getService('newscoop.publication_service'); if ($publicationService->getPublicationAlias()) { if ($publicationService->getPublicationAlias()->getId() == $this->m_dbObject->getDefaultAliasId()) { return $publicationService->getPublicationAlias()->getName(); } } $defaultAlias = new Alias($this->m_dbObject->getDefaultAliasId()); if (!$defaultAlias->exists()) { return null; } return $defaultAlias->getName(); }