2 //ini_set('display_errors', 'On');
4 ini_set('log_errors', 'On');
5 ini_set('error_log', 'errors/'.pathinfo(__FILE__, PATHINFO_FILENAME).'.log');
7 require_once "common.inc";
8 require_once "db_common.inc";
9 require_once "dump_file.inc";
10 require_once "web_template.inc";
12 ini_set('zlib.output_compression', 'On');
18 * @param integer $total_data_count 全データ件数
19 * @param integer $start_num GETパラメータで渡された開始データ番号
20 * @param integer $data_count_per_page 1ページあたりのデータ件数
22 * @return array 計算したページ情報を保持する連想配列
24 function calc_page_info($total_data_count, $start_num, $data_count_per_page)
26 $current_page = intval($start_num / $data_count_per_page);
27 $last_page = intval(($total_data_count - 1) / $data_count_per_page);
28 $navi_page_range_start = ($current_page - 5) > 0 ? $current_page - 5: 0;
29 $navi_page_range_count = max(0, min(9, $last_page - $navi_page_range_start));
30 $navi_page_list = range($navi_page_range_start, $navi_page_range_start + $navi_page_range_count);
32 $pageinfo['current'] = $current_page;
33 $pageinfo['last'] = $last_page;
34 $pageinfo['navi_list'] = $navi_page_list;
36 $pageinfo['total_data_count'] = $total_data_count;
37 $pageinfo['data_count_per_page'] = $data_count_per_page;
46 * @param resource $fp 出力先リソースへのハンドル
47 * @param array $pageinfo calc_page_info()関数で取得したページ情報を保持する連想配列
49 function print_navi_page_table($fp, $pageinfo)
51 if (count($pageinfo['navi_list']) <= 1) {
55 $href_base = filter_input(INPUT_SERVER, 'SCRIPT_NAME')."?"
56 .preg_replace('/(&?start=\w+)/', '', filter_input(INPUT_SERVER, 'QUERY_STRING'));
57 if (strpos($href_base, "?") === false) {
61 fwrite($fp, "<table align='center'>\n"
64 if ($pageinfo['current'] > 0) {
65 $href = $href_base . "&start=". ($pageinfo['current'] - 1) * $pageinfo['data_count_per_page'];
66 fwrite($fp, "<td><a href={$href}>< 前へ</a></td>\n");
69 foreach ($pageinfo['navi_list'] as $page) {
70 $page_num = $page + 1;
71 $href = $href_base . "&start=". $page * $pageinfo['data_count_per_page'];
72 if ($page === $pageinfo['current']) {
73 fwrite($fp, "<td>$page_num</td>\n");
75 fwrite($fp, "<td><a href={$href}>$page_num</a></td>\n");
79 if ($pageinfo['current'] < $pageinfo['last']) {
80 $href = $href_base . "&start=". ($pageinfo['current'] + 1) * $pageinfo['data_count_per_page'];
81 fwrite($fp, "<td><a href={$href}>次へ ></a></td>\n");
92 * @param resource $fp 出力先リソースへのハンドル
93 * @param array $scores スコア
94 * @param integer $rank_start 順位の開始番号(0オリジン)
96 function print_score_table($fp, $scores, $rank_start)
101 <table class="score two_rows">
104 <th rowspan="2">順位</th>
111 <th><nobr>バージョン</nobr></th>
114 <th colspan="7">死因</th>
121 fwrite($fp, "<tbody>\n");
122 foreach ($scores as $idx => $score) {
123 $rank = $rank_start + $idx + 1;
124 $date = substr($score['date'], 0, 10); // 日時から日付部分を取り出す
125 $sex_str = $score['sex'] ? "男" : "女";
126 $realms = isset($score['realms_name']) ? "(".$score['realms_name'].")" : "";
127 $dumpfile = new DumpFile($score['score_id']);
128 $version = trim(str_replace("変愚蛮怒", "", h($score['version'])));
130 $name = "<span>".h("{$score['personality_name']}")."</span><span>".h("{$score['name']}")."</span>";
131 if ($dumpfile->exists('dumps', 'txt')) {
132 $name = "<a href=\"show_dump.php?score_id={$score['score_id']}\">{$name}</a>";
138 <td class="rank" rowspan="2">$rank</td>
139 <td class="number">{$score['score']}</td>
140 <td><nobr>$date</nobr></td>
141 <td class="player_name">$name</td>
142 <td class="race_name">{$score['race_name']}</td>
143 <td class="class_name"><span>{$score['class_name']}</span> <span>$realms</span></td>
144 <td class="sex">$sex_str</td>
151 $death_reason = h($score['death_reason']);
152 fwrite($fp, "<td colspan=\"7\">");
153 if ($dumpfile->exists('screens', 'html')) {
154 fwrite($fp, "<a href=\"show_screen.php?score_id={$score['score_id']}\">{$death_reason}</a>");
156 fwrite($fp, "{$death_reason}");
158 fwrite($fp, "</td>\n</tr>\n");
160 fwrite($fp, "</tbody>\n");
161 fwrite($fp, "</table>\n");
166 $start_num = filter_input(INPUT_GET, 'start', FILTER_VALIDATE_INT) ?: 0;
167 $search_result = $db->search_score($start_num, 50);
169 $pageinfo = calc_page_info($search_result['total_data_count'], $start_num, 50);
172 $wt = new WebTemplate();
173 $wt->set_title("変愚蛮怒 スコアランキング");
174 $wt->add_head_contents('<meta name="robots" content="none" />');
175 $wt->add_head_contents('<link rel="stylesheet" type="text/css" href="css/score-table.css">');
176 $fp = $wt->main_contents_fp();
177 fprintf($fp, "<h2>変愚蛮怒 歴代スコア (%s)</h2>\n", $db->get_sort_mode_name());
189 $search_result['total_data_count'],
190 $search_result['elapsed_time']
193 print_navi_page_table($fp, $pageinfo);
194 print_score_table($fp, $search_result['scores'], $pageinfo['current'] * $pageinfo['data_count_per_page']);
195 print_navi_page_table($fp, $pageinfo);