mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-16 13:13:33 +09:00
- code formatted;
- added handlers when you create UM custom fields;
This commit is contained in:
@@ -635,7 +635,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
$array = apply_filters( "um_admin_pre_save_fields_hook", $array );
|
||||
$array = apply_filters( 'um_admin_pre_save_fields_hook', $array );
|
||||
|
||||
/**
|
||||
* UM hook
|
||||
@@ -666,23 +666,23 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {
|
||||
*/
|
||||
extract( $array['post'] );
|
||||
|
||||
if ( empty( $output['error'] ) ){
|
||||
if ( empty( $output['error'] ) ) {
|
||||
|
||||
$save = array();
|
||||
$save[ $_metakey ] = null;
|
||||
foreach( $array['post'] as $key => $val){
|
||||
foreach ( $array['post'] as $key => $val ) {
|
||||
|
||||
if ( substr( $key, 0, 1) === '_' && $val != '' ) { // field attribute
|
||||
if ( substr( $key, 0, 1 ) === '_' && $val != '' ) { // field attribute
|
||||
$new_key = ltrim ($key,'_');
|
||||
|
||||
if ( $new_key == 'options' ) {
|
||||
//$save[ $_metakey ][$new_key] = explode(PHP_EOL, $val);
|
||||
$save[ $_metakey ][$new_key] = preg_split('/[\r\n]+/', $val, -1, PREG_SPLIT_NO_EMPTY);
|
||||
$save[ $_metakey ][ $new_key ] = preg_split( '/[\r\n]+/', $val, -1, PREG_SPLIT_NO_EMPTY );
|
||||
} else {
|
||||
$save[ $_metakey ][$new_key] = $val;
|
||||
$save[ $_metakey ][ $new_key ] = $val;
|
||||
}
|
||||
|
||||
} else if ( strstr( $key, 'um_editor' ) ) {
|
||||
} elseif ( strstr( $key, 'um_editor' ) ) {
|
||||
$save[ $_metakey ]['content'] = $val;
|
||||
}
|
||||
|
||||
@@ -711,7 +711,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
$field_args = apply_filters("um_admin_pre_save_field_to_form", $field_args );
|
||||
$field_args = apply_filters( 'um_admin_pre_save_field_to_form', $field_args );
|
||||
|
||||
UM()->fields()->update_field( $field_ID, $field_args, $post_id );
|
||||
|
||||
@@ -735,7 +735,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Builder' ) ) {
|
||||
* }
|
||||
* ?>
|
||||
*/
|
||||
$field_args = apply_filters("um_admin_pre_save_field_to_db", $field_args );
|
||||
$field_args = apply_filters( 'um_admin_pre_save_field_to_db', $field_args );
|
||||
|
||||
if ( ! isset( $array['args']['form_only'] ) ) {
|
||||
if ( ! isset( UM()->builtin()->predefined_fields[ $field_ID ] ) ) {
|
||||
|
||||
@@ -33,6 +33,9 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
var $need_change_permalinks;
|
||||
|
||||
|
||||
var $gravatar_changed = false;
|
||||
|
||||
|
||||
/**
|
||||
* Admin_Settings constructor.
|
||||
*/
|
||||
@@ -524,79 +527,79 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
'placeholder' => __( 'Select...', 'ultimate-member' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'display_name',
|
||||
'type' => 'select',
|
||||
'id' => 'display_name',
|
||||
'type' => 'select',
|
||||
'size' => 'medium',
|
||||
'label' => __( 'User Display Name','ultimate-member' ),
|
||||
'tooltip' => __( 'This is the name that will be displayed for users on the front end of your site. Default setting uses first/last name as display name if it exists','ultimate-member' ),
|
||||
'options' => array(
|
||||
'default' => __('Default WP Display Name','ultimate-member'),
|
||||
'nickname' => __('Nickname','ultimate-member'),
|
||||
'username' => __('Username','ultimate-member'),
|
||||
'full_name' => __('First name & last name','ultimate-member'),
|
||||
'sur_name' => __('Last name & first name','ultimate-member'),
|
||||
'initial_name' => __('First name & first initial of last name','ultimate-member'),
|
||||
'initial_name_f' => __('First initial of first name & last name','ultimate-member'),
|
||||
'first_name' => __('First name only','ultimate-member'),
|
||||
'field' => __('Custom field(s)','ultimate-member'),
|
||||
'label' => __( 'User Display Name', 'ultimate-member' ),
|
||||
'tooltip' => __( 'This is the name that will be displayed for users on the front end of your site. Default setting uses first/last name as display name if it exists', 'ultimate-member' ),
|
||||
'options' => array(
|
||||
'default' => __( 'Default WP Display Name', 'ultimate-member' ),
|
||||
'nickname' => __( 'Nickname', 'ultimate-member' ),
|
||||
'username' => __( 'Username', 'ultimate-member' ),
|
||||
'full_name' => __( 'First name & last name', 'ultimate-member' ),
|
||||
'sur_name' => __( 'Last name & first name', 'ultimate-member' ),
|
||||
'initial_name' => __( 'First name & first initial of last name', 'ultimate-member' ),
|
||||
'initial_name_f' => __( 'First initial of first name & last name', 'ultimate-member' ),
|
||||
'first_name' => __( 'First name only', 'ultimate-member' ),
|
||||
'field' => __( 'Custom field(s)', 'ultimate-member' ),
|
||||
),
|
||||
'placeholder' => __('Select...'),
|
||||
'placeholder' => __( 'Select...', 'ultimate-member' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'display_name_field',
|
||||
'type' => 'text',
|
||||
'label' => __( 'Display Name Custom Field(s)','ultimate-member' ),
|
||||
'tooltip' => __('Specify the custom field meta key or custom fields seperated by comma that you want to use to display users name on the frontend of your site','ultimate-member'),
|
||||
'id' => 'display_name_field',
|
||||
'type' => 'text',
|
||||
'label' => __( 'Display Name Custom Field(s)', 'ultimate-member' ),
|
||||
'tooltip' => __( 'Specify the custom field meta key or custom fields seperated by comma that you want to use to display users name on the frontend of your site', 'ultimate-member' ),
|
||||
'conditional' => array( 'display_name', '=', 'field' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'author_redirect',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Automatically redirect author page to their profile?','ultimate-member'),
|
||||
'tooltip' => __('If enabled, author pages will automatically redirect to the user\'s profile page','ultimate-member'),
|
||||
'id' => 'author_redirect',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Automatically redirect author page to their profile?', 'ultimate-member' ),
|
||||
'tooltip' => __( 'If enabled, author pages will automatically redirect to the user\'s profile page', 'ultimate-member' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'members_page',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Enable Members Directory','ultimate-member' ),
|
||||
'tooltip' => __('Control whether to enable or disable member directories on this site','ultimate-member'),
|
||||
'id' => 'members_page',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Enable Members Directory', 'ultimate-member' ),
|
||||
'tooltip' => __( 'Control whether to enable or disable member directories on this site', 'ultimate-member' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'use_gravatars',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Use Gravatars?','ultimate-member' ),
|
||||
'tooltip' => __('Do you want to use gravatars instead of the default plugin profile photo (If the user did not upload a custom profile photo / avatar)','ultimate-member'),
|
||||
'id' => 'use_gravatars',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Use Gravatars?', 'ultimate-member' ),
|
||||
'tooltip' => __( 'Do you want to use gravatars instead of the default plugin profile photo (If the user did not upload a custom profile photo / avatar)', 'ultimate-member' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'use_um_gravatar_default_builtin_image',
|
||||
'type' => 'select',
|
||||
'label' => __( 'Use Gravatar builtin image','ultimate-member' ),
|
||||
'tooltip' => __( 'Gravatar has a number of built in options which you can also use as defaults','ultimate-member' ),
|
||||
'options' => array(
|
||||
'default' => __('Default','ultimate-member'),
|
||||
'404' => __('404 ( File Not Found response )','ultimate-member'),
|
||||
'mm' => __('Mystery Man','ultimate-member'),
|
||||
'identicon' => __('Identicon','ultimate-member'),
|
||||
'monsterid' => __('Monsterid','ultimate-member'),
|
||||
'wavatar' => __('Wavatar','ultimate-member'),
|
||||
'retro' => __('Retro','ultimate-member'),
|
||||
'blank' => __('Blank ( a transparent PNG image )','ultimate-member'),
|
||||
'id' => 'use_um_gravatar_default_builtin_image',
|
||||
'type' => 'select',
|
||||
'label' => __( 'Use Gravatar builtin image', 'ultimate-member' ),
|
||||
'tooltip' => __( 'Gravatar has a number of built in options which you can also use as defaults', 'ultimate-member' ),
|
||||
'options' => array(
|
||||
'default' => __( 'Default', 'ultimate-member' ),
|
||||
'404' => __( '404 ( File Not Found response )', 'ultimate-member' ),
|
||||
'mm' => __( 'Mystery Man', 'ultimate-member' ),
|
||||
'identicon' => __( 'Identicon', 'ultimate-member' ),
|
||||
'monsterid' => __( 'Monsterid', 'ultimate-member' ),
|
||||
'wavatar' => __( 'Wavatar', 'ultimate-member' ),
|
||||
'retro' => __( 'Retro', 'ultimate-member' ),
|
||||
'blank' => __( 'Blank ( a transparent PNG image )', 'ultimate-member' ),
|
||||
),
|
||||
'conditional' => array( 'use_gravatars', '=', 1 ),
|
||||
'conditional' => array( 'use_gravatars', '=', 1 ),
|
||||
'size' => 'medium'
|
||||
),
|
||||
array(
|
||||
'id' => 'use_um_gravatar_default_image',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Use Default plugin avatar as Gravatar\'s Default avatar','ultimate-member' ),
|
||||
'tooltip' => __('Do you want to use the plugin default avatar instead of the gravatar default photo (If the user did not upload a custom profile photo / avatar)','ultimate-member'),
|
||||
'conditional' => array( 'use_um_gravatar_default_builtin_image', '=', 'default' ),
|
||||
'id' => 'use_um_gravatar_default_image',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Use Default plugin avatar as Gravatar\'s Default avatar', 'ultimate-member' ),
|
||||
'tooltip' => __( 'Do you want to use the plugin default avatar instead of the gravatar default photo (If the user did not upload a custom profile photo / avatar)', 'ultimate-member' ),
|
||||
'conditional' => array( 'use_um_gravatar_default_builtin_image', '=', 'default' ),
|
||||
),
|
||||
array(
|
||||
'id' => 'reset_require_strongpass',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Require a strong password? (when user resets password only)','ultimate-member' ),
|
||||
'tooltip' => __('Enable or disable a strong password rules on password reset and change procedure','ultimate-member'),
|
||||
'id' => 'reset_require_strongpass',
|
||||
'type' => 'checkbox',
|
||||
'label' => __( 'Require a strong password? (when user resets password only)', 'ultimate-member' ),
|
||||
'tooltip' => __( 'Enable or disable a strong password rules on password reset and change procedure', 'ultimate-member' ),
|
||||
)
|
||||
)
|
||||
),
|
||||
@@ -1781,6 +1784,15 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
$this->need_change_permalinks = true;
|
||||
}
|
||||
}
|
||||
|
||||
// set variable if gravatar settings were changed
|
||||
// update for um_member_directory_data metakey
|
||||
if ( isset( $_POST['um_options']['use_gravatars'] ) ) {
|
||||
$use_gravatar = UM()->options()->get( 'use_gravatars' );
|
||||
if ( ( empty( $use_gravatar ) && ! empty( $_POST['um_options']['use_gravatars'] ) ) || ( ! empty( $use_gravatar ) && empty( $_POST['um_options']['use_gravatars'] ) ) ) {
|
||||
$this->gravatar_changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1830,6 +1842,47 @@ if ( ! class_exists( 'um\admin\core\Admin_Settings' ) ) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// update for um_member_directory_data metakey
|
||||
if ( isset( $_POST['um_options']['use_gravatars'] ) ) {
|
||||
if ( $this->gravatar_changed ) {
|
||||
global $wpdb;
|
||||
|
||||
if ( ! empty( $_POST['um_options']['use_gravatars'] ) ) {
|
||||
|
||||
$results = $wpdb->get_col(
|
||||
"SELECT u.ID FROM {$wpdb->users} AS u
|
||||
LEFT JOIN {$wpdb->usermeta} AS um ON ( um.user_id = u.ID AND um.meta_key = 'synced_gravatar_hashed_id' )
|
||||
LEFT JOIN {$wpdb->usermeta} AS um2 ON ( um2.user_id = u.ID AND um2.meta_key = 'um_member_directory_data' )
|
||||
WHERE um.meta_value != '' AND um.meta_value IS NOT NULL AND
|
||||
um2.meta_value LIKE '%s:13:\"profile_photo\";b:0;%'"
|
||||
);
|
||||
|
||||
} else {
|
||||
|
||||
$results = $wpdb->get_col(
|
||||
"SELECT u.ID FROM {$wpdb->users} AS u
|
||||
LEFT JOIN {$wpdb->usermeta} AS um ON ( um.user_id = u.ID AND ( um.meta_key = 'synced_profile_photo' || um.meta_key = 'profile_photo' ) )
|
||||
LEFT JOIN {$wpdb->usermeta} AS um2 ON ( um2.user_id = u.ID AND um2.meta_key = 'um_member_directory_data' )
|
||||
WHERE ( um.meta_value IS NULL OR um.meta_value = '' ) AND
|
||||
um2.meta_value LIKE '%s:13:\"profile_photo\";b:1;%'"
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
if ( ! empty( $results ) ) {
|
||||
foreach ( $results as $user_id ) {
|
||||
$md_data = get_user_meta( $user_id, 'um_member_directory_data', true );
|
||||
if ( ! empty( $md_data ) ) {
|
||||
$md_data['profile_photo'] = ! empty( $_POST['um_options']['use_gravatars'] );
|
||||
update_user_meta( $user_id, 'um_member_directory_data', $md_data );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} elseif ( isset( $_POST['um_options']['member_directory_own_table'] ) ) {
|
||||
if ( empty( $_POST['um_options']['member_directory_own_table'] ) ) {
|
||||
global $wpdb;
|
||||
|
||||
@@ -84,15 +84,18 @@ function um_upgrade_metadata_per_user213beta3() {
|
||||
|
||||
break;
|
||||
case 'synced_gravatar_hashed_id':
|
||||
case 'synced_profile_photo':
|
||||
|
||||
if ( empty( $users_map[ $metadatarow['user_id'] ]['profile_photo'] ) ) {
|
||||
$users_map[ $metadatarow['user_id'] ]['profile_photo'] = ! empty( $metadatarow['meta_value'] );
|
||||
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
||||
if ( empty( $users_map[ $metadatarow['user_id'] ]['profile_photo'] ) ) {
|
||||
$users_map[ $metadatarow['user_id'] ]['profile_photo'] = ! empty( $metadatarow['meta_value'] );
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 'synced_profile_photo':
|
||||
case 'profile_photo':
|
||||
$users_map[ $metadatarow['user_id'] ]['profile_photo'] = ! empty( $metadatarow['meta_value'] );
|
||||
if ( empty( $users_map[ $metadatarow['user_id'] ]['profile_photo'] ) ) {
|
||||
$users_map[ $metadatarow['user_id'] ]['profile_photo'] = ! empty( $metadatarow['meta_value'] );
|
||||
}
|
||||
break;
|
||||
case 'cover_photo':
|
||||
$users_map[ $metadatarow['user_id'] ]['cover_photo'] = ! empty( $metadatarow['meta_value'] );
|
||||
|
||||
@@ -150,6 +150,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
unset( $fields[ $id ]['in_group'] );
|
||||
unset( $fields[ $id ]['position'] );
|
||||
|
||||
do_action( 'um_add_new_field', $id );
|
||||
|
||||
update_option( 'um_fields', $fields );
|
||||
}
|
||||
|
||||
@@ -248,6 +250,9 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
$fields = UM()->builtin()->saved_fields;
|
||||
if ( isset( $fields[ $id ] ) ) {
|
||||
unset( $fields[ $id ] );
|
||||
|
||||
do_action( 'um_delete_custom_field', $id );
|
||||
|
||||
update_option( 'um_fields', $fields );
|
||||
}
|
||||
}
|
||||
@@ -354,6 +359,9 @@ if ( ! class_exists( 'um\core\Fields' ) ) {
|
||||
unset( $all_fields[ $new_metakey ]['in_group'] );
|
||||
unset( $all_fields[ $new_metakey ]['position'] );
|
||||
|
||||
|
||||
do_action( 'um_add_new_field', $new_metakey );
|
||||
|
||||
UM()->query()->update_attr( 'custom_fields', $form_id, $fields );
|
||||
update_option( 'um_fields', $all_fields );
|
||||
}
|
||||
|
||||
@@ -33,9 +33,92 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
|
||||
|
||||
add_action( 'updated_user_meta', array( &$this, 'on_update_usermeta' ), 10, 4 );
|
||||
add_action( 'added_user_meta', array( &$this, 'on_update_usermeta' ), 10, 4 );
|
||||
add_action( 'deleted_user_meta', array( &$this, 'on_delete_usermeta' ), 10, 4 );
|
||||
|
||||
add_action( 'um_add_new_field', array( &$this, 'on_new_field_added' ), 10, 1 );
|
||||
add_action( 'um_delete_custom_field', array( &$this, 'on_delete_custom_field' ), 10, 1 );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Delete custom field and metakey from UM usermeta table
|
||||
*
|
||||
* @param $metakey
|
||||
*/
|
||||
function on_delete_custom_field( $metakey ) {
|
||||
$metakeys = get_option( 'um_usermeta_fields', array() );
|
||||
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', $metakeys );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add metakey to usermeta fields
|
||||
*
|
||||
* @param $metakey
|
||||
*/
|
||||
function on_new_field_added( $metakey ) {
|
||||
$metakeys = get_option( 'um_usermeta_fields', array() );
|
||||
if ( ! in_array( $metakey, $metakeys ) ) {
|
||||
$metakeys[] = $metakey;
|
||||
update_option( 'um_usermeta_fields', $metakeys );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* When you delete usermeta - remove row from um_metadata
|
||||
*
|
||||
* @param int|array $meta_ids
|
||||
* @param int $object_id
|
||||
* @param string $meta_key
|
||||
* @param mixed $_meta_value
|
||||
*/
|
||||
function on_delete_usermeta( $meta_ids, $object_id, $meta_key, $_meta_value ) {
|
||||
$metakeys = get_option( 'um_usermeta_fields', array() );
|
||||
if ( ! in_array( $meta_key, $metakeys ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
global $wpdb;
|
||||
|
||||
$wpdb->delete(
|
||||
"{$wpdb->prefix}um_metadata",
|
||||
array(
|
||||
'user_id' => $object_id,
|
||||
'um_key' => $meta_key
|
||||
),
|
||||
array(
|
||||
'%d',
|
||||
'%s'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* When you add/update usermeta - add/update row from um_metadata
|
||||
*
|
||||
* @param int $meta_id
|
||||
* @param int $object_id
|
||||
* @param string $meta_key
|
||||
* @param mixed $_meta_value
|
||||
*/
|
||||
function on_update_usermeta( $meta_id, $object_id, $meta_key, $_meta_value ) {
|
||||
|
||||
$metakeys = get_option( 'um_usermeta_fields', array() );
|
||||
@@ -45,7 +128,15 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
|
||||
|
||||
global $wpdb;
|
||||
|
||||
$result = $wpdb->get_var( $wpdb->prepare( "SELECT umeta_id FROM {$wpdb->prefix}um_metadata WHERE user_id = %d AND um_key = %s LIMIT 1", $object_id, $meta_key ) );
|
||||
$result = $wpdb->get_var( $wpdb->prepare(
|
||||
"SELECT umeta_id
|
||||
FROM {$wpdb->prefix}um_metadata
|
||||
WHERE user_id = %d AND
|
||||
um_key = %s
|
||||
LIMIT 1",
|
||||
$object_id,
|
||||
$meta_key
|
||||
) );
|
||||
|
||||
if ( empty( $result ) ) {
|
||||
$wpdb->insert(
|
||||
@@ -68,8 +159,7 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
|
||||
'um_value' => $_meta_value,
|
||||
),
|
||||
array(
|
||||
'umeta_id' => $result,
|
||||
'um_key' => $meta_key,
|
||||
'umeta_id' => $result,
|
||||
),
|
||||
array(
|
||||
'%s',
|
||||
@@ -79,22 +169,6 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// $wpdb->update(
|
||||
// "{$wpdb->prefix}um_metadata",
|
||||
// array(
|
||||
// $meta_key => $_meta_value,
|
||||
// ),
|
||||
// array(
|
||||
// 'user_id' => $object_id,
|
||||
// ),
|
||||
// array(
|
||||
// '%s'
|
||||
// ),
|
||||
// array(
|
||||
// '%d'
|
||||
// )
|
||||
// );
|
||||
}
|
||||
|
||||
|
||||
@@ -140,11 +214,6 @@ if ( ! class_exists( 'um\core\Member_Directory_Meta' ) ) {
|
||||
|
||||
$profile_photo_where = '';
|
||||
if ( $directory_data['has_profile_photo'] == 1 ) {
|
||||
// $gravatars_query = '';
|
||||
// if ( UM()->options()->get( 'use_gravatars' ) ) {
|
||||
// $gravatars_query = " OR ( umm_general.synced_gravatar_hashed_id != '' AND umm_general.synced_gravatar_hashed_id IS NOT NULL )";
|
||||
// }
|
||||
|
||||
$profile_photo_where = " AND umm_general.um_value LIKE '%s:13:\"profile_photo\";b:1;%'";
|
||||
}
|
||||
|
||||
|
||||
@@ -95,40 +95,9 @@ if ( ! class_exists( 'um\core\Member_Directory' ) ) {
|
||||
add_filter( 'init', array( &$this, 'init_filter_types' ), 2 );
|
||||
|
||||
add_action( 'template_redirect', array( &$this, 'access_members' ), 555 );
|
||||
|
||||
|
||||
//add_action( 'updated_user_meta', array( &$this, 'on_update_usermeta' ), 10, 4 );
|
||||
}
|
||||
|
||||
|
||||
function on_update_usermeta( $meta_id, $object_id, $meta_key, $_meta_value ) {
|
||||
|
||||
//$object_id //userID
|
||||
//$meta_key // meta_key
|
||||
//$_meta_value // value
|
||||
|
||||
$metakeys = get_option( 'um_usermeta_fields', array() );
|
||||
|
||||
|
||||
|
||||
|
||||
global $wpdb;
|
||||
|
||||
$charset_collate = $wpdb->get_charset_collate();
|
||||
|
||||
$sql = "CREATE TABLE {$wpdb->prefix}um_followers (
|
||||
user_id int(11) unsigned NOT NULL auto_increment,
|
||||
time datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
user_id1 int(11) unsigned NOT NULL,
|
||||
user_id2 int(11) unsigned NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
) $charset_collate;";
|
||||
|
||||
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
|
||||
dbDelta( $sql );
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Getting member directory post ID via hash
|
||||
* Hash is unique attr, which we use visible at frontend
|
||||
@@ -948,9 +917,9 @@ PRIMARY KEY (id)
|
||||
}
|
||||
|
||||
$this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( array(
|
||||
'key' => 'account_status',
|
||||
'value' => 'approved',
|
||||
'compare' => '='
|
||||
'key' => 'um_member_directory_data',
|
||||
'value' => 's:14:"account_status";s:8:"approved";',
|
||||
'compare' => 'LIKE'
|
||||
) ) );
|
||||
}
|
||||
|
||||
@@ -987,38 +956,11 @@ PRIMARY KEY (id)
|
||||
return;
|
||||
}
|
||||
|
||||
$meta_query = array(
|
||||
'relation' => 'OR',
|
||||
array(
|
||||
'key' => 'hide_in_members',
|
||||
'compare' => 'NOT EXISTS'
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
if ( __( 'Yes', 'ultimate-member' ) == 'Yes' ) {
|
||||
$meta_query[] = array(
|
||||
'key' => 'hide_in_members',
|
||||
'value' => 'Yes',
|
||||
'compare' => 'NOT LIKE',
|
||||
);
|
||||
} else {
|
||||
$meta_query[] = array(
|
||||
'relation' => 'AND',
|
||||
array(
|
||||
'key' => 'hide_in_members',
|
||||
'value' => __( 'Yes', 'ultimate-member' ),
|
||||
'compare' => 'NOT LIKE'
|
||||
),
|
||||
array(
|
||||
'key' => 'hide_in_members',
|
||||
'value' => 'Yes',
|
||||
'compare' => 'NOT LIKE'
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
$this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $meta_query ) );
|
||||
$this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( array(
|
||||
'key' => 'um_member_directory_data',
|
||||
'value' => 's:15:"hide_in_members";b:0;',
|
||||
'compare' => 'LIKE'
|
||||
) ) );
|
||||
}
|
||||
|
||||
|
||||
@@ -1063,29 +1005,11 @@ PRIMARY KEY (id)
|
||||
*/
|
||||
function show_only_with_avatar( $directory_data ) {
|
||||
if ( $directory_data['has_profile_photo'] == 1 ) {
|
||||
$meta_query = array(
|
||||
'relation' => 'OR',
|
||||
array(
|
||||
'key' => 'synced_profile_photo', // addons
|
||||
'value' => '',
|
||||
'compare' => '!='
|
||||
),
|
||||
array(
|
||||
'key' => 'profile_photo', // from upload form
|
||||
'value' => '',
|
||||
'compare' => '!='
|
||||
)
|
||||
);
|
||||
|
||||
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
||||
$meta_query[] = array(
|
||||
'key' => 'synced_gravatar_hashed_id', // gravatar
|
||||
'value' => '',
|
||||
'compare' => '!='
|
||||
);
|
||||
}
|
||||
|
||||
$this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( $meta_query ) );
|
||||
$this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( array(
|
||||
'key' => 'um_member_directory_data',
|
||||
'value' => 's:13:"profile_photo";b:1;',
|
||||
'compare' => 'LIKE'
|
||||
) ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1098,9 +1022,9 @@ PRIMARY KEY (id)
|
||||
function show_only_with_cover( $directory_data ) {
|
||||
if ( $directory_data['has_cover_photo'] == 1 ) {
|
||||
$this->query_args['meta_query'] = array_merge( $this->query_args['meta_query'], array( array(
|
||||
'key' => 'cover_photo',
|
||||
'value' => '',
|
||||
'compare' => '!='
|
||||
'key' => 'um_member_directory_data',
|
||||
'value' => 's:11:"cover_photo";b:1;',
|
||||
'compare' => 'LIKE'
|
||||
) ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,6 +93,154 @@ if ( ! class_exists( 'um\core\User' ) ) {
|
||||
} else {
|
||||
add_action( 'delete_user', array( &$this, 'delete_user_handler' ), 10, 1 );
|
||||
}
|
||||
|
||||
|
||||
add_action( 'updated_user_meta', array( &$this, 'on_update_usermeta' ), 10, 4 );
|
||||
add_action( 'added_user_meta', array( &$this, 'on_update_usermeta' ), 10, 4 );
|
||||
|
||||
add_action( 'deleted_user_meta', array( &$this, 'on_delete_usermeta' ), 10, 4 );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* When you delete usermeta connected with member directory - reset it to default value
|
||||
*
|
||||
* @param int|array $meta_ids
|
||||
* @param int $object_id
|
||||
* @param string $meta_key
|
||||
* @param mixed $_meta_value
|
||||
*/
|
||||
function on_delete_usermeta( $meta_ids, $object_id, $meta_key, $_meta_value ) {
|
||||
$metakeys = array( 'account_status', 'hide_in_members', 'synced_gravatar_hashed_id', 'synced_profile_photo', 'profile_photo', 'cover_photo', '_um_verified' );
|
||||
if ( ! in_array( $meta_key, $metakeys ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$md_data = get_user_meta( $object_id, 'um_member_directory_data', true );
|
||||
if ( empty( $md_data ) ) {
|
||||
$md_data = array(
|
||||
'account_status' => 'approved',
|
||||
'hide_in_members' => false,
|
||||
'profile_photo' => false,
|
||||
'cover_photo' => false,
|
||||
'verified' => false,
|
||||
);
|
||||
}
|
||||
|
||||
switch ( $meta_key ) {
|
||||
case 'account_status':
|
||||
$md_data['account_status'] = 'approved';
|
||||
break;
|
||||
case 'hide_in_members':
|
||||
$md_data['hide_in_members'] = false;
|
||||
break;
|
||||
case 'synced_gravatar_hashed_id':
|
||||
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
||||
$profile_photo = get_user_meta( $object_id, 'profile_photo', true );
|
||||
$synced_profile_photo = get_user_meta( $object_id, 'synced_profile_photo', true );
|
||||
|
||||
$md_data['profile_photo'] = ! empty( $profile_photo ) || ! empty( $synced_profile_photo );
|
||||
}
|
||||
|
||||
break;
|
||||
case 'synced_profile_photo':
|
||||
$profile_photo = get_user_meta( $object_id, 'profile_photo', true );
|
||||
|
||||
$synced_gravatar_hashed_id = false;
|
||||
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
||||
$synced_gravatar_hashed_id = get_user_meta( $object_id, 'synced_gravatar_hashed_id', true );
|
||||
}
|
||||
|
||||
$md_data['profile_photo'] = ! empty( $profile_photo ) || ! empty( $synced_gravatar_hashed_id );
|
||||
break;
|
||||
case 'profile_photo':
|
||||
$synced_profile_photo = get_user_meta( $object_id, 'synced_profile_photo', true );
|
||||
|
||||
$synced_gravatar_hashed_id = false;
|
||||
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
||||
$synced_gravatar_hashed_id = get_user_meta( $object_id, 'synced_gravatar_hashed_id', true );
|
||||
}
|
||||
|
||||
$md_data['profile_photo'] = ! empty( $synced_profile_photo ) || ! empty( $synced_gravatar_hashed_id );
|
||||
break;
|
||||
case 'cover_photo':
|
||||
$md_data['cover_photo'] = false;
|
||||
break;
|
||||
case '_um_verified':
|
||||
$md_data['verified'] = false;
|
||||
break;
|
||||
}
|
||||
|
||||
update_user_meta( $object_id, 'um_member_directory_data', $md_data );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* When you add/update usermeta connected with member directories - set this data to member directory metakey
|
||||
*
|
||||
* @param int $meta_id
|
||||
* @param int $object_id
|
||||
* @param string $meta_key
|
||||
* @param mixed $_meta_value
|
||||
*/
|
||||
function on_update_usermeta( $meta_id, $object_id, $meta_key, $_meta_value ) {
|
||||
|
||||
$metakeys = array( 'account_status', 'hide_in_members', 'synced_gravatar_hashed_id', 'synced_profile_photo', 'profile_photo', 'cover_photo', '_um_verified' );
|
||||
if ( ! in_array( $meta_key, $metakeys ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$md_data = get_user_meta( $object_id, 'um_member_directory_data', true );
|
||||
if ( empty( $md_data ) ) {
|
||||
$md_data = array(
|
||||
'account_status' => 'approved',
|
||||
'hide_in_members' => false,
|
||||
'profile_photo' => false,
|
||||
'cover_photo' => false,
|
||||
'verified' => false,
|
||||
);
|
||||
}
|
||||
|
||||
switch ( $meta_key ) {
|
||||
case 'account_status':
|
||||
$md_data['account_status'] = $_meta_value;
|
||||
break;
|
||||
case 'hide_in_members':
|
||||
|
||||
$hide_in_members = false;
|
||||
if ( ! empty( $_meta_value ) ) {
|
||||
if ( $_meta_value == 'Yes' || $_meta_value == __( 'Yes', 'ultimate-member' ) ||
|
||||
$_meta_value == serialize( array( 'Yes' ) ) || $_meta_value == serialize( array( __( 'Yes', 'ultimate-member' ) ) ) ) {
|
||||
$hide_in_members = true;
|
||||
}
|
||||
}
|
||||
|
||||
$md_data['hide_in_members'] = $hide_in_members;
|
||||
|
||||
break;
|
||||
case 'synced_gravatar_hashed_id':
|
||||
if ( UM()->options()->get( 'use_gravatars' ) ) {
|
||||
if ( empty( $md_data['profile_photo'] ) ) {
|
||||
$md_data['profile_photo'] = ! empty( $_meta_value );
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 'synced_profile_photo':
|
||||
case 'profile_photo':
|
||||
if ( empty( $md_data['profile_photo'] ) ) {
|
||||
$md_data['profile_photo'] = ! empty( $_meta_value );
|
||||
}
|
||||
break;
|
||||
case 'cover_photo':
|
||||
$md_data['cover_photo'] = ! empty( $_meta_value );
|
||||
break;
|
||||
case '_um_verified':
|
||||
$md_data['verified'] = $_meta_value == 'verified' ? true : false;
|
||||
break;
|
||||
}
|
||||
|
||||
update_user_meta( $object_id, 'um_member_directory_data', $md_data );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user