OSDN Git Service

[modify]WebTemplateクラスを使ってテンプレートファイルに従いコンテンツを表示
authorHabu <habu@users.sourceforge.jp>
Thu, 29 Mar 2018 10:17:18 +0000 (19:17 +0900)
committerHabu <habu@users.sourceforge.jp>
Thu, 29 Mar 2018 10:17:18 +0000 (19:17 +0900)
score/popularity_ranking.php
score/score_ranking.php

index d6aaed0..a3451cd 100644 (file)
@@ -7,29 +7,32 @@ ini_set('error_log', 'errors/'.pathinfo(__FILE__, PATHINFO_FILENAME).'.log');
 ini_set('zlib.output_compression', 'On');
 
 require_once "db_common.inc";
+require_once "web_template.inc";
 
-function print_popularity_table($stat, $id_name, $name)
+function print_popularity_table($fp, $stat, $id_name, $name)
 {
-    echo <<<EOM
+    fwrite($fp, <<<EOM
 <div id="{$id_name}">
 <table class="tablesorter statistics_table">
 <thead>
 <tr>
 <th>$name</th>
-EOM;
+
+EOM
+    );
     
     foreach ([
         '計', '男性', '女性', '勝利', '平均スコア', '最大スコア',
     ] as $name) {
-        echo "<th>${name}</th>";
+        fwrite($fp, "<th>${name}</th>\n");
     }
-    echo "</tr>\n";
-    echo "</thead>\n";
+    fwrite($fp, "</tr>\n".
+           "</thead>\n");
 
     foreach ($stat as $k => $s) {
         $name_link = "<a href='score_ranking.php?{$id_name}={$s['id']}'>{$s['name']}</a></td>";
         $average_score = floor($s['average_score']);
-        echo <<<EOM
+        fwrite($fp, <<<EOM
 <tr>
 <td>$name_link</td>
 <td>{$s['total_count']}</td>
@@ -39,14 +42,16 @@ EOM;
 <td>$average_score</td>
 <td>{$s['max_score']}</td>
 </tr>
-EOM;
+
+EOM
+        );
     }
 
-    echo "</table>";
-    echo "</div>";
+    fwrite($fp, "</table>\n".
+           "</div>\n");
 }
 
-function print_realm_popularity_table($stat, $id_name)
+function print_realm_popularity_table($fp, $stat, $id_name)
 {
     // 魔法領域の統計を職業ごとにグループ分け
     $class_ids = array_unique(array_column($stat, "class_id"));
@@ -56,7 +61,7 @@ function print_realm_popularity_table($stat, $id_name)
         $class_realm_stat_list[intval($s["class_id"])][] = $s;
     }
 
-    echo "<div id=\"{$id_name}\">";
+    fwrite($fp, "<div id=\"{$id_name}\">");
 
     // 職業ごとにテーブルを表示
     foreach ($class_realm_stat_list as $class_id => $class_realm_stat) {
@@ -64,24 +69,26 @@ function print_realm_popularity_table($stat, $id_name)
 
         $class_name = $class_realm_stat[0]['class_name'];
 
-        echo <<<EOM
+        fwrite($fp, <<<EOM
 <table class="tablesorter statistics_table" id="${id_name}">
 <thead>
 <tr>
 <th>{$class_name}</th>
-EOM;
+
+EOM
+        );
         foreach ([
             '計', '男性', '女性', '勝利', '平均スコア', '最大スコア',
         ] as $th_name) {
-            echo "<th>${th_name}</th>";
+            fwrite($fp, "<th>${th_name}</th>\n");
         }
-        echo "</tr>\n";
-        echo "</thead>\n";
+        fwrite($fp, "</tr>\n".
+               "</thead>\n");
 
         foreach ($class_realm_stat as $realm) {
             $name_link = "<a href='score_ranking.php?class_id={$class_id}&{$id_name}={$realm['realm_id']}'>{$realm['realm_name']}</a></td>";
             $average_score = floor($realm['average_score']);
-            echo <<<EOM
+            fwrite($fp, <<<EOM
 <tr>
 <td>$name_link</td>
 <td>{$realm['total_count']}</td>
@@ -91,12 +98,14 @@ EOM;
 <td>$average_score</td>
 <td>{$realm['max_score']}</td>
 </tr>
-EOM;
+
+EOM
+            );
         }
 
-        echo "</table>";
+        fwrite($fp, "</table>\n");
     }
