<?php if (!defined('ABSPATH')) { exit; } class WC_Helper_Compat { public static function load() { add_action('woocommerce_helper_loaded', array(__CLASS__, 'helper_loaded')); } public static function helper_loaded() { remove_action('admin_notices', 'woothemes_updater_notice'); add_action('admin_menu', array(__CLASS__, 'admin_menu')); if (empty($GLOBALS['woothemes_updater'])) { return; } self::remove_actions(); self::migrate_connection(); self::deactivate_plugin(); } public static function remove_actions() { remove_action('network_admin_notices', array($GLOBALS['woothemes_updater']->admin, 'maybe_display_activation_notice')); remove_action('admin_notices', array($GLOBALS['woothemes_updater']->admin, 'maybe_display_activation_notice')); remove_action('network_admin_menu', array($GLOBALS['woothemes_updater']->admin, 'register_settings_screen')); remove_action('admin_menu', array($GLOBALS['woothemes_updater']->admin, 'register_settings_screen')); } public static function migrate_connection() { if (WC_Helper_Options::get('did-migrate')) { return; } $auth = WC_Helper_Options::get('auth'); if (!empty($auth)) { return; } WC_Helper::log('Attempting oauth/migrate'); WC_Helper_Options::update('did-migrate', true); $master_key = get_option('woothemes_helper_master_key'); if (empty($master_key)) { WC_Helper::log('Master key not found, aborting'); return; } $request = WC_Helper_API::post('oauth/migrate', array('body' => array('home_url' => home_url(), 'master_key' => $master_key))); if (is_wp_error($request) || wp_remote_retrieve_response_code($request) !== 200) { WC_Helper::log('Call to oauth/migrate returned a non-200 response code'); return; } $request_token = json_decode(wp_remote_retrieve_body($request)); if (empty($request_token)) { WC_Helper::log('Call to oauth/migrate returned an empty token'); return; } $request = WC_Helper_API::post('oauth/access_token', array('body' => array('request_token' => $request_token, 'home_url' => home_url(), 'migrate' => true))); if (is_wp_error($request) || wp_remote_retrieve_response_code($request) !== 200) { WC_Helper::log('Call to oauth/access_token returned a non-200 response code'); return; } $access_token = json_decode(wp_remote_retrieve_body($request), true); if (empty($access_token)) { WC_Helper::log('Call to oauth/access_token returned an invalid token'); return; } WC_Helper_Options::update('auth', array('access_token' => $access_token['access_token'], 'access_token_secret' => $access_token['access_token_secret'], 'site_id' => $access_token['site_id'], 'user_id' => null, 'updated' => time())); if (!WC_Helper::_flush_authentication_cache()) { WC_Helper::log('Could not obtain connected user info in migrate_connection'); WC_Helper_Options::update('auth', array()); return; } } public static function deactivate_plugin() { include_once ABSPATH . 'wp-admin/includes/plugin.php'; if (!function_exists('deactivate_plugins')) { return; } if (is_plugin_active('woothemes-updater/woothemes-updater.php')) { deactivate_plugins('woothemes-updater/woothemes-updater.php'); add_action('pre_current_active_plugins', array(__CLASS__, 'plugin_deactivation_notice')); } } public static function plugin_deactivation_notice() { ?> <div id="message" class="error is-dismissible"> <p><?php printf(__('The WooCommerce Helper plugin is no longer needed. <a href="%s">Manage subscriptions</a> from the extensions tab instead.', 'woocommerce'), esc_url(admin_url('admin.php?page=wc-addons&section=helper'))); ?></p> </div> <?php } public static function admin_menu() { $master_key = get_option('woothemes_helper_master_key'); if (empty($master_key)) { return; } $auth = WC_Helper_Options::get('auth'); if (!empty($auth['user_id'])) { return; } add_dashboard_page(__('WooCommerce Helper', 'woocommerce'), __('WooCommerce Helper', 'woocommerce'), 'manage_options', 'woothemes-helper', array(__CLASS__, 'render_compat_menu')); } public static function render_compat_menu() { $helper_url = add_query_arg(array('page' => 'wc-addons', 'section' => 'helper'), admin_url('admin.php')); include WC_Helper::get_view_filename('html-helper-compat.php'); } } WC_Helper_Compat::load();