diff --git a/db/migrations/2018_01_01_000005_add_angel_supporter_permissions.php b/db/migrations/2018_01_01_000005_add_angel_supporter_permissions.php new file mode 100644 index 00000000..b9d4cdc2 --- /dev/null +++ b/db/migrations/2018_01_01_000005_add_angel_supporter_permissions.php @@ -0,0 +1,67 @@ +schema->hasTable('GroupPrivileges')) { + return; + } + + $db = $this->schema->getConnection(); + if (!empty($db->select($this->getQuery('SELECT *'), $this->data))) { + return; + } + + // Add permissions to angels to edit angels if they are angeltype supporters + $db->insert( + ' + INSERT IGNORE INTO GroupPrivileges (group_id, privilege_id) + VALUES ((SELECT UID FROM `Groups` WHERE `name` = ?), (SELECT id FROM `Privileges` WHERE `name` = ?)) + ', + $this->data + ); + } + + /** + * Reverse the migration + */ + public function down() + { + if (!$this->schema->hasTable('GroupPrivileges')) { + return; + } + + // Remove permission from angels + $this->schema->getConnection()->delete( + $this->getQuery('DELETE'), + $this->data + ); + } + + /** + * @param string $type + * @return string + */ + protected function getQuery($type) + { + return sprintf(' + %s FROM GroupPrivileges + WHERE group_id = (SELECT UID FROM `Groups` WHERE `name` = ?) + AND privilege_id = (SELECT id FROM `Privileges` WHERE `name` = ?) + ', $type); + } +}