-    echo "</div>";
+    fwrite($fp, "</div>\n");
 }
 
 $db = new ScoreDB();
@@ -106,101 +115,36 @@ $time_start = microtime(true);
 $statistics = $db->get_statistics_tables('total_count');
 
 $query_time = microtime(true) - $time_start;
-?>
-
-<!DOCTYPE html>
-
-<html lang="jp">
-        <head>
-                <meta charset="utf-8"/>
-                <link rev=made href="mailto:hengband-dev@lists.sourceforge.jp">
-                <link rel="stylesheet" type="text/css" href="/hengband.css">
-                <link rel="stylesheet" type="text/css" href="tablesorter-theme/style.css">
-                <link rel="alternate" title="変愚蛮怒 新着スコア" href="feed/newcome-atom.xml" type="application/atom+xml" />
-                <script
-                src="https://code.jquery.com/jquery-3.3.1.min.js"
-                integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
-                crossorigin="anonymous"></script>
-
-                <script src="jquery.tablesorter.min.js" type="text/javascript"></script>
-                <script src="popularity_ranking.js" type="text/javascript"></script>
-                <title>変愚蛮怒 公式WEB スコアランキング 人気のある種族・職業・性格・魔法領域</title>
-        </head>
-
-        <body>
-
-                <header>
-
-                        <section id="title">
-                                <img class="tama1" src="/image/tama.gif" alt="tama">
-                                <img class="tama2" src="/image/tama.gif" alt="tama">
-                                <img class="tama3" src="/image/tama.gif" alt="tama">
-                                <img class="tama4" src="/image/tama.gif" alt="tama">
-                                <img id="hengTitle" src="/image/hengband_title.png" alt="変愚蛮怒 Hengband">
-                                <img class="tama4" src="/image/tama.gif" alt="tama">
-                                <img class="tama3" src="/image/tama.gif" alt="tama">
-                                <img class="tama2" src="/image/tama.gif" alt="tama">
-                                <img class="tama1" src="/image/tama.gif" alt="tama">
-                        </section>
-
-                        <section id="mainMenu">
-                                <a href="/index.html">トップ</a>
-                                <a href="/download.html">ダウンロード</a>
-                                <a href="/score.html">スコア</a>
-                                <a href="/lists.html">コミュニティ</a>
-                                <a href="/history.html">バージョン履歴</a>
-                                <a href="/link.html">関連リンク</a>
-                                <a href="/jlicense.html">著作権表記</a>
-                                <span>English (Coming Soon)</span>
-                        </section>
-
-                </header>
-                <div id="main">
-<!--main contents-->
-<h2>人気のある種族・職業・性格・魔法領域</h2>
-<!--
-<small>
-<?php
-echo sprintf("(%.2f 秒)", $query_time);
-?>
-</small>
--->
-    <nobr>[ <a href="javascript:void(0)" class="table_select" id="race_id">種族</a> | <a href="javascript:void(0)" class="table_select" id="class_id">職業</a> | <a href="javascript:void(0)" class="table_select" id="personality_id">性格</a> ] [ <a href="javascript:void(0)" class="table_select" id="realm_id1">魔法領域1</a> | <a href="javascript:void(0)" class="table_select" id="realm_id2">魔法領域2</a> ]</nobr>
-
-<?php
-print_popularity_table($statistics['race'], 'race_id', "種族");
-?>
-<?php
-print_popularity_table($statistics['class'], 'class_id', "職業");
-?>
-<?php
-print_popularity_table($statistics['personality'], 'personality_id', "性格");
-?>
-<?php
-print_realm_popularity_table($statistics['realm1'], 'realm_id1');
-?>
-<?php
-print_realm_popularity_table($statistics['realm2'], 'realm_id2');
-?>
-
-                </div>
-
-                <footer>
-
-                        <section>
-                                各ページへのリンクは御自由にどうぞ。/ Link Free.<br>
-                                2018 Hengband Dev Team. <a href="mailto:hengband-dev@lists.sourceforge.jp">hengband-dev@lists.sourceforge.jp</a><br>
-                        </section>
-
-                        <section>
-                                Powered by <a href="https://ja.osdn.net/" class="footer_banner">
-                                <img src="https://ja.osdn.net/sflogo.php?group_id=541" border="0" alt="OSDN.jp">
-                                </a>
-                        </section>
-
-                </footer>
-
-        </body>
 
