Наследование: extends MetaDbObject
Пример #1
0
 /**
  * Handler for the issue change event.
  *
  * @param MetaIssue $p_oldIssue
  * @param MetaIssue $p_newIssue
  */
 private function setIssueHandler(MetaIssue $p_oldIssue, MetaIssue $p_newIssue)
 {
     static $issueHandlerRunning = false;
     if (!$this->m_readonlyProperties['preview'] && !$p_newIssue->is_published && $p_newIssue->defined()) {
         return;
     }
     if ($issueHandlerRunning || $p_newIssue->same_as($p_oldIssue)) {
         return;
     }
     $issueHandlerRunning = true;
     if ($p_newIssue->defined() && !$this->getPublication()->same_as($p_newIssue->publication)) {
         $this->setPublicationHandler($this->getPublication(), $p_newIssue->publication);
     }
     if ($p_newIssue->defined() && !$this->getLanguage()->same_as($p_newIssue->language)) {
         $this->setLanguageHandler($this->getLanguage(), $p_newIssue->language);
     }
     $this->setSectionHandler($this->getSection(), self::$m_nullMetaSection);
     $this->m_readonlyProperties['url']->issue = $p_newIssue;
     $this->m_objects['issue'] = $p_newIssue;
     $issueHandlerRunning = false;
 }
Пример #2
0
 /**
  * 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;
 }
Пример #3
0
 /**
  * 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;
 }
Пример #4
0
 /**
  * Returns whether the template name given is a valid template resource.
  *
  * @param string $p_templateName
  *                               The name of the template from the URI path
  *
  * @return boolean
  *                 true on success, false on failure
  */
 protected function isValidTemplate($p_templateName)
 {
     if (is_null($this->m_issue) || !$this->m_issue->defined()) {
         return false;
     }
     $resourceId = new ResourceId(__CLASS__);
     $syncResService = $resourceId->getService(ISyncResourceService::NAME);
     return !is_null($syncResService->findByPath($this->getThemePath() . $p_templateName));
 }