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);
     }
 }
}
$backwpupjobtemp = filter_input(INPUT_POST, 'BackWPupJobTemp', FILTER_SANITIZE_URL);
$backwpupjobtemp = rtrim(realpath($backwpupjobtemp), '/\\');
$log = '';
if (is_file($logfile)) {
    $logpos = filter_input(INPUT_POST, 'logpos', FILTER_SANITIZE_NUMBER_INT);
    $logfilarray = backwpup_read_logfile($logfile);
    $newpos = count($logfilarray);
    for ($i = $logpos; $i < count($logfilarray); $i++) {
        $log .= $logfilarray[$i];
    }
    if (!empty($newpos) && $newpos > 0) {
        $logpos = $newpos;
    }
    if (is_file($backwpupjobtemp . '/.running') && ($runningfile = file_get_contents($backwpupjobtemp . '/.running'))) {
        $infile = unserialize($runningfile);
        $warnings = $infile['WORKING']['WARNING'];
        $errors = $infile['WORKING']['ERROR'];
        $stepspersent = $infile['STEPSPERSENT'];
        $steppersent = $infile['STEPPERSENT'];
    } else {
        $logheader = backwpup_read_logheader($logfile);
        $warnings = $logheader['warnings'];
        $errors = $logheader['errors'];
        $stepspersent = 100;
        $steppersent = 100;
        $log .= '<span id="stopworking"></span>';
    }
    echo json_encode(array('logpos' => $logpos, 'LOG' => $log, 'WARNING' => $warnings, 'ERROR' => $errors, 'STEPSPERSENT' => $stepspersent, 'STEPPERSENT' => $steppersent));
}
die;
function backwpup_dashboard_logs()
{
    $cfg = get_option('backwpup');
    $widgets = get_option('dashboard_widget_options');
    if (!isset($widgets['backwpup_dashboard_logs']) or $widgets['backwpup_dashboard_logs'] < 1 or $widgets['backwpup_dashboard_logs'] > 20) {
        $widgets['backwpup_dashboard_logs'] = 5;
    }
    //get log files
    $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) or '.html.gz' == substr($file, -8))) {
                $logfiles[] = $file;
            }
        }
        closedir($dir);
        rsort($logfiles);
    }
    echo '<ul>';
    if (count($logfiles) > 0) {
        $count = 0;
        foreach ($logfiles as $logfile) {
            $logdata = backwpup_read_logheader($cfg['dirlogs'] . '/' . $logfile);
            echo '<li>';
            echo '<span>' . backwpup_date_i18n(get_option('date_format') . ' @ ' . get_option('time_format'), $logdata['logtime']) . '</span> ';
            echo '<a href="' . wp_nonce_url(backwpup_admin_url('admin.php') . '?page=backwpupworking&logfile=' . $cfg['dirlogs'] . '/' . $logfile, 'view-log_' . $logfile) . '" title="' . __('View Log:', 'backwpup') . ' ' . basename($logfile) . '">' . $logdata['name'] . '</i></a>';
            if ($logdata['errors'] > 0) {
                printf(' <span style="color:red;font-weight:bold;">' . _n("%d ERROR", "%d ERRORS", $logdata['errors'], 'backwpup') . '</span>', $logdata['errors']);
            }
            if ($logdata['warnings'] > 0) {
                printf(' <span style="color:#e66f00;font-weight:bold;">' . _n("%d WARNING", "%d WARNINGS", $logdata['warnings'], 'backwpup') . '</span>', $logdata['warnings']);
            }
            if ($logdata['errors'] == 0 and $logdata['warnings'] == 0) {
                echo ' <span style="color:green;font-weight:bold;">' . __('O.K.', 'backwpup') . '</span>';
            }
            echo '</li>';
            $count++;
            if ($count >= $widgets['backwpup_dashboard_logs']) {
                break;
            }
        }
        echo '</ul>';
    } else {
        echo '<i>' . __('none', 'backwpup') . '</i>';
    }
}