Project

General

Profile

Bug(バグ) #1874

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

Added by isao sano over 8 years ago. Updated over 3 years ago.

Status:
Fixed(完了)
Priority:
High(高め)
Target version:
Start date:
2011-01-18
Due date:
% Done:

100%

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

Description

現象

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

バージョン

  • 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. 検索時の抽出判定を 公開範囲の固定に備えて変更する。


Related issues

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

Associated revisions

Revision f083906c (diff)
Added by Shogo Kawahara over 8 years ago

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

Revision d0a4c4bd (diff)
Added by Maki Takahashi about 8 years ago

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

History

#1 Updated by Shogo Kawahara over 8 years ago

  • Assignee set to Shogo Kawahara
  • Priority changed from Normal(通常) to High(高め)
  • Target version set to OpenPNE 3.7.0
  • 3.6 で発生するか set to Yes

#2 Updated by Shogo Kawahara over 8 years ago

  • Status changed from New(新規) to Accepted(着手)

#3 Updated by Shogo Kawahara over 8 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

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

#4 Updated by Masato Nagasawa about 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

レビューOKです。

#5 Updated by isao sano about 8 years ago

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

再現手順

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

#6 Updated by Shingo Yamada about 8 years ago

  • Assignee changed from Shogo Kawahara to Shingo Yamada

#7 Updated by Shingo Yamada about 8 years ago

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

#8 Updated by Shingo Yamada about 8 years ago

isao sano は書きました:

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

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

#9 Updated by Shingo Yamada about 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Pending Fixing(修正待ち)

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

#10 Updated by Shingo Yamada about 8 years ago

  • Assignee changed from Shingo Yamada to Maki Takahashi

担当者を変更します。

#11 Updated by Shingo Yamada about 8 years ago

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

#12 Updated by isao sano about 8 years ago

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

確認手順

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 Updated by Maki Takahashi about 8 years ago

  • Status changed from Pending Fixing(修正待ち) to Accepted(着手)

#14 Updated by Maki Takahashi about 8 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 70 to 50

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

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

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

#15 Updated by Naoya Tozuka about 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

レビューOKです。

メモ

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

#16 Updated by Minoru Takai almost 8 years ago

note-15 について補足

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

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

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

#17 Updated by Yuma Sakata over 7 years ago

  • Status changed from Pending Testing(テスト待ち) to Fixed(完了)
  • % Done changed from 70 to 100

テストOKです。

#18 Updated by kaoru n over 3 years ago

  • 3.8 で発生するか set to Unknown (未調査)

Also available in: Atom PDF