first commit
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
namespace Elementor\Core\Database;
|
||||
|
||||
use Elementor\Core\Utils\Collection;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
abstract class Base_Database_Updater {
|
||||
public function up( $force = false ) {
|
||||
$installed_version = $this->get_installed_version();
|
||||
|
||||
if ( ! $force && $this->get_db_version() <= $installed_version ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$migrations = new Collection( $this->get_migrations() );
|
||||
|
||||
if ( ! $force ) {
|
||||
$migrations = $migrations->filter( function ( $_, $version ) use ( $installed_version ) {
|
||||
return $version > $installed_version;
|
||||
} );
|
||||
}
|
||||
|
||||
$migrations->map( function ( Base_Migration $migration, $version ) {
|
||||
$migration->up();
|
||||
|
||||
$this->update_db_version_option( $version );
|
||||
} );
|
||||
|
||||
$this->update_db_version_option( $this->get_db_version() );
|
||||
}
|
||||
|
||||
public function register() {
|
||||
add_action( 'admin_init', function () {
|
||||
$this->up();
|
||||
} );
|
||||
}
|
||||
|
||||
protected function update_db_version_option( $version ) {
|
||||
update_option( $this->get_db_version_option_name(), $version );
|
||||
}
|
||||
|
||||
protected function get_installed_version() {
|
||||
return intval( get_option( $this->get_db_version_option_name() ) );
|
||||
}
|
||||
|
||||
abstract protected function get_db_version();
|
||||
|
||||
abstract protected function get_db_version_option_name(): string;
|
||||
|
||||
abstract protected function get_migrations(): array;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace Elementor\Core\Database;
|
||||
|
||||
abstract class Base_Migration {
|
||||
/**
|
||||
* Runs when upgrading the database
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
abstract public function up();
|
||||
}
|
||||
Reference in New Issue
Block a user