プロジェクト

全般

プロフィール

Bug(バグ) #4260

opTimelinePlugin 携帯版プロフィール画面のSNSメンバーのタイムラインガジェット Web公開していない投稿がWeb公開されてしまう

kaoru n6年以上前に追加. ほぼ5年前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2017-11-15
期日:
進捗率:

100%

3.6 で発生するか:
No (いいえ)
3.8 で発生するか:
Yes (はい)

説明

Overview (現象)

携帯版プロフィール画面ガジェット設定で、SNSメンバーのタイムラインガジェットを「Web全体に公開」に設定した場合、
タイムラインへの投稿時に「全員に公開」で設定した投稿が、携帯版プロフィール画面でWeb全体に公開される。

再現手順

  1. 管理画面→上級者向け設定(3.6.x の場合はSNS設定)→メンバーのプロフィールページ公開範囲設定 を 「メンバーの設定を許可する」もしくは「メンバーの設定を許可しない(Web全体に公開)」に設定
  2. 管理画面→デザイン設定→ガジェット設定→携帯版プロフィール画面ガジェット設定→ガジェット追加 にて SNSメンバーのタイムライン を追加し、設定変更ボタンを押下
  3. SNSメンバーのタイムラインの設定画面を開き公開範囲を「Web全体に公開」に変更し submit ボタンを押下
  4. メンバーAのアカウントでSNSメンバー画面にログインし、タイムラインにて「全員に公開」で投稿
  5. 携帯端末にてログインしていない状態で、「/member/{メンバーAのID}」を確認

Causes (原因)

プロフィールページの公開範囲及びガジェットの公開範囲を考慮していないため

Way to fix (修正内容)

修正内容を記入

--

補足

opTimlinePlugin のがジェット設定により発生するが、修正は Core のソースが対象のため、opTimlinePlugin の修正はありません。


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #4188: アクティビティガジェット Web公開していない投稿がWeb公開されてしまう Fixed(完了) 2017-04-21
関連している OpenPNE 3 - Bug(バグ) #3273: activity/search.json?member_id=? で特定メンバーのアクティビティを取得すると500エラーとなる Fixed(完了) 2012-12-06

関係しているリビジョン

リビジョン d9e3a356 (差分)
kaoru n約5年前に追加

[master] (fixed #4260) opTimelinePlugin 携帯版プロフィール画面のSNSメンバーのタイムラインガジェットにてWeb公開していない投稿がWeb公開されてしまう問題を修正

リビジョン 011ecfcf (差分)
kaoru n約5年前に追加

[3.8.x] (fixed #4260) opTimelinePlugin 携帯版プロフィール画面のSNSメンバーのタイムラインガジェットにてWeb公開していない投稿がWeb公開されてしまう問題を修正

リビジョン 7927de6b (差分)
kaoru n約5年前に追加

[master] (fixed #4260) $viewerMemberId の null チェックをしている部分を修正

リビジョン e1198980 (差分)
kaoru n約5年前に追加

[3.8.x] (fixed #4260) $viewerMemberId の null チェックをしている部分を修正

リビジョン 6444ee32
kaoru nほぼ5年前に追加

Merge pull request #518 from nishizoe/t-4260-op38x

[3.8.x] (fixed #4260) opTimelinePlugin 携帯版プロフィール画面のSNSメンバーのタイムラインガジェッ…

リビジョン 15724a69
kaoru nほぼ5年前に追加

Merge pull request #517 from nishizoe/t-4260-master

[master] (fixed #4260) opTimelinePlugin 携帯版プロフィール画面のSNSメンバーのタイムラインガジェ…

履歴

#1 kaoru n6年以上前に更新

  • 関連している Bug(バグ) #4188: アクティビティガジェット Web公開していない投稿がWeb公開されてしまう を追加

#2 kaoru n6年以上前に更新

  • 3.6 で発生するかUnknown (未調査) から No (いいえ) に変更
  • 3.8 で発生するかUnknown (未調査) から Yes (はい) に変更

#3 kaoru n6年以上前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 担当者kaoru n にセット
  • 進捗率0 から 50 に変更

各ブランチについて Merge Request を作成しました。レビューをお願いします。

#4 kaoru n6年以上前に更新

  • 説明 を更新 (diff)

#5 kaoru n約5年前に更新

github にてプルリクエスト作成しました

3.6.x: 対象外
3.8.x: https://github.com/openpne/OpenPNE3/pull/518
master: https://github.com/openpne/OpenPNE3/pull/517

#6 Rimpei Ogawa約5年前に更新

  • ステータスPending Review(レビュー待ち) から 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 kaoru n約5年前に更新

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

プルリクエスト修正しました

3.6.x: 対象外
3.8.x: https://github.com/openpne/OpenPNE3/pull/518
master: https://github.com/openpne/OpenPNE3/pull/517

#8 Rimpei Ogawa約5年前に更新

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

レビューOKです。

#9 Chiharu Nakajima約5年前に更新

以下のエラーが発生するため、現在試験不可です(原因は現在調査中)。

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

#10 kaoru n約5年前に更新

  • ステータスPending Testing(テスト待ち) から Rejected(差し戻し) に変更
  • 進捗率70 から 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 kaoru n約5年前に更新

エラーが発生しているのは、下記の箇所
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 kaoru n約5年前に更新

参照: https://redmine.openpne.jp/issues/3135#note-1
同じ箇所のエラーの話

問題は https://redmine.openpne.jp/issues/3273 と同一

#13 kaoru n約5年前に更新

  • 関連している Bug(バグ) #3273: activity/search.json?member_id=? で特定メンバーのアクティビティを取得すると500エラーとなる を追加

#14 kaoru nほぼ5年前に更新

  • ステータスRejected(差し戻し) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

https://redmine.openpne.jp/issues/3273#note-12
にて修正を行うこととしました。
このチケットのテストは、 #3273 の修正を含む状態で行います。

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

  • ステータスPending Testing(テスト待ち) から Pending Merge(マージ待ち) に変更
  • 進捗率70 から 80 に変更

確認しました。問題ありません。

#16 kaoru nほぼ5年前に更新

  • ステータスPending Merge(マージ待ち) から Fixed(完了) に変更
  • 進捗率80 から 100 に変更

マージしました

#17 kaoru nほぼ5年前に更新

  • プロジェクトOpenPNE Security Issue から OpenPNE 3 に変更
  • カテゴリ を削除 (権限不備)
  • 対象バージョンOpenPNE 3.8.32 にセット

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