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; } }
/** * 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; } }