From 3d24f0c77b44872e99ef0060a6216aae8da5f190 Mon Sep 17 00:00:00 2001 From: Jonathan Labreuille Date: Mon, 5 Dec 2016 13:14:12 +0100 Subject: [PATCH] handle db update --- lib/Config/Activator.php | 11 ++++------- lib/Config/Initializer.php | 27 +++++++++++++++------------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/Config/Activator.php b/lib/Config/Activator.php index 7bb9af6f40..e1834203a6 100644 --- a/lib/Config/Activator.php +++ b/lib/Config/Activator.php @@ -1,23 +1,20 @@ up(); $populator = new Populator(); $populator->up(); + + update_option('mailpoet_db_version', Env::$version); } - function deactivate() { + static function deactivate() { $migrator = new Migrator(); $migrator->down(); } diff --git a/lib/Config/Initializer.php b/lib/Config/Initializer.php index 375b0819f2..c64e4f2af8 100644 --- a/lib/Config/Initializer.php +++ b/lib/Config/Initializer.php @@ -29,8 +29,11 @@ class Initializer { $this->setupDB(); - register_activation_hook(Env::$file, array($this, 'runMigrator')); - register_activation_hook(Env::$file, array($this, 'runPopulator')); + // activation function + register_activation_hook( + Env::$file, + array('MailPoet\Config\Activator', 'activate') + ); add_action('plugins_loaded', array($this, 'setup')); add_action('init', array($this, 'onInit')); @@ -96,18 +99,9 @@ class Initializer { define('MP_STATISTICS_FORMS_TABLE', $statistics_forms); } - function runMigrator() { - $migrator = new Migrator(); - $migrator->up(); - } - - function runPopulator() { - $populator = new Populator(); - $populator->up(); - } - function setup() { try { + $this->maybeDbUpdate(); $this->setupRenderer(); $this->setupLocalizer(); $this->setupMenu(); @@ -141,6 +135,15 @@ class Initializer { define('MAILPOET_INITIALIZED', true); } + function maybeDbUpdate() { + $current_db_version = get_option('mailpoet_db_version', false); + + // if current db version and plugin version differ + if(version_compare($current_db_version, Env::$version) !== 0) { + Activator::activate(); + } + } + function setupWidget() { if(!$this->plugin_initialized) { return;