2 //ini_set('display_errors', 'On');
4 ini_set('log_errors', 'On');
5 ini_set('error_log', 'errors/'.pathinfo(__FILE__, PATHINFO_FILENAME).'.log');
7 include "db_common.inc";
8 include "dump_file.inc";
10 ini_set('zlib.output_compression', 'On');
12 function get_death_reason($killer)
20 return $killer."に殺された";
28 * @param integer $total_data_count 全データ件数
29 * @param integer $start_num GETパラメータで渡された開始データ番号
30 * @param integer $data_count_per_page 1ページあたりのデータ件数
32 * @return array 計算したページ情報を保持する連想配列
34 function calc_page_info($total_data_count, $start_num, $data_count_per_page)
36 $current_page = intval($start_num / $data_count_per_page);
37 $last_page = intval(($total_data_count - 1) / $data_count_per_page);
38 $navi_page_range_start = ($current_page - 5) > 0 ? $current_page - 5: 0;
39 $navi_page_range_count = max(0, min(9, $last_page - $navi_page_range_start));
40 $navi_page_list = range($navi_page_range_start, $navi_page_range_start + $navi_page_range_count);
42 $pageinfo['current'] = $current_page;
43 $pageinfo['last'] = $last_page;
44 $pageinfo['navi_list'] = $navi_page_list;
46 $pageinfo['total_data_count'] = $total_data_count;
47 $pageinfo['data_count_per_page'] = $data_count_per_page;
56 * @param array $pageinfo calc_page_info()関数で取得したページ情報を保持する連想配列
58 function print_navi_page_table($pageinfo)
60 if (count($pageinfo['navi_list']) <= 1) return;
62 $href_base = preg_replace('/(&?start=\w+)/', '', filter_input(INPUT_SERVER, 'REQUEST_URI'));
63 if (strpos($href_base, "?") === FALSE) {
67 echo "<table align='center'>\n"
70 if ($pageinfo['current'] > 0) {
71 $href = $href_base . "&start=". ($pageinfo['current'] - 1) * $pageinfo['data_count_per_page'];
72 echo "<td><a href={$href}>< 前へ</a></td>";
75 foreach ($pageinfo['navi_list'] as $page) {
76 $page_num = $page + 1;
77 $href = $href_base . "&start=". $page * $pageinfo['data_count_per_page'];
78 if ($page === $pageinfo['current']) {
79 echo "<td>$page_num</td>";
81 echo "<td><a href={$href}>$page_num</a></td>";
85 if ($pageinfo['current'] < $pageinfo['last']) {
86 $href = $href_base . "&start=". ($pageinfo['current'] + 1) * $pageinfo['data_count_per_page'];
87 echo "<td><a href={$href}>次へ ></a></td>";
98 * @param array $scores スコア
99 * @param integer $rank_start 順位の開始番号(0オリジン)
101 function print_score_table($scores, $rank_start)
104 <table align='center' border=1>
118 foreach($scores as $idx => $score) {
119 //$rank = $pageinfo['current'] * $pageinfo['data_count_per_page'] + $idx + 1;
120 $rank = $rank_start + $idx + 1;
121 $score_id = $score['score_id'];
122 $date = substr($score['date'], 0, 10);
123 $sex_str = $score['sex'] ? "男" : "女";
124 $death_reason = get_death_reason($score['killer']);
125 $depth = !$score['winner'] ? $score['depth']."階, " : "";
126 $realms = isset($score['realms_name']) ? "(".$score['realms_name'].")" : "";
127 $dumpfile = new DumpFile($score_id);
130 if ($dumpfile->exists('dumps', 'txt')) {
131 echo "<td><a href=\"show_dump.php?score_id={$score_id}\">{$rank}</a></td>\n";
133 echo "<td>{$rank}</td>\n";
136 <td align="right">{$score['score']}</td>
137 <td><nobr>$date</nobr></td>
138 <td>{$score['personality_name']}{$score['name']}</td>
139 <td>{$score['race_name']}</td>
140 <td>{$score['class_name']}$realms</td>
144 if ($dumpfile->exists('screens', 'html')) {
145 echo "<td><a href=\"show_screen.php?score_id={$score_id}\">{$death_reason}</a>";
147 echo "<td>{$death_reason}";
149 echo "<br>({$depth}{$score['version']})</td>\n";
157 $start_num = filter_input(INPUT_GET, 'start', FILTER_VALIDATE_INT) ?: 0;
158 $search_result = $db->search_score($start_num, 50);
160 $pageinfo = calc_page_info($search_result['total_data_count'], $start_num, 50);
167 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
168 <meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
169 <title>変愚蛮怒 スコア ランキング</title>
170 <link rel="alternate" title="変愚蛮怒 新着スコア" href="html/newcome-rss.xml" type="application/rss+xml">
174 <h1>変愚蛮怒 歴代スコア (<?php echo $db->get_sort_mode_name(); ?>)</h1>
175 <!--3日以内のスコアは<font color=red>赤</font>、10日以内のスコアは<font color=blue>青</font>で表示されます。<br>-->
176 <!--10日以内のスコアは<strong>強調表示</strong>されます。-->
177 <!--<br><a href ="html/newcome-rss.xml">新着チェック用RSS</a><small>…スコア受信時に自動生成します。URLをRSSリーダー等に登録すると新着スコアをチェックできます。</small>-->
180 echo sprintf("件数 %d 件 (%.2f 秒)", $search_result['total_data_count'], $search_result['elapsed_time']);
187 print_navi_page_table($pageinfo);
188 print_score_table($search_result['scores'], $pageinfo['current'] * $pageinfo['data_count_per_page']);
189 print_navi_page_table($pageinfo);