PluginProbe
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance / 4.7.0
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance v4.7.0
4.7.0 4.6.1 4.6.0 4.5.5 4.5.4 4.5.3 4.5.2 3.2.20 3.2.21 3.2.22 3.2.3 3.2.5 3.2.6 3.2.7 3.2.9 3.3.0 3.3.1 3.3.2 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.7.0 3.7.1 All 111 releases
← All changes | includes/class-wpo-activation.php +99 -27 4.5.2 → 4.7.0 View file →
@@ -5,27 +5,25 @@
5 5
6 6 class WPO_Activation {
7 7
8 8 /**
9 + * Flag to prevent multiple silence activation actions from running when the plugin is reactivated.
10 + *
11 + * @var bool
12 + */
13 + private static $silence_activation_actions_done = false;
14 +
15 + /**
9 16 * Actions to be performed upon plugin activation
17 + *
18 + * @return void
10 19 */
11 - public static function actions() {
12 - if (!WP_Optimize()->is_minimum_requirement_met()) {
13 - WP_Optimize()->add_notice_minimum_requirements_not_met();
14 - WP_Optimize()->deactivate_plugin();
15 - WP_Optimize()->die_minimum_requirement_not_met();
16 - }
20 + public static function actions(): void {
17 21
18 - if (is_multisite() && !current_user_can('manage_network_options')) {
19 - self::deactivate_and_die();
20 - }
22 + self::check_minimum_requirements();
23 + self::check_user_capability();
24 + self::handle_activation_type();
21 25
22 - if (!self::is_reactivated()) {
23 - self::set_as_newly_activated();
24 - $onboarding = WP_Optimize()->get_onboarding();
25 - $onboarding->activate_onboarding_wizard();
26 - }
27 -
28 26 WP_Optimize()->get_options()->set_default_options();
29 27 WP_Optimize()->get_minify()->plugin_activate();
30 28 WP_Optimize()->get_gzip_compression()->restore();
31 29 WP_Optimize()->get_browser_cache()->restore();
@@ -31,20 +29,74 @@
31 29 WP_Optimize()->get_browser_cache()->restore();
32 30 WP_Optimize()->get_table_management()->create_plugin_tables();
33 31 WP_Optimize()->get_webp_instance()->plugin_activate();
34 32
33 + WP_Optimize_Page_Cache_Preloader::instance()->maybe_reschedule_preload_on_activation();
34 +
35 35 self::init_batch_processing();
36 + self::silence_activation_actions();
37 + }
36 38
37 - if (self::is_premium()) {
38 - self::init_premium();
39 + /**
40 + * When user uploads a plugin zip file on already activated plugin, WordPress doesn't run the activation hook.
41 + * This method is used to perform the necessary activation actions in such cases.
42 + *
43 + * @return void
44 + */
45 + public static function silence_activation_actions(): void {
46 + if (self::$silence_activation_actions_done) {
47 + return;
39 48 }
40 49
50 + WP_Optimize()->cron_activate();
51 + self::maybe_init_premium();
52 +
53 + self::$silence_activation_actions_done = true;
41 54 }
42 55
43 56 /**
57 + * Check if minimum requirements are met, deactivate and die if not
58 + *
59 + * @return void
60 + */
61 + private static function check_minimum_requirements(): void {
62 + if (!WP_Optimize()->is_minimum_requirement_met()) {
63 + WP_Optimize()->add_notice_minimum_requirements_not_met();
64 + WP_Optimize()->deactivate_plugin();
65 + WP_Optimize()->die_minimum_requirement_not_met();
66 + }
67 + }
68 +
69 + /**
70 + * Check if the current user has permission to activate the plugin on multisite
71 + *
72 + * @return void
73 + */
74 + private static function check_user_capability(): void {
75 + if (is_multisite() && !WP_Optimize()->current_user_can('manage_network_options')) {
76 + self::deactivate_and_die();
77 + }
78 + }
79 +
80 + /**
81 + * Check if this is a reactivation or a new activation and set up accordingly
82 + *
83 + * @return void
84 + */
85 + private static function handle_activation_type(): void {
86 + // Always record first-activation timestamp (no-ops if already set).
87 + self::set_as_newly_activated();
88 + if (!self::is_reactivated()) {
89 + WP_Optimize()->get_onboarding()->activate_onboarding_wizard();
90 + }
91 + }
92 +
93 + /**
44 94 * When non network admin tries to activate plugin, deactivate it and die with a message
95 + *
96 + * @return void
45 97 */
46 - private static function deactivate_and_die() {
98 + private static function deactivate_and_die(): void {
47 99 deactivate_plugins(plugin_basename(WPO_PLUGIN_MAIN_PATH . 'wp-optimize.php'));
48 100 wp_die(esc_html__('Only Network Administrator can activate the WP-Optimize plugin.', 'wp-optimize') .
49 101 ' <a href="' . esc_url(admin_url('plugins.php')) . '">' . esc_html__('go back', 'wp-optimize') . '</a>');
50 102 }
@@ -51,25 +103,32 @@
51 103
52 104 /**
53 105 * Decides whether the plugin is newly installed and activated or already installed and reactivated
54 106 *
55 - * @return mixed
107 + * @return bool
56 108 */
57 - private static function is_reactivated() {
58 - return WP_Optimize()->get_options()->get_option('last-optimized');
109 + private static function is_reactivated(): bool {
110 + return (bool) WP_Optimize()->get_options()->get_option('last-optimized');
59 111 }
60 112
61 113 /**
62 - * Set plugin option `newly-activated` as `true`
114 + * Records the first-ever activation timestamp.
115 + * No-ops if already set, so the original install date is never overwritten on reactivation.
116 + *
117 + * @return void
63 118 */
64 - private static function set_as_newly_activated() {
65 - WP_Optimize()->get_options()->update_option('newly-activated', true);
119 + private static function set_as_newly_activated(): void {
120 + if (!WP_Optimize()->get_options()->get_option('newly-activated')) {
121 + WP_Optimize()->get_options()->update_option('newly-activated', time());
122 + }
66 123 }
67 124
68 125 /**
69 126 * Make use of Task Manager library
127 + *
128 + * @return void
70 129 */
71 - private static function init_batch_processing() {
130 + private static function init_batch_processing(): void {
72 131 if (!class_exists('Updraft_Tasks_Activation')) {
73 132 require_once(WPO_PLUGIN_MAIN_PATH . 'vendor/team-updraft/common-libs/src/updraft-tasks/class-updraft-tasks-activation.php');
74 133 }
75 134 Updraft_Tasks_Activation::init(WPO_PLUGIN_SLUG);
@@ -76,20 +135,33 @@
76 135 Updraft_Tasks_Activation::reinstall_if_needed();
77 136 }
78 137
79 138 /**
139 + * Initialize premium plugin if the premium version is installed
140 + *
141 + * @return void
142 + */
143 + private static function maybe_init_premium(): void {
144 + if (self::is_premium()) {
145 + self::init_premium();
146 + }
147 + }
148 +
149 + /**
80 150 * Decides whether activate plugin is premium version or not
81 151 *
82 152 * @return bool
83 153 */
84 - private static function is_premium() {
154 + private static function is_premium(): bool {
85 155 return file_exists(WPO_PLUGIN_MAIN_PATH . 'premium.php');
86 156 }
87 157
88 158 /**
89 159 * Run premium plugin activation actions
160 + *
161 + * @return void
90 162 */
91 - private static function init_premium() {
163 + private static function init_premium(): void {
92 164 if (!class_exists('WP_Optimize_Premium')) {
93 165 include_once(WPO_PLUGIN_MAIN_PATH . 'premium.php');
94 166 }
95 167 WP_Optimize_Premium()->plugin_activation_actions();