mirror of
https://github.com/proelements/proelements.git
synced 2026-04-18 18:12:15 +00:00
v3.33.1
This commit is contained in:
50
modules/forms/submissions/database/migration.php
Normal file
50
modules/forms/submissions/database/migration.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
namespace ElementorPro\Modules\Forms\Submissions\Database;
|
||||
|
||||
use Elementor\Core\Base\Base_Object;
|
||||
use Elementor\Core\Utils\Collection;
|
||||
|
||||
class Migration extends Base_Object {
|
||||
const OPTION_DB_VERSION = 'elementor_submissions_db_version';
|
||||
|
||||
// This version must be updated when new migration created.
|
||||
const CURRENT_DB_VERSION = 5;
|
||||
|
||||
private static $migrations = [
|
||||
1 => Migrations\Initial::class,
|
||||
// It jumps from version 1 to 4 because some users already migrated the DB when the migrations system worked with the Elementor Pro version
|
||||
// when the int value of the version "3.2.0" was 3.
|
||||
4 => Migrations\Referer_Extra::class,
|
||||
5 => Migrations\Fix_Indexes::class,
|
||||
];
|
||||
|
||||
/**
|
||||
* Checks if there is a need to run migrations.
|
||||
*/
|
||||
public static function install() {
|
||||
$installed_version = intval( get_option( self::OPTION_DB_VERSION ) );
|
||||
|
||||
// Up to date. Nothing to do.
|
||||
if ( static::CURRENT_DB_VERSION <= $installed_version ) {
|
||||
return;
|
||||
}
|
||||
|
||||
global $wpdb;
|
||||
|
||||
( new Collection( static::$migrations ) )
|
||||
->filter( function ( $_, $version ) use ( $installed_version ) {
|
||||
// Filter all the migrations that already done.
|
||||
return $version > $installed_version;
|
||||
} )
|
||||
->map( function ( $migration_class_name, $version ) use ( $wpdb ) {
|
||||
/** @var Migrations\Base_Migration $migration */
|
||||
$migration = new $migration_class_name( $wpdb );
|
||||
$migration->run();
|
||||
|
||||
// In case some migration failed it updates version every migration.
|
||||
update_option( static::OPTION_DB_VERSION, $version );
|
||||
} );
|
||||
|
||||
update_option( static::OPTION_DB_VERSION, self::CURRENT_DB_VERSION );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user