UserMeta_2.php
2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
/**
* Content Control Migrations
*
* @package ContentControl\Plugin
*/
namespace ContentControl\Upgrades;
defined( 'ABSPATH' ) || exit;
use function ContentControl\plugin;
/**
* User meta v2 migration.
*/
class UserMeta_2 extends \ContentControl\Base\Upgrade {
const TYPE = 'user_meta';
const VERSION = 2;
/**
* Get the label for the upgrade.
*
* @return string
*/
public function label() {
return __( 'Migrate user meta', 'content-control' );
}
/**
* Get the dependencies for this upgrade.
*
* @return string[]
*/
public function get_dependencies() {
return [
'backup-2',
];
}
/**
* Get the remaps for this upgrade.
*
* @var array<string,string>
*/
private $remaps = [
'_jp_cc_reviews_already_did' => 'content_control_reviews_already_did',
'_jp_cc_reviews_dismissed_triggers' => 'content_control_reviews_dismissed_triggers',
'_jp_cc_reviews_last_dismissed' => 'content_control_reviews_last_dismissed',
];
/**
* Check if the upgrade is required.
*
* @return bool
*/
public function is_required() {
$remaps = $this->remaps;
foreach ( $remaps as $key => $new_key ) {
$value = \get_user_meta( get_current_user_id(), $key, true );
if ( [] !== $value && '' !== $value && ! is_null( $value ) ) {
return true;
}
}
return false;
}
/**
* Run the migration.
*
* @return void
*/
public function run() {
global $wpdb;
// Gets a stream or mock stream for sending events.
$stream = $this->stream();
$stream->start_task( __( 'Migrating user meta', 'content-control' ) );
$remapped_keys = $this->remaps;
// Update all keys via $wpdb.
foreach ( $remapped_keys as $old_key => $new_key ) {
// phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.DirectQuery
$wpdb->query(
$wpdb->prepare(
"UPDATE {$wpdb->usermeta} SET meta_key = %s WHERE meta_key = %s",
$new_key,
$old_key
)
);
}
$stream->complete_task( __( 'User meta migrated', 'content-control' ) );
}
}