/** * Upgrade database. * * @since 1.0.0 * @param bool $force Also execute update logic when version did not change. */ public static function update($force = false) { static $Done = false; if ($Done && !$force) { return; } // Migration handler has its own valid_user check. self::check_migration_handler(); // Updates are only triggered from Admin-Side by an Admin user. if (!self::valid_user()) { return; } // Check for correct network-wide protection setup. self::check_settings(); $settings = MS_Factory::load('MS_Model_Settings'); $old_version = $settings->version; // Old: The version in DB. $new_version = MS_Plugin::instance()->version; // New: Version in file. $is_new_setup = empty($old_version); // Compare current src version to DB version: // We only do UP-grades but no DOWN-grades! if ($old_version) { $version_changed = version_compare($old_version, $new_version, 'lt'); } else { $version_changed = true; } if ($force || $version_changed) { $Done = true; $msg = array(); /* * ----- General update logic, executed on every update ------------ */ do_action('ms_model_upgrade_before_update', $settings, $old_version, $new_version, $force); // Prepare the Update message. if (!$version_changed) { $msg[] = sprintf(__('<strong>Membership 2</strong> is set up for version %1$s!', 'membership2'), $new_version); } else { $msg[] = sprintf(__('<strong>Membership 2</strong> was updated to version %1$s!', 'membership2'), $new_version); } // Every time the plugin is updated we clear the cache. MS_Factory::clear(); // Create missing Membership pages. $new_pages = MS_Model_Pages::create_missing_pages(); if (!empty($new_pages)) { $msg[] = sprintf(__('New Membership pages created: "%1$s".', 'membership2'), implode('", "', $new_pages)); } // Remove an old version of Protected Content // TODO: REMOVE THIS BLOCK/FUNCTION END OF 2015 if ($version_changed) { self::remove_old_copy(); } // Note: We do not create menu items on upgrade! Users might have // intentionally removed the items from the menu... /* * ----- Version-Specific update logic ----------------------------- */ // Upgrade from a 1.0.0.x version to 1.0.1.0 or higher if (version_compare($old_version, '1.0.1.0', 'lt')) { self::_upgrade_1_0_1_0(); } // Upgrade from 1.0.1.0 version to 1.0.1.1 or higher if (version_compare($old_version, '1.0.1.1', 'lt')) { self::_upgrade_1_0_1_1(); } // Upgrade from 1.0.1.x version to 1.0.2.0 or higher if (version_compare($old_version, '1.0.2.0', 'lt')) { self::_upgrade_1_0_2_0(); } // Upgrade from 1.0.2.x version to 1.0.2.4 or higher if (version_compare($old_version, '1.0.2.4', 'lt')) { self::_upgrade_1_0_2_4(); } /* * ----- General update logic, executed on every update ------------ */ $settings->version = $new_version; $settings->save(); // Display a message after the page is reloaded. if (!$is_new_setup) { lib3()->ui->admin_message(implode('<br>', $msg), '', '', 'ms-update'); } do_action('ms_model_upgrade_after_update', $settings, $old_version, $new_version, $force); $addons = MS_Factory::load('MS_Model_Addon'); $addons->flush_list(); // This will reload the current page. MS_Plugin::flush_rewrite_rules(); } }
/** * Function is triggered every time an add-on is enabled. * * We flush the Factory Cache when the WPML Add-on is enabled so all strings * are properly registered for translation. * * @since 1.0.1.0 * @param string $addon The Add-on ID */ public function enable_addon($addon) { if (self::ID == $addon) { MS_Factory::clear(); } }