$_title_backuplist,'body'=>get_backup_list_all());
}
if ($action == 'delete')
{
return plugin_backup_delete($page);
}
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";
if ($action != 'diff' and is_page($page))
{
$body .= " - ".str_replace('$1',"$_msg_diff",$_msg_view)."
\n";
}
if ($action != 'nowdiff' and is_page($page))
{
$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($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,$post,$adminpass;
global $_title_backup_delete,$_msg_backup_deleted,$_msg_backup_delete;
global $_msg_backup_adminpass,$_btn_delete,$_msg_invalidpass;
if (!backup_file_exists($page))
{
return;
}
$s_page = htmlspecialchars($page);
$pass = array_key_exists('pass',$post) ? $post['pass'] : NULL;
if (md5($pass) == $adminpass)
{
backup_delete($page);
return array(
'msg' => $_title_backup_delete,
'body' => str_replace('$1',make_pagelink($page),$_msg_backup_deleted)
);
}
$body = ($pass === NULL) ? '' : "$_msg_invalidpass
\n";
$msg_delete = str_replace('$1',make_pagelink($page),$_msg_backup_delete);
$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);
}
?>