84 lines
1.5 KiB
PHP
84 lines
1.5 KiB
PHP
<?php
|
|
|
|
abstract class Brizy_Admin_Migrations_AbstractStorage {
|
|
|
|
const KEY = 'brizy-migrations';
|
|
|
|
/**
|
|
* @var Brizy_Admin_Migrations_MigrationInterface[]
|
|
*/
|
|
protected $data;
|
|
|
|
/**
|
|
* Brizy_Admin_Migations_AbstractStorage constructor.
|
|
*/
|
|
public function __construct() {
|
|
$this->data = array();
|
|
$this->loadData();
|
|
}
|
|
|
|
/**
|
|
* Save run migrations
|
|
*
|
|
* @return mixed
|
|
*/
|
|
abstract protected function storeData();
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
abstract protected function loadData();
|
|
|
|
/**
|
|
* @return $this
|
|
*/
|
|
public function save() {
|
|
$this->storeData();
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param Brizy_Admin_Migrations_MigrationInterface $migration
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function addMigration( Brizy_Admin_Migrations_MigrationInterface $migration ) {
|
|
|
|
if ( ! $this->hasMigration( $migration ) ) {
|
|
$this->data[] = $migration;
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @@return Brizy_Admin_Migrations_MigrationInterface[]
|
|
*/
|
|
public function getMigrations() {
|
|
return $this->data;
|
|
}
|
|
|
|
/**
|
|
* @param Brizy_Admin_Migrations_MigrationInterface $amigratoin
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function hasMigration( Brizy_Admin_Migrations_MigrationInterface $amigratoin ) {
|
|
$aMigrationClass = get_class( $amigratoin );
|
|
foreach ( $this->data as $migration ) {
|
|
if ( get_class( $migration ) == $aMigrationClass ) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @return Brizy_Admin_Migrations_MigrationInterface|mixed
|
|
*/
|
|
public function latestMigration() {
|
|
return end( $this->data );
|
|
}
|
|
} |