Bug(バグ) #1874
完了管理画面の公開設定変更の可否を「メンバー選択」から「固定」に変更すると、公開設定のデフォルト値でメンバー側の設定が更新されてしまう
100%
説明
現象¶
管理画面の公開設定変更の可否を「メンバー選択」から「固定」に変更すると、公開設定デフォルト値でメンバー側の設定を上書きしてしまう。
メンバー側が非公開にしている項目が、管理側の公開設定デフォルト値次第では公開されてしまう恐れがある。
バージョン¶
- 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. 検索時の抽出判定を 公開範囲の固定に備えて変更する。
Shogo Kawahara さんがほぼ14年前に更新
- 担当者 を Shogo Kawahara にセット
- 優先度 を Normal(通常) から High(高め) に変更
- 対象バージョン を OpenPNE 3.7.0 にセット
- 3.6 で発生するか を Yes にセット
Shogo Kawahara さんがほぼ14年前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 f083906c882d2a34c27d53c1a63b13e243cab925 で適用されました。
Masato Nagasawa さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
レビューOKです。
isao sano さんが13年以上前に更新
公開範囲の動作の「内容」としては問題なく、管理画面での公開設定デフォルト値よりもユーザーの設定した公開範囲が優先されているが、
メンバーのプロフィール画面(member/profile)に遷移した際に公開設定デフォルト値が表示される。
再現手順¶
1. 管理画面のプロフィール項目編集(/pc_backend.php/profile/edit/id/2)で誕生日の公開設定変更の可否を「メンバー選択」に設定する。
2. ユーザーAでログインし、誕生日の公開範囲を「公開しない」に設定する。
3. 管理画面の誕生日の公開設定変更の可否を「固定」に設定する。
4. 管理画面の誕生日の公開設定デフォルト値を「Web全体に公開」に設定する。
5. ユーザーAでログインし、プロフィール確認画面(member/profile)に遷移する
6. 誕生日の横に(Web全体に公開)という表示がある
Shingo Yamada さんが13年以上前に更新
- 題名 を メンバーの設定した公開範囲よりも管理画面の公開設定デフォルト値が優先される から 管理画面の公開設定変更の可否を「メンバー選択」から「固定」に変更すると、公開設定のデフォルト値でメンバー側の設定が上書かれてしまう に変更
Shingo Yamada さんが13年以上前に更新
isao sano は書きました:
公開範囲の動作の「内容」としては問題なく、管理画面での公開設定デフォルト値よりもユーザーの設定した公開範囲が優先されているが、
メンバーのプロフィール画面(member/profile)に遷移した際に公開設定デフォルト値が表示される。
#note-5 の指摘ですが、この挙動は意図したものとなります。
対応は行いません。
Shingo Yamada さんが13年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Pending Fixing(修正待ち) に変更
プロフィール検索時に管理画面の公開設定デフォルト値が適用されていないようです。
差し戻します。
Shingo Yamada さんが13年以上前に更新
- 題名 を 管理画面の公開設定変更の可否を「メンバー選択」から「固定」に変更すると、公開設定のデフォルト値でメンバー側の設定が上書かれてしまう から 管理画面の公開設定変更の可否を「メンバー選択」から「固定」に変更すると、公開設定のデフォルト値でメンバー側の設定が更新されてしまう に変更
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のプロフィール画面に遷移する。
- 誕生時は表示されません
Maki Takahashi さんが13年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 70 から 50 に変更
https://github.com/openpne/OpenPNE3/commit/d0a4c4bdb813fcf7e69758cecac14d9ec7191aca
にて、
管理画面の公開設定が「固定」の場合、メンバー検索にデフォルト値を適用するように修正しました。
- 管理画面の公開設定が「メンバー選択」の場合、メンバー検索時にはユーザの公開設定が「全員に公開」もしくは「Web全体に公開」となっているユーザのみ検索対象となる(変更なし)
- 管理画面の公開設定が「固定」の場合、デフォルトの公開設定値が「全員に公開」「Web全体に公開」の場合、ユーザの公開設定の値に関わらず全てのユーザが検索対象となる(ユーザが非公開にしていても検索される)
- 管理画面の公開設定が「固定」の場合、デフォルトの公開設定値が「マイフレンドまで公開」「公開しない」の場合、ユーザの公開設定の値に関わらず、検索対象から外れる(ユーザが「全体に公開」していても、だれも検索されない)。
- 「公開しない」の場合はそもそも検索フォームが表示されない
以上を確認いたしました。
Naoya Tozuka さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
レビューOKです。
メモ¶
if ( ProfileTable::PUBLIC_FLAG_SNS == $item->getDefaultPublicFlag() || ProfileTable::PUBLIC_FLAG_WEB == $item->getDefaultPublicFlag() )のような記法について、コーディング規約では特に禁じていないと解釈していますが(開括弧の後にスペースがあるとコーディング規約違反ですが、改行については規約に言及がないのではと)他の開発者の皆様に考えがありましたら教えてください。
Minoru Takai さんが13年以上前に更新
note-15 について補足¶
if 文の条件式などで、記述を一行に収めない場合の記述については、現状のコーディング規約では言及されていません(ルールがありません)。実際、そのような場合には実装者の裁量でどのような記述にするかが決められているようです。
if ( ConditinalExpressionA && ConditinalExpressionB ) { }
if ( ConditinalExpressionA && ConditinalExpressionB ) { }
if ( ConditinalExpressionA && ConditinalExpressionB ) { }
if (ConditinalExpressionA && ConditinalExpressionB) { }
if (ConditinalExpressionA && ConditinalExpressionB && LongLongConditinalExpressionC) { }
など、現在のソースコード中にもいくつかの形式が混在しているように思います。なお、個人的な意見ですが、フォーマットを制限する必要はない(その場その場で可読性があればよい)と思いますが、一行に書くと見にくい場合について、 if 文や for 文などでどのような表記が好ましいかを指標として示してあるべきだとは思います(コーディング規約ページの改善)。
Yuma Sakata さんが約13年前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストOKです。