/** * Campsite set_current_issue function plugin * * Type: function * Name: set_current_issue * 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_current_issue($p_params, &$p_smarty) { // gets the context variable $campsite = $p_smarty->getTemplateVars('gimme'); $currentIssue = Issue::GetCurrentIssue($campsite->publication->identifier, $campsite->language->number); if (is_null($currentIssue)) { return false; } // if the current issue was already the context do nothing if ($campsite->issue->defined && $campsite->issue->number == $currentIssue->getIssueNumber()) { return; } $issueObj = new MetaIssue($campsite->publication->identifier, $campsite->language->number, $currentIssue->getIssueNumber()); if ($issueObj->defined) { $campsite->issue = $issueObj; } }
/** * Get issue * * @param string $name * * @return MetaIssue */ private function _getIssue($name, MetaLanguage $language, MetaPublication $publication) { $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $issueKey = $cacheService->getCacheKey(array('metaIssue', $name, $publication->identifier, $language->number), 'issue'); if ($cacheService->contains($issueKey)) { return $cacheService->fetch($issueKey); } $issueObj = Issue::GetCurrentIssue($publication->identifier, $language->number); if (!empty($name)) { $issueArray = Issue::GetIssues($publication->identifier, $language->number, null, $name, null, !$this->m_preview); if (is_array($issueArray) && sizeof($issueArray) == 1) { $issue = new MetaIssue($publication->identifier, $language->number, $issueArray[0]->getIssueNumber()); } else { throw new InvalidArgumentException("Invalid issue identifier in URL.", self::INVALID_ISSUE); } } else { $issue = new MetaIssue($publication->identifier, $language->number, $issueObj->getIssueNumber()); if (!$issue->defined()) { throw new InvalidArgumentException("No published issue was found.", self::INVALID_ISSUE); } } $cacheService->save($issueKey, $issue); return $issue; }
protected function isCurrent() { $currentIssue = Issue::GetCurrentIssue($this->m_dbObject->getPublicationId(), $this->m_dbObject->getLanguageId()); return !is_null($currentIssue) && $currentIssue->getIssueNumber() == $this->m_dbObject->getIssueNumber(); }
/** * Publish text item * * @param Newscoop\News\NewsItem $item * @return Article */ private function publishText(NewsItem $item) { $issueNumber = $this->settings->getPublicationId() ? \Issue::GetCurrentIssue($this->settings->getPublicationId())->getIssueNumber() : null; $type = $this->getArticleType($this->settings->getArticleTypeName()); $article = new \Article($this->findLanguageId($item->getContentMeta()->getLanguage())); $article->create($type->getTypeName(), $item->getContentMeta()->getHeadline(), $this->settings->getPublicationId(), $issueNumber, $this->settings->getSectionNumber()); $article->setKeywords($item->getContentMeta()->getSlugline()); $article->setCreationDate($item->getItemMeta()->getFirstCreated()->format(self::DATE_FORMAT)); $article->setPublishDate(null); $article->setProperty('time_updated', date_create('now')->format(self::DATE_FORMAT)); $this->setArticleData($article, $item); $article->commit(); return $article; }
/** * 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 issue * * @param string $name * @return MetaIssue */ private function _getIssue($name, MetaLanguage $language, MetaPublication $publication) { if (!empty($name)) { $issueArray = Issue::GetIssues($publication->identifier, $language->number, null, $name, null, !$this->m_preview); if (is_array($issueArray) && sizeof($issueArray) == 1) { $issue = new MetaIssue($publication->identifier, $language->number, $issueArray[0]->getIssueNumber()); } else { throw new InvalidArgumentException("Invalid issue identifier in URL.", self::INVALID_ISSUE); } } else { $issueObj = Issue::GetCurrentIssue($publication->identifier, $language->number); $issue = new MetaIssue($publication->identifier, $language->number, $issueObj->getIssueNumber()); if (!$issue->defined()) { throw new InvalidArgumentException("No published issue was found.", self::INVALID_ISSUE); } } return $issue; }
/** * Get issue * * @return int */ public function getIssue() { return (int) \Issue::GetCurrentIssue($this->getPublication())->getIssueNumber(); }