You are here

biblio_xml.inc in Bibliography Module 6.2

Same filename and directory in other branches
  1. 7 includes/biblio_xml.inc

XML related functions for Drupal biblio module.

File

includes/biblio_xml.inc
View source
<?php

/**
 * @file
 * XML related functions for Drupal biblio module.
 */

/**
 * Generates XML output containing all biblio content and their revisions.
 *
 * @param $result
 *   // @todo: This parameter is never used.  Should it be removed?
 *
 * @return unknown_type
 *
 */
function biblio_xml_export($result) {
  set_time_limit(300);
  $nid = 0;
  $dom = new DOMDocument('1.0', 'UTF-8');
  $biblio_collection = $dom
    ->appendChild(new DOMElement('biblio_collection'));
  $biblio_collection
    ->setAttribute("Schema", "6010");
  $comment = $biblio_collection
    ->appendChild(new DOMComment('Generated by the Biblio module from Drupal (http://drupal.org/project/biblio)'));
  $db_result = db_query("SELECT nr.nid, nr.vid FROM {node_revisions} nr join node n on nr.nid=n.nid where n.type='biblio' order by nr.nid, nr.vid");
  while ($n = db_fetch_object($db_result)) {
    $node = node_load($n->nid, $n->vid);
    if ($n->nid == $nid) {
      $revision = $domnode
        ->appendChild(new DOMElement('revision'));
      $node = (array) $node;
      _biblio_AtoX($node, $dom, $revision);
    }
    else {
      $domnode = $biblio_collection
        ->appendChild(new DOMElement('node'));
      $node = (array) $node;
      _biblio_AtoX($node, $dom, $domnode);
    }
    $nid = $n->nid;
  }
  return $dom
    ->saveXML();
}

/**
 * Helper function to ...
 *
 * @param array $array
 *
 * @param $DOM
 *
 * @param $root
 *
 *
 * @return 
 *
 */
function _biblio_AtoX($array, $DOM = NULL, $root = NULL) {
  foreach ($array as $key => $value) {
    if ($key == 'biblio_contributors') {
      $name = 'contributor';
    }
    if (is_numeric($key)) {
      $key = 'c_' . $key;
    }
    if (is_array($value) && count($value)) {
      $subroot = $root
        ->appendChild($DOM
        ->createElement($key));
      _biblio_AtoX($value, $DOM, $subroot);
    }
    else {
      if (!empty($value)) {
        $root
          ->appendChild($DOM
          ->createElement($key, htmlspecialchars($value, ENT_QUOTES)));
      }
    }
  }
  return $DOM;
}

Functions

Namesort descending Description
biblio_xml_export Generates XML output containing all biblio content and their revisions.
_biblio_AtoX Helper function to ...