diff options
author | Karl 'vollmerk' Vollmer <vollmer@ampache.org> | 2005-08-08 20:11:06 +0000 |
---|---|---|
committer | Karl 'vollmerk' Vollmer <vollmer@ampache.org> | 2005-08-08 20:11:06 +0000 |
commit | cc1e76c96f69df125cf0a045581aebb3ad96ddb2 (patch) | |
tree | bdda0819573ccbbf7faddaf00b4a694247cefee4 /bin | |
parent | c2abded695fd66ebd286edc8de3b630b055fa102 (diff) | |
download | ampache-cc1e76c96f69df125cf0a045581aebb3ad96ddb2.tar.gz ampache-cc1e76c96f69df125cf0a045581aebb3ad96ddb2.tar.bz2 ampache-cc1e76c96f69df125cf0a045581aebb3ad96ddb2.zip |
this is still broken!
Diffstat (limited to 'bin')
-rw-r--r-- | bin/quarantine_migration.php.inc | 109 |
1 files changed, 53 insertions, 56 deletions
diff --git a/bin/quarantine_migration.php.inc b/bin/quarantine_migration.php.inc index 05c48a17..363188ff 100644 --- a/bin/quarantine_migration.php.inc +++ b/bin/quarantine_migration.php.inc @@ -21,61 +21,57 @@ */ -/* This isn't working yet, don't let em try! */ -exit(); - $no_session='1'; -require_once( '../modules/init.php' ); -require_once( '../lib/upload.php' ); +require_once('../modules/init.php'); + usage(); -// check for correct db version -$sql = "SELECT value FROM update_info WHERE `key` = 'db_version'"; -$db_results = mysql_query( $sql, dbh() ); -if( mysql_num_rows( $db_results ) != 1 ) { - $text = _( 'expected exactly 1 row in update_info table' ); - cli_out( $text, 0 ); - exit; -} -$results = mysql_fetch_object( $db_results ); -$db_ver = $results->value; +// grab list of files from table +$sql = "SELECT id, file, user,action FROM upload WHERE action != 'quarantine'"; +$db_results = mysql_query($sql, dbh()); + +$files = array(); +$files['add'] = array(); +$files['delete'] = array(); + +while ($results = mysql_fetch_assoc($db_results)) { -if( $db_ver < $reqd_db_ver ) { - $text = _( "this script requires database version $reqd_db_ver or higher" ); - cli_out( $text, 0 ); - exit; + $action = $results['action']; + + $files[$action][] = $results; + +} // end while + +/* Make sure we have write access to the upload dir */ +$upload_dir = conf('upload_dir'); + +if (!@is_writeable($upload_dir)) { + cli_out("\n" . _("Error: Unable to write to") . $upload_dir . " \n"); } -// 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; +/* Itterate through the files we need to move */ +$adds = &$files['add']; +foreach ($adds as $data) { + + /* Make sure that the target filename doesn't exist */ + + $command = "mv " . $data['file'] . " " . $upload_dir; + $command = escapeshellcmd($command); + + if (exec($command)) { + cli_out("\n" . _("Moved") . " " . $data['file'] . "\n"); + $sql = "DELETE FROM upload WHERE id='" . $data['id'] . "'"; + $db_results = mysql_query($sql, dbh()); + } + else { + cli_out("\n" . _("Move Failed") . " " . $data['file'] . "\n"); } -// move files - $dest_file = $quar_dir . '/' . basename( $file ); - $file_move_ok = rename( $file, $dest_filename ); + +} // end foreach + +exit(); + if( !$file_move_ok ) { $text = $file . _( ' could not move file to quarantine directory ' ) . $dest_filename; cli_out( $text, 0 ); @@ -87,7 +83,6 @@ while( $results = mysql_fetch_object( $db_results ) ) { // 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; @@ -98,14 +93,16 @@ exit; 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. + +************* WARNING ************* +This script will move, and +potentially delete uploaded files. +************* WARNING ************* + +All files marked for add will be moved to the upload directory. All files +marked for deletion will be deleted. This script must be run as a user with +sufficient rights to perform the above two functions. + \n" ); cli_out( $text, 1 ); |