80 lines
No EOL
2 KiB
PHP
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);
|
|
?>
|