Opened 12 years ago
Closed 12 years ago
#3484 closed defect (fixed)
ホーム表示時にplugins/opBlogPlugin/lib/model/BlogPeer.phpエラー
Reported by: | tsukamoto | Owned by: | nagasawa |
---|---|---|---|
Priority: | major | Milestone: | OpenPNE3.0.0 |
Component: | plugins | Version: | 3.0.x |
Keywords: | opBlogPlugin | Cc: |
Description
OpenPNE3 rev.10451で、自分が招待して未登録の人がいる時、ホームを開こうとすると以下のエラーが発生します。
Fatal error: Call to a member function getConfig() on a non-object in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\OpenPNE3 \plugins\opBlogPlugin\lib\model\BlogPeer.php on line 57
該当行を含むメソッドgetBlogListByMemberId($member_id, &$list)に$member_id=2が渡ってきており、これは招待を出した、未登録の人でした。この時、以下の部分で、まずMemberPeer::retrieveByPk($member_id)が失敗し、それをケアせずに次行でオブジェクトメソッドを呼ぼうとしてエラーになっているようです。
public static function getBlogListByMemberId($member_id, &$list) { $member = MemberPeer::retrieveByPk($member_id); $root = self::getXmlByUrl($member->getConfig('blog_url'));
$memberが空の時にreturnさせれば、期待通りの動きではないかと思います。rev.10451用のパッチを添付します。
Attachments (1)
Change History (7)
Changed 12 years ago by
Attachment: | BlogPeer.php.rev10451.diff added |
---|
comment:1 Changed 12 years ago by
comment:2 Changed 12 years ago by
Milestone: | → OpenPNE3.0beta4 |
---|---|
Version: | → 3.0.x |
ご報告ありがとうございます、確認します。
member_relationship の is_friend が 1 になっているのは正しい挙動です。
招待者と新規登録者はSNS登録時からフレンド関係にある必要があるため、このような状態になっています。 is_friend が 1 であったとしても、新規登録者の member.is_active が 0 であるため、問題にはなりません。
comment:4 Changed 12 years ago by
Component: | 指定しない → plugins |
---|---|
Keywords: | opBlogPlugin added |
Milestone: | → OpenPNE3.0.0 |
Priority: | minor → major |
comment:5 Changed 12 years ago by
Owner: | changed from nobody to nagasawa |
---|
ランキングについても同様に問題がありましたの修正します。 報告ありがとうございました。
Note: See
TracTickets for help on using
tickets.
追記ですが、member_relationshipを見てみると、招待しただけのメンバーとの関係で、is_friend_preではなくis_friendが1になっていました。
もしかするとBlogの取得でエラーになることより、ここでis_friendが1にセットされているのがおかしいのかもしれません。その場合、上記箇所及びパッチの問題ではなく、plugins/opInviteFriendPlugin/lib/model/InviteFriendPeer.phpの以下の個所の最後の行がおかしいということになるかもしれません。
どちらが正しいのか、ここは設計の決めの問題ですので、ご判断ください。