/**
  * @copydoc Filter::process()
  * @param $input MetadataDescription
  */
 function &process(&$input)
 {
     // Start the XML document.
     $doc =& XMLCustomWriter::createDocument();
     // Create the root element.
     $root =& XMLCustomWriter::createElement($doc, 'xMetaDiss:xMetaDiss');
     // Add the XML namespace and schema.
     XMLCustomWriter::setAttribute($root, 'xmlns:xMetaDiss', 'http://www.d-nb.de/standards/xmetadissplus/');
     XMLCustomWriter::setAttribute($root, 'xmlns:cc', 'http://www.d-nb.de/standards/cc/');
     XMLCustomWriter::setAttribute($root, 'xmlns:dc', 'http://purl.org/dc/elements/1.1/');
     XMLCustomWriter::setAttribute($root, 'xmlns:dcmitype', 'http://purl.org/dc/dcmitype');
     XMLCustomWriter::setAttribute($root, 'xmlns:dcterms', 'http://purl.org/dc/terms/');
     XMLCustomWriter::setAttribute($root, 'xmlns:ddb', 'http://www.d-nb.de/standards/ddb/');
     XMLCustomWriter::setAttribute($root, 'xmlns:doi', 'http://www.d-nb.de/standards/doi/');
     XMLCustomWriter::setAttribute($root, 'xmlns:hdl', 'http://www.d-nb.de/standards/hdl/');
     XMLCustomWriter::setAttribute($root, 'xmlns:pc', 'http://www.d-nb.de/standards/pc/');
     XMLCustomWriter::setAttribute($root, 'xmlns', 'http://www.d-nb.de/standards/subject/');
     XMLCustomWriter::setAttribute($root, 'xmlns:thesis', 'http://www.ndltd.org/standards/metadata/etdms/1.0/');
     XMLCustomWriter::setAttribute($root, 'xmlns:urn', 'http://www.d-nb.de/standards/urn/');
     XMLCustomWriter::setAttribute($root, 'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
     XMLCustomWriter::setAttribute($root, 'xsi:schemaLocation', 'http://www.d-nb.de/standards/xmetadissplus/ http://www.d-nb.de/standards/xmetadissplus/xmetadissplus.xsd');
     // Prepare the XMDP document hierarchy from the XMDP MetadataDescription instance.
     $documentHierarchy =& $this->_buildDocumentHierarchy($doc, $root, $input);
     // Recursively join the document hierarchy into a single document.
     $root =& $this->_joinNodes($documentHierarchy);
     XMLCustomWriter::appendChild($doc, $root);
     // Retrieve the XML from the DOM.
     $output = XMLCustomWriter::getXml($doc);
     return $output;
 }
 /**
  * @copydoc Filter::process()
  * @param $input MetadataDescription
  */
 function &process(&$input)
 {
     // Start the XML document.
     $doc =& XMLCustomWriter::createDocument();
     // Create the root element.
     $root =& XMLCustomWriter::createElement($doc, 'mods');
     // Add the XML namespace and schema.
     XMLCustomWriter::setAttribute($root, 'version', '3.4');
     XMLCustomWriter::setAttribute($root, 'xmlns', 'http://www.loc.gov/mods/v3');
     XMLCustomWriter::setAttribute($root, 'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
     XMLCustomWriter::setAttribute($root, 'xsi:schemaLocation', 'http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd');
     // Prepare the MODS document hierarchy from the MODS MetadataDescription instance.
     $documentHierarchy =& $this->_buildDocumentHierarchy($doc, $root, $input);
     // Recursively join the document hierarchy into a single document.
     $root =& $this->_joinNodes($documentHierarchy);
     XMLCustomWriter::appendChild($doc, $root);
     // Retrieve the XML from the DOM.
     $output = XMLCustomWriter::getXml($doc);
     return $output;
 }
 /**
  * @copydoc Filter::process()
  * @param $input MetadataDescription
  */
 function &process(&$input)
 {
     // Start the XML document.
     $doc =& XMLCustomWriter::createDocument();
     // Create the root element.
     $root =& XMLCustomWriter::createElement($doc, 'epicur');
     // Add the XML namespace and schema.
     XMLCustomWriter::setAttribute($root, 'xmlns:epicur', 'urn:nbn:de:1111-2004033116');
     XMLCustomWriter::setAttribute($root, 'xmlns', 'urn:nbn:de:1111-2004033116');
     XMLCustomWriter::setAttribute($root, 'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
     XMLCustomWriter::setAttribute($root, 'xsi:schemaLocation', 'urn:nbn:de:1111-2004033116 http://www.persistent-identifier.de/xepicur/version1.0/xepicur.xsd');
     // Prepare the XMDP document hierarchy from the XMDP MetadataDescription instance.
     $documentHierarchy =& $this->_buildDocumentHierarchy($doc, $root, $input);
     // Recursively join the document hierarchy into a single document.
     $root =& $this->_joinNodes($documentHierarchy);
     XMLCustomWriter::appendChild($doc, $root);
     // Retrieve the XML from the DOM.
     $output = XMLCustomWriter::getXml($doc);
     return $output;
 }
Ejemplo n.º 4
0
 /**
  * Retrieve the XML for a batch of articles to be updated.
  *
  * @param $articles DBResultFactory The articles to be included
  *  in the list.
  * @param $totalCount integer The overall number of changed articles
  *  (not only the current batch).
  * @param $numDeleted integer An output parameter that returns
  *  the number of documents that will be deleted.
  *
  * @return string The XML ready to be consumed by the Solr data
  *  import service.
  */
 function _getArticleListXml(&$articles, $totalCount, &$numDeleted)
 {
     // Create the DOM document.
     $articleDoc =& XMLCustomWriter::createDocument();
     assert(is_a($articleDoc, 'DOMDocument'));
     // Create the root node.
     $articleList =& XMLCustomWriter::createElement($articleDoc, 'articleList');
     XMLCustomWriter::appendChild($articleDoc, $articleList);
     // Run through all articles in the batch and generate an
     // XML list for them.
     $numDeleted = 0;
     $publishedArticleDao = DAORegistry::getDAO('PublishedArticleDAO');
     /* @var $publishedArticleDao PublishedArticleDAO */
     foreach ($articles as $article) {
         if (!is_a($article, 'PublishedArticle')) {
             // Try to upgrade the article to a published article.
             $publishedArticle =& $publishedArticleDao->getPublishedArticleByArticleId($article->getId());
             if (is_a($publishedArticle, 'PublishedArticle')) {
                 unset($article);
                 $article =& $publishedArticle;
                 unset($publishedArticle);
             }
         }
         $journal = $this->_getJournal($article->getJournalId());
         // Check the publication state and subscription state of the article.
         if ($this->_isArticleAccessAuthorized($article)) {
             // Mark the article for update.
             $this->_addArticleXml($articleDoc, $article, $journal);
         } else {
             // Mark the article for deletion.
             $numDeleted++;
             $this->_addArticleXml($articleDoc, $article, $journal, true);
         }
         unset($journal, $article);
     }
     // Add the "has more" attribute so that the server knows
     // whether more batches may have to be pulled (useful for
     // pull indexing only).
     $hasMore = count($articles) < $totalCount ? 'yes' : 'no';
     $articleDoc->documentElement->setAttribute('hasMore', $hasMore);
     // Return XML.
     return XMLCustomWriter::getXml($articleDoc);
 }
Ejemplo n.º 5
0
 function solrQuery(&$xmlDoc)
 {
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $this->getSetting('solrUrl') . '/update');
     curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type:text/xml; charset=utf-8"));
     curl_setopt($ch, CURLOPT_POST, 1);
     curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
     curl_setopt($ch, CURLOPT_POSTFIELDS, XMLCustomWriter::getXml($xmlDoc));
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     $data = curl_exec($ch);
     if (curl_errno($ch)) {
         curl_close($ch);
         fatalError('CURL Error: ' . curl_error($ch));
     } else {
         curl_close($ch);
         $xmlParser = new XMLParser();
         $result = null;
         @($result =& $xmlParser->parseTextStruct($data, array("int")));
         if ($result) {
             foreach ($result as $nodeSet) {
                 foreach ($nodeSet as $node) {
                     if (isset($node['attributes']['name']) && $node['attributes']['name'] == 'status' && $node['value'] == 0) {
                         return true;
                     }
                 }
             }
         }
         return false;
     }
 }