プロジェクト

全般

プロフィール

Bug(バグ) #1872

完了

When a value of MemberConfig's "age_public_flag" is not exists, the label of "Settings" is inconsistent with behavior (MemberConfigの "age_public_flag" の値が存在しないとき、「設定変更」の表示と実際の挙動が異なる)

Shogo Kawahara さんがほぼ14年前に追加. 約9年前に更新.

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

100%

予定工数:
3.6 で発生するか:
Yes
3.8 で発生するか:
Unknown (未調査)

説明

Overview

When a value of MemberConfig's "age_public_flag" is not exists, the caption of "Settings" is inconsistent with behavior.

MemberConfigの "age_public_flag" の値が空のとき、
「設定変更」での表示は「全員に公開」と表示されているのにも関わらず、
実際は「非公開」として取り扱われる。

非常に紛らわしい状況になっている。

Causes

lib/config/config/member_config.yml の age_public_flag
の Default が "1" になっている。

Way to fix

Default を 3 (private) としておくべき。

(表示の方を現状の挙動に合わせる。
これは、今までリリースしてきた各安定版バージョンが
存在するからである。)

Environment

OpenPNE3.4.x 〜


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

関連している OpenPNE 3 - Backport(バックポート) #1881: When a value of MemberConfig's "age_public_flag" is not exists, the label of "Settings" is inconsistent with behavior (MemberConfigの "age_public_flag" の値が存在しないとき、「設定変更」の表示と実際の挙動が異なる)Fixed(完了)Kousuke Ebihara2011-01-172011-06-24

操作
関連している OpenPNE 3 - Backport(バックポート) #2294: When a value of MemberConfig's "age_public_flag" is not exists, the label of "Settings" is inconsistent with behavior (MemberConfigの "age_public_flag" の値が存在しないとき、「設定変更」の表示と実際の挙動が異なる)Fixed(完了)Shinichi Urabe2011-01-17

操作

Shogo Kawahara さんがほぼ14年前に更新

  • 題名MemberConfigの "age_public_flag" の値が空のとき、「設定変更」の表示と実際の挙動が異なる から MemberConfigの "age_public_flag" の値が存在しないとき、「設定変更」の表示と実際の挙動が異なる に変更

Shogo Kawahara さんがほぼ14年前に更新

  • 題名MemberConfigの "age_public_flag" の値が存在しないとき、「設定変更」の表示と実際の挙動が異なる から When a value of MemberConfig's "age_public_flag" is not exists, the caption of "Settings" is inconsistent with behavior (MemberConfigの "age_public_flag" の値が存在しないとき、「設定変更」の表示と実際の挙動が異なる) に変更

Shogo Kawahara さんがほぼ14年前に更新

  • 題名 When a value of MemberConfig's "age_public_flag" is not exists, the caption of "Settings" is inconsistent with behavior (MemberConfigの "age_public_flag" の値が存在しないとき、「設定変更」の表示と実際の挙動が異なる) から When a value of MemberConfig's "age_public_flag" is not exists, the label of "Settings" is inconsistent with behavior (MemberConfigの "age_public_flag" の値が存在しないとき、「設定変更」の表示と実際の挙動が異なる) に変更

Shogo Kawahara さんがほぼ14年前に更新

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

Shogo Kawahara さんがほぼ14年前に更新

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

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

Masato Nagasawa さんが13年以上前に更新

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

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

  • ステータスPending Testing(テスト待ち) から Rejected(差し戻し) に変更
  • 進捗率70 から 50 に変更

再度レビューしました。差し戻します。

