$_title_backuplist, 'body'=>plugin_backup_get_list_all());
check_readable($page, true, true);
$s_page = htmlsc($page);
$r_page = rawurlencode($page);
$action = isset($vars['action']) ? $vars['action'] : '';
if ($action == 'delete') return plugin_backup_delete($page);
$s_action = $r_action = '';
if ($action != '') {
$s_action = htmlsc($action);
$r_action = rawurlencode($action);
}
$s_age = (isset($vars['age']) && is_numeric($vars['age'])) ? $vars['age'] : 0;
if ($s_age <= 0) return array( 'msg'=>$_title_pagebackuplist, 'body'=>plugin_backup_get_list($page));
$script = get_script_uri();
$body = '
' . "\n";
$body .= ' - ' . $_msg_backuplist . '
' ."\n";
$href = $script . '?cmd=backup&page=' . $r_page . '&age=' . $s_age;
$is_page = is_page($page);
if ($is_page && $action != 'diff')
$body .= ' - ' . str_replace('$1', '' . $_msg_diff . '',
$_msg_view) . '
' . "\n";
if ($is_page && $action != 'nowdiff')
$body .= ' - ' . str_replace('$1', '' . $_msg_nowdiff . '',
$_msg_view) . '
' . "\n";
if ($action != 'source')
$body .= ' - ' . str_replace('$1', '' . $_msg_source . '',
$_msg_view) . '
' . "\n";
if (! PLUGIN_BACKUP_DISABLE_BACKUP_RENDERING && $action)
$body .= ' - ' . str_replace('$1', '' . $_msg_backup . '',
$_msg_view) . '
' . "\n";
if ($is_page) {
$body .= ' - ' . str_replace('$1',
'' . $s_page . '',
$_msg_goto) . "\n";
} else {
$body .= '
- ' . str_replace('$1', $s_page, $_msg_deleted) . "\n";
}
$backups = get_backup($page);
$backups_count = count($backups);
if ($s_age > $backups_count) $s_age = $backups_count;
if ($backups_count > 0) {
$body .= '
' . "\n";
foreach($backups as $age => $val) {
$date = format_date($val['time'], TRUE);
$body .= ($age == $s_age) ?
' - ' . $age . ' ' . $date . '
' . "\n" :
' - ' . $age . ' ' . $date . '
' . "\n";
}
$body .= '
' . "\n";
}
$body .= ' ' . "\n";
$body .= '
' . "\n";
if ($action == 'diff') {
$title = & $_title_backupdiff;
$old = ($s_age > 1) ? join('', $backups[$s_age - 1]['data']) : '';
$cur = join('', $backups[$s_age]['data']);
$body .= plugin_backup_diff(do_diff($old, $cur));
} else if ($s_action == 'nowdiff') {
$title = & $_title_backupnowdiff;
$old = join('', $backups[$s_age]['data']);
$cur = join('', get_source($page));
$body .= plugin_backup_diff(do_diff($old, $cur));
} else if ($s_action == 'source') {
$title = & $_title_backupsource;
$body .= '' . htmlsc(join('', $backups[$s_age]['data'])) .
'
' . "\n";
} else {
if (PLUGIN_BACKUP_DISABLE_BACKUP_RENDERING) {
die_message('This feature is prohibited');
} else {
$title = & $_title_backup;
$body .= $hr . "\n" .
drop_submit(convert_html($backups[$s_age]['data']));
}
}
return array('msg'=>str_replace('$2', $s_age, $title), 'body'=>$body);
}
// Delete backup
function plugin_backup_delete($page)
{
global $vars, $_title_backup_delete, $_title_pagebackuplist, $_msg_backup_deleted;
global $_msg_backup_adminpass, $_btn_delete, $_msg_invalidpass;
if (! _backup_file_exists($page))
return array('msg'=>$_title_pagebackuplist, 'body'=>plugin_backup_get_list($page)); // Say "is not found"
$body = '';
if (isset($vars['pass'])) {
if (pkwk_login($vars['pass'])) {
_backup_delete($page);
return array(
'msg' => $_title_backup_delete,
'body' => str_replace('$1', make_pagelink($page), $_msg_backup_deleted)
);
} else {
$body = '' . $_msg_invalidpass . '
' . "\n";
}
}
$script = get_script_uri();
$s_page = htmlsc($page);
$body .= <<$_msg_backup_adminpass
EOD;
return array('msg'=>$_title_backup_delete, 'body'=>$body);
}
function plugin_backup_diff($str)
{
global $_msg_addline, $_msg_delline, $hr;
$ul = <<
$_msg_addline
$_msg_delline
EOD;
return $ul . '' . diff_style_to_css(htmlsc($str)) . '
' . "\n";
}
function plugin_backup_get_list($page)
{
global $_msg_backuplist, $_msg_diff, $_msg_nowdiff, $_msg_source, $_msg_nobackup;
global $_title_backup_delete;
$script = get_script_uri();
$r_page = rawurlencode($page);
$s_page = htmlsc($page);
$retval = array();
$retval[0] = <<
$_msg_backuplist
EOD;
$retval[1] = "\n";
$retval[2] = <<
EOD;
$backups = _backup_file_exists($page) ? get_backup($page) : array();
if (empty($backups)) {
$msg = str_replace('$1', make_pagelink($page), $_msg_nobackup);
$retval[1] .= ' ' . $msg . '' . "\n";
return join('', $retval);
}
if (! PKWK_READONLY) {
$retval[1] .= ' ';
$retval[1] .= str_replace('$1', $s_page, $_title_backup_delete);
$retval[1] .= '' . "\n";
}
$href = $script . '?cmd=backup&page=' . $r_page . '&age=';
$_anchor_from = $_anchor_to = '';
foreach ($backups as $age=>$data) {
if (! PLUGIN_BACKUP_DISABLE_BACKUP_RENDERING) {
$_anchor_from = '';
$_anchor_to = '';
}
$date = format_date($data['time'], TRUE);
$retval[1] .= <<$_anchor_from$age $date$_anchor_to
[ $_msg_diff
| $_msg_nowdiff
| $_msg_source
]
EOD;
}
return join('', $retval);
}
// List for all pages
function plugin_backup_get_list_all($withfilename = FALSE)
{
global $cantedit;
$pages = array_diff(get_existpages(BACKUP_DIR, BACKUP_EXT), $cantedit);
if (empty($pages)) {
return '';
} else {
return page_list($pages, 'backup', $withfilename);
}
}
?>