Version Description
= After an upgrade from version 2 =
Please check all settings after the update:
- Dropbox authentication must be done again
- SugarSync authentication must be done again
- S3 Settings
- Google Storage is now in S3
- Check all your passwords
Download this release
Release Info
Developer | danielhuesken |
Plugin | BackWPup – WordPress Backup Plugin |
Version | 3.0.6 |
Comparing to | |
See all releases |
Code changes from version 3.0.5 to 3.0.6
- backwpup.php +1 -1
- inc/class-cron.php +2 -3
- inc/class-destination-dropbox.php +25 -13
- inc/class-install.php +2 -2
- inc/class-job.php +1 -2
- inc/class-jobtype-dbdump.php +1 -1
- inc/class-page-backwpup.php +5 -3
- inc/class-page-editjob.php +3 -5
- inc/class-page-jobs.php +3 -6
- readme.txt +7 -2
backwpup.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
* Description: WordPress Backup and more...
|
6 |
* Author: Inpsyde GmbH
|
7 |
* Author URI: http://inpsyde.com
|
8 |
-
* Version: 3.0.
|
9 |
* Text Domain: backwpup
|
10 |
* Domain Path: /languages/
|
11 |
* Network: true
|
5 |
* Description: WordPress Backup and more...
|
6 |
* Author: Inpsyde GmbH
|
7 |
* Author URI: http://inpsyde.com
|
8 |
+
* Version: 3.0.6
|
9 |
* Text Domain: backwpup
|
10 |
* Domain Path: /languages/
|
11 |
* Network: true
|
inc/class-cron.php
CHANGED
@@ -156,8 +156,7 @@ class BackWPup_Cron {
|
|
156 |
*
|
157 |
* Get the local time timestamp of the next cron execution
|
158 |
*
|
159 |
-
* @param string $cronstring
|
160 |
-
*
|
161 |
* @return int timestamp
|
162 |
*/
|
163 |
public static function cron_next( $cronstring ) {
|
@@ -284,7 +283,7 @@ class BackWPup_Cron {
|
|
284 |
}
|
285 |
|
286 |
//calc next timestamp
|
287 |
-
$current_timestamp =
|
288 |
foreach ( $cron[ 'year' ] as $year ) {
|
289 |
foreach ( $cron[ 'mon' ] as $mon ) {
|
290 |
foreach ( $cron[ 'mday' ] as $mday ) {
|
156 |
*
|
157 |
* Get the local time timestamp of the next cron execution
|
158 |
*
|
159 |
+
* @param string $cronstring cron (* * * * *)
|
|
|
160 |
* @return int timestamp
|
161 |
*/
|
162 |
public static function cron_next( $cronstring ) {
|
283 |
}
|
284 |
|
285 |
//calc next timestamp
|
286 |
+
$current_timestamp = current_time( 'timestamp' );
|
287 |
foreach ( $cron[ 'year' ] as $year ) {
|
288 |
foreach ( $cron[ 'mon' ] as $mon ) {
|
289 |
foreach ( $cron[ 'mday' ] as $mday ) {
|
inc/class-destination-dropbox.php
CHANGED
@@ -495,29 +495,36 @@ final class BackWPup_Destination_Dropbox_API {
|
|
495 |
if ( ! is_readable( $file ) or ! is_file( $file ) )
|
496 |
throw new BackWPup_Destination_Dropbox_API_Exception( "Error: File \"$file\" is not readable or doesn't exist." );
|
497 |
|
498 |
-
$file_handel = fopen( $file, 'r' );
|
499 |
-
$uploadid = NULL;
|
500 |
-
$offset = 0;
|
501 |
$job_object = BackWPup_Job::getInstance();
|
502 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
503 |
while ( $data = fread( $file_handel, 4194304 ) ) { //4194304 = 4MB
|
504 |
-
$chunkHandle = fopen( 'php://temp', '
|
505 |
fwrite( $chunkHandle, $data );
|
506 |
rewind( $chunkHandle );
|
507 |
$url = self::API_CONTENT_URL . self::API_VERSION_URL . 'chunked_upload';
|
508 |
-
$output = $this->request( $url, array( 'upload_id' => $uploadid, 'offset' => $offset ), 'PUT', $chunkHandle, strlen( $data ) );
|
509 |
-
fclose( $chunkHandle );
|
510 |
-
$job_object->curl_read_callback( NULL, NULL, strlen( $data ) );
|
511 |
//args for next chunk
|
512 |
-
$offset = $output[ 'offset' ];
|
513 |
-
$uploadid = $output[ 'upload_id' ];
|
514 |
-
|
|
|
|
|
|
|
|
|
515 |
}
|
516 |
|
517 |
fclose( $file_handel );
|
518 |
$url = self::API_CONTENT_URL . self::API_VERSION_URL . 'commit_chunked_upload/' . $this->root . '/' . $this->encode_path( $path );
|
519 |
|
520 |
-
return $this->request( $url, array( 'overwrite' => ( $overwrite ) ? 'true' : 'false', 'upload_id' => $uploadid ), 'POST' );
|
521 |
}
|
522 |
|
523 |
/**
|
@@ -724,7 +731,12 @@ final class BackWPup_Destination_Dropbox_API {
|
|
724 |
}
|
725 |
//redo request
|
726 |
return $this->request( $url, $args, $method, $filehandel, $filesize, $echo );
|
727 |
-
}
|
|
|
|
|
|
|
|
|
|
|
728 |
trigger_error( '(' . $status[ 'http_code' ] . ') ' . $output[ 'error' ], E_USER_WARNING );
|
729 |
|
730 |
return FALSE;
|
495 |
if ( ! is_readable( $file ) or ! is_file( $file ) )
|
496 |
throw new BackWPup_Destination_Dropbox_API_Exception( "Error: File \"$file\" is not readable or doesn't exist." );
|
497 |
|
|
|
|
|
|
|
498 |
$job_object = BackWPup_Job::getInstance();
|
499 |
+
$file_handel = fopen( $file, 'r' );
|
500 |
+
if ( ! isset( $job_object->steps_data[ $job_object->step_working ][ 'uploadid' ] ) )
|
501 |
+
$job_object->steps_data[ $job_object->step_working ][ 'uploadid' ] = NULL;
|
502 |
+
if ( ! isset( $job_object->steps_data[ $job_object->step_working ][ 'offset' ] ) )
|
503 |
+
$job_object->steps_data[ $job_object->step_working ][ 'offset' ] = 0;
|
504 |
+
//seek to current position
|
505 |
+
fseek( $file_handel, $job_object->steps_data[ $job_object->step_working ][ 'offset' ] );
|
506 |
+
|
507 |
while ( $data = fread( $file_handel, 4194304 ) ) { //4194304 = 4MB
|
508 |
+
$chunkHandle = fopen( 'php://temp/maxmemory:4200000', 'r+' );
|
509 |
fwrite( $chunkHandle, $data );
|
510 |
rewind( $chunkHandle );
|
511 |
$url = self::API_CONTENT_URL . self::API_VERSION_URL . 'chunked_upload';
|
512 |
+
$output = $this->request( $url, array( 'upload_id' => $job_object->steps_data[ $job_object->step_working ][ 'uploadid' ], 'offset' => $job_object->steps_data[ $job_object->step_working ][ 'offset' ] ), 'PUT', $chunkHandle, strlen( $data ) );
|
513 |
+
fclose( $chunkHandle );
|
|
|
514 |
//args for next chunk
|
515 |
+
$job_object->steps_data[ $job_object->step_working ][ 'offset' ] = $output[ 'offset' ];
|
516 |
+
$job_object->steps_data[ $job_object->step_working ][ 'uploadid' ] = $output[ 'upload_id' ];
|
517 |
+
if ( $job_object->job[ 'backuptype' ] == 'archive' )
|
518 |
+
$job_object->substeps_done = $job_object->steps_data[ $job_object->step_working ][ 'offset' ];
|
519 |
+
$job_object->update_working_data();
|
520 |
+
//correct position
|
521 |
+
fseek( $file_handel, $job_object->steps_data[ $job_object->step_working ][ 'offset' ] );
|
522 |
}
|
523 |
|
524 |
fclose( $file_handel );
|
525 |
$url = self::API_CONTENT_URL . self::API_VERSION_URL . 'commit_chunked_upload/' . $this->root . '/' . $this->encode_path( $path );
|
526 |
|
527 |
+
return $this->request( $url, array( 'overwrite' => ( $overwrite ) ? 'true' : 'false', 'upload_id' => $job_object->steps_data[ $job_object->step_working ][ 'uploadid' ] ), 'POST' );
|
528 |
}
|
529 |
|
530 |
/**
|
731 |
}
|
732 |
//redo request
|
733 |
return $this->request( $url, $args, $method, $filehandel, $filesize, $echo );
|
734 |
+
}
|
735 |
+
elseif ( $status[ 'http_code' ] == 400 && $method == 'PUT' ) { //correct offset on chunk uploads
|
736 |
+
trigger_error( '(' . $status[ 'http_code' ] . ') False offset will corrected', E_USER_NOTICE );
|
737 |
+
return $output;
|
738 |
+
}
|
739 |
+
elseif ( $status[ 'http_code' ] == 404 && ! empty( $output[ 'error' ] )) {
|
740 |
trigger_error( '(' . $status[ 'http_code' ] . ') ' . $output[ 'error' ], E_USER_WARNING );
|
741 |
|
742 |
return FALSE;
|
inc/class-install.php
CHANGED
@@ -23,7 +23,7 @@ class BackWPup_Install {
|
|
23 |
$activejobs = BackWPup_Option::get_job_ids( 'activetype', 'wpcron' );
|
24 |
if ( ! empty( $activejobs ) ) {
|
25 |
foreach ( $activejobs as $id ) {
|
26 |
-
$cronnxet = BackWPup_Option::get( $id, '
|
27 |
wp_schedule_single_event( $cronnxet, 'backwpup_cron', array( 'id' => $id ) );
|
28 |
}
|
29 |
}
|
@@ -300,7 +300,7 @@ class BackWPup_Install {
|
|
300 |
}
|
301 |
$jobvalue[ 'backupuploadsexcludedirs' ] = $excludes;
|
302 |
//delete not longer needed
|
303 |
-
unset( $jobvalue[ 'fileprefix' ], $jobvalue[ 'fileformart' ], $jobvalue[ 'scheduleintervaltype' ], $jobvalue[ 'scheduleintervalteimes' ], $jobvalue[ 'scheduleinterval' ], $jobvalue[ 'dropemail' ], $jobvalue[ 'dropepass' ], $jobvalue[ 'dropesignmethod' ] );
|
304 |
//save in options
|
305 |
foreach ( $jobvalue as $jobvaluename => $jobvaluevalue )
|
306 |
BackWPup_Option::update( $jobvalue[ 'jobid' ], $jobvaluename, $jobvaluevalue );
|
23 |
$activejobs = BackWPup_Option::get_job_ids( 'activetype', 'wpcron' );
|
24 |
if ( ! empty( $activejobs ) ) {
|
25 |
foreach ( $activejobs as $id ) {
|
26 |
+
$cronnxet = BackWPup_Cron::cron_next( BackWPup_Option::get( $id, 'cron') );
|
27 |
wp_schedule_single_event( $cronnxet, 'backwpup_cron', array( 'id' => $id ) );
|
28 |
}
|
29 |
}
|
300 |
}
|
301 |
$jobvalue[ 'backupuploadsexcludedirs' ] = $excludes;
|
302 |
//delete not longer needed
|
303 |
+
unset( $jobvalue[ 'cronnextrun' ], $jobvalue[ 'fileprefix' ], $jobvalue[ 'fileformart' ], $jobvalue[ 'scheduleintervaltype' ], $jobvalue[ 'scheduleintervalteimes' ], $jobvalue[ 'scheduleinterval' ], $jobvalue[ 'dropemail' ], $jobvalue[ 'dropepass' ], $jobvalue[ 'dropesignmethod' ] );
|
304 |
//save in options
|
305 |
foreach ( $jobvalue as $jobvaluename => $jobvaluevalue )
|
306 |
BackWPup_Option::update( $jobvalue[ 'jobid' ], $jobvaluename, $jobvaluevalue );
|
inc/class-job.php
CHANGED
@@ -169,7 +169,6 @@ final class BackWPup_Job {
|
|
169 |
BackWPup_Option::update( $this->job[ 'jobid' ], 'lastrun', $this->start_time );
|
170 |
BackWPup_Option::update( $this->job[ 'jobid' ], 'logfile', $this->logfile ); //Set current logfile
|
171 |
BackWPup_Option::update( $this->job[ 'jobid' ], 'lastbackupdownloadurl', '' );
|
172 |
-
BackWPup_Option::update( $this->job[ 'jobid' ], 'cronnextrun', BackWPup_Cron::cron_next( BackWPup_Option::get( $this->job[ 'jobid' ], 'cron' ) ) );
|
173 |
}
|
174 |
//Set needed job values
|
175 |
$this->timestamp_last_update = microtime( TRUE );
|
@@ -273,7 +272,7 @@ final class BackWPup_Job {
|
|
273 |
$info .= __( '[INFO] This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions.', 'backwpup' ) . PHP_EOL;
|
274 |
$info .= sprintf(__( '[INFO] BackWPup job: %1$s; %2$s', 'backwpup' ), esc_attr( $this->job[ 'name' ] ) , implode( '+', $this->job[ 'type' ] ) ) . PHP_EOL;
|
275 |
if ( $this->job[ 'activetype' ] != '' )
|
276 |
-
$info .= __( '[INFO] BackWPup cron:', 'backwpup' ) . ' ' . $this->job[ 'cron' ] . '; ' . date_i18n( 'D, j M Y @ H:i'
|
277 |
if ( $this->jobstarttype == 'cronrun' )
|
278 |
$info .= __( '[INFO] BackWPup job started from wp-cron', 'backwpup' ) . PHP_EOL;
|
279 |
elseif ( $this->jobstarttype == 'runnow' or $this->jobstarttype == 'runnowalt' )
|
169 |
BackWPup_Option::update( $this->job[ 'jobid' ], 'lastrun', $this->start_time );
|
170 |
BackWPup_Option::update( $this->job[ 'jobid' ], 'logfile', $this->logfile ); //Set current logfile
|
171 |
BackWPup_Option::update( $this->job[ 'jobid' ], 'lastbackupdownloadurl', '' );
|
|
|
172 |
}
|
173 |
//Set needed job values
|
174 |
$this->timestamp_last_update = microtime( TRUE );
|
272 |
$info .= __( '[INFO] This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions.', 'backwpup' ) . PHP_EOL;
|
273 |
$info .= sprintf(__( '[INFO] BackWPup job: %1$s; %2$s', 'backwpup' ), esc_attr( $this->job[ 'name' ] ) , implode( '+', $this->job[ 'type' ] ) ) . PHP_EOL;
|
274 |
if ( $this->job[ 'activetype' ] != '' )
|
275 |
+
$info .= __( '[INFO] BackWPup cron:', 'backwpup' ) . ' ' . $this->job[ 'cron' ] . '; ' . date_i18n( 'D, j M Y @ H:i' ) . PHP_EOL;
|
276 |
if ( $this->jobstarttype == 'cronrun' )
|
277 |
$info .= __( '[INFO] BackWPup job started from wp-cron', 'backwpup' ) . PHP_EOL;
|
278 |
elseif ( $this->jobstarttype == 'runnow' or $this->jobstarttype == 'runnowalt' )
|
inc/class-jobtype-dbdump.php
CHANGED
@@ -41,7 +41,7 @@ class BackWPup_JobType_DBDump extends BackWPup_JobTypes {
|
|
41 |
//set only wordpress tables as default
|
42 |
$dbtables = $wpdb->get_results( 'SHOW TABLES FROM `' . DB_NAME . '`', ARRAY_N );
|
43 |
foreach ( $dbtables as $dbtable) {
|
44 |
-
if (
|
45 |
$defaults[ 'dbdumpexclude' ][] = $dbtable[ 0 ];
|
46 |
}
|
47 |
|
41 |
//set only wordpress tables as default
|
42 |
$dbtables = $wpdb->get_results( 'SHOW TABLES FROM `' . DB_NAME . '`', ARRAY_N );
|
43 |
foreach ( $dbtables as $dbtable) {
|
44 |
+
if ( $wpdb->prefix == substr( $dbtable[ 0 ], 0, strlen( $wpdb->prefix ) ) )
|
45 |
$defaults[ 'dbdumpexclude' ][] = $dbtable[ 0 ];
|
46 |
}
|
47 |
|
inc/class-page-backwpup.php
CHANGED
@@ -263,8 +263,6 @@ class BackWPup_Page_BackWPup {
|
|
263 |
echo "</td></tr>";
|
264 |
}
|
265 |
else {
|
266 |
-
$cronnextrun = BackWPup_Option::get( $jobid, 'cronnextrun' );
|
267 |
-
$cronnextrun = $cronnextrun + ( get_option( 'gmt_offset' ) * 3600 );
|
268 |
if ( ! $alternate ) {
|
269 |
echo '<tr>';
|
270 |
$alternate = TRUE;
|
@@ -272,7 +270,11 @@ class BackWPup_Page_BackWPup {
|
|
272 |
echo '<tr class="alternate">';
|
273 |
$alternate = FALSE;
|
274 |
}
|
275 |
-
|
|
|
|
|
|
|
|
|
276 |
echo '<td><a href="' . wp_nonce_url( network_admin_url( 'admin.php' ) . '?page=backwpupeditjob&jobid=' . $jobid, 'edit-job' ) . '" title="' . esc_attr( __( 'Edit Job', 'backwpup' ) ) . '">' . $name . '</a></td></tr>';
|
277 |
}
|
278 |
}
|
263 |
echo "</td></tr>";
|
264 |
}
|
265 |
else {
|
|
|
|
|
266 |
if ( ! $alternate ) {
|
267 |
echo '<tr>';
|
268 |
$alternate = TRUE;
|
270 |
echo '<tr class="alternate">';
|
271 |
$alternate = FALSE;
|
272 |
}
|
273 |
+
if ( $nextrun = wp_next_scheduled( 'backwpup_cron', array( 'id' => $jobid ) ) + ( get_option( 'gmt_offset' ) * 3600 ) )
|
274 |
+
echo '<td>' . date_i18n( get_option( 'date_format' ), $nextrun, TRUE ) . '<br />' . date_i18n( get_option( 'time_format' ), $nextrun, TRUE ) . '</td>';
|
275 |
+
else
|
276 |
+
echo '<td><em>' . __( 'Not scheduled!', 'backwpup' ) . '</em></td>';
|
277 |
+
|
278 |
echo '<td><a href="' . wp_nonce_url( network_admin_url( 'admin.php' ) . '?page=backwpupeditjob&jobid=' . $jobid, 'edit-job' ) . '" title="' . esc_attr( __( 'Edit Job', 'backwpup' ) ) . '">' . $name . '</a></td></tr>';
|
279 |
}
|
280 |
}
|
inc/class-page-editjob.php
CHANGED
@@ -154,12 +154,10 @@ class BackWPup_Page_Editjob {
|
|
154 |
if ( $_POST[ 'cronbtype' ] == 'hour' )
|
155 |
BackWPup_Option::update( $jobid, 'cron', $_POST[ 'hourcronminutes' ] . ' * * * *' );
|
156 |
}
|
157 |
-
//Save next run time
|
158 |
-
BackWPup_Option::update( $jobid, 'cronnextrun', BackWPup_Cron::cron_next( BackWPup_Option::get( $jobid, 'cron' ) ) );
|
159 |
//reschedule
|
160 |
wp_clear_scheduled_hook( 'backwpup_cron', array( 'id' => $jobid ) );
|
161 |
if ( BackWPup_Option::get( $jobid, 'activetype' ) == 'wpcron' ) {
|
162 |
-
$cronnxet = BackWPup_Option::get( $jobid, '
|
163 |
wp_schedule_single_event( $cronnxet, 'backwpup_cron', array( 'id' => $jobid ) );
|
164 |
}
|
165 |
break;
|
@@ -324,13 +322,13 @@ class BackWPup_Page_Editjob {
|
|
324 |
$repeathouer = 1;
|
325 |
echo '<span style="color:red;">' . sprintf( __( 'ATTENTION: Job runs every %d hours!', 'backwpup' ), $repeathouer ) . '</span><br />';
|
326 |
}
|
327 |
-
$nextrun = BackWPup_Cron::cron_next( $cronstamp );
|
328 |
if ( 2147483647 == $nextrun ) {
|
329 |
echo '<span style="color:red;">' . __( 'ATTENTION: Can\'t calculate cron!', 'backwpup' ) . '</span><br />';
|
330 |
}
|
331 |
else {
|
332 |
_e( 'Next runtime:', 'backwpup' );
|
333 |
-
echo ' <b>' . date_i18n( 'D, j M Y, H:i',
|
334 |
}
|
335 |
echo "</p>";
|
336 |
|
154 |
if ( $_POST[ 'cronbtype' ] == 'hour' )
|
155 |
BackWPup_Option::update( $jobid, 'cron', $_POST[ 'hourcronminutes' ] . ' * * * *' );
|
156 |
}
|
|
|
|
|
157 |
//reschedule
|
158 |
wp_clear_scheduled_hook( 'backwpup_cron', array( 'id' => $jobid ) );
|
159 |
if ( BackWPup_Option::get( $jobid, 'activetype' ) == 'wpcron' ) {
|
160 |
+
$cronnxet = BackWPup_Cron::cron_next( BackWPup_Option::get( $jobid, 'cron' ) );
|
161 |
wp_schedule_single_event( $cronnxet, 'backwpup_cron', array( 'id' => $jobid ) );
|
162 |
}
|
163 |
break;
|
322 |
$repeathouer = 1;
|
323 |
echo '<span style="color:red;">' . sprintf( __( 'ATTENTION: Job runs every %d hours!', 'backwpup' ), $repeathouer ) . '</span><br />';
|
324 |
}
|
325 |
+
$nextrun = BackWPup_Cron::cron_next( $cronstamp ) + ( get_option( 'gmt_offset' ) * 3600 );
|
326 |
if ( 2147483647 == $nextrun ) {
|
327 |
echo '<span style="color:red;">' . __( 'ATTENTION: Can\'t calculate cron!', 'backwpup' ) . '</span><br />';
|
328 |
}
|
329 |
else {
|
330 |
_e( 'Next runtime:', 'backwpup' );
|
331 |
+
echo ' <b>' . date_i18n( 'D, j M Y, H:i', $nextrun, TRUE ) . '</b>';
|
332 |
}
|
333 |
echo "</p>";
|
334 |
|
inc/class-page-jobs.php
CHANGED
@@ -191,13 +191,10 @@ class BackWPup_Page_Jobs extends WP_List_Table {
|
|
191 |
if ( is_object( $job_object ) && $job_object->job[ 'jobid' ] == $jobid )
|
192 |
$r .='<div class="job-normal"' . $job_normal_hide . '>';
|
193 |
if ( BackWPup_Option::get( $jobid, 'activetype' ) == 'wpcron' ) {
|
194 |
-
if ( $nextrun = wp_next_scheduled( 'backwpup_cron', array( 'id' => $jobid ) ) )
|
195 |
-
$nextrun = $nextrun + get_option( 'gmt_offset' ) * 3600;
|
196 |
$r .= '<span title="' . sprintf( __( 'Cron: %s','backwpup'),BackWPup_Option::get( $jobid, 'cron' ) ). '">' . sprintf( __( '%1$s at %2$s by WP-Cron', 'backwpup' ) , date_i18n( get_option( 'date_format' ), $nextrun, TRUE ) , date_i18n( get_option( 'time_format' ), $nextrun, TRUE ) ) . '</span>';
|
197 |
-
|
198 |
-
else {
|
199 |
$r .= __( 'Not scheduled!', 'backwpup' );
|
200 |
-
}
|
201 |
}
|
202 |
else {
|
203 |
$r .= __( 'Inactive', 'backwpup' );
|
@@ -277,7 +274,7 @@ class BackWPup_Page_Jobs extends WP_List_Table {
|
|
277 |
if ( $key == "archivename" )
|
278 |
$option = str_replace( $_GET[ 'jobid' ], $newjobid, $option );
|
279 |
if ( $key == "logfile" || $key == "lastbackupdownloadurl" || $key == "lastruntime" ||
|
280 |
-
$key == "lastrun"
|
281 |
continue;
|
282 |
BackWPup_Option::update( $newjobid, $key, $option );
|
283 |
}
|
191 |
if ( is_object( $job_object ) && $job_object->job[ 'jobid' ] == $jobid )
|
192 |
$r .='<div class="job-normal"' . $job_normal_hide . '>';
|
193 |
if ( BackWPup_Option::get( $jobid, 'activetype' ) == 'wpcron' ) {
|
194 |
+
if ( $nextrun = wp_next_scheduled( 'backwpup_cron', array( 'id' => $jobid ) ) + ( get_option( 'gmt_offset' ) * 3600 ) )
|
|
|
195 |
$r .= '<span title="' . sprintf( __( 'Cron: %s','backwpup'),BackWPup_Option::get( $jobid, 'cron' ) ). '">' . sprintf( __( '%1$s at %2$s by WP-Cron', 'backwpup' ) , date_i18n( get_option( 'date_format' ), $nextrun, TRUE ) , date_i18n( get_option( 'time_format' ), $nextrun, TRUE ) ) . '</span>';
|
196 |
+
else
|
|
|
197 |
$r .= __( 'Not scheduled!', 'backwpup' );
|
|
|
198 |
}
|
199 |
else {
|
200 |
$r .= __( 'Inactive', 'backwpup' );
|
274 |
if ( $key == "archivename" )
|
275 |
$option = str_replace( $_GET[ 'jobid' ], $newjobid, $option );
|
276 |
if ( $key == "logfile" || $key == "lastbackupdownloadurl" || $key == "lastruntime" ||
|
277 |
+
$key == "lastrun" )
|
278 |
continue;
|
279 |
BackWPup_Option::update( $newjobid, $key, $option );
|
280 |
}
|
readme.txt
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
-
|
2 |
Contributors: inpsyde, danielhuesken, Bueltge, nullbyte
|
3 |
Tags: backup, dump, database, file, ftp, xml, time, upload, multisite, cloud, dropbox, storage, S3
|
4 |
Requires at least: 3.2
|
5 |
Tested up to: 3.5.1
|
6 |
-
Stable tag: 3.0.
|
7 |
License: GPLv3
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
@@ -179,6 +179,11 @@ Please check all settings after the update:
|
|
179 |
|
180 |
|
181 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
182 |
= Version 3.0.5 =
|
183 |
* Changed: Display only normal messages on progress bars
|
184 |
* Changed: Detection of multisite blog upload folder
|
1 |
+
=== BackWPup ===
|
2 |
Contributors: inpsyde, danielhuesken, Bueltge, nullbyte
|
3 |
Tags: backup, dump, database, file, ftp, xml, time, upload, multisite, cloud, dropbox, storage, S3
|
4 |
Requires at least: 3.2
|
5 |
Tested up to: 3.5.1
|
6 |
+
Stable tag: 3.0.6
|
7 |
License: GPLv3
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
179 |
|
180 |
|
181 |
== Changelog ==
|
182 |
+
= Version 3.0.6 =
|
183 |
+
* Fixed: Massages on empty DB prefix
|
184 |
+
* Fixed: Bug in cron calculation
|
185 |
+
* Improved: Dropbox upload so that it can continuing on next try
|
186 |
+
|
187 |
= Version 3.0.5 =
|
188 |
* Changed: Display only normal messages on progress bars
|
189 |
* Changed: Detection of multisite blog upload folder
|