1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
<?php
/*
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
created by RosenSama 2005
call: php quarantine_migration.php
*/
/* This isn't working yet, don't let em try! */
exit();
$no_session='1';
require_once( '../modules/init.php' );
require_once( '../lib/upload.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;
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
?>
|