プロジェクト

全般

プロフィール

Bug(バグ) #2354

完了

デイリーニュース用のフレンド最新日記ガジェットが動作していない

Kiwa Sakai さんが13年以上前に追加. 約13年前に更新.

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

100%

予定工数:
3.6 で発生するか:
[QA]バグ通知済:
いいえ
3.8 で発生するか:

説明

このチケットで扱う内容

コア側のデイリーニュース機能において、管理画面からガジェットとして「フレンド最新日記」が選択できるが、これが機能していないためこのガジェットを取り除く。

修正前と修正後の違い

  • 修正前
    • (1) 管理画面 > デザイン設定 > ガジェット設定から、次のいずれかのリンクを辿り、「ガジェットを追加する」を押す
      • デイリーニュース(PCメールアドレス向け)ガジェット設定
      • デイリーニュース(携帯メールアドレス向け)ガジェット設定
    • (2) 「フレンド最新日記」と「フリーエリア」のガジェットが選択できる
  • 修正後
    • (1) 上と同じ
    • (2) 「フリーエリア」のガジェットしか選択できない(「フレンド最新日記」のガジェットが取り除かれている)

これが確認できれば動作テストは十分です。

なお、修正前に「フレンド最新日記」ガジェットを設定しておくと、修正後にガジェット設定を見たときにガジェット名が空のボックスが表示されてしまい、そのままガジェット設定を行うと空のボックスが消えるような動作となっている。

これは、「設定済みのガジェットが、ソースコードから取り除かれたりプラグインが無効化されることで使用不能になった場合に、ガジェット設定でその部分に空のボックスが表示されてしまう」という好ましくない動作であると考えられるが、このチケットで扱う必要のある内容ではないため、ここでは触れないことにする。

概要

デイリーニュース用のフレンド最新日記ガジェットについて、コンポーネント内でメンバー情報の呼び出しがおこなえておらず、表示できない。
そのため、デイリーニュースのコンテンツにフレンド最新日記が表示されなくなる。

問題の処理

