$current_screen,
'plural' => 'jobs',
'singular' => 'job'
) );
}
function check_permissions() {
if ( !current_user_can( 10 ) )
wp_die( __( 'No rights' ) );
}
function prepare_items() {
global $mode;
$this->items=get_option('backwpup_jobs');
$mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode'];
}
function pagination( $which ) {
global $mode;
parent::pagination( $which );
if ( 'top' == $which )
$this->view_switcher( $mode );
}
function no_items() {
_e( 'No Jobs.','backwpup');
}
function get_bulk_actions() {
$actions = array();
$actions['delete'] = __( 'Delete' );
return $actions;
}
function get_columns() {
$posts_columns = array();
$posts_columns['cb'] = '';
$posts_columns['id'] = __('ID','backwpup');
$posts_columns['jobname'] = __('Job Name','backwpup');
$posts_columns['type'] = __('Type','backwpup');
$posts_columns['info'] = __('Information','backwpup');
$posts_columns['next'] = __('Next Run','backwpup');
$posts_columns['last'] = __('Last Run','backwpup');
return $posts_columns;
}
function get_sortable_columns() {
return array();
}
function get_hidden_columns() {
return (array) get_user_option( 'backwpup_jobs_columnshidden' );
}
function display_rows() {
$style = '';
foreach ( $this->items as $jobid => $jobvalue ) {
$jobvalue=backwpup_check_job_vars($jobvalue);//Set and check job settings
$style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"';
echo "\n\t", $this->single_row( $jobid, $jobvalue, $style );
}
}
function single_row( $jobid, $jobvalue, $style = '' ) {
global $mode;
list( $columns, $hidden ) = $this->get_column_headers();
$r = "
";
foreach ( $columns as $column_name => $column_display_name ) {
$class = "class=\"$column_name column-$column_name\"";
$style = '';
if ( in_array( $column_name, $hidden ) )
$style = ' style="display:none;"';
$attributes = "$class$style";
switch( $column_name ) {
case 'cb':
$r .= ' | ';
break;
case 'id':
$r .= "".$jobid." | ";
break;
case 'jobname':
$r .= "".esc_html($jobvalue['name'])."";
$actions = array();
if (empty($jobvalue['logfile']) and empty($jobvalue['starttime'])) {
$actions['edit'] = "" . __('Edit') . "";
$actions['copy'] = "" . __('Copy','backwpup') . "";
$actions['delete'] = "" . __('Delete') . "";
$actions['runnow'] = "" . __('Run Now','backwpup') . "";
} else {
$actions['clear'] = "" . __('Abort','backwpup') . "";
}
$action_count = count($actions);
$i = 0;
$r .= '
';
foreach ( $actions as $action => $linkaction ) {
++$i;
( $i == $action_count ) ? $sep = '' : $sep = ' | ';
$r .= "$linkaction$sep";
}
$r .= ' ';
$r .= ' | ';
break;
case 'type':
$r .= "";
$r .= backwpup_backup_types($jobvalue['type'],false);
$r .= " | ";
break;
case 'info':
$r .= "";
if (in_array('FILE',explode('+',$jobvalue['type']))) {
$files=backwpup_calc_file_size($jobvalue);
$r .= __("Files Size:","backwpup")." ".backwpup_formatBytes($files['size'])." ";
if ( 'excerpt' == $mode ) {
$r .= __("Files count:","backwpup")." ".$files['num']." ";
}
}
if (in_array('DB',explode('+',$jobvalue['type'])) or in_array('OPTIMIZE',explode('+',$jobvalue['type'])) or in_array('CHECK',explode('+',$jobvalue['type']))) {
$dbsize=backwpup_calc_db_size($jobvalue);
$r .= "DB Size: ".backwpup_formatBytes($dbsize['size'])." ";
if ( 'excerpt' == $mode ) {
$r .= __("DB Tables:","backwpup")." ".$dbsize['num']." ";
$r .= __("DB Rows:","backwpup")." ".$dbsize['rows']." ";
}
}
$r .= " | ";
break;
case 'next':
$r .= "";
if ($jobvalue['starttime']>0 and empty($jobvalue['stoptime'])) {
$runtime=current_time('timestamp')-$jobvalue['starttime'];
$r .= __('Running since:','backwpup').' '.$runtime.' '.__('sec.','backwpup');
} elseif ($jobvalue['activated']) {
$r .= date(get_option('date_format'),$jobvalue['cronnextrun']).' '. date(get_option('time_format'),$jobvalue['cronnextrun']);
} else {
$r .= __('Inactive','backwpup');
}
if ( 'excerpt' == $mode ) {
$r .= ' '.__('Cron:','backwpup').' '.$jobvalue['cron'];
}
$r .= " | ";
break;
case 'last':
$r .= "";
if ($jobvalue['lastrun']) {
$r .= date_i18n(get_option('date_format'),$jobvalue['lastrun']).' '. date_i18n(get_option('time_format'),$jobvalue['lastrun']);
if (isset($jobvalue['lastruntime']))
$r .= ' '.__('Runtime:','backwpup').' '.$jobvalue['lastruntime'].' '.__('sec.','backwpup');
} else {
$r .= __('None','backwpup');
}
$r .= " | ";
break;
}
}
$r .= '
';
return $r;
}
}
class BackWPup_Logs_Table extends WP_List_Table {
function BackWPup_Logs_Table() {
global $current_screen;
parent::WP_List_Table( array(
'screen' => $current_screen,
'plural' => 'logs',
'singular' => 'log'
) );
}
function check_permissions() {
if ( !current_user_can( 10 ) )
wp_die( __( 'No rights' ) );
}
function prepare_items() {
$per_page = (int) get_user_option( 'backwpup_logs_per_page' );
if ( empty( $per_page ) || $per_page < 1 )
$per_page = 20;
//load logs
$cfg=get_option('backwpup');
$logfiles=array();
if ( $dir = @opendir( $cfg['dirlogs'] ) ) {
while (($file = readdir( $dir ) ) !== false ) {
if (is_file($cfg['dirlogs'].'/'.$file) and 'backwpup_log_' == substr($file,0,strlen('backwpup_log_')) and '.html' == substr($file,-5))
$logfiles[]=$file;
}
closedir( $dir );
rsort($logfiles);
}
//by page
$start=intval( ( $this->get_pagenum() - 1 ) * $per_page );
$end=$start+$per_page;
if ($end>count($logfiles))
$end=count($logfiles);
for ($i=$start;$i<$end;$i++) {
$this->items[] = $logfiles[$i];
}
$this->set_pagination_args( array(
'total_items' => count($logfiles),
'per_page' => $per_page
) );
}
function no_items() {
_e( 'No Logs.','backwpup');
}
function get_bulk_actions() {
$actions = array();
$actions['delete'] = __( 'Delete' );
return $actions;
}
function get_columns() {
$posts_columns = array();
$posts_columns['cb'] = '';
$posts_columns['id'] = __('Job','backwpup');
$posts_columns['type'] = __('Type','backwpup');
$posts_columns['log'] = __('Backup/Log Date/Time','backwpup');
$posts_columns['status'] = __('Status','backwpup');
$posts_columns['size'] = __('Size','backwpup');
$posts_columns['runtime'] = __('Runtime','backwpup');
return $posts_columns;
}
function get_sortable_columns() {
return array();
}
function get_hidden_columns() {
return (array) get_user_option( 'backwpup_logs_columnshidden' );
}
function display_rows() {
$style = '';
$cfg=get_option('backwpup');
foreach ( $this->items as $logfile ) {
$style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"';
$logdata=backwpup_read_logheader($cfg['dirlogs'].$logfile);
echo "\n\t", $this->single_row( $cfg['dirlogs'].$logfile, $logdata, $style );
}
}
function single_row( $logfile, $logdata, $style = '' ) {
list( $columns, $hidden ) = $this->get_column_headers();
$r = "";
foreach ( $columns as $column_name => $column_display_name ) {
$class = "class=\"$column_name column-$column_name\"";
$style = '';
if ( in_array( $column_name, $hidden ) )
$style = ' style="display:none;"';
$attributes = "$class$style";
switch($column_name) {
case 'cb':
$r .= ' | ';
break;
case 'id':
$r .= "".$logdata['jobid']." | ";
break;
case 'type':
$r .= "";
$r .= backwpup_backup_types($logdata['type'],false);
$r .= " | ";
break;
case 'log':
$name='';
if (is_file($logvalue['backupfile']))
$name=basename($logvalue['backupfile']);
$r .= "".date_i18n(get_option('date_format'),$logdata['logtime'])." ".date_i18n(get_option('time_format'),$logdata['logtime']).": ".$logdata['name']."";
$actions = array();
$actions['view'] = "" . __('View','backwpup') . "";
$actions['delete'] = "get_pagenum().'&logfiles[]='.basename($logfile), 'bulk-logs') . "\" onclick=\"return showNotice.warn();\">" . __('Delete') . "";
$actions['download'] = "" . __('Download','backwpup') . "";
$action_count = count($actions);
$i = 0;
$r .= '
';
foreach ( $actions as $action => $linkaction ) {
++$i;
( $i == $action_count ) ? $sep = '' : $sep = ' | ';
$r .= "$linkaction$sep";
}
$r .= ' ';
$r .= " | ";
break;
case 'status':
$r .= "";
if($logdata['errors']>0 or $logdata['warnings']>0) {
if ($logdata['errors']>0)
$r .= ''.$logdata['errors'].' '.__('ERROR(S)','backwpup').' ';
if ($logdata['warnings']>0)
$r .= ''.$logdata['warnings'].' '.__('WARNING(S)','backwpup').'';
} else {
$r .= ''.__('OK','backwpup').'';
}
$r .= " | ";
break;
case 'size':
$r .= "";
if (!empty($logdata['backupfilesize'])) {
$r .= backwpup_formatBytes($logdata['backupfilesize']);
} else {
$r .= __('only Log','backwpup');
}
$r .= " | ";
break;
case 'runtime':
$r .= "";
$r .= $logdata['runtime'].' '.__('sec.','backwpup');
$r .= " | ";
break;
}
}
$r .= '
';
return $r;
}
}
class BackWPup_Backups_Table extends WP_List_Table {
function BackWPup_Backups_Table() {
global $current_screen;
parent::WP_List_Table( array(
'screen' => $current_screen,
'plural' => 'backups',
'singular' => 'backup'
) );
}
function check_permissions() {
if ( !current_user_can( 10 ) )
wp_die( __( 'No rights' ) );
}
function prepare_items() {
$per_page = (int) get_user_option( 'backwpup_backups_per_page' );
if ( empty( $per_page ) || $per_page < 1 )
$per_page = 20;
//load logs
if (isset($_GET['paged'])) {
$backups=get_option('backwpup_backups_chache');
} else {
//Get Backup files
$backups=backwpup_get_backup_files();
update_option('backwpup_backups_chache',$backups);
}
//by page
$start=intval( ( $this->get_pagenum() - 1 ) * $per_page );
$end=$start+$per_page;
if ($end>count($backups))
$end=count($backups);
for ($i=$start;$i<$end;$i++) {
$this->items[] = $backups[$i];
}
$this->set_pagination_args( array(
'total_items' => count($backups),
'per_page' => $per_page
) );
}
function no_items() {
_e( 'No Backups.','backwpup');
}
function get_bulk_actions() {
$actions = array();
$actions['delete'] = __( 'Delete' );
return $actions;
}
function get_columns() {
$posts_columns = array();
$posts_columns['cb'] = '';
$posts_columns['backup'] = __('Backupfile','backwpup');
$posts_columns['size'] = __('Size','backwpup');
return $posts_columns;
}
function get_sortable_columns() {
return array();
}
function get_hidden_columns() {
return (array) get_user_option( 'backwpup_backups_columnshidden' );
}
function display_rows() {
$style = '';
$jobs=get_option('backwpup_jobs'); //Load jobs
foreach ( $this->items as $backup ) {
$style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"';
echo "\n\t", $this->single_row( $backup, backwpup_check_job_vars($jobs[$backup['jobid']]), $style );
}
}
function single_row( $backup, $jobvalue, $style = '' ) {
list( $columns, $hidden ) = $this->get_column_headers();
$r = "";
foreach ( $columns as $column_name => $column_display_name ) {
$class = "class=\"$column_name column-$column_name\"";
$style = '';
if ( in_array( $column_name, $hidden ) )
$style = ' style="display:none;"';
$attributes = "$class$style";
switch($column_name) {
case 'cb':
$r .= ' | ';
break;
case 'backup':
if ($backup['type']=='FOLDER') {
$r .= "".basename($backup['file'])." ".dirname($backup['file'])."/";
} elseif ($backup['type']=='S3') {
$r .= " | ".basename($backup['file'])." S3://".$jobvalue['awsBucket']."/".dirname($backup['file'])."/";
} elseif ($backup['type']=='FTP') {
$r .= " | ".basename($backup['file'])." ftp://".$jobvalue['ftphost'].dirname($backup['file'])."/";
} elseif ($backup['type']=='RSC') {
$r .= " | ".basename($backup['file'])." RSC://".$jobvalue['rscContainer']."/".dirname($backup['file'])."/";
}
$actions = array();
$actions['delete'] = "get_pagenum().'&backupfiles[]='.esc_attr($backup['file'].':'.$backup['jobid'].':'.$backup['type']), 'bulk-backups') . "\" onclick=\"if ( confirm('" . esc_js(__("You are about to delete this Backup Archive. \n 'Cancel' to stop, 'OK' to delete.","backwpup")) . "') ) { return true;}return false;\">" . __('Delete') . "";
$actions['download'] = "" . __('Download','backwpup') . "";
$action_count = count($actions);
$i = 0;
$r .= '
';
foreach ( $actions as $action => $linkaction ) {
++$i;
( $i == $action_count ) ? $sep = '' : $sep = ' | ';
$r .= "$linkaction$sep";
}
$r .= ' ';
$r .= " | ";
break;
case 'size':
$r .= "";
if (!empty($backup['filesize']) and $backup['filesize']!=-1) {
$r .= backwpup_formatBytes($backup['filesize']);
} else {
$r .= __('?','backwpup');
}
$r .= " | ";
break;
}
}
$r .= '
';
return $r;
}
}
?>