<?php

namespace Toplytics;

/**
 * Fired during plugin activation.
 *
 * This class defines all code necessary to run during the plugin's activation.
 *
 * @link       https://www.presslabs.com/
 * @since      4.0.0
 *
 * @package    Toplytics
 * @subpackage Toplytics/components
 * @author     Presslabs <support@presslabs.com>
 */

class Activator
{

    /**
     * Setting up the stage for Toplytics.
     *
     * During activation we need to make sure
     * that we clean-up after old deprecated
     * options and that we set out default
     * values if they are not already set.
     *
     * @since   4.0.0
     * @return  void
     */
    public static function activate()
    {
        Activator::deleteDeprecatedOptions();
        // Activator::cleanUpAuthOptions();
        Activator::addDefaultOptions();
    }

    /**
     * We need to clean up our mess after the upgrades,
     * if we didn't already anyway.
     *
     * @since   4.0.0
     * @return  void
     */
    public static function deleteDeprecatedOptions()
    {
        /**
         * Deprecated since 3.x.x
         */
        delete_option('toplytics_oauth_token');
        delete_option('toplytics_oauth_secret');
        delete_option('toplytics_auth_token');
        delete_option('toplytics_account_id');
        delete_option('toplytics_cache_timeout');
        delete_option('toplytics_results');

        /**
         * Deprecated since 4.0.0.
         */
        delete_option('toplytics_result_today');
        delete_option('toplytics_result_week');
        delete_option('toplytics_result_month');
        // delete_option('toplytics_oauth2_remote_token');

        /**
         * Used in testing and no longer used.
         */
        delete_option('toplytics_auth_status');
        delete_option('toplytics_last_update');
    }

    /**
     * We need to make sure that we clean up the
     * authorization infos befor activation
     * because it causes incompatibility
     * after the upgrade to 4.0.0.
     *
     * @since 4.0.0
     * @return void
     */
    public static function cleanUpAuthOptions()
    {
        $options = [
            'toplytics_auth_config',
            'toplytics_auth_code',
            'toplytics_auth_type',
        ];

        // foreach ($options as $option_name) {
        //     delete_option($option_name);
        // }
    }

    /**
     * These options are all the options we use inside
     * our entire plugin, if it doesn't have a
     * default value, we don't use it.
     *
     * @since   4.0.0
     * @return  void
     */
    public static function addDefaultOptions()
    {

        $options = [
            'toplytics_results_ranges' => [
                'month' => '30daysAgo',
                'week'  => '7daysAgo',
                'today' => 'yesterday',
                'realtime' => 0,
            ],
            'toplytics_private_auth_config' => false,
            'toplytics_last_update_status' => false,
            'toplytics_google_token' => false,
            'toplytics_profile_data' => false,
            'toplytics_auth_config' => false,
            'toplytics_auth_code' => false,
            'toplytics_auth_type' => false,
        ];

        foreach ($options as $option_name => $option_value) {
            if (!get_option($option_name)) {
                add_option($option_name, $option_value, '', 'no');
            }
        }
    }
}
