| @@ -6,12 +6,17 @@ | ||
| 6 | 6 | */ |
| 7 | 7 | |
| 8 | 8 | namespace LassoLite\Classes; |
| 9 | 9 | |
| 10 | +use LassoLite\Classes\Helper; | |
| 11 | + | |
| 10 | 12 | use LassoLite\Models\Amazon_Products; |
| 13 | +use LassoLite\Models\Model; | |
| 11 | 14 | use LassoLite\Models\Url_Details; |
| 12 | 15 | use LassoLite\Models\Revert; |
| 13 | 16 | |
| 17 | +use LassoLite\Classes\Setting; | |
| 18 | + | |
| 14 | 19 | /** |
| 15 | 20 | * Update_DB |
| 16 | 21 | */ |
| 17 | 22 | class Update_DB { |
| @@ -19,16 +24,15 @@ | ||
| 19 | 24 | * Update_DB constructor. |
| 20 | 25 | */ |
| 21 | 26 | public function __construct() { |
| 22 | 27 | |
| 23 | - if ( ! get_option( Enum::SWITCH_TO_NEW_UI ) ) { | |
| 28 | + if ( ! Helper::is_lite_using_new_ui() ) { | |
| 24 | 29 | return; |
| 25 | 30 | } |
| 26 | - $version = $this->get_version(); | |
| 27 | - if ( $version < 108 ) { | |
| 28 | - $this->create_tables(); | |
| 29 | - } | |
| 30 | 31 | |
| 32 | + // ? Perform any additional schema changes and data updates/upgrades. | |
| 33 | + $this->update_lasso_database(); | |
| 34 | + | |
| 31 | 35 | $this->update_version(); |
| 32 | 36 | } |
| 33 | 37 | |
| 34 | 38 | /** |
| @@ -54,6 +58,55 @@ | ||
| 54 | 58 | public static function create_tables() { |
| 55 | 59 | ( new Amazon_Products() )->create_table(); |
| 56 | 60 | ( new Url_Details() )->create_table(); |
| 57 | 61 | ( new Revert() )->create_table(); |
| 62 | + } | |
| 63 | + | |
| 64 | + | |
| 65 | + /** | |
| 66 | + * Update database structure for new version | |
| 67 | + */ | |
| 68 | + public function update_lasso_database() { | |
| 69 | + $version = $this->get_version(); | |
| 70 | + | |
| 71 | + if ( $version < 108 ) { | |
| 72 | + $this->create_tables(); | |
| 73 | + } | |
| 74 | + | |
| 75 | + if ( $version < 113 ) { | |
| 76 | + ( new Amazon_Products() )->create_table(); | |
| 77 | + $this->update_rating_and_review_data_from_aawp(); | |
| 78 | + } | |
| 79 | + | |
| 80 | + if ( $version < 129 ) { | |
| 81 | + Setting::set_setting( 'auto_upgrade_eligible_links', true ); | |
| 82 | + } | |
| 83 | + | |
| 84 | + if ( $version < 152 && (int) LASSO_LITE_VERSION >= 152 ) { | |
| 85 | + ( new Url_Details() )->update_for_v152(); | |
| 86 | + ( new Revert() )->update_for_v152(); | |
| 87 | + } | |
| 88 | + | |
| 89 | + // Beacon /js/e rewrite is registered in new code; upgrader runs the old callback. | |
| 90 | + if ( $version < 154 && (int) LASSO_LITE_VERSION >= 154 ) { | |
| 91 | + Helper::update_option( 'pending_vanity_rewrite_flush', '1' ); | |
| 92 | + } | |
| 93 | + } | |
| 94 | + | |
| 95 | + /** | |
| 96 | + * Update rating and reviews data from AAWP product table to Lasso amazon table, so we can support aawp fields shortcode | |
| 97 | + */ | |
| 98 | + public function update_rating_and_review_data_from_aawp() { | |
| 99 | + $lite_amazon_product_table = ( new Amazon_Products() )->get_table_name(); | |
| 100 | + $aawp_product_table = Model::get_wp_table_name( 'aawp_products' ); | |
| 101 | + if ( Model::table_exists( $aawp_product_table ) ) { | |
| 102 | + $sql = ' | |
| 103 | + UPDATE ' . $lite_amazon_product_table . ' AS lap | |
| 104 | + INNER JOIN ' . $aawp_product_table . ' AS aawpp ON lap.amazon_id = aawpp.asin | |
| 105 | + SET lap.rating = IF(aawpp.rating IS NOT NULL, aawpp.rating, lap.rating), | |
| 106 | + lap.reviews = IF(aawpp.reviews IS NOT NULL, aawpp.reviews, lap.reviews) | |
| 107 | + '; | |
| 108 | + | |
| 109 | + Model::query( $sql ); | |
| 110 | + } | |
| 58 | 111 | } |
| 59 | 112 | } |