diff --git a/includes/admin/core/packages/2.8.0/functions.php b/includes/admin/core/packages/2.8.0/functions.php new file mode 100644 index 00000000..57019b14 --- /dev/null +++ b/includes/admin/core/packages/2.8.0/functions.php @@ -0,0 +1,132 @@ +admin()->check_ajax_nonce(); + + um_maybe_unset_time_limit(); + + global $wpdb; + + $count = $wpdb->get_var( + "SELECT COUNT(*) + FROM {$wpdb->usermeta} + WHERE meta_key = 'use_gdpr_agreement' OR + meta_key = 'um_user_blocked__timestamp' OR + meta_key = '_um_last_login' OR + meta_key = 'submitted'" + ); + + wp_send_json_success( array( 'count' => $count ) ); +} + + +function um_upgrade_metadata_per_user280() { + UM()->admin()->check_ajax_nonce(); + + um_maybe_unset_time_limit(); + + if ( empty( $_POST['page'] ) ) { + wp_send_json_error( __( 'Wrong data', 'ultimate-member' ) ); + } + + global $wpdb; + + $per_page = 100; + $usermeta = $wpdb->get_results( + $wpdb->prepare( + "SELECT * + FROM {$wpdb->usermeta} + WHERE meta_key = 'use_gdpr_agreement' OR + meta_key = 'um_user_blocked__timestamp' OR + meta_key = '_um_last_login' OR + meta_key = 'submitted' + LIMIT %d, %d", + ( absint( $_POST['page'] ) - 1 ) * $per_page, + $per_page + ), + ARRAY_A + ); + + // Make non-GMT timestamp as GMT base on current wp_timezone(). + $offset = (int) ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ); + foreach ( $usermeta as $usermeta_row ) { + $updated_meta = null; + + if ( empty( $usermeta_row['meta_key'] ) ) { + continue; + } + + $user_id = $usermeta_row['user_id']; + if ( 'use_gdpr_agreement' === $usermeta_row['meta_key'] ) { + if ( is_numeric( $usermeta_row['meta_value'] ) ) { + update_user_meta( $user_id, 'um_use_gdpr_agreement_backup', $usermeta_row['meta_value'] ); + $updated_meta = gmdate( 'Y-m-d H:i:s', $usermeta_row['meta_value'] ); + } + } elseif ( '_um_last_login' === $usermeta_row['meta_key'] ) { + if ( is_numeric( $usermeta_row['meta_value'] ) ) { + update_user_meta( $user_id, '_um_last_login_backup', $usermeta_row['meta_value'] ); + if ( ! empty( $offset ) ) { + $updated_meta = (int) $usermeta_row['meta_value'] - $offset; + } else { + $updated_meta = (int) $usermeta_row['meta_value']; + } + + $updated_meta = gmdate( 'Y-m-d H:i:s', $updated_meta ); + } + } elseif ( 'submitted' === $usermeta_row['meta_key'] ) { + $unserialized_meta = maybe_unserialize( $usermeta_row['meta_value'] ); + if ( isset( $unserialized_meta['use_gdpr_agreement'] ) && is_numeric( $unserialized_meta['use_gdpr_agreement'] ) ) { + update_user_meta( $user_id, 'submitted_backup', $unserialized_meta ); + $unserialized_meta['use_gdpr_agreement'] = gmdate( 'Y-m-d H:i:s', $unserialized_meta['use_gdpr_agreement'] ); + + $updated_meta = maybe_serialize( $unserialized_meta ); + } + } elseif ( 'um_user_blocked__timestamp' === $usermeta_row['meta_key'] ) { + if ( ! empty( $offset ) ) { + $last_scanned_time = $usermeta_row['meta_value']; + if ( ! empty( $last_scanned_time ) ) { + update_user_meta( $user_id, 'um_user_blocked__timestamp_backup', $last_scanned_time ); + $last_scanned_time = strtotime( $last_scanned_time ) - $offset; + $updated_meta = gmdate( 'Y-m-d H:i:s', $last_scanned_time ); + } + } + } + + if ( isset( $updated_meta ) ) { + update_user_meta( $user_id, $usermeta_row['meta_key'], $updated_meta ); + } + } + + $from = ( absint( $_POST['page'] ) * $per_page ) - $per_page + 1; + $to = absint( $_POST['page'] ) * $per_page; + + // translators: %1$s is a from; %2$s is a to. + wp_send_json_success( array( 'message' => sprintf( __( 'Metadata from %1$s to %2$s were upgraded successfully...', 'ultimate-member' ), $from, $to ) ) ); +} + +function um_upgrade_update_options280() { + UM()->admin()->check_ajax_nonce(); + + um_maybe_unset_time_limit(); + + $offset = (int) ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ); + + if ( ! empty( $offset ) ) { + $last_scanned_time = get_option( 'um_secure_last_time_scanned' ); + if ( ! empty( $last_scanned_time ) ) { + update_option( 'um_secure_last_time_scanned_backup', $last_scanned_time ); + $last_scanned_time = strtotime( $last_scanned_time ) - $offset; + $last_scanned_time = gmdate( 'Y-m-d H:i:s', $last_scanned_time ); + + update_option( 'um_secure_last_time_scanned', $last_scanned_time ); + } + } + + // delete temporarily option for fields upgrade + update_option( 'um_last_version_upgrade', '2.8.0' ); + + wp_send_json_success( array( 'message' => __( 'Database has been updated successfully', 'ultimate-member' ) ) ); +} diff --git a/includes/admin/core/packages/2.8.0/hooks.php b/includes/admin/core/packages/2.8.0/hooks.php new file mode 100644 index 00000000..1057063d --- /dev/null +++ b/includes/admin/core/packages/2.8.0/hooks.php @@ -0,0 +1,10 @@ + 'usermeta_count280', + 'metadata_per_user280' => 'metadata_per_user280', + 'update_options280' => 'update_options280', +); diff --git a/includes/admin/core/packages/2.8.0/init.php b/includes/admin/core/packages/2.8.0/init.php new file mode 100644 index 00000000..5ea91b42 --- /dev/null +++ b/includes/admin/core/packages/2.8.0/init.php @@ -0,0 +1,102 @@ + + +