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 "db_common.inc";
8 require_once "dump_file.inc";
10 ini_set('zlib.output_compression', 'On');
16 * @param integer $total_data_count 全データ件数
17 * @param integer $start_num GETパラメータで渡された開始データ番号
18 * @param integer $data_count_per_page 1ページあたりのデータ件数
20 * @return array 計算したページ情報を保持する連想配列
22 function calc_page_info($total_data_count, $start_num, $data_count_per_page)
24 $current_page = intval($start_num / $data_count_per_page);
25 $last_page = intval(($total_data_count - 1) / $data_count_per_page);
26 $navi_page_range_start = ($current_page - 5) > 0 ? $current_page - 5: 0;
27 $navi_page_range_count = max(0, min(9, $last_page - $navi_page_range_start));
28 $navi_page_list = range($navi_page_range_start, $navi_page_range_start + $navi_page_range_count);
30 $pageinfo['current'] = $current_page;
31 $pageinfo['last'] = $last_page;
32 $pageinfo['navi_list'] = $navi_page_list;
34 $pageinfo['total_data_count'] = $total_data_count;
35 $pageinfo['data_count_per_page'] = $data_count_per_page;
44 * @param array $pageinfo calc_page_info()関数で取得したページ情報を保持する連想配列
46 function print_navi_page_table($pageinfo)
48 if (count($pageinfo['navi_list']) <= 1) return;
50 $href_base = preg_replace('/(&?start=\w+)/', '', filter_input(INPUT_SERVER, 'SCRIPT_NAME'));
51 if (strpos($href_base, "?") === FALSE) {
55 echo "<table align='center'>\n"
58 if ($pageinfo['current'] > 0) {
59 $href = $href_base . "&start=". ($pageinfo['current'] - 1) * $pageinfo['data_count_per_page'];
60 echo "<td><a href={$href}>< 前へ</a></td>";
63 foreach ($pageinfo['navi_list'] as $page) {
64 $page_num = $page + 1;
65 $href = $href_base . "&start=". $page * $pageinfo['data_count_per_page'];
66 if ($page === $pageinfo['current']) {
67 echo "<td>$page_num</td>";
69 echo "<td><a href={$href}>$page_num</a></td>";
73 if ($pageinfo['current'] < $pageinfo['last']) {
74 $href = $href_base . "&start=". ($pageinfo['current'] + 1) * $pageinfo['data_count_per_page'];
75 echo "<td><a href={$href}>次へ ></a></td>";
86 * @param array $scores スコア
87 * @param integer $rank_start 順位の開始番号(0オリジン)
89 function print_score_table($scores, $rank_start)
92 <table align='center' border=1>
106 foreach($scores as $idx => $score) {
107 $rank = $rank_start + $idx + 1;
108 $date = substr($score['date'], 0, 10); // 日時から日付部分を取り出す
109 $sex_str = $score['sex'] ? "男" : "女";
110 $depth = !$score['winner'] ? $score['depth']."階, " : "";
111 $realms = isset($score['realms_name']) ? "(".$score['realms_name'].")" : "";
112 $dumpfile = new DumpFile($score['score_id']);
115 if ($dumpfile->exists('dumps', 'txt')) {
116 $name = "<a href=\"show_dump.php?score_id={$score['score_id']}\">{$score['personality_name']}{$score['name']}</a>\n";
118 $name = "{$score['personality_name']}{$score['name']}";
122 <td align="right">{$score['score']}</td>
123 <td><nobr>$date</nobr></td>
125 <td>{$score['race_name']}</td>
126 <td>{$score['class_name']}$realms</td>
130 if ($dumpfile->exists('screens', 'html')) {
131 echo "<td><a href=\"show_screen.php?score_id={$score['score_id']}\">{$score['death_reason']}</a>";
133 echo "<td>{$death_reason}";
135 echo "<br>({$depth}{$score['version']})</td>\n";
143 $start_num = filter_input(INPUT_GET, 'start', FILTER_VALIDATE_INT) ?: 0;
144 $search_result = $db->search_score($start_num, 50);
146 $pageinfo = calc_page_info($search_result['total_data_count'], $start_num, 50);
153 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
154 <meta name="ROBOTS" content="NOINDEX, NOFOLLOW" />
155 <title>変愚蛮怒 スコア ランキング</title>
156 <link rel="alternate" title="変愚蛮怒 新着スコア" href="feed/newcome-atom.xml" type="application/atom+xml" />
160 <h1>変愚蛮怒 歴代スコア (<?php echo $db->get_sort_mode_name(); ?>)</h1>
161 <!--3日以内のスコアは<font color=red>赤</font>、10日以内のスコアは<font color=blue>青</font>で表示されます。<br>-->
162 <!--10日以内のスコアは<strong>強調表示</strong>されます。-->
164 <a href ="feed/newcome-atom.xml"><img src="feed/feed-icon-14x14.png">新着スコア購読</a>
165 <!--<small>…スコア受信時に自動生成します。URLをRSSリーダー等に登録すると新着スコアをチェックできます。</small>-->
171 echo sprintf("件数 %d 件 (%.2f 秒)", $search_result['total_data_count'], $search_result['elapsed_time']);
176 print_navi_page_table($pageinfo);
177 print_score_table($search_result['scores'], $pageinfo['current'] * $pageinfo['data_count_per_page']);
178 print_navi_page_table($pageinfo);