プロジェクト

全般

プロフィール

Bug(バグ) #1874

管理画面の公開設定変更の可否を「メンバー選択」から「固定」に変更すると、公開設定のデフォルト値でメンバー側の設定が更新されてしまう

isao sano約13年前に追加. 8年以上前に更新.

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

100%

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

説明

現象

管理画面の公開設定変更の可否を「メンバー選択」から「固定」に変更すると、公開設定デフォルト値でメンバー側の設定を上書きしてしまう。
メンバー側が非公開にしている項目が、管理側の公開設定デフォルト値次第では公開されてしまう恐れがある。

バージョン

  • 3.7.x
  • 3.6.x
  • 3.4.x
  • 3.2.x¶

再現手順

1.管理画面の設定で誕生日のプロフィール項目の公開設定変更の可否を「メンバー選択」にしておく
2.メンバー側で誕生日の公開範囲を「公開しない」にする
3.管理画面の誕生日の公開設定変更の可否を「固定」に戻す
4.管理画面の誕生日の公開設定デフォルト値は「全員に公開」のままにしておく
5.手順2で設定した非公開設定が手順3の設定で上書きされ「全員の公開」になる

補足

  • メンバー側の誕生日の公開範囲を「フレンドまで公開」にして、非フレンドユーザーから見た場合でも同じことが起きる(確認済み)
  • 他のプロフィールでも同様の現象がおきる事が予想できます。(未確認)

環境

OS Windows XP
ブラウザ Firefox 3.6.13

Causes

固定の公開範囲を保存するときに、ProfileForm::save() が
MemberProfileの "public_flag" の値を デフォルトものに上書きしています。

Way to fix

プロフィール表示・検索機能にて、メンバーの設定値を上書きしないで管理画面の公開設定デフォルト値が適用される様に修正する

1. ProfileForm::save() で MemberProfile の "public_flag" の値を上書きしないようにする。
2. MemberProfile の表示判定を 公開範囲の固定に備えて変更する。
3. 検索時の抽出判定を 公開範囲の固定に備えて変更する。


関連するチケット

関連している OpenPNE 3 - Backport(バックポート) #1882: 管理画面の公開設定変更の可否を「メンバー選択」から「固定」に変更すると、公開設定のデフォルト値でメンバー側の設定が更新されてしまう Fixed(完了) 2011-01-18 2011-06-24
関連している OpenPNE 3 - Enhancement(機能追加・改善) #2239: 管理画面の公開設定変更の可否を「固定」にしデフォルト値を変更した場合、「非公開」に設定していたメンバーのプロフィールが閲覧される状態になる旨の注意文言を管理画面に追加する New(新規) 2011-06-22
関連している OpenPNE 3 - Backport(バックポート) #2295: 管理画面の公開設定変更の可否を「メンバー選択」から「固定」に変更すると、公開設定のデフォルト値でメンバー側の設定が更新されてしまう Fixed(完了) 2011-01-18

関係しているリビジョン

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

fixed the ProfileForm, because it overwrite value of MemberProfile's "public_flag" (fixes #1874)

リビジョン d0a4c4bd (差分)
Maki Takahashiほぼ13年前に追加