age_public_flag が空の時に年齢が非公開になるのは Member::getAge() が「公開範囲が ProfileTable::PUBLIC_FLAG_SNS や ProfileTable::PUBLIC_FLAG_FRIEND や ProfileTable::PUBLIC_FLAG_WEB であれば公開可能かどうかの検証をし、検証に失敗するか公開範囲がそれ以外の値の場合はすべて null を返す」という実装になっているからであり、この挙動は非常に偶然性の強いものです。この挙動がトラブルを引き起こす可能性としては、たとえば、今後、「『公開範囲が ProfileTable::PUBLIC_FLAG_PRIVATE であった場合に限定した挙動』が追加された場合に age_public_flag が空だと意図どおりに動作しなくなる」といったことが考えられます。このような変更を加えるにあたり、 Member::getAge() の実装を見て「現状『公開しない』として扱われる age_public_flag の値は ProfileTable::PUBLIC_FLAG_PRIVATE の他に null があるので、 null の場合の考慮もしなければならない」と判断するのは難しいことでしょう。もちろん、「公開範囲が ProfileTable::PUBLIC_FLAG_PRIVATE であった場合」という条件を加えることは危険でありそのような修正は避けたほうが無難ですが、今後混入する可能性が否定出来ない以上、この偶然に頼り切るのは危険です。

したがって、 Member::getAge() 側で「age_public_flag が空の場合の公開範囲が明確に ProfileTable::PUBLIC_FLAG_PRIVATE として扱われるようにする」ことも必要なのではないでしょうか。

具体的な対応方法のひとつとしては、 Member::getConfig() 側で、 DB の設定値が取得できなかった場合に設定ファイルを確認し、そちらで指定されているデフォルト値を返すようにするということが考えられます。ただし影響範囲が膨大となるため、それが現実的に厳しそうであれば、 Member::getAge() における Member::getConfig() のコール時に、第二引数の値として ProfileTable::PUBLIC_FLAG_PRIVATE を与える(3.4 の場合は Member::getAge() 内に条件分岐を追加する)ようにするのがよいかと思います。

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

  • 担当者Shogo Kawahara から Kousuke Ebihara に変更

http://redmine.openpne.jp/issues/1872#note-7 で指摘した事項の対応について引き受けます。

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

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

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

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

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

Shogo Kawahara さんが13年以上前に更新

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

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

すいません、 a5bafb22ac71a02ef407bb0356ba14e93c7c2cff, 9bcca0767963f8b32f43d82d2118404bd8795858 のコミットは stable-3.6.x への取り込みの際にひもづけるチケット番号を変更し忘れたものです

Naoya Tozuka さんが13年以上前に更新

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

修正点確認しました。問題ないと思われます。

一点だけ、お手数ですが、今回の lib/model/doctrine/Member.class.php の修正箇所の後で、$publicFlag と定数が比較されている部分について、$publicFlag が左辺に来ているのがコーディング規約に反しますので、直してもらっても宜しいでしょうか?

メモ

age_public_flag が参照されている箇所は他に
  • apps/mobile_frontend/modules/member/templates/profileSuccess.php
  • apps/pc_frontend/modules/member/templates/_profileListBox.php

がありますが、どちらも ProfileTable::PUBLIC_FLAG_FRIEND との比較であり、本チケットのような問題は発生しないため現状のままとします。

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

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

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

Naoya Tozuka さんが13年以上前に更新

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

確認しました。OKです。

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

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

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

Shogo Kawahara さんが13年以上前に更新

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

Naoya Tozuka さんが13年以上前に更新

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

Minoru Takai さんが13年以上前に更新

このチケットではコミットメッセージ中のコミット番号が誤っていることと、3.6系において stable-3.6.x ブランチと 3.6beta11 ブランチで2回取り込まれていることにより、コミットがどのブランチに紐付くのか分かりにくくなっています。

このチケットでは master ブランチ向けに (1), (2), (3) の3個のコミットが行なわれていることを示しておきます。

  1. note-5: master(1)
  2. note-9: master(2)
  3. note-10: stable-3.6.x(2)
  4. note-11: stable-3.6.x(1)
  5. note-14: master(3)
  6. note-16: 3.6beta11(2)
  7. note-17: 3.6beta11(1)
  8. #1881 note-10: stable-3.6.x(3)
  9. #1881: 3.6beta11(3)

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

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

テストOKです。

kaoru n さんが約9年前に更新

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

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