From b314bf4eb5c3df992dedbc98817903079712af0c Mon Sep 17 00:00:00 2001 From: Alex Parsons Date: Mon, 25 Mar 2024 20:05:46 +0000 Subject: [PATCH] fixup! Show number of agreements in top level summary --- classes/Divisions.php | 8 ++++---- www/includes/easyparliament/member.php | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/classes/Divisions.php b/classes/Divisions.php index 35775956d3..43bfc7ef65 100644 --- a/classes/Divisions.php +++ b/classes/Divisions.php @@ -258,7 +258,8 @@ public function getMemberDivisionDetails($strong_only = false) { $args ); - $allowed_policies = (new \MySociety\TheyWorkForYou\Policies())->getPolicyIDs(); + $policies_list = new \MySociety\TheyWorkForYou\Policies(); + $allowed_policies = $policies_list->getPolicyIDs(); foreach ($q as $row) { $policy_id = $row['policy_id']; @@ -306,8 +307,8 @@ public function getMemberDivisionDetails($strong_only = false) { } // for each key in $policy_divisions, we want to add agreement information - foreach ($policy_divisions as $policy_id => $summary) { - $agreement_details = $this->member->member_agreements($policy_id); + foreach ($policy_divisions as $policy_id => &$summary) { + $agreement_details = $this->member->member_agreements($policy_id, HOUSE_TYPE_COMMONS, $policies_list ); $summary["agreements_for"] = 0; $summary["agreements_against"] = 0; foreach ($agreement_details as $agreement){ @@ -320,7 +321,6 @@ public function getMemberDivisionDetails($strong_only = false) { $summary["agreements_against"] += 1; } } - $policy_divisions[$policy_id] = $summary; } return $policy_divisions; } diff --git a/www/includes/easyparliament/member.php b/www/includes/easyparliament/member.php index cc6313fa70..644760e216 100644 --- a/www/includes/easyparliament/member.php +++ b/www/includes/easyparliament/member.php @@ -2,6 +2,9 @@ include_once INCLUDESPATH."easyparliament/glossary.php"; +use MySociety\TheyWorkForYou\Policies as Policies; + + class MEMBER { public $valid = false; @@ -242,13 +245,16 @@ public function date_in_memberships($house, $date){ return false; } - public function member_agreements($policyID, $house = HOUSE_TYPE_COMMONS){ - // agreements that a member has been present for on a specific policy - $policiesList = new MySociety\TheyWorkForYou\Policies($policyID); + public function member_agreements(int $policyID, int $house = HOUSE_TYPE_COMMONS, Policies $policiesList = null) { + // agreements that a member has been present for on a specific policy. + // Pass in a Policies object to avoid reloading the list of policies. + // Ideally one that has been initalised without a specific policy id. + if (!$policiesList) { + $policiesList = new Policies($policyID); + } $rel_agreements = $policiesList->all_policy_agreements[$policyID] ?? []; - $MEMBER = $this; - $rel_agreements = array_filter($rel_agreements, function($agreement) use ($MEMBER, $house) { - return $MEMBER->date_in_memberships($house, $agreement['date']); + $rel_agreements = array_filter($rel_agreements, function($agreement) use ($house) { + return $this->date_in_memberships($house, $agreement['date']); }); return $rel_agreements; }