fixed the reflecting the IsEditPublicFlag of Profile in the Member Search (refs #1874)

履歴

#1 Shogo Kawahara約13年前に更新

  • 担当者Shogo Kawahara にセット
  • 優先度Normal(通常) から High(高め) に変更
  • 対象バージョンOpenPNE 3.7.0 にセット
  • 3.6 で発生するかYes にセット

#2 Shogo Kawahara約13年前に更新

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

#3 Shogo Kawahara約13年前に更新

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

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

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

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

レビューOKです。

#5 isao sanoほぼ13年前に更新

公開範囲の動作の「内容」としては問題なく、管理画面での公開設定デフォルト値よりもユーザーの設定した公開範囲が優先されているが、
メンバーのプロフィール画面(member/profile)に遷移した際に公開設定デフォルト値が表示される。

再現手順

1. 管理画面のプロフィール項目編集(/pc_backend.php/profile/edit/id/2)で誕生日の公開設定変更の可否を「メンバー選択」に設定する。
2. ユーザーAでログインし、誕生日の公開範囲を「公開しない」に設定する。
3. 管理画面の誕生日の公開設定変更の可否を「固定」に設定する。
4. 管理画面の誕生日の公開設定デフォルト値を「Web全体に公開」に設定する。
5. ユーザーAでログインし、プロフィール確認画面(member/profile)に遷移する
6. 誕生日の横に(Web全体に公開)という表示がある

#6 Shingo Yamadaほぼ13年前に更新

  • 担当者Shogo Kawahara から Shingo Yamada に変更

#7 Shingo Yamadaほぼ13年前に更新

  • 題名メンバーの設定した公開範囲よりも管理画面の公開設定デフォルト値が優先される から 管理画面の公開設定変更の可否を「メンバー選択」から「固定」に変更すると、公開設定のデフォルト値でメンバー側の設定が上書かれてしまう に変更

#8 Shingo Yamadaほぼ13年前に更新

isao sano は書きました:

公開範囲の動作の「内容」としては問題なく、管理画面での公開設定デフォルト値よりもユーザーの設定した公開範囲が優先されているが、
メンバーのプロフィール画面(member/profile)に遷移した際に公開設定デフォルト値が表示される。

#note-5 の指摘ですが、この挙動は意図したものとなります。
対応は行いません。

#9 Shingo Yamadaほぼ13年前に更新

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

プロフィール検索時に管理画面の公開設定デフォルト値が適用されていないようです。
差し戻します。

#10 Shingo Yamadaほぼ13年前に更新

  • 担当者Shingo Yamada から Maki Takahashi に変更

担当者を変更します。

#11 Shingo Yamadaほぼ13年前に更新

  • 題名管理画面の公開設定変更の可否を「メンバー選択」から「固定」に変更すると、公開設定のデフォルト値でメンバー側の設定が上書かれてしまう から 管理画面の公開設定変更の可否を「メンバー選択」から「固定」に変更すると、公開設定のデフォルト値でメンバー側の設定が更新されてしまう に変更

#12 isao sanoほぼ13年前に更新

現状での動作は以下のようになります。

確認手順

1. 管理画面のプロフィール項目編集(/pc_backend.php/profile/edit/id/2)で誕生日の公開設定変更の可否を「メンバー選択」に設定する。
2. pc_frontend側でユーザーAの誕生日の公開範囲を「公開しない」に設定する。
3. 管理画面の誕生日の公開設定変更の可否を「固定」に設定する。
4. 管理画面の誕生日の公開設定デフォルト値を「Web全体に公開」に設定する。
5. ログアウトしてユーザーAのプロフィール(/member/xx)に直接アクセスする。
6. ユーザーAでログインし、プロフィール確認画面(member/profile)にアクセスする。
7. ユーザーBでログインし、ユーザーAの誕生日を入れて検索する。
8. ユーザーBでログインし、ユーザーAのプロフィール画面に遷移する。
9. 管理画面のプロフィール項目編集(/pc_backend.php/profile/edit/id/2)で誕生日の公開設定変更の可否を「メンバー選択」に設定する。
10. ユーザーAでログインし、プロフィール確認画面(member/profile)にアクセスする。
11. ユーザーAでログインし、プロフィール編集画面(member/edit/profile)にアクセスする。
12. ユーザーBでログインし、ユーザーAのプロフィール画面に遷移する。

結果

■「固定」

5. ログアウトしてユーザーAのプロフィール(/member/xx)に直接アクセスする。

  • 誕生日表示されます

6. ユーザーAでログインし、プロフィール確認画面(member/profile)にアクセスする。

つまり「※他のメンバーから見たあなたのページはこのようになります。」のページです
  • 誕生日は表示され、その横に(Web全体に公開)と表示されている

7. ユーザーBでログインし、ユーザーAの誕生日を入れて検索する。

  • 検索にヒットしません

8. ユーザーBでログインし、ユーザーAのプロフィール画面に遷移する。

  • 誕生日が表示されます

■「メンバー選択」

10. ユーザーAでログインし、プロフィール確認画面(member/profile)にアクセスする。

  • 誕生日は表示されません

11. ユーザーAでログインし、プロフィール編集画面(member/edit/profile)にアクセスする。

  • 誕生日の公開範囲が「公開しない」のままになっている

12. ユーザーBでログインし、ユーザーAのプロフィール画面に遷移する。

  • 誕生時は表示されません

#13 Maki Takahashiほぼ13年前に更新

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

#14 Maki Takahashiほぼ13年前に更新

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

https://github.com/openpne/OpenPNE3/commit/d0a4c4bdb813fcf7e69758cecac14d9ec7191aca
にて、
管理画面の公開設定が「固定」の場合、メンバー検索にデフォルト値を適用するように修正しました。

  • 管理画面の公開設定が「メンバー選択」の場合、メンバー検索時にはユーザの公開設定が「全員に公開」もしくは「Web全体に公開」となっているユーザのみ検索対象となる(変更なし)
  • 管理画面の公開設定が「固定」の場合、デフォルトの公開設定値が「全員に公開」「Web全体に公開」の場合、ユーザの公開設定の値に関わらず全てのユーザが検索対象となる(ユーザが非公開にしていても検索される)
  • 管理画面の公開設定が「固定」の場合、デフォルトの公開設定値が「マイフレンドまで公開」「公開しない」の場合、ユーザの公開設定の値に関わらず、検索対象から外れる(ユーザが「全体に公開」していても、だれも検索されない)。
    • 「公開しない」の場合はそもそも検索フォームが表示されない

以上を確認いたしました。

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

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

レビューOKです。

メモ

  if (
    ProfileTable::PUBLIC_FLAG_SNS == $item->getDefaultPublicFlag()
    || ProfileTable::PUBLIC_FLAG_WEB == $item->getDefaultPublicFlag()
  )
のような記法について、コーディング規約では特に禁じていないと解釈していますが(開括弧の後にスペースがあるとコーディング規約違反ですが、改行については規約に言及がないのではと)他の開発者の皆様に考えがありましたら教えてください。

#16 Minoru Takai12年以上前に更新

note-15 について補足

if 文の条件式などで、記述を一行に収めない場合の記述については、現状のコーディング規約では言及されていません(ルールがありません)。実際、そのような場合には実装者の裁量でどのような記述にするかが決められているようです。

if (
  ConditinalExpressionA &&
  ConditinalExpressionB
)
{
}
if (
  ConditinalExpressionA
  && ConditinalExpressionB
)
{
}
if (
  ConditinalExpressionA
  &&
  ConditinalExpressionB
)
{
}
if (ConditinalExpressionA &&
ConditinalExpressionB)
{
}
if (ConditinalExpressionA && ConditinalExpressionB
  && LongLongConditinalExpressionC)
{
}

など、現在のソースコード中にもいくつかの形式が混在しているように思います。なお、個人的な意見ですが、フォーマットを制限する必要はない(その場その場で可読性があればよい)と思いますが、一行に書くと見にくい場合について、 if 文や for 文などでどのような表記が好ましいかを指標として示してあるべきだとは思います(コーディング規約ページの改善)。

#17 Yuma Sakata12年以上前に更新

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

テストOKです。

#18 kaoru n8年以上前に更新

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

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