/** * @see DOIExportDom::retrievePublicationObjects() */ function &retrievePublicationObjects(&$object) { // Initialize local variables. $nullVar = null; $journal =& $this->getJournal(); $cache =& $this->getCache(); // Retrieve basic OJS objects. $publicationObjects = parent::retrievePublicationObjects($object); if (is_a($object, 'SuppFile')) { assert(isset($publicationObjects['article'])); $cache->add($object, $publicationObjects['article']); $publicationObjects['suppFile'] =& $object; } // Retrieve additional related objects. // For articles: Retrieve all galleys and supp files of the article: if (is_a($object, 'PublishedArticle')) { $article =& $publicationObjects['article']; $publicationObjects['galleysByArticle'] =& $this->retrieveGalleysByArticle($article); $publicationObjects['suppFilesByArticle'] =& $this->_retrieveSuppFilesByArticle($article); } // For issues: Retrieve all articles of the issue: if (is_a($object, 'Issue')) { // Articles by issue. assert(isset($publicationObjects['issue'])); $issue =& $publicationObjects['issue']; $publicationObjects['articlesByIssue'] =& $this->retrieveArticlesByIssue($issue); } return $publicationObjects; }
/** * Retrieve all the OJS publication objects containing the * data required to generate the given O4DOI schema. * * @param $object Issue|PublishedArticle|ArticleGalley The object to export. * * @return array An array with the required OJS objects. */ function &retrievePublicationObjects(&$object) { // Initialize local variables. $nullVar = null; $journal =& $this->getJournal(); $cache =& $this->getCache(); // Retrieve basic OJS objects. $publicationObjects = parent::retrievePublicationObjects($object); // Retrieve additional related objects. // For articles and galleys: Retrieve all galleys of the article: if (is_a($object, 'PublishedArticle') || is_a($object, 'ArticleGalley')) { assert(isset($publicationObjects['article'])); $publicationObjects['galleysByArticle'] =& $this->retrieveGalleysByArticle($publicationObjects['article']); } // For issues: Retrieve all articles and galleys of the issue: if (is_a($object, 'Issue')) { // Articles by issue. assert(isset($publicationObjects['issue'])); $issue =& $publicationObjects['issue']; $publicationObjects['articlesByIssue'] =& $this->retrieveArticlesByIssue($issue); // Galleys by issue. $issueId = $issue->getId(); if (!$cache->isCached('galleysByIssue', $issueId)) { foreach ($publicationObjects['articlesByIssue'] as $article) { $this->retrieveGalleysByArticle($article); unset($article); } $cache->markComplete('galleysByIssue', $issueId); } $publicationObjects['galleysByIssue'] =& $cache->get('galleysByIssue', $issueId); } return $publicationObjects; }
/** * @see DOIExportDom::retrievePublicationObjects() */ function &retrievePublicationObjects(&$object) { // Initialize local variables. $nullVar = null; $journal =& $this->getJournal(); $cache =& $this->getCache(); // Retrieve basic OJS objects. $publicationObjects = parent::retrievePublicationObjects($object); // Retrieve additional related objects. // For articles: no additional objects needed for CrossRef: // galleys are not considered and // supp files will be retrieved when crating the XML // Note: article issue is already retrieved by the parent method if (is_a($object, 'PublishedArticle')) { $article =& $publicationObjects['article']; } // For issues: Retrieve all articles of the issue: if (is_a($object, 'Issue')) { // Articles by issue. assert(isset($publicationObjects['issue'])); $issue =& $publicationObjects['issue']; $publicationObjects['articlesByIssue'] =& $this->retrieveArticlesByIssue($issue); } return $publicationObjects; }