simplification for nomination process access
[fsfdrupalauth.git] / lib / Auth / Source / FSFDrupalAuth.php
index 7a1f68d65c68d3a5f13d79a828657f90f710ad8d..c3f044505b985d636fd98890ed8d1ed6e82cebaa 100644 (file)
@@ -55,6 +55,7 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
     private $fsf_org_id;
     private $gift_redeem_page_id;
 
+    private $nomination_process_active;
     private $nomination_process_contrib_start_date;
     private $nomination_process_contrib_end_date;
     private $nomination_process_adhoc_access_group_id;
@@ -91,6 +92,7 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
                'fsf_org_id',
                'gift_redeem_page_id',
 
+               'nomination_process_active',
                'nomination_process_contrib_start_date',
                'nomination_process_contrib_end_date',
                'nomination_process_adhoc_access_group_id',
@@ -298,12 +300,9 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
         }
 
         //
-        // query for access to board nomination process
+        // helper functions for access to board nomination / discussion process
         //
 
-       $start_date = $this->nomination_process_contrib_start_date;
-       $end_date   = $this->nomination_process_contrib_end_date;
-
        /**
          * @param string $query_name  Name of query in authsources
          * @param array $extra_params  Associative array of parameters to include in query
@@ -335,7 +334,7 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
        // the time window with a single donation. this approximates whether
        // the person was, or would have been, a member during the configured
        // time window.
-       $analyze_history = function ($selective_donations_history)
+       $nomination_process_analyze_history = function ($selective_donations_history)
            use ($start_date, $end_date) {
 
                $eligible = false;
@@ -379,18 +378,32 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
                return false;
        };
 
+       //
+       // 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)];
        $adhoc_params       = ['adhoc_access_group_id' => intval($this->nomination_process_adhoc_access_group_id)];
 
-       if ($compare_res($donation_query('query_nomination_process_adhoc', $adhoc_params), 1) || ($attributes['is_member'] == ['true']
-           && ($analyze_history($donation_query('query_nomination_process_donations', $donation_params))
-               || $compare_res($donation_query('query_nomination_process_gift_receipt', $gift_member_params), 1)))) {
+       if ($this->nomination_process_active == 'true' ) {
+               if ($compare_res($donation_query('query_nomination_process_adhoc', $adhoc_params), 1)) {
+                       $attributes['nomination_process'] = ['true'];
 
-               $attributes['nomination_process'] = ['true'];
+               } elseif ($attributes['is_member'] == ['true']
+                   && ($nomination_process_analyze_history($donation_query('query_nomination_process_donations', $donation_params))
+                       || $compare_res($donation_query('query_nomination_process_gift_receipt', $gift_member_params), 1))) {
+
+                       $attributes['nomination_process'] = ['true'];
+               } else {
+                       Logger::debug('fsfdrupalauth:'.$this->authId.
+                               ': Not a member / comparable donor during window for board process.');
+                       $attributes['nomination_process'] = ['false'];
+               }
        } else {
-               Logger::debug('fsfdrupalauth:'.$this->authId.
-                       ': Not a member / comparable donor during window for board process.');
                $attributes['nomination_process'] = ['false'];
        }
 
@@ -416,9 +429,9 @@ class FSFDrupalAuth extends \SimpleSAML\Module\core\Auth\UserPassBase
                 }
                 $value = (string) $value;
 
-                if ($value === $username) {
+                if (strtolower($value) === strtolower($username)) {
                     // they are staff
-                    $attributes[$key] = ['true'];
+                    $attributes['is_fsf_staff'] = ['true'];
                     break;
                 }
             }