Streamline formatting of update.php
This commit is contained in:
parent
4bbcdd190a
commit
50075d05b8
77
update.php
77
update.php
|
@ -31,178 +31,101 @@ require_once('oai2config.php');
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function format($text, $format = '') {
|
function format($text, $format = '') {
|
||||||
|
|
||||||
switch ($format) {
|
switch ($format) {
|
||||||
|
|
||||||
case 'green':
|
case 'green':
|
||||||
$text = "\033[0;92m$text\033[0m";
|
$text = "\033[0;92m$text\033[0m";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'red':
|
case 'red':
|
||||||
$text = "\033[1;91m$text\033[0m";
|
$text = "\033[1;91m$text\033[0m";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $text;
|
return $text;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check mandatory cli arguments
|
// Check mandatory cli arguments
|
||||||
if (empty($argc) || $argc != 3) {
|
if (empty($argc) || $argc != 3) {
|
||||||
|
|
||||||
echo "Usage:\n";
|
echo "Usage:\n";
|
||||||
echo " php update.php [sourceDir] [metadataPrefix]\n";
|
echo " php update.php [sourceDir] [metadataPrefix]\n";
|
||||||
echo "\n";
|
echo "\n";
|
||||||
echo "Example:\n";
|
echo "Example:\n";
|
||||||
echo " php update.php /tmp/import oai_dc\n";
|
echo " php update.php /tmp/import oai_dc\n";
|
||||||
echo "\n";
|
echo "\n";
|
||||||
|
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
list(, $sourceDir, $metadataPrefix) = $argv;
|
list(, $sourceDir, $metadataPrefix) = $argv;
|
||||||
|
|
||||||
// Check metadataPrefix
|
// Check metadataPrefix
|
||||||
if (empty($config['metadataFormats'][$metadataPrefix])) {
|
if (empty($config['metadataFormats'][$metadataPrefix])) {
|
||||||
|
|
||||||
echo "Error: metadataPrefix $metadataPrefix not defined in oai2config.php\n";
|
echo "Error: metadataPrefix $metadataPrefix not defined in oai2config.php\n";
|
||||||
|
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check sourceDir permissions
|
// Check sourceDir permissions
|
||||||
if (!is_dir($sourceDir) || !is_readable($sourceDir)) {
|
if (!is_dir($sourceDir) || !is_readable($sourceDir)) {
|
||||||
|
|
||||||
echo "Error: $sourceDir not readable\n";
|
echo "Error: $sourceDir not readable\n";
|
||||||
|
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$sourceDir = rtrim($sourceDir, '/').'/';
|
$sourceDir = rtrim($sourceDir, '/').'/';
|
||||||
|
|
||||||
// Prepend script's path if dataDir is not an absolute path
|
// Prepend script's path if dataDir is not an absolute path
|
||||||
$dataDir = rtrim($config['dataDirectory'], '/').'/'.$metadataPrefix.'/';
|
$dataDir = rtrim($config['dataDirectory'], '/').'/'.$metadataPrefix.'/';
|
||||||
|
|
||||||
if (strpos($dataDir, '/') !== 0) {
|
if (strpos($dataDir, '/') !== 0) {
|
||||||
|
|
||||||
$dataDir = dirname(__FILE__).'/'.$dataDir;
|
$dataDir = dirname(__FILE__).'/'.$dataDir;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check dataDir permissions
|
// Check dataDir permissions
|
||||||
if (!is_dir($dataDir) || !is_writable($dataDir)) {
|
if (!is_dir($dataDir) || !is_writable($dataDir)) {
|
||||||
|
|
||||||
echo "Error: $dataDir not writable\n";
|
echo "Error: $dataDir not writable\n";
|
||||||
|
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Alright, let's start!
|
// Alright, let's start!
|
||||||
echo "Updating $dataDir from $sourceDir\n";
|
echo "Updating $dataDir from $sourceDir\n";
|
||||||
|
|
||||||
$todo = array ();
|
$todo = array ();
|
||||||
|
|
||||||
$error = false;
|
$error = false;
|
||||||
|
|
||||||
$oldFiles = glob($dataDir.'*.xml');
|
$oldFiles = glob($dataDir.'*.xml');
|
||||||
|
|
||||||
foreach ($oldFiles as $oldFile) {
|
foreach ($oldFiles as $oldFile) {
|
||||||
|
|
||||||
$todo[pathinfo($oldFile, PATHINFO_FILENAME)] = 'delete';
|
$todo[pathinfo($oldFile, PATHINFO_FILENAME)] = 'delete';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$newFiles = glob($sourceDir.'*.xml');
|
$newFiles = glob($sourceDir.'*.xml');
|
||||||
|
|
||||||
foreach ($newFiles as $newFile) {
|
foreach ($newFiles as $newFile) {
|
||||||
|
|
||||||
$todo[pathinfo($newFile, PATHINFO_FILENAME)] = 'update';
|
$todo[pathinfo($newFile, PATHINFO_FILENAME)] = 'update';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($todo as $identifier => $task) {
|
foreach ($todo as $identifier => $task) {
|
||||||
|
|
||||||
echo " Checking record $identifier ... ";
|
echo " Checking record $identifier ... ";
|
||||||
|
|
||||||
if ($task === 'update') {
|
if ($task === 'update') {
|
||||||
|
|
||||||
if (!file_exists($dataDir.$identifier.'.xml')) {
|
if (!file_exists($dataDir.$identifier.'.xml')) {
|
||||||
|
|
||||||
// Add file
|
// Add file
|
||||||
if (copy($sourceDir.$identifier.'.xml', $dataDir.$identifier.'.xml')) {
|
if (copy($sourceDir.$identifier.'.xml', $dataDir.$identifier.'.xml')) {
|
||||||
|
|
||||||
echo format('added', 'green')."\n";
|
echo format('added', 'green')."\n";
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
echo format('addition failed', 'red')."\n";
|
echo format('addition failed', 'red')."\n";
|
||||||
|
|
||||||
$error = true;
|
$error = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} elseif (md5_file($sourceDir.$identifier.'.xml') !== md5_file($dataDir.$identifier.'.xml')) {
|
} elseif (md5_file($sourceDir.$identifier.'.xml') !== md5_file($dataDir.$identifier.'.xml')) {
|
||||||
|
|
||||||
// Replace file
|
// Replace file
|
||||||
if (copy($sourceDir.$identifier.'.xml', $dataDir.$identifier.'.xml')) {
|
if (copy($sourceDir.$identifier.'.xml', $dataDir.$identifier.'.xml')) {
|
||||||
|
|
||||||
echo format('updated', 'green')."\n";
|
echo format('updated', 'green')."\n";
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
echo format('update failed', 'red')."\n";
|
echo format('update failed', 'red')."\n";
|
||||||
|
|
||||||
$error = true;
|
$error = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
echo "unchanged\n";
|
echo "unchanged\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} elseif ($task === 'delete') {
|
} elseif ($task === 'delete') {
|
||||||
|
|
||||||
if (filesize($dataDir.$identifier.'.xml') !== 0) {
|
if (filesize($dataDir.$identifier.'.xml') !== 0) {
|
||||||
|
|
||||||
// Truncate file
|
// Truncate file
|
||||||
if (fclose(fopen($dataDir.$identifier.'.xml', 'w'))) {
|
if (fclose(fopen($dataDir.$identifier.'.xml', 'w'))) {
|
||||||
|
|
||||||
echo format('deleted', 'green')."\n";
|
echo format('deleted', 'green')."\n";
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
echo format('deletion failed', 'red')."\n";
|
echo format('deletion failed', 'red')."\n";
|
||||||
|
|
||||||
$error = true;
|
$error = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
echo "unchanged\n";
|
echo "unchanged\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($error) {
|
if ($error) {
|
||||||
|
|
||||||
echo "Update completed, but errors occurred. Please check the logs!\n";
|
echo "Update completed, but errors occurred. Please check the logs!\n";
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
echo "Update successfully completed!\n";
|
echo "Update successfully completed!\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue