make the cutoff donation amount a config variable
[fsfdrupalauth.git] / lib / Auth / Source / FSFDrupalAuth.php
index 90586123a4c8b402080badcc30b78fe4fffd03cf..69f60b473f2b26e4d9550c1bb477822c958bd9f7 100644 (file)
@@ -49,8 +49,8 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
     private $query_nomination_process_gift_receipt;
     private $query_nomination_process_adhoc;
 
+    private $query_discussion_process_old_membership;
     private $query_discussion_process_donations;
-    private $query_discussion_process_gift_receipt;
     private $query_discussion_process_adhoc;
 
     /**
@@ -72,6 +72,7 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
     private $discussion_process_contrib_end_date;
     private $discussion_process_adhoc_access_group_id;
     private $discussion_process_adhoc_no_access_group_id;
+    private $discussion_process_donation_amount;
 
     /**
      * Constructor for this authentication source.
@@ -110,15 +111,16 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
                'membership_monthly_rate',
                'student_membership_monthly_rate',
 
+               'query_discussion_process_old_membership',
                'query_discussion_process_donations',
-               'query_discussion_process_gift_receipt',
                'query_discussion_process_adhoc',
 
                'discussion_process_active',
                'discussion_process_contrib_start_date',
                'discussion_process_contrib_end_date',
                'discussion_process_adhoc_access_group_id',
-               'discussion_process_adhoc_no_access_group_id',]
+               'discussion_process_adhoc_no_access_group_id',
+               'discussion_process_donation_amount',]
                as $param) {
 
             if (!array_key_exists($param, $config)) {
@@ -340,6 +342,8 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
                return $this->query_db($query_name, $parameters);
        };
 
+       $old_membership_query = $donation_query;
+
        $compare_res = function ($result, $amount) {
                foreach ($result[0] as $key => $value) {
                        if (intval($value) >= $amount) {
@@ -349,6 +353,13 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
                return false;
        };
 
+       // set dates here, used by helper functions below
+       $nomination_process_start_date = $this->nomination_process_contrib_start_date;
+       $nomination_process_end_date   = $this->nomination_process_contrib_end_date;
+       $discussion_process_start_date = $this->discussion_process_contrib_start_date;
+       $discussion_process_end_date   = $this->discussion_process_contrib_end_date;
+
+
        // looks for memberships / comparable donations in time window. also
        // looks for a membership or donation (included as a param) that
        // occurred up to a year before, and that would have carried over into
@@ -356,12 +367,12 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
        // the person was, or would have been, a member during the configured
        // time window.
        $nomination_process_analyze_history = function ($selective_donations_history)
-           use ($start_date, $end_date) {
+           use ($nomination_process_start_date, $nomination_process_end_date) {
 
                $eligible = false;
 
-               $start_date_obj = new \DateTime($start_date);
-               $end_date_obj = new \DateTime($end_date);
+               $start_date_obj = new \DateTime($nomination_process_start_date);
+               $end_date_obj = new \DateTime($nomination_process_end_date);
 
                foreach ($selective_donations_history as $row) {
 
@@ -400,13 +411,13 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
        };
 
        $discussion_process_analyze_history = function ($selective_donations_history)
-           use ($start_date, $end_date) {
+           use ($discussion_process_start_date, $discussion_process_end_date) {
 
                $eligible = false;
                $total = 0;
 
-               $start_date_obj = new \DateTime($start_date);
-               $end_date_obj = new \DateTime($end_date);
+               $start_date_obj = new \DateTime($discussion_process_start_date);
+               $end_date_obj = new \DateTime($discussion_process_end_date);
 
                foreach ($selective_donations_history as $row) {
 
@@ -414,12 +425,12 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
                        $member_type_id = $row['member_type_id'];
                        $receive_date_obj = new \DateTime($row['receive_date']);
 
-                       if (($receive_date_obj > $start_date_obj) && ($receive_date < $end_date_obj)) {
+                       if (($receive_date_obj > $start_date_obj) && ($receive_date_obj < $end_date_obj)) {
                                $total += $amount;
                        }
                }
 
-               if ($total >= 120) {
+               if ($total >= $this->discussion_process_donation_amount) {
                        return true;
                } else {
                        return false;
@@ -430,11 +441,8 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
        // nomination form participation specific checks
        //
 
-       $start_date = $this->nomination_process_contrib_start_date;
-       $end_date   = $this->nomination_process_contrib_end_date;
-
-       $donation_params    = ['start_date' => $start_date, 'end_date' => $end_date];
-       $gift_member_params = ['start_date' => $start_date, 'end_date' => $end_date, 'gift_redeem_page_id' => intval($this->gift_redeem_page_id)];
+       $donation_params    = ['start_date' => $nomination_process_start_date, 'end_date' => $nomination_process_end_date];
+       $gift_member_params = ['start_date' => $nomination_process_start_date, 'end_date' => $nomination_process_end_date, 'gift_redeem_page_id' => intval($this->gift_redeem_page_id)];
        $adhoc_params       = ['adhoc_access_group_id' => intval($this->nomination_process_adhoc_access_group_id)];
 
        if ($this->nomination_process_active != 'true' ) {
@@ -463,11 +471,8 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
        // discussion form participation specific checks
        //
 
-       $start_date = $this->discussion_process_contrib_start_date;
-       $end_date   = $this->discussion_process_contrib_end_date;
-
-       $donation_params    = ['start_date' => $start_date, 'end_date' => $end_date];
-       $gift_member_params = ['start_date' => $start_date, 'end_date' => $end_date, 'gift_redeem_page_id' => intval($this->gift_redeem_page_id)];
+       $donation_params    = ['start_date' => $discussion_process_start_date, 'end_date' => $discussion_process_end_date];
+       $old_member_params  = $donation_params;
        $adhoc_params       = ['adhoc_access_group_id' => intval($this->discussion_process_adhoc_access_group_id)];
        $adhoc_params_no    = ['adhoc_access_group_id' => intval($this->discussion_process_adhoc_no_access_group_id)];
 
@@ -487,8 +492,8 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
                        ': Not eligible for board nominee discussion process.');
                $attributes['discussion_process'] = ['false'];
 
-       } elseif ($discussion_process_analyze_history($donation_query('query_discussion_process_donations', $donation_params))
-               || $compare_res($donation_query('query_discussion_process_gift_receipt', $gift_member_params), 1)) {
+       } elseif ($compare_res($old_membership_query('query_discussion_process_old_membership', $old_member_params), 1)
+               || $discussion_process_analyze_history($donation_query('query_discussion_process_donations', $donation_params))) {
 
                $attributes['discussion_process'] = ['true'];