Exemplo n.º 1
0
 /**
  * Transfer the data from a standard into a \Geissler\Converter\Model\Entries object.
  *
  * @param string $data
  * @return boolean
  */
 public function parse($data)
 {
     $reader = new \LibRIS\RISReader();
     $reader->parseString($data);
     $records = $reader->getRecords();
     if (is_array($records) === true && count($records) > 0) {
         $this->entries = new Entries();
         $authors = array('A1' => 'getAuthor', 'A2' => 'getEditor', 'A4' => 'getTranslator', 'AU' => 'getAuthor', 'TA' => 'getOriginalAuthor');
         $dates = array('Y1' => 'getIssued', 'PY' => 'getIssued', 'Y2' => 'getAccessed');
         $fields = array('N2' => 'setAbstract', 'ID ' => 'setCitationLabel', 'JA' => 'setCollectionTitle', 'JF' => 'setContainerTitle', 'JO' => 'setContainerTitleShort', 'J1' => 'setContainerTitleShort', 'J2' => 'setContainerTitleShort', 'SN' => 'setISBN', 'N1' => 'setNote', 'PB' => 'setPublisher', 'CY' => 'setPublisherPlace', 'T1' => 'setTitle', 'TI' => 'setTitle', 'TT' => 'setOriginalTitle', 'CT' => 'setTitle', 'UR' => 'setURL', 'VL' => 'setVolume', 'IS' => 'setIssue', 'T2' => 'setTitleSecondary', 'L1' => 'setPdf', 'L2 ' => 'setFullText', 'DB' => 'setDatabase', 'DO' => 'setDOI', 'ET' => 'setEdition', 'LA' => 'setLanguage', 'LB' => 'setLabel', 'NV' => 'setNumberOfVolumes', 'RI' => 'setReviewedTitle', 'SE' => 'setVersion', 'ST' => 'setTitleShort', 'RP' => 'setReprintEdition');
         foreach ($records as $record) {
             $entry = $this->getType(new Entry(), $record['TY'][0]);
             // authors
             foreach ($authors as $author => $method) {
                 if (isset($record[$author]) == true) {
                     foreach ($record[$author] as $value) {
                         $entry->{$method}()->setPerson($this->getPerson($value));
                     }
                 }
             }
             // pages
             if (isset($record['SP'][0]) == true) {
                 $entry->getPages()->setStart($record['SP'][0]);
             }
             if (isset($record['EP'][0]) == true) {
                 $entry->getPages()->setEnd($record['EP'][0]);
             }
             // dates
             foreach ($dates as $date => $method) {
                 if (isset($record[$date][0]) == true) {
                     $entry->{$method}()->setDate($this->getDate($record[$date][0]));
                 }
             }
             // keywords
             if (isset($record['KW']) == true) {
                 $entry->setKeyword(implode(', ', $record['KW']));
             }
             // fields
             foreach ($fields as $field => $setter) {
                 if (isset($record[$field][0]) == true && $record[$field][0] != '') {
                     $entry->{$setter}($record[$field][0]);
                 }
             }
             $this->entries->setEntry($entry);
         }
         return true;
     }
     return false;
 }
 static function __readRisFile($full_filename)
 {
     require_once "./Modules/Bibliographic/lib/LibRIS/src/LibRIS/RISReader.php";
     $ris_reader = new RISReader();
     $ris_reader->parseFile($full_filename);
     return $ris_reader->getRecords();
 }
Exemplo n.º 3
0
<?php

#require_once '../src/LibRIS.php';
$testdir = 'tests';
set_include_path(get_include_path() . PATH_SEPARATOR . './src/');
spl_autoload_register(function ($klass) {
    $parts = explode('\\', $klass);
    if ($parts[0] == 'LibRIS') {
        print "Called for {$klass}" . PHP_EOL;
        include implode(DIRECTORY_SEPARATOR, $parts) . '.php';
    }
});
use LibRIS\RISReader;
$ris = new RISReader();
$ris->parseFile($testdir . '/derik-test.ris');
$ris->printRecords();
$records = $ris->getRecords();
$rw = new \LibRIS\RISWriter();
print $rw->writeRecords($records);
// Regression against Banyuls.ris
$ris = new RISReader();
$ris->parseFile($testdir . '/Banyuls.ris');
$ris->printRecords();
$records = $ris->getRecords();
$rw = new \LibRIS\RISWriter();
print $rw->writeRecords($records);