From 2a008dc4abc86385b3059f82a2419b9514882dfe Mon Sep 17 00:00:00 2001 From: Karl 'vollmerk' Vollmer Date: Tue, 2 Aug 2005 06:55:26 +0000 Subject: most of the new upload system, barely tested and not finished... --- bin/quarantine_migration.php.inc | 150 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 bin/quarantine_migration.php.inc (limited to 'bin/quarantine_migration.php.inc') diff --git a/bin/quarantine_migration.php.inc b/bin/quarantine_migration.php.inc new file mode 100644 index 00000000..05c48a17 --- /dev/null +++ b/bin/quarantine_migration.php.inc @@ -0,0 +1,150 @@ +value; + +if( $db_ver < $reqd_db_ver ) { + $text = _( "this script requires database version $reqd_db_ver or higher" ); + cli_out( $text, 0 ); + exit; +} + +// grab list of files from table +$sql = "SELECT id, file, user FROM upload WHERE action = 'quarantine'"; +$db_results = mysql_query( $sql, dbh() ); +while( $results = mysql_fetch_object( $db_results ) ) { + $file = $results->file + $dir = dirname( $file ); + $cat_id = dir_catalog( $dir ); + if( $cat_id != -1 ) { // then this file is is a catalog hierarchy + //check if it's been added to the catalog already + $catalog = new Catalog( $cat_id ); + if( $catalog->check_local_mp3( $file ) ) { + $text = $file . _( ' is already in a catalog' ); + cli_out( $text, 0 ); + continue; + } + } + + // getting ready to move + // check for each user's quar dir pref and source dir + // can we write to both? + $upload_user = new User( 0, $results->user ); + $quar_dir = $upload_user->prefs['quarantine_dir']; + if( !is_writable( $quar_dir ) || !is_writable( $dir ) ) { + $text = $file . _( ' cannot write to file directory or quarantine directory' ); + cli_out( $text, 0 ); + continue; + } +// move files + $dest_file = $quar_dir . '/' . basename( $file ); + $file_move_ok = rename( $file, $dest_filename ); + if( !$file_move_ok ) { + $text = $file . _( ' could not move file to quarantine directory ' ) . $dest_filename; + cli_out( $text, 0 ); + continue; + } else { + $text = _( 'Moved ' ) . $file . _( ' to ' ) . $dest_filename . ".\n"; + cli_out( $text, 1 ); + } + // update upload table + $sql = "UPDATE upload SET file = $dest_filename WHERE id = $results->id"; + $db_results = mysql_query( $sql, dbh() ); +} // while there are quarantined entries in the upload table + +exit; + +/*! + @function usage() + @discussion echo the help for this script +*/ + +function usage( ) { + $text = _( " +*** WARNING *** +This script will attempt to move your music files! +*** WARNING *** + +This script will process any pending quarantine files for the new uploads system. +You must be running update $reqd_db_ver or higher. Your old upload directory and +your new quarantine directory must be readable and writable by your webserver user. +It must be run from the ampache/bin directory. + \n" ); + cli_out( $text, 1 ); + + $text = _( "Continue? (Y/N):\t" ); + cli_out( $text, 1 ); + + // grab a character ignoring whitespace + do { + $input= fgetc( STDIN ); + } while ( trim( $input ) == '' ); + + if( $input != 'Y' ) { + exit; + } +} // usage() + +/*! + @function cli_out() + @discussion util for error formatting + @param $text the message to be output + @param $mode to STDERR (0) or STDOUT (1, default) +*/ + +function cli_out( $text, $mode = 1 ) { + switch( $mode ) { + case 0: + $dest = STDERR; + $pre = _( "Error: " ); + $post = _( "!\n" ); + break; + case 1: + default: + $dest = STDOUT; + $pre = ""; + $post = ""; + } + fwrite( $dest, $pre . $text . $post ); +} // error_out + + + +?> -- cgit