Allow to search on just being an active member
authorFranky Van Liedekerke <liedekef@localhost.localdomain>
Mon, 24 Oct 2016 21:56:18 +0000 (23:56 +0200)
committerFranky Van Liedekerke <liedekef@localhost.localdomain>
Mon, 24 Oct 2016 21:56:18 +0000 (23:56 +0200)
CRM/Member/BAO/Query.php
templates/CRM/Member/Form/Search/Common.tpl

index 6a7ebb5cd119851a23db41e0a6074fb7d900f883..58dd377070eb02d5cae88349f5efdb80be95cd91 100644 (file)
@@ -86,6 +86,13 @@ class CRM_Member_BAO_Query {
         $query->_whereTables['civicrm_membership_status'] = 1;
       }
 
+      if (!empty($query->_returnProperties['membership_is_current_member'])) {
+        $query->_select['is_current_member'] = "civicrm_membership_status.is_current_member as is_current_member";
+        $query->_element['is_current_member'] = 1;
+        $query->_tables['civicrm_membership_status'] = 1;
+        $query->_whereTables['civicrm_membership_status'] = 1;
+      }
+
       if (!empty($query->_returnProperties['membership_status_id'])) {
         $query->_select['status_id'] = "civicrm_membership_status.id as status_id";
         $query->_element['status_id'] = 1;
@@ -251,6 +258,13 @@ class CRM_Member_BAO_Query {
         $query->_tables['civicrm_membership'] = $query->_whereTables['civicrm_membership'] = 1;
         return;
 
+      case 'membership_is_current_member':
+        // We don't want to include all tests for sql OR CRM-7827
+        $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_membership_status.is_current_member", $op, $value, "Boolean");
+        $query->_qill[$grouping][] = ts('Active Member');
+        $query->_tables['civicrm_membership_status'] = $query->_whereTables['civicrm_membership_status'] = 1;
+        return;
+
       case 'member_test':
         // We don't want to include all tests for sql OR CRM-7827
         if (!$value || $query->getOperator() != 'OR') {
@@ -486,6 +500,7 @@ class CRM_Member_BAO_Query {
 
     $form->addFormRule(array('CRM_Member_BAO_Query', 'formRule'), $form);
 
+    $form->addYesNo('membership_is_current_member', ts('Active Member?'), TRUE);
     $form->addYesNo('member_is_primary', ts('Primary Member?'), TRUE);
     $form->addYesNo('member_pay_later', ts('Pay Later?'), TRUE);
 
index 02b586d9b68a295a199b67ba71e911599c6b7a02..e21f2dd502f56b80e018ddd6985c9dec9cba1a13 100644 (file)
     </p>
   </td>
   <td>
+    <p>
+    {$form.membership_is_current_member.label}
+    {$form.membership_is_current_member.html}
+    </p>
     <p>
     {$form.member_is_primary.label}
     {help id="id-member_is_primary" file="CRM/Member/Form/Search.hlp"}