-</html>
+$wt = new WebTemplate();
+
+$wt->add_head_contents('<link rel="stylesheet" type="text/css" href="tablesorter-theme/style.css">');
+$wt->add_head_contents(
+    <<<EOM
+<script
+src="https://code.jquery.com/jquery-3.3.1.min.js"
+integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
+crossorigin="anonymous"></script>
+EOM
+);
+$wt->add_head_contents('<script src="jquery.tablesorter.min.js" type="text/javascript"></script>');
+$wt->add_head_contents('<script src="popularity_ranking.js" type="text/javascript"></script>');
+$wt->set_title("変愚蛮怒 スコアランキング 人気のある種族・職業・性格・魔法領域");
+
+$fp = $wt->main_contents_fp();
+fwrite($fp, "<h2>人気のある種族・職業・性格・魔法領域</h2>\n");
+//fprintf($fp, "<small>(%.2f 秒)</small>", $query_time);
+fwrite($fp, <<<EOM
+<nobr>[ <a href="javascript:void(0)" class="table_select" id="race_id">種族</a> | <a href="javascript:void(0)" class="table_select" id="class_id">職業</a> | <a href="javascript:void(0)" class="table_select" id="personality_id">性格</a> ] [ <a href="javascript:void(0)" class="table_select" id="realm_id1">魔法領域1</a> | <a href="javascript:void(0)" class="table_select" id="realm_id2">魔法領域2</a> ]</nobr>
+
+EOM
+
+);
+
+print_popularity_table($fp, $statistics['race'], 'race_id', "種族");
+print_popularity_table($fp, $statistics['class'], 'class_id', "職業");
+print_popularity_table($fp, $statistics['personality'], 'personality_id', "性格");
+print_realm_popularity_table($fp, $statistics['realm1'], 'realm_id1');
+print_realm_popularity_table($fp, $statistics['realm2'], 'realm_id2');
+
+$wt->print_page();
index d0d4795..3b2f7b1 100644 (file)
@@ -6,6 +6,7 @@ ini_set('error_log', 'errors/'.pathinfo(__FILE__, PATHINFO_FILENAME).'.log');
 
 require_once "db_common.inc";
 require_once "dump_file.inc";
+require_once "web_template.inc";
 
 ini_set('zlib.output_compression', 'On');
 
@@ -39,11 +40,12 @@ function calc_page_info($total_data_count, $start_num, $data_count_per_page)
 
 
 /**
- * ページナビゲーションテーブルを表示する
+ * ページナビゲーションテーブルを出力する
  *
+ * @param resource $fp 出力先リソースへのハンドル
  * @param array $pageinfo calc_page_info()関数で取得したページ情報を保持する連想配列
  */
-function print_navi_page_table($pageinfo)
+function print_navi_page_table($fp, $pageinfo)
 {
     if (count($pageinfo['navi_list']) <= 1) return;
 
@@ -53,43 +55,44 @@ function print_navi_page_table($pageinfo)
         $href_base .= "?";
     }
 
