CRM-14106 - Regex targeting the first part of if statements
[civicrm-core.git] / CRM / Contact / Form / Search / Builder.php
index b6e6bdd3532c60f8eec88c5eafa1ff02ff8bca50..3159c6d644c6694f0821ecdf473aa9faf5d7c840 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.3                                                |
+ | CiviCRM version 4.4                                                |
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC (c) 2004-2013                                |
  +--------------------------------------------------------------------+
@@ -57,7 +57,7 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
   /**
    * Function to actually build the form
    *
-   * @return None
+   * @return void
    * @access public
    */
   public function preProcess() {
@@ -146,7 +146,7 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
    * @access public
    */
   static function formRule($values, $files, $self) {
-    if (CRM_Utils_Array::value('addMore', $values) || CRM_Utils_Array::value('addBlock', $values)) {
+    if (!empty($values['addMore']) || CRM_Utils_Array::value('addBlock', $values)) {
       return TRUE;
     }
     $fields = self::fields();
@@ -358,7 +358,7 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
       $this->_formValues = $this->controller->exportValues($this->_name);
 
       // set the group if group is submitted
-      if (CRM_Utils_Array::value('uf_group_id', $this->_formValues)) {
+      if (!empty($this->_formValues['uf_group_id'])) {
         $this->set('id', $this->_formValues['uf_group_id']);
       }
       else {
@@ -377,6 +377,9 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
         $this->_formValues['sortByCharacter'] = $this->_sortByCharacter;
       }
     }
+    else {
+      $this->_sortByCharacter = NULL;
+    }
 
     $this->_params = &$this->convertFormValues($this->_formValues);
     $this->_returnProperties = &$this->returnProperties();
@@ -390,12 +393,13 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
   }
 
   static function fields() {
-    return array_merge(
+    $fields = array_merge(
       CRM_Contact_BAO_Contact::exportableFields('All', FALSE, TRUE),
       CRM_Core_Component::getQueryFields(),
       CRM_Contact_BAO_Query_Hook::singleton()->getFields(),
       CRM_Activity_BAO_Activity::exportableFields()
     );
+    return $fields;
   }
 
   /**
@@ -410,30 +414,22 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
     $options = array(
       'group' => 'group_contact',
       'tag' => 'entity_tag',
-      'country' => 'address',
-      'state_province' => 'address',
-      'gender' => 'contact',
-      'world_region' => 'contact',
-      'individual_prefix' => 'contact',
-      'individual_suffix' => 'contact',
-      'preferred_communication_method' => 'contact',
-      'preferred_language' => 'contact',
       'on_hold' => 'yesno',
       'is_bulkmail' => 'yesno',
-      'activity_type' => 'activity',
-      'activity_status' => 'activity',
-      'financial_type' => 'contribution',
-      'contribution_page_id' => 'contribution',
-      'contribution_status' => 'contribution',
       'payment_instrument' => 'contribution',
       'membership_status' => 'membership',
       'membership_type' => 'membership',
+      'member_campaign_id' => 'membership',
+      'member_is_test' => 'yesno',
+      'member_is_pay_later' => 'yesno',
+      'is_override' => 'yesno',
     );
-    $entities = array('contact', 'activity', 'participant', 'pledge', 'member', 'contribution');
+    $entities = array('contact', 'address', 'activity', 'participant', 'pledge', 'member', 'contribution');
+    CRM_Contact_BAO_Query_Hook::singleton()->alterSearchBuilderOptions($entities, $options);
     foreach ($entities as $entity) {
-      $fields = civicrm_api($entity, 'getfields', array('version' => 3));
+      $fields = civicrm_api3($entity, 'getfields');
       foreach ($fields['values'] as $field => $info) {
-        if (!empty($info['options']) || !empty($info['pseudoconstant']) || !empty($info['option_group_id'])) {
+        if (!empty($info['options']) || !empty($info['pseudoconstant']) || !empty($info['option_group_id']) || !empty($info['enumValues'])) {
           $options[$field] = $entity;
           if (substr($field, -3) == '_id') {
             $options[substr($field, 0, -3)] = $entity;