@@ -73,9 +73,20 @@ public function edit_form_post_save( $jobid ) {
73
73
*/
74
74
public function file_delete ( $ jobdest , $ backupfile ) {
75
75
76
- if ( is_writeable ( $ backupfile ) && !is_dir ( $ backupfile ) && !is_link ( $ backupfile ) )
77
- unlink ( $ backupfile );
76
+ list ( $ jobid , $ dest ) = explode ( '_ ' , $ jobdest , 2 );
77
+
78
+ if ( empty ( $ jobid ) ) {
79
+ return ;
80
+ }
81
+
82
+ $ backup_dir = esc_attr ( BackWPup_Option::get ( (int )$ jobid , 'backupdir ' ) );
83
+ $ backup_dir = BackWPup_File::get_absolute_path ( $ backup_dir );
84
+
85
+ $ backupfile = realpath ( trailingslashit ( $ backup_dir ) . basename ( $ backupfile ) );
78
86
87
+ if ( $ backupfile && is_writeable ( $ backupfile ) && !is_dir ( $ backupfile ) && !is_link ( $ backupfile ) ) {
88
+ unlink ( $ backupfile );
89
+ }
79
90
}
80
91
81
92
/**
@@ -84,7 +95,13 @@ public function file_delete( $jobdest, $backupfile ) {
84
95
*/
85
96
public function file_download ( $ jobid , $ get_file ) {
86
97
87
- if ( is_readable ( $ get_file ) ) {
98
+ $ backup_dir = esc_attr ( BackWPup_Option::get ( (int )$ jobid , 'backupdir ' ) );
99
+ $ backup_dir = BackWPup_File::get_absolute_path ( $ backup_dir );
100
+
101
+ $ get_file = realpath ( trailingslashit ( $ backup_dir ) . basename ( $ get_file ) );
102
+
103
+ if ( $ get_file && is_readable ( $ get_file ) ) {
104
+ while ( @ob_end_clean () );
88
105
header ( "Pragma: public " );
89
106
header ( "Expires: 0 " );
90
107
header ( "Cache-Control: must-revalidate, post-check=0, pre-check=0 " );
@@ -93,14 +110,12 @@ public function file_download( $jobid, $get_file ) {
93
110
header ( "Content-Transfer-Encoding: binary " );
94
111
header ( "Content-Length: " . filesize ( $ get_file ) );
95
112
@set_time_limit ( 300 );
96
- //chunked readfile
97
- @ob_end_clean ();
113
+ //chunked read file
98
114
$ handle = fopen ( $ get_file , 'rb ' );
99
115
if ( $ handle ) {
100
116
while ( ! feof ( $ handle ) ) {
101
- echo fread ( $ handle , 20482048 ); //2MB chunkes
102
- @ob_flush ();
103
- @flush ();
117
+ echo fread ( $ handle , 10241024 ); //chunks
118
+ flush ();
104
119
}
105
120
fclose ( $ handle );
106
121
}
@@ -119,7 +134,7 @@ public function file_download( $jobid, $get_file ) {
119
134
*/
120
135
public function file_get_list ( $ jobdest ) {
121
136
122
- list ( $ jobid , $ dest ) = explode ( '_ ' , $ jobdest );
137
+ list ( $ jobid , $ dest ) = explode ( '_ ' , $ jobdest, 2 );
123
138
$ filecounter = 0 ;
124
139
$ files = array ();
125
140
$ backup_folder = BackWPup_Option::get ( $ jobid , 'backupdir ' );
@@ -136,7 +151,7 @@ public function file_get_list( $jobdest ) {
136
151
$ files [ $ filecounter ][ 'downloadurl ' ] = add_query_arg ( array (
137
152
'page ' => 'backwpupbackups ' ,
138
153
'action ' => 'downloadfolder ' ,
139
- 'file ' => $ backup_folder . $ file ,
154
+ 'file ' => $ file ,
140
155
'jobid ' => $ jobid
141
156
), network_admin_url ( 'admin.php ' ) );
142
157
$ files [ $ filecounter ][ 'filesize ' ] = filesize ( $ backup_folder . $ file );
@@ -161,7 +176,7 @@ public function job_run_archive( BackWPup_Job$job_object ) {
161
176
BackWPup_Option::update ( $ job_object ->job [ 'jobid ' ], 'lastbackupdownloadurl ' , add_query_arg ( array (
162
177
'page ' => 'backwpupbackups ' ,
163
178
'action ' => 'downloadfolder ' ,
164
- 'file ' => $ job_object -> backup_folder . $ job_object ->backup_file ,
179
+ 'file ' => basename ( $ job_object ->backup_file ) ,
165
180
'jobid ' => $ job_object ->job [ 'jobid ' ]
166
181
), network_admin_url ( 'admin.php ' ) ) );
167
182
//Delete old Backupfiles
0 commit comments