プロジェクト

全般

プロフィール

Bug(バグ) #3367

デイリーニュースで使用されるガジェットのパラメータがエスケープされている

Youichi Kimura10年以上前に追加. 約4年前に更新.

ステータス:
New(新規)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2013-06-25
期日:
進捗率:

0%

3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)

説明

Overview (現象)

管理画面のガジェット設定 (/design/gadget?type=dailyNews) からデイリーニュースで使用するガジェットを設定できるが、このガジェットのパラメーターに対してエスケープが施された状態でメール送信されてしまう。
例えば、デイリーニュースのガジェットに「フリーエリア」を追加して「内容」に「>>>> aaaaa <<<<」を設定すると、送信されるデイリーニュースのメール本文には「>>>> aaaaa <<<<」が出力される。

Causes (原因)

メールテンプレートにおけるエスケープ処理の問題は #1344 によって修正されており、その修正内容は下記のようなものでした。

--- a/lib/util/opMailSend.class.php
+++ b/lib/util/opMailSend.class.php
@@ -81,6 +82,7 @@ class opMailSend
     $view = new sfTemplatingComponentPartialView($context, 'superGlobal', 'notify_mail:'.$target.'_'.$template, '');
     $context->set('view_instance', $view);

+    $view->getAttributeHolder()->setEscaping(false);
     $view->setPartialVars($params);
     $view->setAttribute('renderer_config', array('twig' => 'opTemplateRendererTwig'));
     $view->setAttribute('rule_config', array('notify_mail' => array(

一方、デイリーニュースの送信には、メールテンプレートこそ使用しているものの本文中で include_component を使用しており、呼び出されるコンポーネントのために新たに sfViewParameterHolder が生成されます。この sfViewParameterHolder は呼び出し元ビューのエスケープ設定を引き継がず、sfConfig から sf_escaping_method や sf_escaping_strategy の値を取得して設定するため、コンポーネント内では #1344 の修正による効果が及ばないことになります。これが原因で、デイリーニュースのガジェット内ではエスケープが有効な状態でテンプレートが出力されます。

Way to fix (修正内容)

修正内容を記入

3367_mail-gadget-escaping.patch 表示 (461 Bytes) Youichi Kimura, 2013-06-26 11:43

履歴

#1 Youichi Kimura10年以上前に更新

  • 説明 を更新 (diff)

#2 Youichi Kimura10年以上前に更新

応急措置案パッチ。sfConfig の変更はこの箇所だけで十分かどうか要調査。

#3 kaoru nほぼ7年前に更新

  • 対象バージョンOpenPNE 3.9.0-old から OpenPNE 3.9.0 に変更

#4 kaoru n約4年前に更新

  • 対象バージョンOpenPNE 3.9.0 から OpenPNE 3.10.x に変更

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