get_options()->set_default_options(); WP_Optimize()->get_minify()->plugin_activate(); WP_Optimize()->get_gzip_compression()->restore(); WP_Optimize()->get_browser_cache()->restore(); WP_Optimize()->get_table_management()->create_plugin_tables(); WP_Optimize()->get_webp_instance()->plugin_activate(); WP_Optimize_Page_Cache_Preloader::instance()->maybe_reschedule_preload_on_activation(); self::init_batch_processing(); self::silence_activation_actions(); } /** * When user uploads a plugin zip file on already activated plugin, WordPress doesn't run the activation hook. * This method is used to perform the necessary activation actions in such cases. * * @return void */ public static function silence_activation_actions(): void { if (self::$silence_activation_actions_done) { return; } WP_Optimize()->cron_activate(); self::maybe_init_premium(); self::$silence_activation_actions_done = true; } /** * Check if minimum requirements are met, deactivate and die if not * * @return void */ private static function check_minimum_requirements(): void { if (!WP_Optimize()->is_minimum_requirement_met()) { WP_Optimize()->add_notice_minimum_requirements_not_met(); WP_Optimize()->deactivate_plugin(); WP_Optimize()->die_minimum_requirement_not_met(); } } /** * Check if the current user has permission to activate the plugin on multisite * * @return void */ private static function check_user_capability(): void { if (is_multisite() && !WP_Optimize()->current_user_can('manage_network_options')) { self::deactivate_and_die(); } } /** * Check if this is a reactivation or a new activation and set up accordingly * * @return void */ private static function handle_activation_type(): void { // Always record first-activation timestamp (no-ops if already set). self::set_as_newly_activated(); if (!self::is_reactivated()) { WP_Optimize()->get_onboarding()->activate_onboarding_wizard(); } } /** * When non network admin tries to activate plugin, deactivate it and die with a message * * @return void */ private static function deactivate_and_die(): void { deactivate_plugins(plugin_basename(WPO_PLUGIN_MAIN_PATH . 'wp-optimize.php')); wp_die(esc_html__('Only Network Administrator can activate the WP-Optimize plugin.', 'wp-optimize') . ' ' . esc_html__('go back', 'wp-optimize') . ''); } /** * Decides whether the plugin is newly installed and activated or already installed and reactivated * * @return bool */ private static function is_reactivated(): bool { return (bool) WP_Optimize()->get_options()->get_option('last-optimized'); } /** * Records the first-ever activation timestamp. * No-ops if already set, so the original install date is never overwritten on reactivation. * * @return void */ private static function set_as_newly_activated(): void { if (!WP_Optimize()->get_options()->get_option('newly-activated')) { WP_Optimize()->get_options()->update_option('newly-activated', time()); } } /** * Make use of Task Manager library * * @return void */ private static function init_batch_processing(): void { if (!class_exists('Updraft_Tasks_Activation')) { require_once(WPO_PLUGIN_MAIN_PATH . 'vendor/team-updraft/common-libs/src/updraft-tasks/class-updraft-tasks-activation.php'); } Updraft_Tasks_Activation::init(WPO_PLUGIN_SLUG); Updraft_Tasks_Activation::reinstall_if_needed(); } /** * Initialize premium plugin if the premium version is installed * * @return void */ private static function maybe_init_premium(): void { if (self::is_premium()) { self::init_premium(); } } /** * Decides whether activate plugin is premium version or not * * @return bool */ private static function is_premium(): bool { return file_exists(WPO_PLUGIN_MAIN_PATH . 'premium.php'); } /** * Run premium plugin activation actions * * @return void */ private static function init_premium(): void { if (!class_exists('WP_Optimize_Premium')) { include_once(WPO_PLUGIN_MAIN_PATH . 'premium.php'); } WP_Optimize_Premium()->plugin_activation_actions(); } } endif;