プロジェクト

全般

プロフィール

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 Kawahara13年以上前に追加. 8年以上前に更新.

ステータス:
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 〜


関連するチケット

関連している 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(完了) 2011-01-17 2011-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(完了) 2011-01-17

関係しているリビジョン

リビジョン 23d59234 (差分)
Shogo Kawahara約13年前に追加

fixed the configuration of member_config, the label of settings is inconsistent with behavior when a value of MemberConfig's "age_public_flag" isn't exists (fixes #1872)

リビジョン 22b4c000 (差分)
Kousuke Ebiharaほぼ13年前に追加

Member::getAge() now never handles null as age_public_flag value (fixes #1872)

リビジョン a5bafb22 (差分)
Shogo Kawaharaほぼ13年前に追加

fixed the configuration of member_config, the label of settings is inconsistent with behavior when a value of MemberConfig's "age_public_flag" isn't exists (fixes #1872)

リビジョン 9bcca076 (差分)
Kousuke Ebiharaほぼ13年前に追加

Member::getAge() now never handles null as age_public_flag value (fixes #1872)

リビジョン 30842fc5 (差分)
Shogo Kawaharaほぼ13年前に追加

fixed the configuration of member_config, the label of settings is inconsistent with behavior when a value of MemberConfig's "age_public_flag" isn't exists (fixes #1872)
(cherry picked from commit a5bafb22ac71a02ef407bb0356ba14e93c7c2cff)

リビジョン af98fa6c (差分)
Kousuke Ebiharaほぼ13年前に追加

Member::getAge() now never handles null as age_public_flag value (fixes #1872)
(cherry picked from commit 9bcca0767963f8b32f43d82d2118404bd8795858)

リビジョン 63447f82 (差分)
Kousuke Ebiharaほぼ13年前に追加

fixed comparing ProfileTable::PUBLIC_FLAG_* to a value to follow conding standard in the Member::getAge() (fixes #1872)

履歴

#1 Shogo Kawahara13年以上前に更新

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

#2 Shogo Kawahara13年以上前に更新

  • 題名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" の値が存在しないとき、「設定変更」の表示と実際の挙動が異なる) に変更

#3 Shogo Kawahara約13年前に更新

  • 題名 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" の値が存在しないとき、「設定変更」の表示と実際の挙動が異なる) に変更

#4 Shogo Kawahara約13年前に更新

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

#5 Shogo Kawahara約13年前に更新

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

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

#6 Masato Nagasawaほぼ13年前に更新

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

#7 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() 内に条件分岐を追加する)ようにするのがよいかと思います。

#8 Kousuke Ebiharaほぼ13年前に更新

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

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

#9 Kousuke Ebiharaほぼ13年前に更新

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

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

#10 Kousuke Ebiharaほぼ13年前に更新

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

#11 Shogo Kawaharaほぼ13年前に更新

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

#12 Kousuke Ebiharaほぼ13年前に更新

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

#13 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 との比較であり、本チケットのような問題は発生しないため現状のままとします。

#14 Kousuke Ebiharaほぼ13年前に更新

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

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

#15 Naoya Tozukaほぼ13年前に更新

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

確認しました。OKです。

#16 Kousuke Ebiharaほぼ13年前に更新

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

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

#17 Shogo Kawaharaほぼ13年前に更新

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

#18 Naoya Tozukaほぼ13年前に更新

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

#19 Minoru Takai12年以上前に更新

このチケットではコミットメッセージ中のコミット番号が誤っていることと、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)

#20 Yuma Sakata12年以上前に更新

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

テストOKです。

#21 kaoru n8年以上前に更新

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

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