You are here

function _biblio_ris_parse_line in Bibliography Module 7

Same name and namespace in other branches
  1. 6.2 modules/RIS/biblio_ris.module \_biblio_ris_parse_line()
  2. 7.2 modules/RIS/biblio_ris.module \_biblio_ris_parse_line()
2 calls to _biblio_ris_parse_line()
_biblio_ris_import in modules/RIS/biblio_ris.module
_biblio_ris_import_string in modules/RIS/biblio_ris.module

File

modules/RIS/biblio_ris.module, line 362

Code

function _biblio_ris_parse_line($tag, $data, $node, &$unmapped) {
  switch ($tag) {
    case 'TY':
      $node->biblio_type = _biblio_ris_type_map($data);
      break;
    case 'A1':
    case 'AU':
      $node->biblio_contributors[] = array(
        'name' => $data,
        'auth_category' => 1,
        'auth_type' => _biblio_get_auth_type(1, $node->biblio_type),
      );
      break;
    case 'DA':
      if (!isset($node->biblio_year) || empty($node->biblio_year)) {
        $node->biblio_year = ($end = strpos($data, "/")) ? substr($data, 0, $end) : $data;
      }
      $node->biblio_date = $data;
      break;
    case 'Y1':
    case 'PY':
      if (!isset($node->biblio_year) || empty($node->biblio_year)) {
        $node->biblio_year = ($end = strpos($data, "/")) ? substr($data, 0, $end) : $data;
      }
      if (!isset($node->biblio_date) || empty($node->biblio_date)) {
        $node->biblio_date = $data;
      }
      break;
    case 'A2':
    case 'ED':
      $node->biblio_contributors[] = array(
        'name' => $data,
        'auth_category' => 2,
        'auth_type' => _biblio_get_auth_type(2, $node->biblio_type),
      );
      break;
    case 'KW':
      $node->biblio_keywords[] = $data;
      break;
    case 'SP':
    case 'EP':
      if (!isset($node->biblio_pages)) {
        $node->biblio_pages = '';
      }
      $node->biblio_pages .= $tag == "SP" ? $data : " - " . $data;
      break;
    case 'A3':
      $node->biblio_contributors[] = array(
        'name' => $data,
        'auth_category' => 5,
        'auth_type' => _biblio_get_auth_type(5, $node->biblio_type),
      );
      break;
    case 'BT':
      if ($node->biblio_type == 100) {
        $node->title = $data;
      }
      else {
        $node->biblio_secondary_title = $data;
      }
      break;
    default:
      if ($field = _biblio_ris_field_map($tag)) {
        if (!isset($node->{$field})) {
          $node->{$field} = '';
        }
        $node->{$field} .= $data;
      }
      else {
        if (!in_array($tag, $unmapped)) {
          $unmapped[] = $tag;
        }
      }
  }
}