2016-05-02 10:31:31 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Icinga\Module\Director\Forms;
|
|
|
|
|
|
|
|
use Exception;
|
|
|
|
use Icinga\Module\Director\Db\Migrations;
|
|
|
|
use Icinga\Module\Director\Web\Form\QuickForm;
|
|
|
|
|
|
|
|
class ApplyMigrationsForm extends QuickForm
|
|
|
|
{
|
2016-11-01 18:28:36 +01:00
|
|
|
/** @var Migrations */
|
2016-05-02 10:31:31 +02:00
|
|
|
protected $migrations;
|
|
|
|
|
|
|
|
public function setup()
|
|
|
|
{
|
2016-10-27 19:58:31 +02:00
|
|
|
if ($this->migrations->hasSchema()) {
|
|
|
|
$count = $this->migrations->countPendingMigrations();
|
|
|
|
if ($count === 1) {
|
|
|
|
$this->setSubmitLabel(
|
|
|
|
$this->translate('Apply a pending schema migration')
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
$this->setSubmitLabel(
|
|
|
|
sprintf(
|
|
|
|
$this->translate('Apply %d pending schema migrations'),
|
|
|
|
$count
|
|
|
|
)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$this->setSubmitLabel($this->translate('Create schema'));
|
|
|
|
}
|
2016-05-02 10:31:31 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public function onSuccess()
|
|
|
|
{
|
|
|
|
try {
|
|
|
|
$this->setSuccessMessage($this->translate(
|
|
|
|
'Pending database schema migrations have successfully been applied'
|
|
|
|
));
|
|
|
|
|
|
|
|
$this->migrations->applyPendingMigrations();
|
|
|
|
parent::onSuccess();
|
|
|
|
} catch (Exception $e) {
|
|
|
|
$this->addError($e->getMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setMigrations(Migrations $migrations)
|
|
|
|
{
|
|
|
|
$this->migrations = $migrations;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
}
|