-    echo "<table align='center'>\n"
-        ."<tr>";
+    fwrite($fp, "<table align='center'>\n"
+           ."<tr>\n");
 
     if ($pageinfo['current'] > 0) {
         $href = $href_base . "&start=". ($pageinfo['current'] - 1) * $pageinfo['data_count_per_page'];
-        echo "<td><a href={$href}>&lt; 前へ</a></td>";
+        fwrite($fp, "<td><a href={$href}>&lt; 前へ</a></td>\n");
     }
 
     foreach ($pageinfo['navi_list'] as $page) {
         $page_num = $page + 1;
         $href = $href_base . "&start=". $page * $pageinfo['data_count_per_page'];
         if ($page === $pageinfo['current']) {
-            echo "<td>$page_num</td>";
+            fwrite($fp, "<td>$page_num</td>\n");
         } else {
-            echo "<td><a href={$href}>$page_num</a></td>";
+            fwrite($fp, "<td><a href={$href}>$page_num</a></td>\n");
         }
     }
 
     if ($pageinfo['current'] < $pageinfo['last']) {
         $href = $href_base . "&start=". ($pageinfo['current'] + 1) * $pageinfo['data_count_per_page'];
-        echo "<td><a href={$href}>次へ &gt;</a></td>";
+        fwrite($fp, "<td><a href={$href}>次へ &gt;</a></td>\n");
     }
 
-    echo "</tr>\n"
-        ."</table>\n";
+    fwrite($fp, "</tr>\n"
+           ."</table>\n");
 }
 
 
 /**
- * スコアランキングテーブルを表示する
+ * スコアランキングテーブルを出力する
  *
+ * @param resource $fp 出力先リソースへのハンドル
  * @param array $scores スコア
  * @param integer $rank_start 順位の開始番号(0オリジン)
  */
-function print_score_table($scores, $rank_start)
+function print_score_table($fp, $scores, $rank_start)
 {
-    echo <<<EOM
+    fwrite($fp, <<<EOM
 <table align='center' border=1>
 <tr>
 <th>順位</th>
@@ -102,7 +105,8 @@ function print_score_table($scores, $rank_start)
 <th>死因</th>
 </tr>
 
-EOM;
+EOM
+    );
 
     foreach($scores as $idx => $score) {
         $rank = $rank_start + $idx + 1;
@@ -112,13 +116,13 @@ EOM;
         $realms = isset($score['realms_name']) ? "(".$score['realms_name'].")" : "";
         $dumpfile = new DumpFile($score['score_id']);
 
-        echo "<tr>\n";
         if ($dumpfile->exists('dumps', 'txt')) {
-            $name = "<a href=\"show_dump.php?score_id={$score['score_id']}\">{$score['personality_name']}{$score['name']}</a>\n";
+            $name = "<a href=\"show_dump.php?score_id={$score['score_id']}\">{$score['personality_name']}{$score['name']}</a>";
         } else {
             $name = "{$score['personality_name']}{$score['name']}";
         }
-        echo <<<EOM
+        fwrite($fp, <<<EOM
+<tr>
 <td>$rank</td>
 <td align="right">{$score['score']}</td>
 <td><nobr>$date</nobr></td>
@@ -127,16 +131,17 @@ EOM;
 <td>{$score['class_name']}$realms</td>
 <td>$sex_str</td>
 
-EOM;
+EOM
+        );
         if ($dumpfile->exists('screens', 'html')) {
-            echo "<td><a href=\"show_screen.php?score_id={$score['score_id']}\">{$score['death_reason']}</a>";
+            fwrite($fp, "<td><a href=\"show_screen.php?score_id={$score['score_id']}\">{$score['death_reason']}</a>");
         } else {
-            echo "<td>{$score['death_reason']}";
+            fwrite($fp, "<td>{$score['death_reason']}");
         }
-        echo "<br>({$depth}{$score['version']})</td>\n";
-        echo "</tr>\n";
+        fwrite($fp, "<br>({$depth}{$score['version']})</td>\n".
+               "</tr>\n");
     }
-    echo "</table>\n";
+    fwrite($fp, "</table>\n");
 }
 
 $db = new ScoreDB();
