/**
* Admin Query Hook for searching member by custom fields
+ *
+ * There's two types now member and contact custom fields.
+ * Need to be able to search for either based on thier $uid.
*/
add_filter('glm-member-db-admin-search-query', function( $content, $uid ) {
$queryParts = array();
switch ( $field['field_type'] ) {
case 'textarea':
break;
+ case 'picklist':
case 'text':
// convert name to lower case and replace spaces with _
$field_name = preg_replace( '/[ -]/', '_', strtolower( $field['field_name'] ) );
if ( isset( $_REQUEST[$field_name] ) && $fieldValue = filter_var( $_REQUEST[$field_name], FILTER_SANITIZE_STRING ) ) {
- $queryParts[] = " T.id IN (
- SELECT mi.member
- FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info mi, " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_field_data cfd
- WHERE cfd.entity_id = mi.id
- AND cfd.field_data like '%" . esc_sql( $fieldValue ) . "%'
- AND cfd.field_id = (SELECT id
- FROM " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_fields
- WHERE field_name = '" . esc_sql( $field['field_name'] ) . "'))";
+ switch ( $uid ) {
+ case 'glm-member-db':
+ $queryParts[] = " T.id IN (
+ SELECT mi.member
+ FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info mi, " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_field_data cfd
+ WHERE cfd.entity_id = mi.id
+ AND cfd.field_data like '%" . esc_sql( $fieldValue ) . "%'
+ AND cfd.field_id = (SELECT id
+ FROM " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_fields
+ WHERE field_name = '" . esc_sql( $field['field_name'] ) . "'))";
+ break;
+ case 'glm-member-db-contacts':
+ $queryParts[] = " T.id IN (
+ SELECT C.id
+ FROM " . GLM_MEMBERS_CONTACTS_PLUGIN_DB_PREFIX . "contacts C, " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_field_data cfd
+ WHERE cfd.entity_id = C.id
+ AND cfd.field_data like '%" . esc_sql( $fieldValue ) . "%'
+ AND cfd.field_id = (SELECT id
+ FROM " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_fields
+ WHERE field_name = '" . esc_sql( $field['field_name'] ) . "'))";
+ break;
+ }
}
break;
// convert name to lower case and replace spaces with _
$field_name = preg_replace( '/[ -]/', '_', strtolower( $field['field_name'] ) );
if ( isset( $_REQUEST[$field_name] ) && filter_var( $_REQUEST[$field_name], FILTER_VALIDATE_BOOLEAN ) ) {
- $queryParts[] = " T.id IN (
- SELECT mi.member
- FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info mi, " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_field_data cfd
- WHERE cfd.entity_id = mi.id
- AND cfd.field_data = 'Yes'
- AND cfd.field_id = (SELECT id
- FROM " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_fields
- WHERE field_name = '" . esc_sql( $field['field_name'] ) . "'))";
+ switch ( $uid ) {
+ case 'glm-member-db':
+ $queryParts[] = " T.id IN (
+ SELECT mi.member
+ FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info mi, " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_field_data cfd
+ WHERE cfd.entity_id = mi.id
+ AND cfd.field_data = 'Yes'
+ AND cfd.field_id = (SELECT id
+ FROM " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_fields
+ WHERE field_name = '" . esc_sql( $field['field_name'] ) . "'))";
+ break;
+ case 'glm-member-db-contacts':
+ $queryParts[] = " T.id IN (
+ SELECT C.id
+ FROM " . GLM_MEMBERS_CONTACTS_PLUGIN_DB_PREFIX . "contacts C, " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_field_data cfd
+ WHERE cfd.entity_id = C.id
+ AND cfd.field_data = 'Yes'
+ AND cfd.field_id = (SELECT id
+ FROM " . GLM_MEMBERS_FIELDS_PLUGIN_DB_PREFIX . "custom_fields
+ WHERE field_name = '" . esc_sql( $field['field_name'] ) . "'))";
+ break;
+ }
}
break;
}