/** * 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(); }
<?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);