You are here

function _ris_tagged_import in Bibliography Module 5

Same name and namespace in other branches
  1. 6 ris_parser.inc \_ris_tagged_import()

Copyright (C) 2006 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.

1 call to _ris_tagged_import()
_biblio_import in ./biblio.module

File

./ris_parser.inc, line 21

Code

function _ris_tagged_import(&$data, $node) {
  $incite = false;
  $node_array = array();
  foreach (explode("\n", $data) as $line) {

    //$line = fgets($handle);
    $line_len = strlen($line);
    if ($line_len > 3) {
      $start = strpos($line, "  - ");

      // There could be some unprintables at the beginning of the line so fine the location of the %
      if ($start !== false) {
        $tag = drupal_substr($line, $start - 2, 2);
        $value = trim(drupal_substr($line, $start + 4));
      }
      else {
        $value = $line;
      }
    }
    if ($line_len > 3) {

      // if this is not a blank line
      switch ($tag) {
        case 'ER':
          if (empty($node_array[$node_id]['title'])) {
            $node_array[$node_id]['title'] = t("Untitled");
          }
          $incite = false;
          break;
        case 'TY':
          $node_id = array_push($node_array, $node) - 1;
          $incite = true;
          switch ($value) {
            case "ART":

              // art work
              $node_array[$node_id]['biblio_type'] = 112;
              break;
            case "COMP":

              // computer program
              $node_array[$node_id]['biblio_type'] = 113;
              break;
            case "ADVS":

              //Audiovisual material
              $node_array[$node_id]['biblio_type'] = 114;
              break;
            case "HEAR":

              // Hearing
              $node_array[$node_id]['biblio_type'] = 115;
              break;
            case "CASE":

              // Case
              $node_array[$node_id]['biblio_type'] = 116;
              break;
            case "BILL":

              // Bill / resolution
              $node_array[$node_id]['biblio_type'] = 117;
              break;
            case "JOUR":

              // journal
              $node_array[$node_id]['biblio_type'] = 102;
              break;
            case "CONF":

              // conference proceedings
              $node_array[$node_id]['biblio_type'] = 103;
              break;
            case "NEWS":

              // newspaper
              $node_array[$node_id]['biblio_type'] = 105;
              break;
            case "MGZN":

              // magazine article
              $node_array[$node_id]['biblio_type'] = 106;
              break;
            case "ICOMM":

              // internet communication
              $node_array[$node_id]['biblio_type'] = 107;
              break;
            case "RPRT":

              // report
              $node_array[$node_id]['biblio_type'] = 109;
              break;
            case "MPCT":

              //motion picture
              $node_array[$node_id]['biblio_type'] = 110;
              break;
            case "BOOK":

              // book
              $node_array[$node_id]['biblio_type'] = 100;
              break;
            case "CHAP":

              // book chapter
              $node_array[$node_id]['biblio_type'] = 101;
              break;
            case "THES":

              // thesis
              $node_array[$node_id]['biblio_type'] = 108;
              break;
            case "PAT":

              // patent
              $node_array[$node_id]['biblio_type'] = 119;
              break;
            case "PCOMM":

              // Personal communication
              $node_array[$node_id]['biblio_type'] = 120;
              break;
            case "MAP":

              // map
              $node_array[$node_id]['biblio_type'] = 122;
              break;
            case "DATA":

              // database
              $node_array[$node_id]['biblio_type'] = 125;
              break;
            case "STAT":

              // statute
              $node_array[$node_id]['biblio_type'] = 125;
              break;
            case "GEN":
            default:
              $node_array[$node_id]['biblio_type'] = 129;
              break;
          }
          break;
        case 'A1':
        case 'AU':

          // $columns .= ", author";
          if ($node_array[$node_id]['biblio_authors']) {
            $node_array[$node_id]['biblio_authors'] .= "; ";
          }
          $node_array[$node_id]['biblio_authors'] .= $value;
          break;
        case 'JF':
          $node_array[$node_id]['biblio_secondary_title'] = $value;
          break;
        case 'CY':
          $node_array[$node_id]['biblio_place_published'] = $value;
          break;
        case 'Y1':
        case 'PY':
          $node_array[$node_id]['biblio_year'] = ($end = strpos($value, "/")) ? substr($value, 0, $end) : $value;
          $node_array[$node_id]['biblio_date'] = $value;
          break;
        case 'A2':
        case 'ED':
          if ($node_array[$node_id]['biblio_secondary_authors']) {
            $node_array[$node_id]['biblio_secondary_authors'] .= "; ";
          }
          $node_array[$node_id]['biblio_secondary_authors'] .= $value;
          break;
        case 'PB':
          $node_array[$node_id]['biblio_publisher'] = $value;
          break;
        case 'T2':
          $node_array[$node_id]['biblio_secondary_title'] = $value;
          break;
        case 'KW':
          $node_array[$node_id]['biblio_keywords'] .= $node_array[$node_id]['biblio_keywords'] ? ", {$value}" : $value;
          break;
        case 'IS':
        case 'CP':
          $node_array[$node_id]['biblio_issue'] = $value;
          break;
        case 'SP':
        case 'EP':
          $node_array[$node_id]['biblio_pages'] .= $tag == "SP" ? $value : " - " . $value;
          break;
        case 'T3':
          $node_array[$node_id]['biblio_tertiary_title'] = $value;
          break;
        case 'TI':
        case 'T1':
        case 'CT':
        case 'BT':
          $node_array[$node_id]['title'] = $value;
          break;
        case 'UR':
          $node_array[$node_id]['biblio_url'] = $value;
          break;
        case 'VL':
          $node_array[$node_id]['biblio_volume'] = $value;
          break;
        case 'N2':
          $node_array[$node_id]['biblio_abst_e'] .= $value;
          break;
        case 'A3':
          if ($node_array[$node_id]['biblio_tertiary_authors']) {
            $node_array[$node_id]['biblio_tertiary_authors'] .= "; ";
          }
          $node_array[$node_id]['biblio_tertiary_authors'] .= $value;
          break;
        case 'N1':
          $node_array[$node_id]['biblio_notes'] .= $value;
          break;
        case 'U1':

          // CUSTOM 1
          $node_array[$node_id]['biblio_custom1'] = $value;
          break;
        case 'U2':

          // CUSTOM 2
          $node_array[$node_id]['biblio_custom2'] = $value;
          break;
        case 'U3':

          // CUSTOM 3
          $node_array[$node_id]['biblio_custom3'] = $value;
          break;
        case 'U4':

          // CUSTOM 4
          $node_array[$node_id]['biblio_custom4'] = $value;
          break;
        case 'U5':

          // CUSTOM 5
          $node_array[$node_id]['biblio_custom5'] = $value;
          break;
        case 'SN':
          $node_array[$node_id]['biblio_isbn'] = $value;
          break;
        default:
          break;
      }

      //end switch
    }
    else {

      //$incite=false;
    }

    // end if ($start !== false)
  }

  // end while
  $node_ids = _biblio_save_imported_nodes($node_array);
  return $node_ids;
}