lib/action/opDiaryPluginDiaryComponents.class.php

  public function executeDailyNews()                                          
  { 
    $env = 'mobile_frontend' == sfConfig::get('sf_app') ? 'mobile' : 'pc';    
    $twigEnvironment = new Twig_Environment(new Twig_Loader_String());        
    $valueTpl = $twigEnvironment->loadTemplate(opDiaryPluginToolkit::getMailTemplate($env, 'diaryGagdet'));                                                 
    $diaries = Doctrine::getTable('Diary')->getFriendDiaryList($member['id'], 5);  

$member['id'] という記述があるが、 $member は定義されていない。

エラーメッセージ

Notice: Undefined variable: member in /OPENPNE_DIR/plugins/opDiaryPlugin/lib/action/opDiaryPluginDiaryComponents.class.php on line 58

Call Stack:  
    0.0004     328340   1. {main}() /OPENPNE_DIR/symfony:0
    0.0050     643024   2. include('/OPENPNE_DIR/symfony:37
    0.2657    9905668   3. sfSymfonyCommandApplication->run() /OPENPNE_DIR/lib/vendor/symfony/lib/command/cli.php:20
    0.2754    9907224   4. sfTask->runFromCLI() /OPENPNE_DIR/lib/vendor/symfony/lib/command/sfSymfonyCommandApplication.class.php:76
    0.2755    9907360   5. sfBaseTask->doRun() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfTask.class.php:97
    1.1033   10266872   6. openpneSendDailyNewsTask->execute() /OPENPNE_DIR/lib/vendor/symfony/lib/task/sfBaseTask.class.php:68
   15.9389   62226780   7. opMailSend::sendTemplateMail() /OPENPNE_DIR/lib/task/openpneSendDailyNewsTask.class.php:80
   15.9558   62269636   8. opMailSend::getMailTemplate() /OPENPNE_DIR/lib/util/opMailSend.class.php:136
   15.9586   62299888   9. sfPartialView->render() /OPENPNE_DIR/lib/util/opMailSend.class.php:97
   15.9587   62300172  10. sfTemplatingComponentPartialView->renderFile() /OPENPNE_DIR/lib/vendor/symfony/lib/view/sfPartialView.class.php:110
   15.9624   62332708  11. sfTemplateEngine->render() /OPENPNE_DIR/plugins/sfSymfonyTemplatingViewPlugin/lib/view/sfTemplatingComponentPartialView.class.php:67
   16.0613   62375024  12. opTemplateRendererTwig->evaluate() /OPENPNE_DIR/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/SymfonyTemplating/sfTemplateEngine.php:105   
   16.7483   63731628  13. sfTemplateRendererTwig->evaluate() /OPENPNE_DIR/lib/view/twig/opTemplateRendererTwig.php:26
   16.7484   63732748  14. Twig_Template->render() /OPENPNE_DIR/plugins/sfSymfonyTemplatingViewPlugin/lib/renderer/sfTemplateRendererTwig.php:37
   16.7484   63773784  15. __TwigTemplate_8ef0a9ac4eec4dede10f6c2551e2e3c1->display() /OPENPNE_DIR/plugins/sfSymfonyTemplatingViewPlugin/lib/vendor/Twig/Template.php:26
   16.7511   63777580  16. include_component() /tmp/twig_174bde47fdf7da9ef29ac5a948b7003b/__TwigTemplate_8ef0a9ac4eec4dede10f6c2551e2e3c1.php:74
   16.7511   63777580  17. get_component() /OPENPNE_DIR/lib/vendor/symfony/lib/helper/PartialHelper.php:115
   16.7517   63781136  18. _call_component() /OPENPNE_DIR/lib/vendor/symfony/lib/helper/PartialHelper.php:148
   16.7584   63811432  19. opDiaryPluginDiaryComponents->executeDailyNews() /OPENPNE_DIR/lib/vendor/symfony/lib/helper/PartialHelper.php:386

関連するチケット 2 (1件未完了1件完了)

関連している opDiaryPlugin - Enhancement(機能追加・改善) #1029: デイリーニュース用ガジェットの追加Fixed(完了)Shinichi Urabe

操作
関連している opDiaryPlugin - Enhancement(機能追加・改善) #2403: デイリーニュース用ガジェットの追加New(新規)2011-09-15

操作

Shingo Yamada さんが約13年前に更新

  • 優先度Normal(通常) から High(高め) に変更

Shingo Yamada さんが約13年前に更新

  • 360対象RC1 にセット

Shingo Yamada さんが約13年前に更新

  • 担当者Minoru Takai にセット

Minoru Takai さんが約13年前に更新

概要

コア側のデイリーニュース機能に対して、管理画面では「デイリーニュース」に対するガジェットを設定できます。現時点では「フリーエリア」と「フレンド最新日記」の 2 個が使えるようです。

しかし「フレンド最新日記」のガジェットは、「デイリーニュースにフレンドの最新日記を表示します」という説明に反し、機能していないようです。

この問題は、「機能すべき日記ガジェットが機能していない」と捉えるのではなく、「機能しない日記ガジェットが組み込まれている」と捉えることにします。ここでいう「日記ガジェット」とは「デイリーニュース用のフレンド最新日記ガジェット」を指します。

OpenPNE(それにバンドルされる opDiaryPlugin )として動作が保証される機能が動いていないと考えるべきではないのは、この機能を組み込んだ経緯が不適切で、この機能を取り込む必要性も見当たらないためです(*1)。つまり、もともとこの機能は動作が保証されているものではない、ということです。

(*1) #1029 がその対応チケットですが、実装方針やそのレビュー結果、動作の確認についての説明が一切ありません。

修正方針

この機能しないガジェットを OpenPNE (opDiaryPlugin) から取り除きます。

OpenPNE を利用する上で、管理画面側の操作でガジェットを設定した場合、その情報はDBに保存されます。今回のガジェットが存在している OpenPNE で「デイリーニュース用のフレンド最新日記ガジェット」を使用する設定にしたまま、今回の修正が取り込まれた opDiaryPlugin にバージョンアップした場合、存在しないガジェットのデータがDBにある状態になってしまいます。

この場合に問題が起こらないかを確認する必要がありますが、このケースは、「プラグイン側で定義されたガジェットを使用する設定にしておき、そのプラグインを外した状態」と同等の状況を意味しており、この場合に問題が起こらないようにコア側ではコードが書かれています。未知のガジェット情報がDBにある場合、それは無視される設計になっています(*2)。

(*2) config/gadget.yml に相当する YAML の記述が無い場合は Gadget::getGadgetConfigList() のリストにそのガジェットが含まれなくなり、DBにレコードがあってもそのガジェットは無かったものとして扱われます(Gadget::isEnabled() メソッドが false を返します)。

つまり、このガジェットを取り込んだ #1029 の修正を打ち消すことで対応できます。 (*2) により、最小範囲の修正として opDiaryPlugin/config/daily_news_gadget.yml を削除(または内容をコメントアウト)するだけでも対応できます。

実装の実態

#1029 のチケットでは日記ガジェットが追加されていますが、デイリーニュース向けのガジェットを作成し、ガジェット側で送信対象のメンバーの情報を参照することは現状のコア側のデイリーニュースの実装ではできません。

そのコア側の実装が改善されているわけでもないのに、日記ガジェット側では、あたかもメンバー情報が取得できている前提のコードが書かれており、結果として「常に動作しない」フレンド最新日記ガジェット機能が提供されてしまっています。

備考

#1029 での対応内容について、実装・レビュー・動作テストをした方がいて、「現状の実装のままでも、この機能は常に動作しないわけではなく、こうすれば動作する」といった情報がもしあれば提供してください。

Minoru Takai さんが約13年前に更新

  • 親チケット を削除 (#1029)

Minoru Takai さんが約13年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更

Minoru Takai さんが約13年前に更新

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

https://github.com/balibali/opDiaryPlugin/pull/15 で pull request しました。

修正内容は、単に dcb0853c を revert しただけです(8ファイルほどありますが、内2ファイルが衝突したので git revert ではなく手動で行いました)。

Minoru Takai さんが約13年前に更新

Rimpei Ogawa さんが約13年前に更新

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

Rimpei Ogawa さんが約13年前に更新

  • 対象バージョン205 から v1.4.0 に変更

Rimpei Ogawa さんが約13年前に更新

将来的に再度機能追加する可能性があるため、 #2403 に Enhancement チケットを作成しました。

Minoru Takai さんが約13年前に更新

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

Rimpei Ogawa さんが約13年前に更新

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

Rimpei Ogawa さんが約13年前に更新

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

レビューOKです。

Yuma Sakata さんが約13年前に更新

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

テストOKです。

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