Merge pull request #4628 from priyankakaran26/recurring-entity-improvements-phase-2
[civicrm-core.git] / CRM / Member / BAO / Query.php
index 3205f221fe6faa32b0893910df7358f507f748ea..52689ebe2e1812348d508474e5c363eb01b9f2fa 100644 (file)
@@ -1,9 +1,9 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.4                                                |
+ | CiviCRM version 4.5                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2013                                |
+ | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
 /**
  *
  * @package CRM
- * @copyright CiviCRM LLC (c) 2004-2013
+ * @copyright CiviCRM LLC (c) 2004-2014
  * $Id$
  *
  */
 class CRM_Member_BAO_Query {
 
+  /**
+   * @return array
+   */
   static function &getFields() {
     $fields = CRM_Member_BAO_Membership::exportableFields();
     return $fields;
@@ -42,6 +45,8 @@ class CRM_Member_BAO_Query {
   /**
    * if membership are involved, add the specific membership fields
    *
+   * @param $query
+   *
    * @return void
    * @access public
    */
@@ -57,7 +62,7 @@ class CRM_Member_BAO_Query {
       $query->_whereTables['civicrm_membership'] = 1;
 
       //add membership type
-      if (CRM_Utils_Array::value('membership_type', $query->_returnProperties)) {
+      if (!empty($query->_returnProperties['membership_type'])) {
         $query->_select['membership_type'] = "civicrm_membership_type.name as membership_type";
         $query->_element['membership_type'] = 1;
         $query->_tables['civicrm_membership_type'] = 1;
@@ -65,26 +70,26 @@ class CRM_Member_BAO_Query {
       }
 
       //add join date
-      if (CRM_Utils_Array::value('join_date', $query->_returnProperties)) {
+      if (!empty($query->_returnProperties['join_date'])) {
         $query->_select['join_date'] = "civicrm_membership.join_date as join_date";
         $query->_element['join_date'] = 1;
       }
 
       //add source
-      if (CRM_Utils_Array::value('membership_source', $query->_returnProperties)) {
+      if (!empty($query->_returnProperties['membership_source'])) {
         $query->_select['membership_source'] = "civicrm_membership.source as membership_source";
         $query->_element['membership_source'] = 1;
       }
 
       //add status
-      if (CRM_Utils_Array::value('membership_status', $query->_returnProperties)) {
+      if (!empty($query->_returnProperties['membership_status'])) {
         $query->_select['membership_status'] = "civicrm_membership_status.label as membership_status";
         $query->_element['membership_status'] = 1;
         $query->_tables['civicrm_membership_status'] = 1;
         $query->_whereTables['civicrm_membership_status'] = 1;
       }
 
-      if (CRM_Utils_Array::value('status_id', $query->_returnProperties)) {
+      if (!empty($query->_returnProperties['status_id'])) {
         $query->_select['status_id'] = "civicrm_membership_status.id as status_id";
         $query->_element['status_id'] = 1;
         $query->_tables['civicrm_membership_status'] = 1;
@@ -92,44 +97,47 @@ class CRM_Member_BAO_Query {
       }
 
       //add start date / end date
-      if (CRM_Utils_Array::value('membership_start_date', $query->_returnProperties)) {
+      if (!empty($query->_returnProperties['membership_start_date'])) {
         $query->_select['membership_start_date'] = "civicrm_membership.start_date as membership_start_date";
         $query->_element['membership_start_date'] = 1;
       }
 
-      if (CRM_Utils_Array::value('membership_end_date', $query->_returnProperties)) {
+      if (!empty($query->_returnProperties['membership_end_date'])) {
         $query->_select['membership_end_date'] = "civicrm_membership.end_date as  membership_end_date";
         $query->_element['membership_end_date'] = 1;
       }
 
       //add owner_membership_id
-      if (CRM_Utils_Array::value('owner_membership_id', $query->_returnProperties)) {
+      if (!empty($query->_returnProperties['owner_membership_id'])) {
         $query->_select['owner_membership_id'] = "civicrm_membership.owner_membership_id as owner_membership_id";
         $query->_element['owner_membership_id'] = 1;
       }
       //add max_related
-      if (CRM_Utils_Array::value('max_related', $query->_returnProperties)) {
+      if (!empty($query->_returnProperties['max_related'])) {
         $query->_select['max_related'] = "civicrm_membership.max_related as max_related";
         $query->_element['max_related'] = 1;
       }
       //add recur id w/o taking contribution table in join.
-      if (CRM_Utils_Array::value('membership_recur_id', $query->_returnProperties)) {
+      if (!empty($query->_returnProperties['membership_recur_id'])) {
         $query->_select['membership_recur_id'] = "civicrm_membership.contribution_recur_id as membership_recur_id";
         $query->_element['membership_recur_id'] = 1;
       }
 
       //add campaign id.
-      if (CRM_Utils_Array::value('member_campaign_id', $query->_returnProperties)) {
+      if (!empty($query->_returnProperties['member_campaign_id'])) {
         $query->_select['member_campaign_id'] = 'civicrm_membership.campaign_id as member_campaign_id';
         $query->_element['member_campaign_id'] = 1;
       }
     }
   }
 
+  /**
+   * @param $query
+   */
   static function where(&$query) {
     $grouping = NULL;
     foreach (array_keys($query->_params) as $id) {
-      if (!CRM_Utils_Array::value(0, $query->_params[$id])) {
+      if (empty($query->_params[$id][0])) {
         continue;
       }
       if (substr($query->_params[$id][0], 0, 7) == 'member_' || substr($query->_params[$id][0], 0, 11) == 'membership_') {
@@ -142,6 +150,10 @@ class CRM_Member_BAO_Query {
     }
   }
 
+  /**
+   * @param $values
+   * @param $query
+   */
   static function whereClauseSingle(&$values, &$query) {
     list($name, $op, $value, $grouping, $wildcard) = $values;
     switch ($name) {
@@ -203,7 +215,7 @@ class CRM_Member_BAO_Query {
         }
         else {
           $status = implode(',', array_keys($value));
-          if (count($value) > 1) {
+          if (count($value) > 0) {
             $op = 'IN';
             $status = "({$status})";
           }
@@ -241,11 +253,9 @@ class CRM_Member_BAO_Query {
           $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause(
             "ccr.contribution_status_id",
             $op,
-            CRM_Core_DAO::getFieldValue(
-              'CRM_Core_DAO_OptionValue',
-              'Cancelled',
-              'value',
-              'name'
+            array_search(
+              'Cancelled', 
+              CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name')
             ),
             "Integer"
           );
@@ -286,7 +296,7 @@ class CRM_Member_BAO_Query {
         }
         else {
           $mType = implode(',', array_keys($value));
-          if (count($value) > 1) {
+          if (count($value) > 0) {
             $op = 'IN';
             $mType = "({$mType})";
           }
@@ -337,6 +347,13 @@ class CRM_Member_BAO_Query {
     }
   }
 
+  /**
+   * @param $name
+   * @param $mode
+   * @param $side
+   *
+   * @return null|string
+   */
   static function from($name, $mode, $side) {
     $from = NULL;
     switch ($name) {
@@ -370,6 +387,12 @@ class CRM_Member_BAO_Query {
     return $from;
   }
 
+  /**
+   * @param $mode
+   * @param bool $includeCustomFields
+   *
+   * @return array|null
+   */
   static function defaultReturnProperties($mode,
     $includeCustomFields = TRUE
   ) {
@@ -409,6 +432,9 @@ class CRM_Member_BAO_Query {
     return $properties;
   }
 
+  /**
+   * @param CRM_Core_Form $form
+   */
   static function buildSearchForm(&$form) {
     foreach (CRM_Member_PseudoConstant::membershipType() as $id => $Name) {
       $form->_membershipType = &$form->addElement('checkbox', "member_membership_type_id[$id]", NULL, $Name);
@@ -427,10 +453,10 @@ class CRM_Member_BAO_Query {
 
     CRM_Core_Form_Date::buildDateRange($form, 'member_end_date', 1, '_low', '_high', ts('From'), FALSE);
 
-    $form->addYesNo('member_is_primary', ts('Primary Member?'));
-    $form->addYesNo('member_pay_later', ts('Pay Later?'));
-    $form->addYesNo('member_auto_renew', ts('Auto-Renew?'));
-    $form->addYesNo('member_test', ts('Membership is a Test?'));
+    $form->addYesNo('member_is_primary', ts('Primary Member?'), TRUE);
+    $form->addYesNo('member_pay_later', ts('Pay Later?'), TRUE);
+    $form->addYesNo('member_auto_renew', ts('Auto-Renew?'), TRUE);
+    $form->addYesNo('member_test', ts('Membership is a Test?'), TRUE);
 
     // add all the custom  searchable fields
     $extends = array('Membership');
@@ -456,16 +482,18 @@ class CRM_Member_BAO_Query {
     $form->setDefaults(array('member_test' => 0));
   }
 
+  /**
+   * @param $row
+   * @param $id
+   */
   static function searchAction(&$row, $id) {}
 
-  static function addShowHide(&$showHide) {
-    $showHide->addHide('memberForm');
-    $showHide->addShow('memberForm_show');
-  }
-
+  /**
+   * @param $tables
+   */
   static function tableNames(&$tables) {
     //add membership table
-    if (CRM_Utils_Array::value('civicrm_membership_log', $tables) || CRM_Utils_Array::value('civicrm_membership_status', $tables) || CRM_Utils_Array::value('civicrm_membership_type', $tables)) {
+    if (!empty($tables['civicrm_membership_log']) || !empty($tables['civicrm_membership_status']) || CRM_Utils_Array::value('civicrm_membership_type', $tables)) {
       $tables = array_merge(array('civicrm_membership' => 1), $tables);
     }
   }