View source
<?php
function en7_startElement($parser, $name, $attrs) {
global $node, $element, $auth_count, $keyword_count;
switch ($name) {
case 'RECORD':
$node = array();
$node['biblio_type'] = 102;
$element = '';
break;
case 'AUTHORS':
case 'SECONDARY_AUTHORS':
case 'TERTIARY_AUTHORS':
case 'SUBSIDIARY_AUTHORS':
$auth_count = 0;
break;
case 'KEYWORDS':
$keyword_count = 0;
break;
default:
$element = $name;
}
}
function en7_endElement($parser, $name) {
global $node, $element, $terms, $batch, $session_id, $nids, $auth_count, $keyword_count;
switch ($name) {
case 'RECORD':
if (!empty($terms)) {
if (!isset($node['taxonomy'])) {
$node['taxonomy'] = array();
}
$node['taxonomy'] = array_merge($terms, $node['taxonomy']);
}
$nid = biblio_save_node($node, $batch, $session_id);
if (isset($nid)) {
$nids[] = $nid;
}
break;
case 'AUTHOR':
case 'SECONDARY_AUTHOR':
case 'TERTIARY_AUTHOR':
case 'SUBSIDIARY_AUTHOR':
$auth_category = en7_field_map($name);
$node['biblio_contributors'][$auth_category][$auth_count]['auth_type'] = _biblio_get_auth_type($auth_category, $node['biblio_type']);
$auth_count++;
break;
case 'KEYWORD':
$keyword_count++;
break;
default:
}
$element = '';
}
function en7_characterData($parser, $data) {
global $node, $element, $auth_count, $keyword_count;
if (trim($data)) {
switch ($element) {
case 'REFERENCE_TYPE':
$node['biblio_type'] = en7_type_map($data);
break;
case 'AUTHOR':
$node['biblio_contributors'][1][$auth_count]['name'] .= $data;
break;
case 'SECONDARY_AUTHOR':
$node['biblio_contributors'][2][$auth_count]['name'] .= $data;
break;
case 'TERTIARY_AUTHOR':
$node['biblio_contributors'][3][$auth_count]['name'] .= $data;
break;
case 'SUBSIDIARY_AUTHOR':
$node['biblio_contributors'][4][$auth_count]['name'] .= $data;
break;
case 'KEYWORD':
$node['biblio_keywords'][$keyword_count] .= $data;
break;
case 'TITLE':
$node['title'] .= $data;
break;
default:
if ($field = en7_field_map(trim($element))) {
$node[$field] .= $data;
}
}
}
}
function en7_field_map($enfield) {
static $fmap = array();
if (empty($fmap)) {
module_load_include('inc', 'biblio', 'biblio.type.mapper');
$fmap = biblio_get_field_map('endnote7');
}
return !empty($fmap[$enfield]) ? $fmap[$enfield] : '';
}
function en7_type_map($entype) {
static $map = array();
if (empty($map)) {
module_load_include('inc', 'biblio', 'biblio.type.mapper');
$map = biblio_get_type_map('endnote7');
}
return isset($map[$entype]) ? $map[$entype] : 129;
}