function whereClauseSingle(&$values)
 {
     // do not process custom fields or prefixed contact ids or component params
     if (CRM_Core_BAO_CustomField::getKeyID($values[0]) || substr($values[0], 0, CRM_Core_Form::CB_PREFIX_LEN) == CRM_Core_Form::CB_PREFIX || substr($values[0], 0, 13) == 'contribution_' || substr($values[0], 0, 6) == 'event_' || substr($values[0], 0, 12) == 'participant_' || substr($values[0], 0, 7) == 'member_' || substr($values[0], 0, 6) == 'quest_' || substr($values[0], 0, 8) == 'kabissa_' || substr($values[0], 0, 4) == 'tmf_' || substr($values[0], 0, 6) == 'grant_' || substr($values[0], 0, 7) == 'pledge_' || substr($values[0], 0, 5) == 'case_') {
         return;
     }
     switch ($values[0]) {
         case 'deleted_contacts':
             $this->deletedContacts($values);
             return;
         case 'contact_type':
             $this->contactType($values);
             return;
         case 'contact_sub_type':
             $this->contactSubType($values);
             return;
         case 'group':
             list($name, $op, $value, $grouping, $wildcard) = $values;
             $this->group($values);
             return;
             // case tag comes from find contacts
         // case tag comes from find contacts
         case 'tag_search':
             $this->tagSearch($values);
             return;
         case 'tag':
         case 'contact_tags':
             $this->tag($values);
             return;
         case 'note':
             $this->notes($values);
             return;
         case 'uf_user':
             $this->ufUser($values);
             return;
         case 'sort_name':
         case 'display_name':
             $this->sortName($values);
             //force civicrm_activity_target, CRM-7812
             self::$_withContactActivitiesOnly = TRUE;
             return;
         case 'email':
             $this->email($values);
             return;
         case 'street_address':
             $this->street_address($values);
             return;
         case 'street_number':
             $this->street_number($values);
             return;
         case 'sortByCharacter':
             $this->sortByCharacter($values);
             return;
         case 'location_type':
             $this->locationType($values);
             return;
         case 'county':
             $this->county($values);
             return;
         case 'state_province':
             $this->stateProvince($values);
             return;
         case 'country':
             $this->country($values, FALSE);
             return;
         case 'postal_code':
         case 'postal_code_low':
         case 'postal_code_high':
             $this->postalCode($values);
             return;
         case 'activity_date':
         case 'activity_date_low':
         case 'activity_date_high':
         case 'activity_role':
         case 'activity_status':
         case 'activity_subject':
         case 'test_activities':
         case 'activity_type_id':
         case 'activity_survey_id':
         case 'activity_tags':
         case 'activity_taglist':
         case 'activity_test':
         case 'activity_contact_name':
         case 'activity_campaign_id':
         case 'activity_engagement_level':
         case 'activity_id':
             CRM_Activity_BAO_Query::whereClauseSingle($values, $this);
             return;
         case 'birth_date_low':
         case 'birth_date_high':
         case 'deceased_date_low':
         case 'deceased_date_high':
             $this->demographics($values);
             return;
         case 'log_date_low':
         case 'log_date_high':
             $this->modifiedDates($values);
             return;
         case 'changed_by':
             $this->changeLog($values);
             return;
         case 'do_not_phone':
         case 'do_not_email':
         case 'do_not_mail':
         case 'do_not_sms':
         case 'do_not_trade':
         case 'is_opt_out':
             $this->privacy($values);
             return;
         case 'privacy_options':
             $this->privacyOptions($values);
             return;
         case 'privacy_operator':
         case 'privacy_toggle':
             // these are handled by privacy options
             return;
         case 'preferred_communication_method':
             $this->preferredCommunication($values);
             return;
         case 'relation_type_id':
             $this->relationship($values);
             return;
         case 'relation_target_name':
             // since this case is handled with the above
             return;
         case 'relation_status':
             // since this case is handled with the above
             return;
         case 'task_status_id':
             $this->task($values);
             return;
         case 'task_id':
             // since this case is handled with the above
             return;
         case 'prox_distance':
             CRM_Contact_BAO_ProximityQuery::process($this, $values);
             return;
         case 'prox_street_address':
         case 'prox_city':
         case 'prox_postal_code':
         case 'prox_state_province_id':
         case 'prox_country_id':
             // handled by the proximity_distance clause
             return;
         default:
             $this->restWhere($values);
             return;
     }
 }
