OSDN Git Service

[add] #37370 2.2.1までのページ追加。
[hengband/web.git] / score / feed_maker.inc
1 <?php
2
3 require_once 'common.inc';
4 require_once 'dump_file.inc';
5 require_once 'FeedWriter/vendor/autoload.php';
6
7 use \FeedWriter\ATOM;
8
9 class FeedMaker
10 {
11     public function __construct($db)
12     {
13         $this->db = $db;
14     }
15
16     /**
17      * ATOM形式の新着スコア一覧のフィードを生成する
18      *
19      * @param $feed_path フィードを書き込むファイルのパス
20      */
21     public function make_atom_feed($feed_path)
22     {
23         $base_url = "http://". filter_input(INPUT_SERVER, 'SERVER_NAME') . dirname(filter_input(INPUT_SERVER, 'SCRIPT_NAME'));
24
25         $feed = new ATOM();
26
27         $feed->setTitle('変愚蛮怒 スコアランキング (新着順)');
28         $feed->setDescription('変愚蛮怒新着スコア');
29         $feed->setLink("{$base_url}/score_ranking.php?sort=newcome");
30         $feed->setDate(new DateTime());
31         $feed->setImage("http://".filter_input(INPUT_SERVER, 'SERVER_NAME')."/tama.gif");
32         $feed->setSelfLink("{$base_url}/$feed_path");
33
34         $this->db->set_sort_mode('newcome');
35         $search_result = $this->db->search_score(0, 30); // 最新30件を取得
36
37         foreach ($search_result['scores'] as $s) {
38             $item = $feed->createNewItem();
39
40             $dump_file = new DumpFile($s['score_id']);
41             $death_reason_detail = $dump_file->get_death_reason_detail();
42             if ($death_reason_detail === false) {
43                 $death_reason_detail = "{$s['death_reason']} @{$s['depth']}F";
44             }
45
46             $dump_url = "${base_url}/show_dump.php?score_id={$s['score_id']}";
47             $item->setTitle("{$s['personality_name']}{$s['name']} Score:{$s['score']} {$s['race_name']} {$s['class_name']} {$death_reason_detail}");
48             $item->setLink($dump_url);
49             $item->setDate($s['date']);
50
51             $contents = implode(
52                 '',
53                 array_map(function ($v) {
54                     return h($v).'<br>';
55                 }, $dump_file->get_last_message())
56             );
57             $item->setContent($contents);
58
59             $feed->addItem($item);
60         }
61
62         return file_put_contents($feed_path, $feed->generateFeed());
63     }
64 }