- added hooks for change a wp_um_metadata table

- added hooks for user_location fields (hooks for comparison in text fields)
This commit is contained in:
andrewshuba
2021-03-12 12:24:31 +02:00
parent ad5d1236a1
commit a619ee3ffc
3 changed files with 29 additions and 77 deletions
+3 -7
View File
@@ -99,15 +99,11 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
$metakeys = array();
foreach ( UM()->builtin()->all_user_fields as $all_user_field ) {
if ( $all_user_field['type'] == 'user_location' ) {
$metakeys[] = $all_user_field['metakey'] . '_lat';
$metakeys[] = $all_user_field['metakey'] . '_lng';
$metakeys[] = $all_user_field['metakey'] . '_url';
} else {
$metakeys[] = $all_user_field['metakey'];
}
$metakeys[] = $all_user_field['metakey'];
}
$metakeys = apply_filters( 'um_metadata_same_page_update_ajax', $metakeys, UM()->builtin()->all_user_fields );
if ( is_multisite() ) {
$sites = get_sites( array( 'fields' => 'ids' ) );
+24 -67
View File
@@ -56,51 +56,25 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
function on_delete_custom_field( $metakey, $args ) {
$metakeys = get_option( 'um_usermeta_fields', array() );
if ( $args['type'] == 'user_location' ) {
if ( array_intersect( array( $metakey . '_lat', $metakey . '_lng', $metakey . '_url' ), $metakeys ) ) {
if ( false !== $searched = array_search( $metakey . '_lat', $metakeys ) ) {
unset( $metakeys[ $searched ] );
}
if ( false !== $searched = array_search( $metakey . '_lng', $metakeys ) ) {
unset( $metakeys[ $searched ] );
}
if ( false !== $searched = array_search( $metakey . '_url', $metakeys ) ) {
unset( $metakeys[ $searched ] );
}
if ( in_array( $metakey, $metakeys ) ) {
unset( $metakeys[ array_search( $metakey, $metakeys ) ] );
global $wpdb;
global $wpdb;
$wpdb->query( $wpdb->prepare(
"DELETE FROM {$wpdb->prefix}um_metadata
WHERE um_key = %s OR
um_key = %s OR
um_key = %s",
$metakey . '_lat',
$metakey . '_lng',
$metakey . '_url'
) );
$wpdb->delete(
"{$wpdb->prefix}um_metadata",
array(
'um_key' => $metakey
),
array(
'%s'
)
);
update_option( 'um_usermeta_fields', array_values( $metakeys ) );
}
} else {
if ( in_array( $metakey, $metakeys ) ) {
unset( $metakeys[ array_search( $metakey, $metakeys ) ] );
global $wpdb;
$wpdb->delete(
"{$wpdb->prefix}um_metadata",
array(
'um_key' => $metakey
),
array(
'%s'
)
);
update_option( 'um_usermeta_fields', array_values( $metakeys ) );
}
update_option( 'um_usermeta_fields', array_values( $metakeys ) );
}
apply_filters( 'um_metadata_on_delete_custom_field', $metakeys, $metakey, $args );
}
@@ -113,32 +87,12 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
function on_new_field_added( $metakey, $args ) {
$metakeys = get_option( 'um_usermeta_fields', array() );
if ( $args['type'] == 'user_location' ) {
$update = false;
if ( ! in_array( $metakey . '_lat', $metakeys ) ) {
$update = true;
$metakeys[] = $metakey . '_lat';
}
if ( ! in_array( $metakey . '_lng', $metakeys ) ) {
$update = true;
$metakeys[] = $metakey . '_lng';
}
if ( ! in_array( $metakey . '_url', $metakeys ) ) {
$update = true;
$metakeys[] = $metakey . '_url';
}
if ( $update ) {
update_option( 'um_usermeta_fields', array_values( $metakeys ) );
}
} else {
if ( ! in_array( $metakey, $metakeys ) ) {
$metakeys[] = $metakey;
update_option( 'um_usermeta_fields', array_values( $metakeys ) );
}
if ( ! in_array( $metakey, $metakeys ) ) {
$metakeys[] = $metakey;
update_option( 'um_usermeta_fields', array_values( $metakeys ) );
}
apply_filters( 'um_metadata_on_new_field_added', $metakeys, $metakey, $args );
}
@@ -291,7 +245,10 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
$value = trim( stripslashes( $value ) );
$this->where_clauses[] = $wpdb->prepare( "{$join_slug}{$i}.um_key = %s AND {$join_slug}{$i}.um_value = %s", $field, $value );
$compare = apply_filters( 'um_members_directory_filter_text', '=', $field );
$value = apply_filters( 'um_members_directory_filter_text_meta_value', $value, $field );
$this->where_clauses[] = $wpdb->prepare( "{$join_slug}{$i}.um_key = %s AND {$join_slug}{$i}.um_value {$compare} %s", $field, $value );
if ( ! $is_default ) {
$this->custom_filters_in_query[ $field ] = $value;
+2 -3
View File
@@ -1596,13 +1596,12 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
case 'text':
$value = stripslashes( $value );
$field_query = array(
'relation' => 'OR',
array(
'key' => $field,
'value' => trim( $value ),
'compare' => 'LIKE',
'compare' => apply_filters( 'um_members_directory_filter_text', '=', $field )
),
);
@@ -1871,7 +1870,7 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
$field_query = array(
'key' => $field,
'value' => $value,
'compare' => '=',
'compare' => apply_filters( 'um_members_directory_filter_text', '=', $field ),
);
break;