プロジェクト

全般

プロフィール

Bug(バグ) #950

if use a gadget was error when a state of the limit functions of mail template is enabled. (メールテンプレートの機能制限が有効の状態でガジェットを使用するとエラーになる)

Mutsumi Imamuraほぼ14年前に追加. 8年以上前に更新.

ステータス:
Fixed(完了)
優先度:
High(高め)
担当者:
対象バージョン:
開始日:
2010-04-09
期日:
進捗率:

100%

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

説明

現象

管理画面のデイリーニュースガジェット設定で、フリーエリアガジェットに入力があるとデイリーメールタスクでFatalErrorが発生する

再現環境

  • OpenPNE3.4.1
  • 手嶋屋開発環境

原因

include_component()で第三引数に指定するarray('gadget')をテンプレート側で正しく渡せていない。
OpenPNE.yml で is_restrict_mail_template: true として場合に特定のオブジェクト以外は配列に変換されるが、
gadget クラスがその対象に含まれていない事が原因で、配列になってしまっているため、問題が起こっている。

修正内容

lib/view/twig/opTemplateRendererTwig.php 内でパラメータの機能制限を行っているので、
パラメータ内に Gadget オブジェクトが存在する場合、配列や除外対象にしないように修正する。

エラー内容

PHP Fatal error:  Call to undefined method sfOutputEscaperArrayDecorator::getConfig() in /home/hoge/sns/341.hoge.hoge.hoge.jp/apps/pc_frontend/modules/default/templates/_freeAreaMail.php on line 1
PHP Stack trace:
PHP   1. {main}() /home/hoge/sns/341.hoge.hoge.hoge.jp/symfony:0
PHP   2. include() /home/hoge/sns/341.hoge.hoge.hoge.jp/symfony:14
PHP   3. sfSymfonyCommandApplication->run() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/command/cli.php:20
PHP   4. sfTask->runFromCLI() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/command/sfSymfonyCommandApplication.class.php:76
PHP   5. sfBaseTask->doRun() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/task/sfTask.class.php:97
PHP   6. openpneSendDailyNewsTask->execute() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/task/sfBaseTask.class.php:68
PHP   7. sfOpenPNEMailSend::sendTemplateMail() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/task/openpneSendDailyNewsTask.class.php:79
PHP   8. sfOpenPNEMailSend::getMailTemplate() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/util/sfOpenPNEMailSend.class.php:128
PHP   9. sfPartialView->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/util/sfOpenPNEMailSend.class.php:94
PHP  10. sfTemplatingComponentPartialView->renderFile() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/view/sfPartialView.class.php:110
PHP  11. sfTemplateEngine->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/view/sfTemplatingComponentPartialView.class.php:67
PHP  12. opTemplateRendererTwig->evaluate() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/SymfonyTemplating/sfTemplateEngine.php:105
PHP  13. sfTemplateRendererTwig->evaluate() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/view/twig/opTemplateRendererTwig.php:26
PHP  14. Twig_Template->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/renderer/sfTemplateRendererTwig.php:37
PHP  15. __TwigTemplate_cc2046e81adfc7a9d32f54ca8fe289cd->display() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/Twig/Template.php:26
PHP  16. include_component() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/Twig/Environment.php(184) : eval()'d code:76
PHP  17. get_component() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/helper/PartialHelper.php:115
PHP  18. sfPartialView->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/helper/PartialHelper.php:155
PHP  19. sfPHPView->renderFile() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/view/sfPartialView.class.php:110
PHP  20. require() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/view/sfPHPView.class.php:75
----------------------------------------------------------

MySNS

http://example.com/

本日の最新情報  [2010. 04. 09/Fri]

  [Apr. 09 2010/Fri]

----------------------------------------------------------

Hello .nanana

Fatal error: Call to undefined method sfOutputEscaperArrayDecorator::getConfig() in /home/hoge/sns/341.hoge.hoge.hoge.jp/apps/pc_frontend/modules/default/templates/_freeAreaMail.php on line 1

