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