$_title_backuplist, 'body'=>get_backup_list_all());
}
$action = isset($vars['action']) ? $vars['action'] : '';
$s_action = $r_action = '';
if ($action) {
if ($action == 'delete') {
return plugin_backup_delete($page);
}
$s_action = htmlspecialchars($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'=>get_backup_list($page));
}
$body = "
\n";
$body .= " - $_msg_backuplist
\n";
$href = "$script?cmd=backup&page=$r_page&age=$s_age";
$is_page = is_page($page);
if ($is_page) {
if ($action != 'diff')
$body .= ' - ' . str_replace('$1', "$_msg_diff", $_msg_view) . "
\n";
if ($action != 'nowdiff')
$body .= ' - ' . str_replace('$1', "$_msg_nowdiff", $_msg_view) . "
\n";
}
if ($action != 'source')
$body .= ' - ' . str_replace('$1', "$_msg_source", $_msg_view) . "
\n";
if ($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);
if (count($backups) > 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')
{
$old = ($s_age > 1) ? join('',$backups[$s_age - 1]['data']) : '';
$cur = join('',$backups[$s_age]['data']);
$body .= plugin_backup_diff(do_diff($old,$cur));
return array('msg'=>str_replace('$2',$s_age,$_title_backupdiff),'body'=>$body);
}
else if ($s_action == 'nowdiff')
{
$old = join('',$backups[$s_age]['data']);
$cur = join('',get_source($page));
$body .= plugin_backup_diff(do_diff($old,$cur));
return array('msg'=>str_replace('$2',$s_age,$_title_backupnowdiff),'body'=>$body);
}
else if ($s_action == 'source')
{
$body .= "".htmlspecialchars(join('',$backups[$s_age]['data']))."
\n";
return array('msg'=>str_replace('$2',$s_age,$_title_backupsource),'body'=>$body);
}
// else
$body .= "$hr\n".drop_submit(convert_html($backups[$s_age]['data']));
return array('msg'=>str_replace('$2',$s_age,$_title_backup),'body'=>$body);
}
// バックアップを削除
function plugin_backup_delete($page)
{
global $script, $vars;
global $_title_backup_delete, $_msg_backup_deleted, $_msg_backup_delete;
global $_msg_backup_adminpass, $_btn_delete, $_msg_invalidpass;
if (!backup_file_exists($page))
return array('msg'=>$_title_pagebackuplist, 'body'=>get_backup_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";
}
}
$s_page = htmlspecialchars($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;
$str = htmlspecialchars($str);
$str = preg_replace('/^(\-)(.*)$/m', ' $2', $str);
$str = preg_replace('/^(\+)(.*)$/m', ' $2', $str);
$str = trim($str);
$str = <<
$_msg_addline
$_msg_delline
$str
EOD;
return $str;
}
// バックアップ一覧を取得
function get_backup_list($page)
{
global $script;
global $_msg_backuplist, $_msg_diff, $_msg_nowdiff, $_msg_source, $_msg_nobackup;
global $_title_backup_delete;
$r_page = rawurlencode($page);
$s_page = htmlspecialchars($page);
$retval = array();
$retval[0] = <<
$_msg_backuplist
EOD;
$retval[1] = "\n";
$retval[2] = <<
EOD;
$backups = backup_file_exists($page) ? get_backup($page) : array();
if (count($backups) == 0)
{
$msg = str_replace('$1',make_pagelink($page), $_msg_nobackup);
$retval[1] .= " $msg\n";
return join('',$retval);
}
$retval[1] .= " ";
$retval[1] .= str_replace('$1',$s_page,$_title_backup_delete);
$retval[1] .= "\n";
foreach ($backups as $age=>$data) {
$date = format_date($data['time'],TRUE);
$href = "$script?cmd=backup&page=$r_page&age=$age";
$retval[1] .= <<$age $date
[ $_msg_diff
| $_msg_nowdiff
| $_msg_source
]
EOD;
}
return join('',$retval);
}
// 全ページのバックアップ一覧を取得
function get_backup_list_all($withfilename = FALSE)
{
global $cantedit;
$pages = array_diff(get_existpages(BACKUP_DIR, BACKUP_EXT), $cantedit);
if (count($pages) == 0)
return '';
return page_list($pages,'backup',$withfilename);
}
?>