| @@ -28,11 +28,52 @@ | ||
| 28 | 28 | return __( 'Migrate user meta', 'content-control' ); |
| 29 | 29 | } |
| 30 | 30 | |
| 31 | 31 | /** |
| 32 | + * Get the dependencies for this upgrade. | |
| 33 | + * | |
| 34 | + * @return string[] | |
| 35 | + */ | |
| 36 | + public function get_dependencies() { | |
| 37 | + return [ | |
| 38 | + 'backup-2', | |
| 39 | + ]; | |
| 40 | + } | |
| 41 | + | |
| 42 | + /** | |
| 43 | + * Get the remaps for this upgrade. | |
| 44 | + * | |
| 45 | + * @var array<string,string> | |
| 46 | + */ | |
| 47 | + private $remaps = [ | |
| 48 | + '_jp_cc_reviews_already_did' => 'content_control_reviews_already_did', | |
| 49 | + '_jp_cc_reviews_dismissed_triggers' => 'content_control_reviews_dismissed_triggers', | |
| 50 | + '_jp_cc_reviews_last_dismissed' => 'content_control_reviews_last_dismissed', | |
| 51 | + ]; | |
| 52 | + | |
| 53 | + /** | |
| 54 | + * Check if the upgrade is required. | |
| 55 | + * | |
| 56 | + * @return bool | |
| 57 | + */ | |
| 58 | + public function is_required() { | |
| 59 | + $remaps = $this->remaps; | |
| 60 | + | |
| 61 | + foreach ( $remaps as $key => $new_key ) { | |
| 62 | + $value = \get_user_meta( get_current_user_id(), $key, true ); | |
| 63 | + | |
| 64 | + if ( [] !== $value && '' !== $value && ! is_null( $value ) ) { | |
| 65 | + return true; | |
| 66 | + } | |
| 67 | + } | |
| 68 | + | |
| 69 | + return false; | |
| 70 | + } | |
| 71 | + | |
| 72 | + /** | |
| 32 | 73 | * Run the migration. |
| 33 | 74 | * |
| 34 | - * @return void|WP_Error|false | |
| 75 | + * @return void | |
| 35 | 76 | */ |
| 36 | 77 | public function run() { |
| 37 | 78 | global $wpdb; |
| 38 | 79 | |
| @@ -40,13 +81,9 @@ | ||
| 40 | 81 | $stream = $this->stream(); |
| 41 | 82 | |
| 42 | 83 | $stream->start_task( __( 'Migrating user meta', 'content-control' ) ); |
| 43 | 84 | |
| 44 | - $remapped_keys = [ | |
| 45 | - '_jp_cc_reviews_already_did' => 'content_control_reviews_already_did', | |
| 46 | - '_jp_cc_reviews_dismissed_triggers' => 'content_control_reviews_dismissed_triggers', | |
| 47 | - '_jp_cc_reviews_last_dismissed' => 'content_control_reviews_last_dismissed', | |
| 48 | - ]; | |
| 85 | + $remapped_keys = $this->remaps; | |
| 49 | 86 | |
| 50 | 87 | // Update all keys via $wpdb. |
| 51 | 88 | foreach ( $remapped_keys as $old_key => $new_key ) { |
| 52 | 89 | // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.DirectQuery |