array( array( __CLASS__, 'migrate_woocommerce_v1' ), ), ); /** * Hook in tabs. */ public static function init() { add_action( 'init', array( __CLASS__, 'check_version' ), 5 ); if ( isset( $_GET['appmaker_wc_force_migrate'] ) && $_GET['appmaker_wc_force_migrate'] ) { add_action( 'init', array( __CLASS__, 'migrate_woocommerce_v1_force' ) ); } } /** * Check WooCommerce version and run the updater is required. * * This check is done on all requests and runs if he versions do not match. */ public static function check_version() { if ( get_option( 'appmaker_wc_version' ) !== WC()->version ) { self::install(); do_action( 'appmaker_wc_updated' ); } } /** * Install WC. */ public static function install() { if ( ! defined( 'APPMAKER_WC_INSTALLING' ) ) { define( 'APPMAKER_WC_INSTALLING', true ); } self::update(); self::update_version(); // Trigger action. do_action( 'appmaker_wc_installed' ); } /** * Execute all update functions */ private static function update() { $current_db_version = get_option( 'appmaker_wc_version' ); foreach ( self::$updates as $version => $update_callbacks ) { if ( version_compare( $current_db_version, $version, '<' ) ) { foreach ( $update_callbacks as $update_callback ) { call_user_func( $update_callback ); } } } } /** * Update WC version to current. */ private static function update_version() { delete_option( 'appmaker_wc_version' ); add_option( 'appmaker_wc_version', APPMAKER_WC::$version ); } public static function migrate_woocommerce_v1_force() { self::$force = true; self::migrate_woocommerce_v1_in_app_pages(); self::migrate_woocommerce_v1_nav_menu(); } public static function migrate_woocommerce_v1() { self::migrate_woocommerce_v1_in_app_pages(); self::migrate_woocommerce_v1_nav_menu(); } public static function migrate_woocommerce_v1_nav_menu() { $nav_backend_controller = new APPMAKER_WC_REST_BACKEND_NAV_Controller(); $new_nav_menu = get_option( $nav_backend_controller->getSafeKey( 'mainmenu' ) ); if ( empty( $new_nav_menu ) || self::$force ) { global $mobappNavigationSettings; $mobappNavigationSettings = get_option( 'mobappNavigationSettings' ); require_once( 'vendor/appmaker_woocommerce_v1/v1_nav_menu_convert.php' ); $v1_nav_menu_convert = new v1_nav_menu_convert(); $menu = $v1_nav_menu_convert->get_menu(); if ( ! empty( $menu ) ) { $menu = addslashes( json_encode( $menu ) ); $request = new WP_REST_Request(); $request->set_param( 'data', $menu ); $res = $nav_backend_controller->create_item( $request ); } } } public static function migrate_woocommerce_v1_in_app_pages() { $in_app_page_backend_controller = new APPMAKER_WC_REST_BACKEND_INAPPPAGE_Controller(); require_once( 'vendor/appmaker_woocommerce_v1/class-wooapp-api-InAppPages.php' ); $in_app_pages_a = new WOOAPP_API_InAppPages(); $v2_n_app_pages_widgets = array(); foreach ( WOOAPP_API_InAppPages::get_pages() as $key => $in_app_pages ) { $new_in_app_page = get_option( $in_app_page_backend_controller->getSafeKey( $key ) ); if ( empty( $new_in_app_page ) || self::$force ) { $v2_n_app_pages_widgets[ $key ] = $in_app_pages_a->get_page_by_name( $key ); } } foreach ( $v2_n_app_pages_widgets as $key => $app_pages_widget ) { $app_pages_widget = addslashes( json_encode( $app_pages_widget['data'] ) ); // Convert array to object. $request = new WP_REST_Request(); $request->set_param( 'key', $key ); $request->set_param( 'data', $app_pages_widget ); if ( self::$force ) { $in_app_page_backend_controller->delete_item( $request ); } $res = $in_app_page_backend_controller->create_item( $request ); } } } APPMAKER_WC_Install::init();