Project

General

Profile

Bug(バグ) #4260

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

Added by kaoru n over 1 year ago. Updated about 1 month ago.

Status:
Fixed(完了)
Priority:
Normal(通常)
Assignee:
Target version:
Start date:
2017-11-15
Due date:
% Done:

100%

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

Description

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 の修正はありません。


Related issues

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

History

#1 Updated by kaoru n over 1 year ago

  • Related to Bug(バグ) #4188: アクティビティガジェット Web公開していない投稿がWeb公開されてしまう added

#2 Updated by kaoru n over 1 year ago

  • 3.6 で発生するか changed from Unknown (未調査) to No (いいえ)
  • 3.8 で発生するか changed from Unknown (未調査) to Yes (はい)

#3 Updated by kaoru n over 1 year 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 over 1 year ago

  • Description updated (diff)

#5 Updated by kaoru n 4 months 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 4 months 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 4 months 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 4 months ago

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

レビューOKです。

#9 Updated by Chiharu Nakajima 3 months ago

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

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

#10 Updated by kaoru n 3 months 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 3 months 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 3 months ago

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

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

#13 Updated by kaoru n 3 months ago

  • Related to Bug(バグ) #3273: activity/search.json?member_id=? で特定メンバーのアクティビティを取得すると500エラーとなる added

#14 Updated by kaoru n 3 months 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 about 1 month ago

  • Status changed from Pending Testing(テスト待ち) to Pending Merge(マージ待ち)
  • % Done changed from 70 to 80

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

#16 Updated by kaoru n about 1 month ago

  • Status changed from Pending Merge(マージ待ち) to Fixed(完了)
  • % Done changed from 80 to 100

マージしました

#17 Updated by kaoru n about 1 month ago

  • Project changed from OpenPNE Security Issue to OpenPNE 3
  • Category deleted (権限不備)
  • Target version set to OpenPNE 3.8.32

Also available in: Atom PDF