OSDN Git Service

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