Exemple #2
0
 /**
  * Get the where clause for a single field.
  *
  * @param array $values
  */
 public function whereClauseSingle(&$values)
 {
     // do not process custom fields or prefixed contact ids or component params
     if (CRM_Core_BAO_CustomField::getKeyID($values[0]) || substr($values[0], 0, CRM_Core_Form::CB_PREFIX_LEN) == CRM_Core_Form::CB_PREFIX || substr($values[0], 0, 13) == 'contribution_' || substr($values[0], 0, 6) == 'event_' || substr($values[0], 0, 12) == 'participant_' || substr($values[0], 0, 7) == 'member_' || substr($values[0], 0, 6) == 'grant_' || substr($values[0], 0, 7) == 'pledge_' || substr($values[0], 0, 5) == 'case_' || substr($values[0], 0, 10) == 'financial_' || substr($values[0], 0, 8) == 'payment_' || substr($values[0], 0, 11) == 'membership_') {
         return;
     }
     // skip for hook injected fields / params
     $extFields = CRM_Contact_BAO_Query_Hook::singleton()->getFields();
     if (array_key_exists($values[0], $extFields)) {
         return;
     }
     switch ($values[0]) {
         case 'deleted_contacts':
             $this->deletedContacts($values);
             return;
         case 'contact_type':
             $this->contactType($values);
             return;
         case 'contact_sub_type':
             $this->contactSubType($values);
             return;
         case 'group':
             $this->group($values);
             return;
         case 'group_type':
             // so we resolve this into a list of groups & proceed as if they had been
             // handed in
             list($name, $op, $value, $grouping, $wildcard) = $values;
             $values[0] = 'group';
             $values[1] = 'IN';
             $this->_paramLookup['group'][0][0] = 'group';
             $this->_paramLookup['group'][0][1] = 'IN';
             $this->_paramLookup['group'][0][2] = $values[2] = $this->getGroupsFromTypeCriteria($value);
             $this->group($values);
             return;
             // case tag comes from find contacts
         // case tag comes from find contacts
         case 'tag_search':
             $this->tagSearch($values);
             return;
         case 'tag':
         case 'contact_tags':
             $this->tag($values);
             return;
         case 'note':
         case 'note_body':
         case 'note_subject':
             $this->notes($values);
             return;
         case 'uf_user':
             $this->ufUser($values);
             return;
         case 'sort_name':
         case 'display_name':
             $this->sortName($values);
             return;
         case 'addressee':
         case 'postal_greeting':
         case 'email_greeting':
             $this->greetings($values);
             return;
         case 'email':
             $this->email($values);
             return;
         case 'phone_numeric':
             $this->phone_numeric($values);
             return;
         case 'phone_phone_type_id':
         case 'phone_location_type_id':
             $this->phone_option_group($values);
             return;
         case 'street_address':
             $this->street_address($values);
             return;
         case 'street_number':
             $this->street_number($values);
             return;
         case 'sortByCharacter':
             $this->sortByCharacter($values);
             return;
         case 'location_type':
             $this->locationType($values);
             return;
         case 'county':
             $this->county($values);
             return;
         case 'state_province':
             $this->stateProvince($values);
             return;
         case 'country':
             $this->country($values, FALSE);
             return;
         case 'postal_code':
         case 'postal_code_low':
         case 'postal_code_high':
             $this->postalCode($values);
             return;
         case 'activity_date':
         case 'activity_date_low':
         case 'activity_date_high':
         case 'activity_role':
         case 'activity_status_id':
         case 'activity_status':
         case 'followup_parent_id':
         case 'parent_id':
         case 'source_contact_id':
         case 'activity_subject':
         case 'test_activities':
         case 'activity_type_id':
         case 'activity_type':
         case 'activity_survey_id':
         case 'activity_tags':
         case 'activity_taglist':
         case 'activity_test':
         case 'activity_campaign_id':
         case 'activity_engagement_level':
         case 'activity_id':
         case 'activity_result':
         case 'source_contact':
             CRM_Activity_BAO_Query::whereClauseSingle($values, $this);
             return;
         case 'age_low':
         case 'age_high':
         case 'birth_date_low':
         case 'birth_date_high':
         case 'deceased_date_low':
         case 'deceased_date_high':
             $this->demographics($values);
             return;
         case 'age_asof_date':
             // handled by demographics
             return;
         case 'log_date_low':
         case 'log_date_high':
             $this->modifiedDates($values);
             return;
         case 'changed_by':
             $this->changeLog($values);
             return;
         case 'do_not_phone':
         case 'do_not_email':
         case 'do_not_mail':
         case 'do_not_sms':
         case 'do_not_trade':
         case 'is_opt_out':
             $this->privacy($values);
             return;
         case 'privacy_options':
             $this->privacyOptions($values);
             return;
         case 'privacy_operator':
         case 'privacy_toggle':
             // these are handled by privacy options
             return;
         case 'preferred_communication_method':
             $this->preferredCommunication($values);
             return;
         case 'relation_type_id':
         case 'relation_start_date_high':
         case 'relation_start_date_low':
         case 'relation_end_date_high':
         case 'relation_end_date_low':
         case 'relation_target_name':
         case 'relation_status':
         case 'relation_date_low':
         case 'relation_date_high':
             $this->relationship($values);
             $this->_relationshipValuesAdded = TRUE;
             return;
         case 'task_status_id':
             $this->task($values);
             return;
         case 'task_id':
             // since this case is handled with the above
             return;
         case 'prox_distance':
             CRM_Contact_BAO_ProximityQuery::process($this, $values);
             return;
         case 'prox_street_address':
         case 'prox_city':
         case 'prox_postal_code':
         case 'prox_state_province_id':
         case 'prox_country_id':
             // handled by the proximity_distance clause
             return;
         default:
             $this->restWhere($values);
             return;
     }
 }