#author("2017-10-21T15:09:05+09:00","","")
#author("2017-10-21T15:09:25+09:00","","")
* showrssプラグイン: RSS/Atomフィードを読み込みたい [#k674c059]

- ページ: [[BugTrack]]
- 投稿者: [[umorigu]]
- 優先順位: 低
- 状態: 提案
- 状態: 完了
- カテゴリー: プラグイン
- 投稿日: 2017-10-21 (土) 13:46:32
- バージョン: 1.5.1
- リリース予定バージョン: 1.5.2

** メッセージ [#n0137ac0]
Atomフィードでのサイト情報配信が増えているが、showrssは対応していない。

[[BugTrack/2176]] より移動:


***[[Atom]] feed を読み込めない [#p0c8799f]
show''rss'' プラグインなので、場違いな気もしますが、[[official:質問箱4/435]] のような質問もあるので一応。
(2009-10-20 (火) 00:08:18 に、ソースの書き忘れ部分を加筆。これが無いと、<link href="URL" /> のhref="URL" 部分を読み込めない・・・)
  	// Tag start
  	function start_element($parser, $name, $attrs)
  	{
 -		if ($this->is_item) {
 +		if ($this->is_item !== FALSE) {
  			$this->tag     = $name;
 +			if ($this->is_item == 'ENTRY' && $name == 'LINK' && isset($attrs['HREF'])) {
 +				if (! isset($this->item[$name])) $this->item[$name] = '';
 +				$this->item[$name] .= $attrs['HREF'];
 +			}
  		} else if ($name == 'ITEM') {
 -			$this->is_item = TRUE;
 +			$this->is_item = 'ITEM';
 +		} else if ($name == 'ENTRY') {
 +			$this->is_item = 'ENTRY';
  		}
  	}
  
  	// Tag end
  	function end_element($parser, $name)
  	{
 -		if (! $this->is_item || $name != 'ITEM') return;
 +		if ($this->is_item === FALSE || $name != $this->is_item) return;
  
  		$item = array_map(array(& $this, 'escape'), $this->item);
  		$this->item = array();
  
  		if (isset($item['DC:DATE'])) {
  			$time = plugin_showrss_get_timestamp($item['DC:DATE']);
  			
  		} else if (isset($item['PUBDATE'])) {
  			$time = plugin_showrss_get_timestamp($item['PUBDATE']);
  			
 +		} else if (isset($item['UPDATED'])) {
 +			$time = plugin_showrss_get_timestamp($item['UPDATED'], $this->time);
 +		
  		} else if (isset($item['DESCRIPTION']) &&
  			($description = trim($item['DESCRIPTION'])) != '' &&
 -			($time = strtotime($description)) != -1) {
 +			($time = strtotime($description)) != -1 && $time !== FALSE) {
  				$time -= LOCALZONE;
  
  		} else {
  			$time = time() - LOCALZONE;
  		}
  		$item['_TIMESTAMP'] = $time;
  		$date = get_date('Y-m-d', $item['_TIMESTAMP']);
  
  		$this->items[$date][] = $item;
  		$this->is_item        = FALSE;
  	}
  
  	function character_data($parser, $data)
  	{
 -		if (! $this->is_item) return;
 +		if ($this->is_item === FALSE) return;
  		if (! isset($this->item[$this->tag])) $this->item[$this->tag] = '';
  		$this->item[$this->tag] .= $data;
  	}

plugin_showrss_get_timestamp(''); だとUTIME を返してくるので
		$str = '';
		foreach(array('DC:DATE', 'PUBDATE', 'UPDATED', 'DESCRIPTION') as $key) {
			if (isset($item[$key]) && $item[$key] != '') {
				$str = $item[$key];
				break;
			}
		}
		$time = plugin_showrss_get_timestamp($str, $this->time);
でもいいかなとも思いましたが、とりあえず放置。(今は、'DESCRIPTION' だけtrim() してから比較してますし)
strtotime() のところはとりあえず変更。



--------
- この対応を取り込みました。RSS/Atomフィードを表示できるようになりました commit:3cea92fae6 -- [[umorigu]] &new{2017-10-21 (土) 15:09:05};

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.049 sec.

SourceForge