プロジェクト

全般

プロフィール

Bug(バグ) #871

完了

Daily news is not sent to the default setting members (デイリー・ニュース受信設定を一度もしていないメンバー宛てにデイリー・ニュースが配信されない)

Rimpei Ogawa さんがほぼ15年前に追加. 14年以上前に更新.

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

100%

予定工数:
3.6 で発生するか:
3.8 で発生するか:

説明

現象

デイリー・ニュース受信設定を一度もしていないメンバー宛てにデイリー・ニュースが配信されない。

「設定変更 > メール設定 > デイリー・ニュース」フォームのデフォルト値は「毎日送信する」となっているが、このフォームの「送信」ボタンを一度も押していないメンバーに対してはデイリー・ニュースが配信されない。

原因

デイリー・ニュース配信タスク側では MemberConfig にデータがない場合は配信を行わない実装となっているために、フォームのデフォルト値と違う挙動となってしまっている。

修正内容

修正内容を記入


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

関連している OpenPNE 3 - Backport(バックポート) #899: Daily news is not sent to the default setting members (デイリー・ニュース受信設定を一度もしていないメンバー宛てにデイリー・ニュースが配信されない)Fixed(完了)Yuki Yamashita2010-03-26

操作
関連している OpenPNE 3 - Backport(バックポート) #1139: Daily news is not sent to the default setting members (デイリー・ニュース受信設定を一度もしていないメンバー宛てにデイリー・ニュースが配信されない)Fixed(完了)Yuki Yamashita2010-03-26

操作

Yuki Yamashita さんがほぼ15年前に更新

  • ステータスPending Fixing(修正待ち) から Accepted(着手) に変更

Yuki Yamashita さんが14年以上前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 担当者Yuki Yamashita にセット

以下のように修正しました。

if (null !== $dailyNewsConfig && 0 === (int)$dailyNewsConfig)
      {
        continue;
      }

      if (1 === (int)$dailyNewsConfig && !$this->isDailyNewsDay())
      {
        continue;
      }

Yuki Yamashita さんが14年以上前に更新

  • 進捗率0 から 50 に変更

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

Yuki Yamashita さんが14年以上前に更新

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

Yuki Yamashita さんが14年以上前に更新

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

Kousuke Ebihara さんが14年以上前に更新

  • 対象バージョンOpenPNE 3.5.2 から OpenPNE 3.5.1 に変更

Mutsumi Imamura さんが14年以上前に更新

  • 進捗率50 から 70 に変更

動作確認しました。
設定変更を実施しなくてもデイリーメールが受信されることを確認。
また、ユーザー側にて各設定を切り替え、./symfony openpne:send-daily-newsを実行し確認した。

  1. 送信しない → デイリーメール送信されない
  2. 週2回送信する (月,木) → デイリーメール送信されない(2010/03/26金曜日にテスト実施のため)
  3. 毎日送信する → デイリーメール送信される

Kousuke Ebihara さんが14年以上前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

このコードからは設定値が空の場合にどの値が設定されたものと見なして処理をするのかどうかが判別しにくいです(マジックナンバーを使わざるを得ない部分であることも影響しているとは思いますが)。

コードの重複を防ぐ意味では、 config/member_config.yml の Default の値を用いるようにするのがベストだと思いますが、変更がかなり大きくなりそうで影響範囲も大きいので、とりあえず sfConfig::get() や SnsConfigTable::get() や opConfig::get() と同様に Member::getConfig() や MemberConfigTable::retrieveByNameAndMemberId() でも引数にデフォルト値を指定できるようにしてはどうでしょうか。

Kousuke Ebihara さんが14年以上前に更新

  • ステータスRejected(差し戻し) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

Member::getConfig() にデフォルト値を許す件についてはこのチケットでは対応しない方針にしたいと思います。

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