first commit
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
<?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 );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user