/** * Detects the request type for this addon (whether it was just activated, upgrades, a normal request, etc.) * Should only be called once per request * @return void */ function detect_activation_or_upgrade() { $activation_history_for_addon = $this->get_activation_history(); // d($activation_history_for_addon); $request_type = EE_System::detect_req_type_given_activation_history($activation_history_for_addon, $this->get_activation_indicator_option_name(), $this->version()); $this->set_req_type($request_type); $classname = get_class($this); switch ($request_type) { case EE_System::req_type_new_activation: do_action("AHEE__{$classname}__detect_activations_or_upgrades__new_activation"); do_action("AHEE__EE_Addon__detect_activations_or_upgrades__new_activation", $this); $this->new_install(); $this->update_list_of_installed_versions($activation_history_for_addon); break; case EE_System::req_type_reactivation: do_action("AHEE__{$classname}__detect_activations_or_upgrades__reactivation"); do_action("AHEE__EE_Addon__detect_activations_or_upgrades__reactivation", $this); $this->reactivation(); $this->update_list_of_installed_versions($activation_history_for_addon); break; case EE_System::req_type_upgrade: do_action("AHEE__{$classname}__detect_activations_or_upgrades__upgrade"); do_action("AHEE__EE_Addon__detect_activations_or_upgrades__upgrade", $this); $this->upgrade(); $this->update_list_of_installed_versions($activation_history_for_addon); break; case EE_System::req_type_downgrade: do_action("AHEE__{$classname}__detect_activations_or_upgrades__downgrade"); do_action("AHEE__EE_Addon__detect_activations_or_upgrades__downgrade", $this); $this->downgrade(); $this->update_list_of_installed_versions($activation_history_for_addon); break; case EE_System::req_type_normal: default: // $this->_maybe_redirect_to_ee_about(); break; } do_action("AHEE__{$classname}__detect_if_activation_or_upgrade__complete"); }
/** * */ function test_detect_req_type_given_activation_history__on_activation() { $activation_history = array(); update_option('test_activation_indicator_option', TRUE); //detect brand new activation $this->assertEquals(EE_System::req_type_new_activation, EE_System::detect_req_type_given_activation_history($activation_history, 'test_activation_indicator_option', '1.0.0.dev.000')); $activation_history['1.0.0.dev.000'] = array(date('Y-m-d H:i:s')); update_option('test_activation_indicator_option', TRUE); //detect upgrade to NEW version $this->assertEquals(EE_System::req_type_upgrade, EE_System::detect_req_type_given_activation_history($activation_history, 'test_activation_indicator_option', '1.2.0.dev.000')); $activation_history['1.2.0.dev.000'] = array(date('Y-m-d H:i:s', time() + 1)); update_option('test_activation_indicator_option', TRUE); //detect reactivation request; WOULD be a normal request if the activation indicator weren't set $this->assertEquals(EE_System::req_type_reactivation, EE_System::detect_req_type_given_activation_history($activation_history, 'test_activation_indicator_option', '1.2.0.dev.000')); //detect downgrade to NEW version $this->assertEquals(EE_System::req_type_downgrade, EE_System::detect_req_type_given_activation_history($activation_history, 'test_activation_indicator_option', '1.1.0.dev.000')); $activation_history['1.1.0.dev.000'] = array(date('Y-m-d H:i:s', time() + 2)); update_option('test_activation_indicator_option', TRUE); //detect downgrade to KNOWN version $this->assertEquals(EE_System::req_type_downgrade, EE_System::detect_req_type_given_activation_history($activation_history, 'test_activation_indicator_option', '1.0.0.dev.000')); $activation_history['1.0.0.dev.000'][] = date('Y-m-d H:i:s', time() + 3); update_option('test_activation_indicator_option', TRUE); //detect upgrade to KNOWN version $this->assertEquals(EE_System::req_type_upgrade, EE_System::detect_req_type_given_activation_history($activation_history, 'test_activation_indicator_option', '1.1.0.dev.000')); $activation_history['1.1.0.dev.000'][] = date('Y-m-d H:i:s', time() + 4); update_option('test_activation_indicator_option', TRUE); }