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()