Bug(バグ) #4260
opTimelinePlugin 携帯版プロフィール画面のSNSメンバーのタイムラインガジェット Web公開していない投稿がWeb公開されてしまう
100%
Description
Overview (現象)¶
携帯版プロフィール画面ガジェット設定で、SNSメンバーのタイムラインガジェットを「Web全体に公開」に設定した場合、
タイムラインへの投稿時に「全員に公開」で設定した投稿が、携帯版プロフィール画面でWeb全体に公開される。
再現手順¶
- 管理画面→上級者向け設定(3.6.x の場合はSNS設定)→メンバーのプロフィールページ公開範囲設定 を 「メンバーの設定を許可する」もしくは「メンバーの設定を許可しない(Web全体に公開)」に設定
- 管理画面→デザイン設定→ガジェット設定→携帯版プロフィール画面ガジェット設定→ガジェット追加 にて SNSメンバーのタイムライン を追加し、設定変更ボタンを押下
- SNSメンバーのタイムラインの設定画面を開き公開範囲を「Web全体に公開」に変更し submit ボタンを押下
- メンバーAのアカウントでSNSメンバー画面にログインし、タイムラインにて「全員に公開」で投稿
- 携帯端末にてログインしていない状態で、「/member/{メンバーAのID}」を確認
Causes (原因)¶
プロフィールページの公開範囲及びガジェットの公開範囲を考慮していないため
Way to fix (修正内容)¶
修正内容を記入
--
補足¶
opTimlinePlugin のがジェット設定により発生するが、修正は Core のソースが対象のため、opTimlinePlugin の修正はありません。
Related issues
Associated revisions
[master] (fixed #4260) opTimelinePlugin 携帯版プロフィール画面のSNSメンバーのタイムラインガジェットにてWeb公開していない投稿がWeb公開されてしまう問題を修正
[3.8.x] (fixed #4260) opTimelinePlugin 携帯版プロフィール画面のSNSメンバーのタイムラインガジェットにてWeb公開していない投稿がWeb公開されてしまう問題を修正
[master] (fixed #4260) $viewerMemberId の null チェックをしている部分を修正
[3.8.x] (fixed #4260) $viewerMemberId の null チェックをしている部分を修正
History
#1
Updated by kaoru n about 6 years ago
- Related to Bug(バグ) #4188: アクティビティガジェット Web公開していない投稿がWeb公開されてしまう added
#2
Updated by kaoru n almost 6 years ago
- 3.6 で発生するか changed from Unknown (未調査) to No (いいえ)
- 3.8 で発生するか changed from Unknown (未調査) to Yes (はい)
#3
Updated by kaoru n almost 6 years ago
- Status changed from New(新規) to Pending Review(レビュー待ち)
- Assignee set to kaoru n
- % Done changed from 0 to 50
各ブランチについて Merge Request を作成しました。レビューをお願いします。
#4
Updated by kaoru n almost 6 years ago
- Description updated (diff)
#5
Updated by kaoru n over 4 years ago
github にてプルリクエスト作成しました
3.6.x: 対象外
3.8.x: https://github.com/openpne/OpenPNE3/pull/518
master: https://github.com/openpne/OpenPNE3/pull/517
#6
Updated by Rimpei Ogawa over 4 years ago
- Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)
https://redmine.openpne.jp/issues/4188#note-10
と同様に、 viewerId
が空の場合は PUBLIC_FLAG_OPEN
だけに絞り込むという対応で十分ではないかと思います。
elseif (!$this->viewerId)
{
$subQuery[] = $this->buildMemberQuery($query->createSubquery(), $id, ActivityDataTable::PUBLIC_FLAG_OPEN);
}
#7
Updated by kaoru n over 4 years ago
- Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)
プルリクエスト修正しました
3.6.x: 対象外
3.8.x: https://github.com/openpne/OpenPNE3/pull/518
master: https://github.com/openpne/OpenPNE3/pull/517
#8
Updated by Rimpei Ogawa over 4 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
レビューOKです。
#9
Updated by Chiharu Nakajima over 4 years ago
以下のエラーが発生するため、現在試験不可です(原因は現在調査中)。
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
#10
Updated by kaoru n over 4 years ago
- Status changed from Pending Testing(テスト待ち) to Rejected(差し戻し)
- % Done changed from 70 to 50
#4260-9 のエラーは、今回の修正適用前にタイムライン投稿が存在する場合に、修正適用後に発生します。
※ 修正適用前にタイムライン投稿した場合
1. OpenPNE-3.8.30 + opTimelinePlugin-1.2.7 をインストール後、タイムライン投稿を行う。
2. https://github.com/openpne/OpenPNE3/pull/518 のブランチをチェックアウトし、 $ ./symfony cc 実行後、 /member/1 に未ログイン状態でアクセスした際にエラー発生
※ 修正適用後のブランチでインストールした場合
(1) https://github.com/openpne/OpenPNE3/pull/518 のブランチ + opTimelinePlugin-1.2.7 をインストール後、タイムライン投稿を行う。
(2) /member/1 に未ログイン状態でアクセスすると正常に表示される
#11
Updated by kaoru n over 4 years ago
エラーが発生しているのは、下記の箇所
https://github.com/tejimaya/opTimelinePlugin/blob/master/apps/mobile_frontend/modules/timeline/actions/components.class.php#L41-L43
$this->activities = $query
->andWhere('in_reply_to_activity_id IS NULL')
->execute();
ログ
4月 11 20:05:48 symfony [info] {Doctrine_Connection_Statement} execute : SELECT a.id AS a__id, a.member_id AS a__member_id, a.in_reply_to_activity_id AS a__in_reply_to_activity_id, a.body AS a__body, a.uri AS a__uri, a.public_flag AS a__public_flag, a.is_pc AS a__is_pc, a.is_mobile AS a__is_mobile, a.source AS a__source, a.source_uri AS a__source_uri, a.foreign_table AS a__foreign_table, a.foreign_id AS a__foreign_id, a.template AS a__template, a.template_param AS a__template_param, a.created_at AS a__created_at, a.updated_at AS a__updated_at, m.id AS m__id, m.name AS m__name, m.invite_member_id AS m__invite_member_id, m.is_login_rejected AS m__is_login_rejected, m.created_at AS m__created_at, m.updated_at AS m__updated_at, m.is_active AS m__is_active FROM activity_data a LEFT JOIN member m ON a.member_id = m.id WHERE (a.member_id = ? AND a.public_flag IN (?, ?)) AND (a.foreign_table IS NULL OR a.foreign_table <> "community") AND a.in_reply_to_activity_id IS NULL AND (m.is_active = ? OR m.is_active IS NULL) ORDER BY a.id DESC LIMIT 20 - (1, 0, 1) 4月 11 20:05:48 symfony [err] {Doctrine_Connection_Mysql_Exception} SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
パラメータ数が合わない。
->andWhere('in_reply_to_activity_id IS NULL')
を削除すると4月 11 20:25:59 symfony [info] {Doctrine_Connection_Statement} execute : SELECT a.id AS a__id, a.member_id AS a__member_id, a.in_reply_to_activity_id AS a__in_reply_to_activity_id, a.body AS a__body, a.uri AS a__uri, a.public_flag AS a__public_flag, a.is_pc AS a__is_pc, a.is_mobile AS a__is_mobile, a.source AS a__source, a.source_uri AS a__source_uri, a.foreign_table AS a__foreign_table, a.foreign_id AS a__foreign_id, a.template AS a__template, a.template_param AS a__template_param, a.created_at AS a__created_at, a.updated_at AS a__updated_at, m.id AS m__id, m.name AS m__name, m.invite_member_id AS m__invite_member_id, m.is_login_rejected AS m__is_login_rejected, m.created_at AS m__created_at, m.updated_at AS m__updated_at, m.is_active AS m__is_active FROM activity_data a LEFT JOIN member m ON a.member_id = m.id WHERE (a.member_id = ? AND a.public_flag IN (?)) AND (a.foreign_table IS NULL OR a.foreign_table <> "community") AND (m.is_active = ? OR m.is_active IS NULL) ORDER BY a.id DESC LIMIT 20 - (1, 0, 1)
public_flag IN (?) が変わる。なぜ?
#12
Updated by kaoru n over 4 years ago
参照: https://redmine.openpne.jp/issues/3135#note-1
同じ箇所のエラーの話
#13
Updated by kaoru n over 4 years ago
- Related to Bug(バグ) #3273: activity/search.json?member_id=? で特定メンバーのアクティビティを取得すると500エラーとなる added
#14
Updated by kaoru n over 4 years ago
- Status changed from Rejected(差し戻し) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
https://redmine.openpne.jp/issues/3273#note-12
にて修正を行うこととしました。
このチケットのテストは、 #3273 の修正を含む状態で行います。
#15
Updated by isao sano over 4 years ago
- Status changed from Pending Testing(テスト待ち) to Pending Merge(マージ待ち)
- % Done changed from 70 to 80
確認しました。問題ありません。
#16
Updated by kaoru n over 4 years ago
- Status changed from Pending Merge(マージ待ち) to Fixed(完了)
- % Done changed from 80 to 100
マージしました
#17
Updated by kaoru n over 4 years ago
- Project changed from OpenPNE Security Issue to OpenPNE 3
- Category deleted (
権限不備) - Target version set to OpenPNE 3.8.32