Integrated Phinx DB migrations. Requires running composer install
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
use Phinx\Migration\AbstractMigration;
|
||||
|
||||
final class AddCanPermissions extends AbstractMigration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
// only run in thetool Env
|
||||
if($this->getEnvironment() == "thetool") {
|
||||
$new_perms = [
|
||||
"canBuilding",
|
||||
"canPipework",
|
||||
"canLinework",
|
||||
"canPatching",
|
||||
"canFilestore",
|
||||
"canCpeprovisioning",
|
||||
"canCpeshipping",
|
||||
"canVoipnumbering",
|
||||
"canPreorder",
|
||||
"canOrder"
|
||||
];
|
||||
|
||||
$table = $this->table("WorkerPermission");
|
||||
|
||||
$setAllTrue = "";
|
||||
|
||||
$after = "preorderaddressreporting";
|
||||
foreach($new_perms as $p) {
|
||||
$table->addColumn($p, "enum", ["values" => 'false,true', "default" => "false", "after" => $after]);
|
||||
$after = $p;
|
||||
$setAllTrue .= "`$p` = 'true', ";
|
||||
}
|
||||
$table->update();
|
||||
|
||||
$setAllTrue = substr($setAllTrue, 0, strlen($setAllTrue) -2);
|
||||
|
||||
//echo "$setAllTrue\n";
|
||||
|
||||
$builder = $this->getQueryBuilder();
|
||||
$q = $builder->select("*")->from("WorkerPermission")->execute();
|
||||
|
||||
while($perm = $q->fetch('assoc')) {
|
||||
$id = $perm["id"];
|
||||
|
||||
if($perm["admin"] == "true") {
|
||||
$this->query("UPDATE WorkerPermission SET $setAllTrue WHERE id=$id");
|
||||
} elseif($perm["preorderfront"] == "false" && $perm['preorderaddressreporting'] == "false") {
|
||||
$this->query("UPDATE WorkerPermission SET $setAllTrue WHERE id=$id");
|
||||
} else {
|
||||
$this->query("UPDATE WorkerPermission SET `canPreorder` = 'true' WHERE id=$id");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if($this->getEnvironment() == "addressdb") {
|
||||
// do nothing in addressdb Env
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
if($this->getEnvironment() == "thetool") {
|
||||
|
||||
$table = $this->table("WorkerPermission");
|
||||
$table->removeColumn("canOrder");
|
||||
$table->removeColumn("canPreorder");
|
||||
$table->removeColumn("canVoipnumbering");
|
||||
$table->removeColumn("canCpeshipping");
|
||||
$table->removeColumn("canCpeprovisioning");
|
||||
$table->removeColumn("canFilestore");
|
||||
$table->removeColumn("canPatching");
|
||||
$table->removeColumn("canLinework");
|
||||
$table->removeColumn("canPipework");
|
||||
$table->removeColumn("canBuilding");
|
||||
$table->update();
|
||||
}
|
||||
|
||||
if($this->getEnvironment() == "addressdb") {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user