Completed
Push — master ( 3323b4...560235 )
by Anton
12s
created

Acl   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
dl 0
loc 67
rs 10
c 0
b 0
f 0
wmc 1
lcom 0
cbo 2

1 Method

Rating   Name   Duplication   Size   Complexity  
B change() 0 40 1
1
<?php
2
3
use Phinx\Migration\AbstractMigration;
4
5
class Acl extends AbstractMigration
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
6
{
7
    /**
8
     * Change Method.
9
     *
10
     * Write your reversible migrations using this method.
11
     *
12
     * More information on writing migrations is available here:
13
     * http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class
14
     *
15
     * The following commands can be used in this method and Phinx will
16
     * automatically reverse them when rolling back:
17
     *
18
     *    createTable
19
     *    renameTable
20
     *    addColumn
21
     *    renameColumn
22
     *    addIndex
23
     *    addForeignKey
24
     *
25
     * Remember to call "create()" or "update()" and NOT "save()" when working
26
     * with the Table class.
27
     *
28
     * @throws \InvalidArgumentException
29
     * @throws \RuntimeException
30
     */
31
    public function change()
32
    {
33
        $roles = $this->table('acl_roles', ['primary_key' => ['id', 'code']]);
34
        $roles
35
            ->addColumn('name', 'string', ['length'=>255])
36
            ->addColumn('created', 'timestamp', ['default' => 'CURRENT_TIMESTAMP', 'update' => ''])
37
            ->addIndex(['name'], ['unique' => true])
38
            ->create();
39
40
        $privileges = $this->table(
41
            'acl_privileges',
42
            [
43
                'id' => false,
44
                'primary_key' => ['roleId', 'module', 'privilege']
45
            ]
46
        );
47
        $privileges
48
            ->addColumn('roleId', 'integer')
49
            ->addColumn('module', 'string', ['length'=>32])
50
            ->addColumn('privilege', 'string', ['length'=>32])
51
            ->addForeignKey('roleId', $roles, 'id', [
52
                'delete' => 'CASCADE',
53
                'update' => 'CASCADE'
54
            ])
55
            ->create();
56
57
        $usersRoles = $this->table('acl_users_roles', ['id' => false, 'primary_key' => ['userId', 'roleId']]);
58
        $usersRoles
59
            ->addColumn('userId', 'integer')
60
            ->addColumn('roleId', 'integer')
61
            ->addForeignKey('userId', 'users', 'id', [
62
                'delete' => 'CASCADE',
63
                'update' => 'CASCADE'
64
            ])
65
            ->addForeignKey('roleId', $roles, 'id', [
66
                'delete' => 'CASCADE',
67
                'update' => 'CASCADE'
68
            ])
69
            ->create();
70
    }
71
}
72