From bd72bdd71ca28df13c6d37c18c4af62c2af6be7a Mon Sep 17 00:00:00 2001 From: paul <paul@cfc7b370-4200-0410-a6e3-cb6bdb053afe> Date: Tue, 16 Jan 2007 01:25:40 +0000 Subject: [PATCH] Added LINK mode to the import script and an explanation of the two modes. --- .../src/modules/storageAdmin/var/import.php | 70 +++++++++++++++---- 1 file changed, 58 insertions(+), 12 deletions(-) diff --git a/campcaster/src/modules/storageAdmin/var/import.php b/campcaster/src/modules/storageAdmin/var/import.php index 97d84ef51..6e7248836 100644 --- a/campcaster/src/modules/storageAdmin/var/import.php +++ b/campcaster/src/modules/storageAdmin/var/import.php @@ -24,10 +24,32 @@ require_once('File/Find.php'); function printUsage() { - echo "Parameters:\n"; + echo "There are two ways to import audio files into Campcaster: linking\n"; + echo "or copying.\n"; echo "\n"; - echo " -c, --copy Make a copy of the files that are imported.\n"; + echo "Linking has the advantage that it will not duplicate any files,\n"; + echo "but you must take care not to move, rename, or delete any of the\n"; + echo "imported files from their current locations on disk.\n"; + echo "\n"; + echo "Copying has the advantage that you can do whatever you like with\n"; + echo "the source files after you import them, but has the disadvantage\n"; + echo "that it requires doubling the hard drive space needed to store\n"; + echo "your files.\n"; + echo "\n"; + echo "Usage:\n"; + echo " campcaster-import [OPTIONS] FILES_OR_DIRS\n"; + echo "\n"; + echo "Options:\n"; + echo " -l, --link Link to specified files.\n"; + echo " Saves storage space, but you cannot move, delete,\n"; + echo " or rename the original files, otherwise there will\n"; + echo " be dead air when Campcaster tries to play the file.\n"; + echo "\n"; + echo " -c, --copy Copy the specified files.\n"; echo " This is useful if you are importing from removable media.\n"; + echo " If you are importing files on your hard drive, this will\n"; + echo " double the disk space required.\n"; + echo "\n"; echo " -h, --help Print this message and exit.\n"; echo "\n"; } @@ -58,14 +80,21 @@ function import_err($p_pearErrorObj, $txt='') * * @param string $p_filepath * You can pass in a directory or file name. - * @param boolean $p_doCopyFiles + * @param string $p_importMode * @param boolean $p_testOnly * * @return int */ -function camp_import_audio_file($p_filepath, $p_doCopyFiles = false, $p_testOnly = false) +function camp_import_audio_file($p_filepath, $p_importMode = null, $p_testOnly = false) { global $STORAGE_SERVER_PATH; + + // Check parameters + $p_importMode = strtolower($p_importMode); + if (!in_array($p_importMode, array("copy", "link"))) { + return array(0, 0); + } + $greenbox = new GreenBox(); $parentId = M2tree::GetObjId(M2tree::GetRootNode()); @@ -81,7 +110,7 @@ function camp_import_audio_file($p_filepath, $p_doCopyFiles = false, $p_testOnly if (is_dir($p_filepath)) { list(,$fileList) = File_Find::maptree($p_filepath); foreach ($fileList as $tmpFile) { - list($tmpCount, $tmpDups) = camp_import_audio_file($tmpFile, $p_doCopyFiles, $p_testOnly); + list($tmpCount, $tmpDups) = camp_import_audio_file($tmpFile, $p_importMode, $p_testOnly); $fileCount += $tmpCount; $duplicates += $tmpDups; } @@ -113,9 +142,14 @@ function camp_import_audio_file($p_filepath, $p_doCopyFiles = false, $p_testOnly unset($metadata['playtime_seconds']); if (!$p_testOnly) { + if ($p_importMode == "copy") { + $doCopyFiles = true; + } elseif ($p_importMode == "link") { + $doCopyFiles = false; + } $r = $greenbox->bsPutFile($parentId, $metadata['ls:filename'], $p_filepath, "$STORAGE_SERVER_PATH/var/emptyMdata.xml", NULL, - 'audioclip', 'file', $p_doCopyFiles); + 'audioclip', 'file', $doCopyFiles); if (PEAR::isError($r)) { import_err($r, "Error in bsPutFile()"); echo var_export($metadata)."\n"; @@ -156,7 +190,7 @@ if (PEAR::isError($CC_DBC)) { } $CC_DBC->setFetchMode(DB_FETCHMODE_ASSOC); -$parsedCommandLine = Console_Getopt::getopt($argv, "thc", array("test", "help", "copy")); +$parsedCommandLine = Console_Getopt::getopt($argv, "thcl", array("test", "help", "copy", "link")); if (PEAR::isError($parsedCommandLine)) { printUsage(); exit(1); @@ -171,7 +205,7 @@ if (count($parsedCommandLine[1]) == 0) { $files = $parsedCommandLine[1]; $testonly = FALSE; -$doCopyFiles = FALSE; +$importMode = null; foreach ($cmdLineOptions as $tmpValue) { $optionName = $tmpValue[0]; $optionValue = $tmpValue[1]; @@ -182,9 +216,14 @@ foreach ($cmdLineOptions as $tmpValue) { exit; case "c": case "--copy": - echo " * Working in COPY mode\n"; - $doCopyFiles = TRUE; - break; + //echo " *** Working in copy mode\n"; + $importMode = "copy"; + break 2; + case 'l': + case '--link': + //echo " *** Working in link mode\n"; + $importMode = "link"; + break 2; case "t": case "--test": $testonly = TRUE; @@ -192,12 +231,17 @@ foreach ($cmdLineOptions as $tmpValue) { } } +if (is_null($importMode)) { + printUsage(); + exit(0); +} +//echo "==========================================================================\n"; $filecount = 0; $duplicates = 0; if (is_array($files)) { foreach ($files as $filepath) { - list($tmpCount, $tmpDups) = camp_import_audio_file($filepath, $doCopyFiles, $testonly); + list($tmpCount, $tmpDups) = camp_import_audio_file($filepath, $importMode, $testonly); $filecount += $tmpCount; $duplicates += $tmpDups; } @@ -211,10 +255,12 @@ if ($time > 0) { } echo "==========================================================================\n"; +echo " *** Import mode: $importMode\n"; echo " *** Files imported: $filecount\n"; echo " *** Duplicate files (not imported): $duplicates\n"; echo " *** Errors: $g_errors\n"; echo " *** Total: ".($filecount+$duplicates)." files in $time seconds = $speed files/second.\n"; +echo "==========================================================================\n"; //echo " * Import completed.\n";