RebAl-CLI/rebal.php
2016-09-27 17:14:48 +02:00

80 lines
No EOL
2 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: jaco
* Date: 28/04/16
* Time: 12.34
*/
$doc = <<<DOC
Rebal.
Usage:
rebal.php [<input> <output>]
Options:
-h --help Show this screen.
--version Show version.
DOC;
require('src/docopt.php');
require 'File/MARC.php';
$args = Docopt::handle($doc, array('version'=>'RebAl-CLI 0.1'));
//foreach ($args as $k=>$v)
// print $k.': '.$v.PHP_EOL;
$in = $args['<input>'];
$out = $args['<output>'];
$count = 0;
// Retrieve a set of MARC records from a file
$entries = new File_MARC($in);
// Prepare to write the new MARC file
$marc21_file = fopen($out, "wb");
// Iterate through the retrieved records
while ($record = $entries->next()) {
// Get the UNIMARC author field and iterate through subfields
// normalising the output if the Name is found without comma
$lead_authors = $record->getFields('700');
$sec_authors = $record->getFields('702');
foreach ($lead_authors as $auth) {
$a = $auth->getSubfield('a');
$b = $auth->getSubfield('b');
if ($b && strpos($b, ',')) {
//print $b;
//print "\n";
$count++;
} else if ($b) {
$bdata = $b->getData();
$b->setData(', ' . $bdata);
//print $b;
//print "\n";
}
if ($a) {
$adata= $a->getData();
$a->setData(ucwords(strtolower($adata)));
};
}
foreach ($sec_authors as $auth) {
$a = $auth->getSubfield('a');
$b = $auth->getSubfield('b');
if ($b && strpos($b, ',')) {
//print $b;
//print "\n";
$count++;
} else if ($b) {
$bdata = $b->getData();
$b->setData(', ' . $bdata);
//print $b;
//print "\n";
}
if ($a) {
$adata= $a->getData();
$a->setData(ucwords(strtolower($adata)));
};
}
fwrite($marc21_file, $record->toRaw());
//print "\n";
}
print $count;
fclose($marc21_file);
?>