ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/branches/ebihara/prj_dev_2_8beta6/webapp/lib/OpenPNE/RSS.php @ 2587

Last change on this file since 2587 was 2587, checked in by ebihara, 13 years ago

#609:修正段階でAuto-Discovery機能が動作しなくなっていたので一応元に戻した

File size: 2.4 KB
Line 
1<?php
2/**
3 * @copyright 2005-2007 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7require_once 'PNE/SimplePie.php';
8require_once 'PNE/SimplePie_File.php';
9
10/**
11 * OpenPNE_RSS
12 * RSS/Atom取得ライブラリ
13 */
14class OpenPNE_RSS
15{
16    /** @var string 出力文字エンコーディング */
17    var $charset;
18
19    function OpenPNE_RSS($charset = '')
20    {
21        $this->charset = $charset;
22    }
23
24    function fetch($rss_url)
25    {
26        $feed = new PNE_SimplePie();
27
28        /*フィードURLの設定*/
29        $feed->feed_url($rss_url);
30        /*キャッシュディレクトリの設定*/
31        $feed->cache_location(OPENPNE_RSS_CACHE_DIR);
32
33        /*フィード開始*/
34        if (!$feed->init()) {
35            return false;
36        }
37
38        $result = array();
39        foreach ($feed->get_items() as $item) {
40            $title = $item->get_title();
41            $links = $item->get_links();
42            $description = $item->get_description();
43            $date = @$item->get_date('Y-m-d H:i:s');
44
45            if (!$title) {
46                $title = '';
47            }
48
49            if (!$description) {
50                $description = '';
51            }
52
53            if (!$links) {
54                $link = '';
55            } else {
56                $link = $links[0];
57            }
58
59            if (!$date) {
60                $date = '';
61            }
62
63            $f_item = array(
64                'title' => $this->convert_encoding($title),
65                'body'  => $this->convert_encoding($description),
66                'link'  => $link,
67                'date'  => $date,
68            );
69            $result[] = $f_item;
70        }
71
72        return $result;
73    }
74
75    function convert_encoding($string)
76    {
77        if (!$this->charset) {
78            return $string;
79        }
80        return mb_convert_encoding($string, $this->charset, 'UTF-8');
81    }
82
83    /**
84     * RSS/Atom Auto-Discovery に対応したlinkタグからURLを抽出する(static)
85     */
86    function auto_discovery($url)
87    {
88//        var_dump('ad-' . $url);
89        $feed = new PNE_SimplePie();
90        $data = @$feed->get_file($url);
91
92        // htmlを取得できたか調べる
93        if (!$data) {
94            return false;
95        }
96
97        $feed->feed_url($url);
98        if (!$feed->init()) {
99            return false;
100        }
101
102        return $feed->subscribe_url();
103    }
104}
105
106?>
Note: See TracBrowser for help on using the repository browser.