view modules/biblio/includes/biblio_xml.inc @ 6:a75ead649730

added biblio, admin_menu and reference modules
author danieleb <danielebarchiesi@me.com>
date Fri, 20 Sep 2013 11:18:21 +0100
parents
children
line wrap: on
line source
<?php
/**
 *
 *   Copyright (C) 2006-2011  Ron Jerome
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License along
 *   with this program; if not, write to the Free Software Foundation, Inc.,
 *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 ****************************************************************************/


/**
 * @param $result
 * @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_revision} 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;
      AtoX($node, $dom, $revision);
    }else{
      $domnode = $biblio_collection->appendChild(new DOMElement('node'));
      $node = (array)$node;
      AtoX($node, $dom, $domnode);
    }
    $nid = $n->nid;

  }
  return $dom->saveXML();
}

function 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));
      AtoX($value, $DOM, $subroot);
    }
    else {
      if (!empty($value)) {
        $root->appendChild($DOM->createElement($key, htmlspecialchars($value, ENT_QUOTES)));
      }
    }
  }

  return $DOM;
}