@@ -145,81 +150,25 @@ $start_num = filter_input(INPUT_GET, 'start', FILTER_VALIDATE_INT) ?: 0;
 $search_result = $db->search_score($start_num, 50);
 
 $pageinfo = calc_page_info($search_result['total_data_count'], $start_num, 50);
-?>
-
-<!DOCTYPE html>
-
-<html lang="jp">
-        <head>
-                <meta charset="utf-8"/>
-                <link rev=made href="mailto:hengband-dev@lists.sourceforge.jp">
-                <link rel="stylesheet" type="text/css" href="/hengband.css">
-                <title>変愚蛮怒 公式WEB スコアランキング</title>
-        </head>
-
-        <body>
-
-                <header>
-
-                        <section id="title">
-                                <img class="tama1" src="/image/tama.gif" alt="tama">
-                                <img class="tama2" src="/image/tama.gif" alt="tama">
-                                <img class="tama3" src="/image/tama.gif" alt="tama">
-                                <img class="tama4" src="/image/tama.gif" alt="tama">
-                                <img id="hengTitle" src="/image/hengband_title.png" alt="変愚蛮怒 Hengband">
-                                <img class="tama4" src="/image/tama.gif" alt="tama">
-                                <img class="tama3" src="/image/tama.gif" alt="tama">
-                                <img class="tama2" src="/image/tama.gif" alt="tama">
-                                <img class="tama1" src="/image/tama.gif" alt="tama">
-                        </section>
-
-                        <section id="mainMenu">
-                                <a href="/index.html">トップ</a>
-                                <a href="/download.html">ダウンロード</a>
-                                <a href="/score.html">スコア</a>
-                                <a href="/lists.html">コミュニティ</a>
-                                <a href="/history.html">バージョン履歴</a>
-                                <a href="/link.html">関連リンク</a>
-                                <a href="/jlicense.html">著作権表記</a>
-                                <span>English (Coming Soon)</span>
-                        </section>
-
-                </header>
-                <div id="main">
-<!--main contents-->
-<h2>変愚蛮怒 歴代スコア (<?php echo $db->get_sort_mode_name(); ?>)</h2>
+
+
+$wt = new WebTemplate();
+$wt->set_title("変愚蛮怒 スコアランキング");
+$fp = $wt->main_contents_fp();
+fprintf($fp, "<h2>変愚蛮怒 歴代スコア (%s)</h2>\n", $db->get_sort_mode_name());
+fprintf($fp, <<<EOM
 <div align="right">
 <small>
-<?php
-echo sprintf("件数 %d 件 (%.2f 秒)", $search_result['total_data_count'], $search_result['elapsed_time']);
-?>
+件数 %d 件 (%.2f 秒)
 </small>
 </div>
-<div>
-<?php
-print_navi_page_table($pageinfo);
-print_score_table($search_result['scores'], $pageinfo['current'] * $pageinfo['data_count_per_page']);
-print_navi_page_table($pageinfo);
-?>
-</div>
-                </div>
-
-                <footer>
-
-                        <section>
-                                各ページへのリンクは御自由にどうぞ。/ Link Free.<br>
-                                2018 Hengband Dev Team. <a href="mailto:hengband-dev@lists.sourceforge.jp">hengband-dev@lists.sourceforge.jp</a><br>
-                        </section>
-
-                        <section>
-                                Powered by <a href="https://ja.osdn.net/" class="footer_banner">
-                                <img src="https://ja.osdn.net/sflogo.php?group_id=541" border="0" alt="OSDN.jp">
-                                </a>
-                        </section>
 
-                </footer>
+EOM
+        ,$search_result['total_data_count'], $search_result['elapsed_time']
+);
 
-        </body>
+print_navi_page_table($fp, $pageinfo);
+print_score_table($fp, $search_result['scores'], $pageinfo['current'] * $pageinfo['data_count_per_page']);
+print_navi_page_table($fp, $pageinfo);
 
-</html>
+$wt->print_page();