| @@ -25,22 +25,22 @@ | ||
| 25 | 25 | |
| 26 | 26 | if ( self::$first_instilled && version_compare( self::$first_instilled, RTSB_VERSION, '==' ) ) { |
| 27 | 27 | return; |
| 28 | 28 | } |
| 29 | - $v_2_0_4 = ExtraSettings::instance()->get_option( 'settings_migration_v_2_0_4', false ); | |
| 29 | + $v_2_0_4 = ExtraSettings::instance()->get_option( 'settings_migration_v_2_0_4', false ); | |
| 30 | 30 | if ( ! $v_2_0_4 ) { |
| 31 | 31 | self::settings_migration_plugin_v_2_0_4(); |
| 32 | - ExtraSettings::instance()->set_option( 'settings_migration_v_2_0_4' , RTSB_VERSION ); | |
| 32 | + ExtraSettings::instance()->set_option( 'settings_migration_v_2_0_4', RTSB_VERSION ); | |
| 33 | 33 | return; |
| 34 | 34 | } |
| 35 | 35 | |
| 36 | - /* | |
| 37 | - * Example Migration | |
| 38 | - else if ( ! AdditionalSettings::instance()->get_option( 'template_settings_migration_v_2_0_4' ) ) { | |
| 39 | - } else if ( ! AdditionalSettings::instance()->get_option( 'template_settings_migration_v_2_0_5' ) ) { | |
| 40 | - } | |
| 41 | - */ | |
| 42 | - return; | |
| 36 | + $v_2_1_16 = ExtraSettings::instance()->get_option( 'template_settings_migration_v_2_1_16', false ); | |
| 37 | + if ( ! $v_2_1_16 ) { | |
| 38 | + self::template_settings_migration_plugin_v_2_1_16(); | |
| 39 | + ExtraSettings::instance()->set_option( 'template_settings_migration_v_2_1_16', RTSB_VERSION ); | |
| 40 | + return; | |
| 41 | + } | |
| 42 | + // return; | |
| 43 | 43 | } |
| 44 | 44 | /** |
| 45 | 45 | * @return void |
| 46 | 46 | */ |
| @@ -46,12 +46,12 @@ | ||
| 46 | 46 | */ |
| 47 | 47 | private static function remove_option_for_missing_builder_v_2_0_4( $name ) { |
| 48 | 48 | $array = explode( '_', $name ); |
| 49 | 49 | $post_id = end( $array ); |
| 50 | - if( ! is_numeric( $post_id ) ){ | |
| 50 | + if ( ! is_numeric( $post_id ) ) { | |
| 51 | 51 | return; |
| 52 | 52 | } |
| 53 | - if( get_post_status( $post_id ) ){ | |
| 53 | + if ( get_post_status( $post_id ) ) { | |
| 54 | 54 | return; |
| 55 | 55 | } |
| 56 | 56 | TemplateSettings::instance()->delete_option( $name ); |
| 57 | 57 | } |
| @@ -58,27 +58,26 @@ | ||
| 58 | 58 | /** |
| 59 | 59 | * @return void |
| 60 | 60 | */ |
| 61 | 61 | public static function settings_migration_plugin_v_2_0_4() { |
| 62 | - // Prefixes to search for | |
| 63 | 62 | global $wpdb; |
| 64 | - // Prefixes to search for | |
| 63 | + // Prefixes to search for. | |
| 65 | 64 | $prefixes = [ |
| 66 | 65 | 'rtsb_tb_template', |
| 67 | 66 | 'rtsb_template_specific', |
| 68 | - 'rtsb_template_for' | |
| 67 | + 'rtsb_template_for', | |
| 69 | 68 | ]; |
| 70 | 69 | |
| 71 | - // Array to store matching options | |
| 72 | - // Loop through each prefix | |
| 73 | - foreach ($prefixes as $prefix) { | |
| 74 | - // Run a direct database query to fetch option names and values | |
| 75 | - $query = $wpdb->prepare("SELECT option_name, option_value FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like($prefix) . '%'); | |
| 76 | - $options_with_prefix = $wpdb->get_results($query, OBJECT); | |
| 77 | - if ($options_with_prefix) { | |
| 78 | - foreach ($options_with_prefix as $option) { | |
| 79 | - $value = maybe_unserialize($option->option_value); | |
| 80 | - if( ! empty( $value ) ){ | |
| 70 | + // Array to store matching options. | |
| 71 | + // Loop through each prefix. | |
| 72 | + foreach ( $prefixes as $prefix ) { | |
| 73 | + // Run a direct database query to fetch option names and values. | |
| 74 | + $query = $wpdb->prepare( "SELECT option_name, option_value FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like( $prefix ) . '%' ); | |
| 75 | + $options_with_prefix = $wpdb->get_results( $query, OBJECT ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching | |
| 76 | + if ( $options_with_prefix ) { | |
| 77 | + foreach ( $options_with_prefix as $option ) { | |
| 78 | + $value = maybe_unserialize( $option->option_value ); | |
| 79 | + if ( ! empty( $value ) ) { | |
| 81 | 80 | TemplateSettings::instance()->set_option( $option->option_name, $value ); |
| 82 | 81 | } |
| 83 | 82 | delete_option( $option->option_name ); |
| 84 | 83 | self::remove_option_for_missing_builder_v_2_0_4( $option->option_name ); |
| @@ -90,27 +89,46 @@ | ||
| 90 | 89 | $extra_prefixes = [ |
| 91 | 90 | 'rtsb_version', |
| 92 | 91 | 'rtsb_wishlist_db_version', |
| 93 | 92 | 'rtsb_compare_db_version', |
| 94 | - 'rtsbpro_version' | |
| 93 | + 'rtsbpro_version', | |
| 95 | 94 | ]; |
| 96 | - // Array to store matching options | |
| 97 | - // Loop through each prefix | |
| 98 | - foreach ($extra_prefixes as $prefix) { | |
| 99 | - // Run a direct database query to fetch option names and values | |
| 100 | - $query = $wpdb->prepare("SELECT option_name, option_value FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like($prefix) . '%'); | |
| 101 | - $options_with_prefix = $wpdb->get_results($query, OBJECT); | |
| 102 | - if ($options_with_prefix) { | |
| 103 | - foreach ($options_with_prefix as $option) { | |
| 104 | - $value = maybe_unserialize($option->option_value); | |
| 105 | - if( ! empty( $value ) ){ | |
| 106 | - ExtraSettings::instance()->set_option( $option->option_name , $value ); | |
| 95 | + // Array to store matching options. | |
| 96 | + // Loop through each prefix. | |
| 97 | + foreach ( $extra_prefixes as $prefix ) { | |
| 98 | + // Run a direct database query to fetch option names and values. | |
| 99 | + $query = $wpdb->prepare( "SELECT option_name, option_value FROM {$wpdb->options} WHERE option_name LIKE %s", $wpdb->esc_like( $prefix ) . '%' ); | |
| 100 | + $options_with_prefix = $wpdb->get_results( $query, OBJECT ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching | |
| 101 | + if ( $options_with_prefix ) { | |
| 102 | + foreach ( $options_with_prefix as $option ) { | |
| 103 | + $value = maybe_unserialize( $option->option_value ); | |
| 104 | + if ( ! empty( $value ) ) { | |
| 105 | + ExtraSettings::instance()->set_option( $option->option_name, $value ); | |
| 107 | 106 | } |
| 108 | 107 | delete_option( $option->option_name ); |
| 109 | 108 | } |
| 110 | 109 | } |
| 111 | 110 | } |
| 111 | + } | |
| 112 | 112 | |
| 113 | - | |
| 113 | + /** | |
| 114 | + * @return void | |
| 115 | + */ | |
| 116 | + private static function template_settings_migration_plugin_v_2_1_16() { | |
| 117 | + $args = [ | |
| 118 | + 'post_type' => BuilderFns::$post_type_tb, | |
| 119 | + 'numberposts' => -1, | |
| 120 | + 'fields' => 'ids', | |
| 121 | + ]; | |
| 122 | + $posts_id = get_posts( $args ); | |
| 123 | + if ( ! empty( $posts_id ) ) { | |
| 124 | + foreach ( $posts_id as $id ) { | |
| 125 | + $template_type = BuilderFns::builder_type( $id ); | |
| 126 | + $options_name = BuilderFns::option_name_by_template_id( $id ); | |
| 127 | + $product_ids = TemplateSettings::instance()->get_option( $options_name ); | |
| 128 | + if ( 'product' === $template_type && ! empty( $product_ids ) ) { | |
| 129 | + update_post_meta( $id, '_is_product_page_template_for', 'specific_products' ); | |
| 130 | + } | |
| 131 | + } | |
| 132 | + } | |
| 114 | 133 | } |
| 115 | - | |
| 116 | -} | |
| 134 | +} | |