Call Stack:
    0.0004      49220   1. {main}() /home/hoge/sns/341.hoge.hoge.hoge.jp/symfony:0
    0.0066     359196   2. include('/home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/command/cli.php') /home/hoge/sns/341.hoge.hoge.hoge.jp/symfony:14
    0.3605    8125260   3. sfSymfonyCommandApplication->run() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/command/cli.php:20
    0.3694    8151220   4. sfTask->runFromCLI() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/command/sfSymfonyCommandApplication.class.php:76
    0.3696    8151220   5. sfBaseTask->doRun() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/task/sfTask.class.php:97
    1.5532    8528552   6. openpneSendDailyNewsTask->execute() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/task/sfBaseTask.class.php:68
    4.4912   27564544   7. sfOpenPNEMailSend::sendTemplateMail() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/task/openpneSendDailyNewsTask.class.php:79
    4.5286   27881444   8. sfOpenPNEMailSend::getMailTemplate() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/util/sfOpenPNEMailSend.class.php:128
    4.5563   28667996   9. sfPartialView->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/util/sfOpenPNEMailSend.class.php:94
    4.5564   28668036  10. sfTemplatingComponentPartialView->renderFile() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/view/sfPartialView.class.php:110
    4.5830   29505072  11. sfTemplateEngine->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/view/sfTemplatingComponentPartialView.class.php:67
    4.6435   29635224  12. opTemplateRendererTwig->evaluate() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/SymfonyTemplating/sfTemplateEngine.php:105
    6.6524   32122572  13. sfTemplateRendererTwig->evaluate() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/view/twig/opTemplateRendererTwig.php:26
    8.0212   33277156  14. Twig_Template->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/renderer/sfTemplateRendererTwig.php:37
    8.0212   33318144  15. __TwigTemplate_cc2046e81adfc7a9d32f54ca8fe289cd->display() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/Twig/Template.php:26
    8.0225   33319752  16. include_component() /home/hoge/sns/341.hoge.hoge.hoge.jp/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/Twig/Environment.php(184) : eval()'d code:76
    8.0225   33319752  17. get_component() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/helper/PartialHelper.php:115
    8.0380   33337284  18. sfPartialView->render() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/helper/PartialHelper.php:155
    8.0381   33337284  19. sfPHPView->renderFile() /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/view/sfPartialView.class.php:110
    8.0991   33381976  20. require('/home/hoge/sns/341.hoge.hoge.hoge.jp/apps/pc_frontend/modules/default/templates/_freeAreaMail.php') /home/hoge/sns/341.hoge.hoge.hoge.jp/lib/vendor/symfony/lib/view/sfPHPView.class.php:75


関連するチケット

関連している OpenPNE 3 - Backport(バックポート) #1616: 管理画面のデイリーニュースガジェット設定でフリーエリアガジェットに入力があるとデイリーメールタスクでFatalErrorが発生する Invalid(無効) 2010-04-09
関連している OpenPNE 3 - Backport(バックポート) #1642: if use a gadget was error when a state of the limit functions of mail template is enabled. (メールテンプレートの機能制限が有効の状態でガジェットを使用するとエラーになる) Fixed(完了) 2010-04-09
関連している OpenPNE 3 - Backport(バックポート) #1646: if use a gadget was error when a state of the limit functions of mail template is enabled. (メールテンプレートの機能制限が有効の状態でガジェットを使用するとエラーになる) Fixed(完了) 2010-04-09
次のチケットが重複 OpenPNE 3 - Bug(バグ) #909: デイリーニュースにフリーエリアを挿入すると Fatal error Invalid(無効) 2010-03-27

関係しているリビジョン

リビジョン a59c3300 (差分)
Masato Nagasawa13年以上前に追加

