liquid_feedback_frontend

diff app/main/initiative/_list.lua @ 285:6c88b4bfb56c

Apply interest/support filter for member at member page
author bsw
date Fri Feb 17 15:16:02 2012 +0100 (2012-02-17)
parents fecd4c13054a
children ad5d7a4eb13d
line diff
     1.1 --- a/app/main/initiative/_list.lua	Fri Feb 17 15:14:50 2012 +0100
     1.2 +++ b/app/main/initiative/_list.lua	Fri Feb 17 15:16:02 2012 +0100
     1.3 @@ -4,17 +4,23 @@
     1.4  
     1.5  local highlight_initiative = param.get("highlight_initiative", "table")
     1.6  
     1.7 +local for_member = param.get("for_member", "table") or app.session.member
     1.8 +
     1.9  initiatives_selector
    1.10    :join("issue", nil, "issue.id = initiative.issue_id")
    1.11  
    1.12  if app.session.member_id then
    1.13    initiatives_selector
    1.14 -    :left_join("initiator", "_initiator", { "_initiator.initiative_id = initiative.id AND _initiator.member_id = ? AND _initiator.accepted", app.session.member.id} )
    1.15 -    :left_join("supporter", "_supporter", { "_supporter.initiative_id = initiative.id AND _supporter.member_id = ?", app.session.member.id} )
    1.16 -  
    1.17 +    :left_join("initiator", "_initiator", { "_initiator.initiative_id = initiative.id AND _initiator.member_id = ? AND _initiator.accepted", for_member.id } )
    1.18 +    :left_join("supporter", "_supporter", { "_supporter.initiative_id = initiative.id AND _supporter.member_id = ?", for_member.id} )
    1.19 +    :left_join("delegating_interest_snapshot", "_delegating_interest_snapshot", { "_delegating_interest_snapshot.issue_id = initiative.issue_id AND _delegating_interest_snapshot.member_id = ? AND _delegating_interest_snapshot.event = issue.latest_snapshot_event", for_member.id} )
    1.20 +    :left_join("direct_supporter_snapshot", "_direct_supporter_snapshot", "_direct_supporter_snapshot.initiative_id = initiative.id AND _direct_supporter_snapshot.member_id = _delegating_interest_snapshot.delegate_member_ids[array_upper(_delegating_interest_snapshot.delegate_member_ids, 1)] AND _direct_supporter_snapshot.event = issue.latest_snapshot_event")
    1.21 +
    1.22      :add_field("(_initiator.member_id NOTNULL)", "is_initiator")
    1.23 -    :add_field({"(_supporter.member_id NOTNULL) AND NOT EXISTS(SELECT 1 FROM opinion WHERE opinion.initiative_id = initiative.id AND opinion.member_id = ? AND ((opinion.degree = 2 AND NOT fulfilled) OR (opinion.degree = -2 AND fulfilled)))", app.session.member.id }, "is_supporter")
    1.24 -    :add_field({"EXISTS(SELECT 1 FROM opinion WHERE opinion.initiative_id = initiative.id AND opinion.member_id = ? AND ((opinion.degree = 2 AND NOT fulfilled) OR (opinion.degree = -2 AND fulfilled)))", app.session.member.id }, "is_potential_supporter")
    1.25 +    :add_field({"(_supporter.member_id NOTNULL) AND NOT EXISTS(SELECT 1 FROM opinion WHERE opinion.initiative_id = initiative.id AND opinion.member_id = ? AND ((opinion.degree = 2 AND NOT fulfilled) OR (opinion.degree = -2 AND fulfilled)))", for_member.id }, "is_supporter")
    1.26 +    :add_field({"EXISTS(SELECT 1 FROM opinion WHERE opinion.initiative_id = initiative.id AND opinion.member_id = ? AND ((opinion.degree = 2 AND NOT fulfilled) OR (opinion.degree = -2 AND fulfilled)))", for_member.id }, "is_potential_supporter")
    1.27 +
    1.28 +    :add_field("_direct_supporter_snapshot.member_id NOTNULL", "is_supporter_via_delegation")
    1.29  end
    1.30  
    1.31  local initiatives_count = initiatives_selector:count()

Impressum / About Us