mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-18 06:03:38 +09:00
- added ability to use metatable;
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
|
||||
function um_upgrade_users_count213beta3() {
|
||||
UM()->admin()->check_ajax_nonce();
|
||||
|
||||
um_maybe_unset_time_limit();
|
||||
|
||||
$users = get_users( array(
|
||||
'number' => '',
|
||||
'fields' => 'ids'
|
||||
) );
|
||||
$count = count( $users );
|
||||
|
||||
wp_send_json_success( array( 'count' => $count ) );
|
||||
}
|
||||
|
||||
|
||||
function um_upgrade_metadata_per_user213beta3() {
|
||||
UM()->admin()->check_ajax_nonce();
|
||||
|
||||
um_maybe_unset_time_limit();
|
||||
|
||||
|
||||
if ( empty( $_POST['page'] ) ) {
|
||||
wp_send_json_error( __( 'Wrong data', 'ultimate-member' ) );
|
||||
}
|
||||
|
||||
$per_page = 50;
|
||||
|
||||
global $wpdb;
|
||||
|
||||
$min_max = $wpdb->get_row( $wpdb->prepare(
|
||||
"SELECT MIN(ID) AS MinID, MAX(ID) AS MaxID
|
||||
FROM (
|
||||
SELECT u.ID
|
||||
FROM wpbultimate_users as u
|
||||
ORDER BY u.ID
|
||||
LIMIT %d, %d
|
||||
) as dt",
|
||||
( $_POST['page'] - 1 ) * $per_page,
|
||||
$per_page
|
||||
), ARRAY_A );
|
||||
|
||||
$metadata = $wpdb->get_results( $wpdb->prepare(
|
||||
"SELECT u.ID as user_id,
|
||||
um.meta_key as meta_key,
|
||||
um.meta_value as meta_value
|
||||
FROM wpbultimate_users u
|
||||
LEFT JOIN wpbultimate_usermeta um ON ( um.user_id = u.ID AND um.meta_key IN( 'account_status','hide_in_members','synced_gravatar_hashed_id','synced_profile_photo','profile_photo','cover_photo','_um_verified' ) )
|
||||
WHERE u.ID >= %d AND
|
||||
u.ID <= %d",
|
||||
$min_max['MinID'],
|
||||
$min_max['MaxID']
|
||||
), ARRAY_A );
|
||||
|
||||
$users_map = array();
|
||||
foreach ( $metadata as $metadatarow ) {
|
||||
if ( ! isset( $users_map[ $metadatarow['user_id'] ] ) ) {
|
||||
$users_map[ $metadatarow['user_id'] ] = array(
|
||||
'account_status' => 'approved',
|
||||
'hide_in_members' => false,
|
||||
'profile_photo' => false,
|
||||
'cover_photo' => false,
|
||||
'verified' => false,
|
||||
);
|
||||
}
|
||||
|
||||
switch ( $metadatarow['meta_key'] ) {
|
||||
case 'account_status':
|
||||
$users_map[ $metadatarow['user_id'] ]['account_status'] = $metadatarow['meta_value'];
|
||||
break;
|
||||
case 'hide_in_members':
|
||||
|
||||
$hide_in_members = false;
|
||||
if ( ! empty( $metadatarow['meta_value'] ) ) {
|
||||
if ( $metadatarow['meta_value'] == 'Yes' || $metadatarow['meta_value'] == __( 'Yes', 'ultimate-member' ) ||
|
||||
$metadatarow['meta_value'] == serialize( array( 'Yes' ) ) || $metadatarow['meta_value'] == serialize( array( __( 'Yes', 'ultimate-member' ) ) ) ) {
|
||||
$hide_in_members = true;
|
||||
}
|
||||
}
|
||||
|
||||
$users_map[ $metadatarow['user_id'] ]['hide_in_members'] = $hide_in_members;
|
||||
|
||||
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'] );
|
||||
}
|
||||
|
||||
break;
|
||||
case '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'] );
|
||||
break;
|
||||
case '_um_verified':
|
||||
$users_map[ $metadatarow['user_id'] ]['verified'] = $metadatarow['meta_value'] == 'verified' ? true : false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! empty( $users_map ) ) {
|
||||
foreach ( $users_map as $user_id => $metavalue ) {
|
||||
update_user_meta( $user_id, 'um_member_directory_data', $metavalue );
|
||||
}
|
||||
}
|
||||
|
||||
$from = ( $_POST['page'] * $per_page ) - $per_page + 1;
|
||||
$to = $_POST['page'] * $per_page;
|
||||
|
||||
wp_send_json_success( array( 'message' => sprintf( __( 'Metadata from %s to %s users were upgraded successfully...', 'ultimate-member' ), $from, $to ) ) );
|
||||
}
|
||||
|
||||
|
||||
function um_upgrade_metatable213beta3() {
|
||||
UM()->admin()->check_ajax_nonce();
|
||||
|
||||
um_maybe_unset_time_limit();
|
||||
|
||||
global $wpdb;
|
||||
|
||||
$charset_collate = $wpdb->get_charset_collate();
|
||||
|
||||
$sql = "CREATE TABLE {$wpdb->prefix}um_metadata (
|
||||
umeta_id bigint(20) unsigned NOT NULL auto_increment,
|
||||
user_id bigint(20) unsigned NOT NULL default '0',
|
||||
um_key varchar(255) default NULL,
|
||||
um_value longtext default NULL,
|
||||
PRIMARY KEY (umeta_id),
|
||||
KEY user_id_indx (user_id),
|
||||
KEY meta_key_indx (um_key),
|
||||
KEY meta_value_indx (um_value(191))
|
||||
) $charset_collate;";
|
||||
|
||||
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
|
||||
dbDelta( $sql );
|
||||
|
||||
update_option( 'um_last_version_upgrade', '2.1.3-beta3' );
|
||||
wp_send_json_success( array( 'message' => __( 'Usermeta table was upgraded successfully', 'ultimate-member' ) ) );
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||||
|
||||
return array(
|
||||
'users_count213beta3' => 'users_count213beta3',
|
||||
'metadata_per_user213beta3' => 'metadata_per_user213beta3',
|
||||
'metatable213beta3' => 'metatable213beta3',
|
||||
);
|
||||
@@ -0,0 +1,93 @@
|
||||
<?php if ( ! defined( 'ABSPATH' ) ) exit; ?>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery( document ).ready( function() {
|
||||
var users_pages;
|
||||
var current_page = 1;
|
||||
var users_per_page = 50;
|
||||
|
||||
um_add_upgrade_log( '<?php echo esc_js( __( 'Upgrade user metadata...', 'ultimate-member' ) ) ?>' );
|
||||
|
||||
jQuery.ajax({
|
||||
url: wp.ajax.settings.url,
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
action: 'um_users_count213beta3',
|
||||
nonce: um_admin_scripts.nonce
|
||||
},
|
||||
success: function( response ) {
|
||||
if ( typeof response.data.count != 'undefined' ) {
|
||||
um_add_upgrade_log( '<?php echo esc_js( __( 'There are ', 'ultimate-member' ) ) ?>' + response.data.count + '<?php echo esc_js( __( ' users...', 'ultimate-member' ) ) ?>' );
|
||||
um_add_upgrade_log( '<?php echo esc_js( __( 'Start metadata upgrading...', 'ultimate-member' ) ) ?>' );
|
||||
|
||||
users_pages = Math.ceil( response.data.count / users_per_page );
|
||||
|
||||
um_update_metadata_per_user213beta3();
|
||||
} else {
|
||||
um_wrong_ajax();
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
um_something_wrong();
|
||||
}
|
||||
});
|
||||
|
||||
function um_update_metadata_per_user213beta3() {
|
||||
if ( current_page <= users_pages ) {
|
||||
jQuery.ajax({
|
||||
url: wp.ajax.settings.url,
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
action: 'um_metadata_per_user213beta3',
|
||||
page: current_page,
|
||||
nonce: um_admin_scripts.nonce
|
||||
},
|
||||
success: function( response ) {
|
||||
if ( typeof response.data != 'undefined' ) {
|
||||
um_add_upgrade_log( response.data.message );
|
||||
current_page++;
|
||||
um_update_metadata_per_user213beta3();
|
||||
} else {
|
||||
um_wrong_ajax();
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
um_something_wrong();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
um_metatable213beta3();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//clear users cache
|
||||
function um_metatable213beta3() {
|
||||
um_add_upgrade_log( '<?php echo esc_js( __( 'Create additional metadata table...', 'ultimate-member' ) ) ?>' );
|
||||
jQuery.ajax({
|
||||
url: wp.ajax.settings.url,
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
data: {
|
||||
action: 'um_metatable213beta3',
|
||||
nonce: um_admin_scripts.nonce
|
||||
},
|
||||
success: function( response ) {
|
||||
if ( typeof response.data != 'undefined' ) {
|
||||
um_add_upgrade_log( response.data.message );
|
||||
//switch to the next package
|
||||
um_run_upgrade();
|
||||
} else {
|
||||
um_wrong_ajax();
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
um_something_wrong();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user