プロジェクト

全般

プロフィール

Backport(バックポート) #2731

サイドバナーのRSSリーダーでURLに特殊文字が含まれる場合に正しいRSSフィードが得られない

Yuya Watanabe5年以上前に追加. 5年以上前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2011-09-17
期日:
進捗率:

100%


説明

概要

サイドバナーのRSSリーダーを利用する際,URLに特殊文字が含まれる場合に正しいRSSフィードが得られない.

確認手順

  1. pc_backend.php/design/gadget/type/sideBannerで「RSSリーダー」のガジェットを追加する
  2. 「RSSリーダー」をクリックして下記URLを登録する
    http://video.baidu.jp/api/search?word=バイク&output=rss&start=0&count=12&sort=dt_recent&adult_filter=1
    
  3. ログイン画面等のサイドバナーが表示されるページで表示される結果を確認する
    • Firefox等の別のRSSリーダーで表示される結果と違う

原因

下記コード部において$this->gadgetがGadgetクラスをsfOutputEscaperIteratorDecoratorクラスでラップされているため,特殊文字がエスケープされた文字列が取得されてしまう.

apps/pc_frontend/modules/default/actions/components.class.php

 98     try
 99     {
100       $fetcher = new opRssFetcher('UTF-8');
101       $this->result = @$fetcher->fetch($this->gadget->getConfig('url'), true);
102       if ($this->result)
103       {
104         $this->result[1] = array_slice($this->result[1], 0, 5);
105       }
106     }

修正案

  1. $this->gadgetがsfOutputEscaperIteratorDecoratorクラスでラップせずにGadgetクラスでexecuteRssBox()に渡すようにする
  2. executeRssBox()内で$this->gadgetのsfOutputEscaperIteratorDecoratorのラップを剥がして値を取得する

実装案

修正案1の実装方法が確認できなかったため修正案2について実装案を提示.おそらく以下の修正で修正案2に相当すると思われる.

diff --git a/apps/pc_frontend/modules/default/actions/components.class.php b/apps/pc_frontend/modules/default/actions/components.class.php
index ad79046..06b97c4 100644
--- a/apps/pc_frontend/modules/default/actions/components.class.php
+++ b/apps/pc_frontend/modules/default/actions/components.class.php
@@ -98,7 +98,7 @@ class defaultComponents extends sfComponents
     try
     {
       $fetcher = new opRssFetcher('UTF-8');
-      $this->result = @$fetcher->fetch($this->gadget->getConfig('url'), true);
+      $this->result = @$fetcher->fetch(sfOutputEscaper::unescape($this->gadget)->getConfig('url'), true);
       if ($this->result)
       {
         $this->result[1] = array_slice($this->result[1], 0, 5);

確認バージョン

OpenPNE 3.7.0-dev, 3.6beta13

実際の修正

各アプリケーションのconfig/settings.ymlのescaping_strategy部分を'on'からtrue,'off'からfalseに置換する.


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #2408: サイドバナーのRSSリーダーでURLに特殊文字が含まれる場合に正しいRSSフィードが得られない Fixed(完了) 2011-09-17

関係しているリビジョン

リビジョン 9caac64d (差分)
Yuya Watanabe5年以上前に追加

(fixes #2731, BP from #2408) replace setting value to unescape component

BP from #2408
e934a366b8f290bfc67770b80d263a24a67b59cb

リビジョン 416ff003 (差分)
Yuya Watanabe5年以上前に追加

(fixes #2731, BP from #2408) add patch to symfony-1.4.13 and patch not to unescape using get_partial/include_partial

BP from #2408
5812091917cf75337151aa0ba8ebc770359fe4a1

履歴

#1 Yuya Watanabe5年以上前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Yuya Watanabe にセット

#2 Yuya Watanabe5年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 9caac64d899067c92a18beb13ebf844b157221d3 で適用されました。

#3 Yuya Watanabe5年以上前に更新

更新履歴 416ff0031de96008e3b7665cbd3cb31e33dab670 で適用されました。

#4 Kousuke Ebihara5年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

#5 Yuma Sakata5年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

テストOKです。

他の形式にエクスポート: Atom PDF