diff --git a/includes/admin/core/class-admin-upgrade.php b/includes/admin/core/class-admin-upgrade.php index 53552ad9..2179daf4 100644 --- a/includes/admin/core/class-admin-upgrade.php +++ b/includes/admin/core/class-admin-upgrade.php @@ -150,7 +150,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Upgrade' ) ) { $all_packages = $this->get_packages(); foreach ( $all_packages as $package ) { - if ( version_compare( $um_last_version_upgrade, $package, '<' ) ) { + if ( version_compare( $um_last_version_upgrade, $package, '<' ) && version_compare( $package, ultimatemember_version, '<=' ) ) { $diff_packages[] = $package; } } @@ -402,28 +402,7 @@ if ( ! class_exists( 'um\admin\core\Admin_Upgrade' ) ) { - /** - * Parse packages dir for packages files - */ - /*function set_update_versions_() { - $update_versions = array(); - $handle = opendir( $this->packages_dir ); - if ( $handle ) { - while ( false !== ( $filename = readdir( $handle ) ) ) { - if ( $filename != '.' && $filename != '..' ) { - var_dump( $filename ); - if ( is_dir( $this->packages_dir . DIRECTORY_SEPARATOR . $filename ) ) { - $update_versions[] = $filename; - } - } - } - closedir( $handle ); - usort( $update_versions, array( &$this, 'version_compare_sort' ) ); - - $this->update_packages = $update_versions; - } - }*/ /** diff --git a/includes/admin/core/packages/2.0.22-alpha1/functions.php b/includes/admin/core/packages/2.0.22-alpha1/functions.php new file mode 100644 index 00000000..5d8830cd --- /dev/null +++ b/includes/admin/core/packages/2.0.22-alpha1/functions.php @@ -0,0 +1,101 @@ + $result['total_users'], 'message' => __( 'Users are ready for upgrade', 'ultimate-member' ) ) ); +} + + +function um_upgrade_usermeta2022() { + um_maybe_unset_time_limit(); + + if ( ! empty( $_POST['page'] ) ) { + $users_per_page = 50; + + $from = ( $_POST['page'] * $users_per_page ) - $users_per_page + 1; + $to = $_POST['page'] * $users_per_page; + + global $wpdb; + + $all_metafields = UM()->builtin()->all_user_fields; + + /** + * UM hook + * + * @type filter + * @title um_admin_custom_search_filters + * @description Custom Search Filters + * @input_vars + * [{"var":"$custom_search","type":"array","desc":"Filters"}] + * @change_log + * ["Since: 2.0"] + * @usage + * + * @example + * + */ + $custom_search = apply_filters( 'um_admin_custom_search_filters', array() ); + $searchable_fields = UM()->builtin()->all_user_fields( 'date,time,url' ); + $searchable_fields = $searchable_fields + $custom_search; + + unset( $searchable_fields['user_registered'] ); + unset( $searchable_fields['role_select'] ); + unset( $searchable_fields['role_radio'] ); + unset( $searchable_fields[0] ); + + $searchable_fields = array_keys( $searchable_fields ); + + foreach ( $all_metafields as $key => $field_data ) { + if ( ! in_array( $key, $searchable_fields ) ) { + continue; + } + + $users = get_users( array( + 'offset' => $from, + 'number' => $users_per_page, + 'fields' => 'ids', + ) ); + + $values = $wpdb->get_results( $wpdb->prepare( + "SELECT user_id, meta_value as val + FROM {$wpdb->usermeta} + WHERE meta_key = %s AND + meta_value IS NOT NULL AND + user_id IN('" . implode( "','", $users ) . "')", + $key + ), ARRAY_A ); + + if ( empty( $values ) ) { + continue; + } + + foreach ( $values as $meta ) { + if ( in_array( $field_data['type'], array( 'radio', 'multiselect', 'select', 'checkbox' ) ) ) { + if ( ! is_serialized( $meta['val'] ) ) { + $array = array( $meta['val'] ); + $metavalue = serialize( $array ); + update_user_meta( $meta['user_id'], $field_data['metakey'], $metavalue ); + } + } else { + if ( is_serialized( $meta['val'] ) ) { + $maybe_array = maybe_unserialize( $meta['val'] ); + $metavalue = $maybe_array[0]; + update_user_meta( $meta['user_id'], $field_data['metakey'], $metavalue ); + } + } + } + } + + wp_send_json_success( array( 'message' => sprintf( __( 'Users from %s to %s was upgraded successfully...', 'ultimate-member' ), $from, $to ) ) ); + } else { + wp_send_json_error(); + } +} \ No newline at end of file diff --git a/includes/admin/core/packages/2.0.22-alpha1/hooks.php b/includes/admin/core/packages/2.0.22-alpha1/hooks.php new file mode 100644 index 00000000..42c54d87 --- /dev/null +++ b/includes/admin/core/packages/2.0.22-alpha1/hooks.php @@ -0,0 +1,6 @@ + 'get_users2022', + 'usermeta2022' => 'usermeta2022', +); \ No newline at end of file diff --git a/includes/admin/core/packages/2.0.22-alpha1/init.php b/includes/admin/core/packages/2.0.22-alpha1/init.php new file mode 100644 index 00000000..edc8d69a --- /dev/null +++ b/includes/admin/core/packages/2.0.22-alpha1/init.php @@ -0,0 +1,67 @@ + + + \ No newline at end of file diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php index b52896eb..8833fa39 100644 --- a/includes/core/class-fields.php +++ b/includes/core/class-fields.php @@ -2582,7 +2582,8 @@ if ( ! class_exists( 'um\core\Fields' ) ) { $um_field_checkbox_item_title = $v; - if (!is_numeric( $k ) && in_array( $form_key, array( 'role' ) )) { + if ( ! is_numeric( $k ) && in_array( $form_key, array( 'role' ) ) || + ( $this->set_mode == 'account' || um_is_core_page( 'account' ) ) ) { $option_value = $k; $um_field_checkbox_item_title = $v; }