PluginProbe
WP Approve User / 13
WP Approve User v13
13 12 trunk 1.0 1.1.0 1.1.1 10 11 2.0.0 2.1.0 2.1.1 2.2.0 2.2.1 2.2.2 2.2.3 2.4.0 3 4 5 6 7 8 9
wp-approve-user / upgrade.php

upgrade.php in WP Approve User 13, at upgrade.php

86 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Upgrade routines.
4 *
5 * @package WP Approve User
6 */
7
8 /**
9 * Upgrade routine.
10 */
11 function wpau_upgrade_all() {
12 global $wpau_db_version;
13
14 $wpau_current_db_version = get_site_option( 'wpau_db_version', 0 );
15
16 if ( (int) $wpau_current_db_version === $wpau_db_version ) {
17 return;
18 }
19
20 if ( $wpau_current_db_version < 12 ) {
21 wpau_upgrade_to_12();
22 }
23
24 if ( $wpau_current_db_version < 13 ) {
25 wpau_upgrade_to_13();
26 }
27
28 update_site_option( 'wpau_db_version', $wpau_db_version );
29 }
30 add_action( 'admin_init', 'wpau_upgrade_all' );
31
32 /**
33 * Updates all user meta values from true to 'approved'.
34 */
35 function wpau_upgrade_to_12() {
36 global $wpdb;
37
38 // phpcs:disable WordPress.DB
39 $wpdb->update(
40 $wpdb->usermeta,
41 array( 'meta_value' => 'approved' ),
42 array(
43 'meta_key' => 'wp-approve-user',
44 'meta_value' => true,
45 )
46 );
47
48 $wpdb->update(
49 $wpdb->usermeta,
50 array( 'meta_value' => 'pending' ),
51 array(
52 'meta_key' => 'wp-approve-user',
53 'meta_value' => false,
54 )
55 );
56 // phpcs:enable WordPress.DB
57 }
58
59 /**
60 * Stamps users with no wp-approve-user meta as 'approved'.
61 *
62 * Covers users who existed before the plugin was installed (or before
63 * the activation cron finished) — without this they're invisible to the
64 * pending/unapproved admin views and can no longer log in.
65 *
66 * Uses a single INSERT…SELECT so sites with 100k+ users don't block
67 * admin_init on an equivalent number of individual update_user_meta()
68 * calls. The cache is flushed afterwards because we bypassed the meta
69 * API and any already-populated 'user_meta' cache entries are now stale.
70 */
71 function wpau_upgrade_to_13() {
72 global $wpdb;
73
74 // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared
75 $wpdb->query(
76 "INSERT INTO {$wpdb->usermeta} (user_id, meta_key, meta_value)
77 SELECT u.ID, 'wp-approve-user', 'approved'
78 FROM {$wpdb->users} u
79 LEFT JOIN {$wpdb->usermeta} um
80 ON u.ID = um.user_id AND um.meta_key = 'wp-approve-user'
81 WHERE um.umeta_id IS NULL"
82 );
83
84 wp_cache_flush();
85 }
86