function nr_fo_upgrade()
{
    $flyout_settings = get_option('nrelate_flyout_options');
    $flyout_ad_settings = get_option('nrelate_flyout_options_ads');
    $flyout_layout_settings = get_option('nrelate_flyout_options_styles');
    $flyout_anim_settings = get_option('nrelate_flyout_anim_options_styles');
    $current_version = $flyout_settings['flyout_version'];
    // If settings exist and we're running on old version (or version doesn't exist), then this is an upgrade
    if (!empty($flyout_settings) && $current_version < NRELATE_FLYOUT_PLUGIN_VERSION) {
        nrelate_system_check();
        // run system check
        global $nr_fo_std_options, $nr_fo_ad_options, $nr_fo_layout_options, $nr_fo_anim_options, $nr_fo_old_checkbox_options;
        // move all ad settings code from flyout settings to advertising settings: v0.50.0
        nrelate_upgrade_option('nrelate_flyout_options', 'flyout_display_ad', 'nrelate_flyout_options_ads', 'flyout_display_ad');
        nrelate_upgrade_option('nrelate_flyout_options', 'flyout_number_of_ads', 'nrelate_flyout_options_ads', 'flyout_number_of_ads');
        nrelate_upgrade_option('nrelate_flyout_options', 'flyout_ad_placement', 'nrelate_flyout_options_ads', 'flyout_ad_placement');
        nrelate_upgrade_option('nrelate_flyout_options', 'flyout_ad_animation', 'nrelate_flyout_options_ads', 'flyout_ad_animation');
        // re-get the latest since we just made changes
        $flyout_settings = get_option('nrelate_flyout_options');
        $flyout_ad_settings = get_option('nrelate_flyout_options_ads');
        $flyout_layout_settings = get_option('nrelate_flyout_options_styles');
        $flyout_anim_settings = get_option('nrelate_flyout_anim_options_styles');
        // Update new options if they don't exist
        $flyout_settings = wp_parse_args($flyout_settings, $nr_fo_std_options);
        $flyout_ad_settings = wp_parse_args($flyout_ad_settings, $nr_fo_ad_options);
        $flyout_layout_settings = wp_parse_args($flyout_layout_settings, $nr_fo_layout_options);
        $flyout_anim_settings = wp_parse_args($flyout_anim_settings, $nr_fo_anim_options);
        // now update again
        update_option('nrelate_flyout_options', $flyout_settings);
        update_option('nrelate_flyout_options_ads', $flyout_ad_settings);
        update_option('nrelate_flyout_options_styles', $flyout_layout_settings);
        update_option('nrelate_flyout_anim_options_styles', $flyout_anim_settings);
        // Update version number in DB
        $flyout_settings = get_option('nrelate_flyout_options');
        $flyout_settings['flyout_version'] = NRELATE_FLYOUT_PLUGIN_VERSION;
        update_option('nrelate_flyout_options', $flyout_settings);
        // Ping nrelate servers about the upgrade
        $body = array('DOMAIN' => NRELATE_BLOG_ROOT, 'VERSION' => NRELATE_FLYOUT_PLUGIN_VERSION, 'KEY' => get_option('nrelate_key'), 'PLUGIN' => "flyout");
        $url = 'http://api.nrelate.com/common_wp/' . NRELATE_LATEST_ADMIN_VERSION . '/versionupdate.php';
        $result = wp_remote_post($url, array('body' => $body, 'blocking' => false, 'timeout' => 15));
        // Calculate plugin file path
        $dir = substr(realpath(dirname(__FILE__) . '/..'), strlen(WP_PLUGIN_DIR));
        $file = key(get_plugins($dir));
        $plugin_file = substr($dir, 1) . '/' . $file;
        // Update the WP database with the new version number and additional info about this plugin
        nrelate_products("flyout", NRELATE_FLYOUT_PLUGIN_VERSION, NRELATE_FLYOUT_ADMIN_VERSION, 1, $plugin_file);
    }
}
function nr_rc_upgrade()
{
    $related_settings = get_option('nrelate_related_options');
    $related_ad_settings = get_option('nrelate_related_options_ads');
    $related_layout_settings = get_option('nrelate_related_options_styles');
    $current_version = $related_settings['related_version'];
    // If settings exist and we're running on old version (or version doesn't exist), then this is an upgrade
    if (!empty($related_settings) && $current_version < NRELATE_RELATED_PLUGIN_VERSION) {
        nrelate_system_check();
        // run system check
        global $nr_rc_std_options, $nr_rc_ad_options, $nr_rc_layout_options, $nr_rc_old_checkbox_options, $nr_rc_ad_old_checkbox_options;
        // move custom field option from related settings to admin settings: v.0.42.2
        nrelate_upgrade_option('nrelate_related_options', 'related_custom_field', 'nrelate_admin_options', 'admin_custom_field');
        // move ad code field option from related settings to admin settings: v0.42.6
        nrelate_upgrade_option('nrelate_related_options', 'related_validate_ad', 'nrelate_admin_options', 'admin_validate_ad');
        // move all ad settings code from related settings to advertising settings: v0.50.0
        nrelate_upgrade_option('nrelate_related_options', 'related_display_ad', 'nrelate_related_options_ads', 'related_display_ad');
        nrelate_upgrade_option('nrelate_related_options', 'related_number_of_ads', 'nrelate_related_options_ads', 'related_number_of_ads');
        nrelate_upgrade_option('nrelate_related_options', 'related_ad_placement', 'nrelate_related_options_ads', 'related_ad_placement');
        nrelate_upgrade_option('nrelate_related_options', 'related_ad_animation', 'nrelate_related_options_ads', 'related_ad_animation');
        // re-get the latest since we just made changes
        $related_settings = get_option('nrelate_related_options');
        $related_ad_settings = get_option('nrelate_related_options_ads');
        $related_layout_settings = get_option('nrelate_related_options_styles');
        // Sanitize settings for versions <= 0.46.0
        if ($current_version <= '0.46.0') {
            // User is upgrading from version < 0.46.0
            if ($current_version < '0.46.0') {
                // Apply 0.46.0 defaults before running standard upgrade
                $nr_rc_old_checkbox_options["related_show_post_title"] = 'on';
                $nr_rc_ad_old_checkbox_options["related_ad_animation"] = 'on';
            }
            $related_settings = wp_parse_args($related_settings, $nr_rc_old_checkbox_options);
            $related_ad_settings = wp_parse_args($related_ad_settings, $nr_rc_ad_old_checkbox_options);
        }
        // Update new options if they don't exist
        $related_settings = wp_parse_args($related_settings, $nr_rc_std_options);
        $related_ad_settings = wp_parse_args($related_ad_settings, $nr_rc_ad_options);
        $related_layout_settings = wp_parse_args($related_layout_settings, $nr_rc_layout_options);
        /**
         * Backwards compatibility
         * Transforms related_blogoption setting from On|Off to 
         * an array of link category ids
         *
         * @since 0.49.0
         */
        if (isset($related_settings['related_blogoption']) && !is_array($related_settings['related_blogoption'])) {
            if ($related_settings['related_blogoption'] == 'On') {
                $taxonomy = 'link_category';
                $tax = get_taxonomy($taxonomy);
                $link_categories = (array) get_terms($taxonomy, array('get' => 'all'));
                foreach ($link_categories as $category) {
                    if ($category->name == 'Blogroll') {
                        $related_settings['related_blogoption'] = array($category->term_id);
                        break;
                    }
                }
            } else {
                $related_settings['related_blogoption'] = array();
            }
        }
        // now update again
        update_option('nrelate_related_options', $related_settings);
        update_option('nrelate_related_options_ads', $related_ad_settings);
        update_option('nrelate_related_options_styles', $related_layout_settings);
        // Update version number in DB
        $related_settings = get_option('nrelate_related_options');
        $related_settings['related_version'] = NRELATE_RELATED_PLUGIN_VERSION;
        update_option('nrelate_related_options', $related_settings);
        // Ping nrelate servers about the upgrade
        $body = array('DOMAIN' => NRELATE_BLOG_ROOT, 'VERSION' => NRELATE_RELATED_PLUGIN_VERSION, 'KEY' => get_option('nrelate_key'), 'PLUGIN' => "related");
        $url = 'http://api.nrelate.com/common_wp/' . NRELATE_LATEST_ADMIN_VERSION . '/versionupdate.php';
        $result = wp_remote_post($url, array('body' => $body, 'blocking' => false, 'timeout' => 15));
        // Calculate plugin file path
        $dir = substr(realpath(dirname(__FILE__) . '/..'), strlen(WP_PLUGIN_DIR));
        $file = key(get_plugins($dir));
        $plugin_file = substr($dir, 1) . '/' . $file;
        // Update the WP database with the new version number and additional info about this plugin
        nrelate_products("related", NRELATE_RELATED_PLUGIN_VERSION, NRELATE_RELATED_ADMIN_VERSION, 1, $plugin_file);
    }
}