fixed allowed gadget class in the twig template. (fixes #950)

履歴

#1 Mutsumi Imamuraほぼ14年前に更新

エラーメッセージが切れていたので追記しました。

#2 Masato Nagasawaほぼ14年前に更新

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

#3 Rimpei Ogawa13年以上前に更新

  • 3.6 で発生するかYes にセット

#4 Kousuke Ebihara13年以上前に更新

  • 対象バージョンOpenPNE 3.7.0 にセット

#5 Masato Nagasawa13年以上前に更新

  • 題名管理画面のデイリーニュースガジェット設定でフリーエリアガジェットに入力があるとデイリーメールタスクでFatalErrorが発生する から メールテンプレートでガジェットを使用するとエラーになる に変更

include_component()で第三引数に指定するarray('gadget')をテンプレート側で正しく渡せていない事が原因です。

#6 Masato Nagasawa13年以上前に更新

  • 題名メールテンプレートでガジェットを使用するとエラーになる から メールテンプレートの機能制限が有効の状態でガジェットを使用するとエラーになる に変更

#7 Masato Nagasawa13年以上前に更新

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

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

すでにDB上にテンプレートが存在している場合、
今回のテンプレートへの変更が反映されていない状態になります。
ですが、テンプレートの修正は gadget 要素のみを第三引数に渡す対応であり、
以前の状態のままでも item.gadget 要素は存在しているため動作に問題はありません。(不要な要素を第三引数に渡さない対応)

#8 Masato Nagasawa13年以上前に更新

  • 題名メールテンプレートの機能制限が有効の状態でガジェットを使用するとエラーになる から if use a gadget was error when a state of the limit functions of mail template is enabled. (メールテンプレートの機能制限が有効の状態でガジェットを使用するとエラーになる) に変更

#9 Shogo Kawahara13年以上前に更新

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

#10 Yuma Sakata12年以上前に更新

  • ステータスPending Testing(テスト待ち) から Pending Fixing(修正待ち) に変更

テスト実施したところ #1594 と同じ問題が確認できました。
本チケットとは違う原因かもしれませんので、その場合は #1594 で対応よろしくお願いします。

また以下の問題もあり、本チケットで修正するべき問題か判断できかねますが差し戻します。

メールテンプレートの機能制限が有効の状態でガジェットを使用した時の動作確認(SNSメンバー500人以上)

  • 試験手順

0. SNSメンバーを500人以上の状態にする
1. 管理画面のデイリーニュースガジェット設定を表示する
2. フリーエリアガジェットの任意の箇所に「tetete」と追記する
3. コンソールから symfony openpne:send-daily-news を実行する

  • 試験結果
    以下エラーメッセージが表示されて、デイリーニュースが送信できない
Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 64 bytes) in /home/hoge/sns/hoge.jp/lib/view/twig/opTemplateRendererTwig.php on line 99
  • 修正方針
    こちらの問題につきましても本チケットに挙げられている問題と別の場合 #1594 で対応が良いと思いますがいかがでしょうか。
    #950 を fix にするには #1594 の問題も修正する必要があると思います。

#11 Yuya Watanabe約12年前に更新

  • ステータスPending Fixing(修正待ち) から Accepted(着手) に変更
  • 3.6 で発生するかYes から Unknown (未調査) に変更
  • 3.4 で発生するかUnknown (未調査) にセット

#12 Yuya Watanabe約12年前に更新

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

#13 Yuya Watanabe約12年前に更新

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

再レビューしました.

note-10 の問題は本チケットとは別の問題であるため,別チケットでの対応がいいと思います.
しかし, #1594 によって別プロセスで実行するという回避策をとったため,メモリが足りないという状態も回避できている可能性があります. note-10 については再調査が必要であると思います.

#14 Shouta Kashiwagi約12年前に更新

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

テストOKです。

#15 kaoru n8年以上前に更新

  • 3.8 で発生するかUnknown (未調査) にセット

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