$_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"; 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); } ?>