Code Duplication    Length = 51-52 lines in 2 locations

src/OroCRM/Bundle/MagentoBundle/Migrations/Schema/v1_41_4/OroCRMMagentoBundle.php 1 location

@@ 9-59 (lines=51) @@
6
use Oro\Bundle\MigrationBundle\Migration\Migration;
7
use Oro\Bundle\MigrationBundle\Migration\QueryBag;
8
9
class OroCRMMagentoBundle implements Migration
10
{
11
    /**
12
     * Changes account_id to onDelete=CASCADE
13
     *
14
     * {@inheritdoc}
15
     */
16
    public function up(Schema $schema, QueryBag $queries)
17
    {
18
        $this->changeOnDeleteToCascade(
19
            $schema,
20
            [
21
                'orocrm_magento_customer' => ['account_id'],
22
            ]
23
        );
24
    }
25
26
    /**
27
     * @param Schema $schema
28
     * @param array $data
29
     * [
30
     *     table name => [column name, ...],
31
     *     ...
32
     * ]
33
     */
34
    protected function changeOnDeleteToCascade(Schema $schema, array $data)
35
    {
36
        foreach ($data as $tableName => $columns) {
37
            $table = $schema->getTable($tableName);
38
            foreach ($columns as $column) {
39
                $foreignKeys = $table->getForeignKeys();
40
                foreach ($foreignKeys as $foreignKey) {
41
                    $foreignKeyColumns = $foreignKey->getUnquotedLocalColumns();
42
                    if ($foreignKeyColumns === [$column]) {
43
                        if ($foreignKey->getOption('onDelete') !== 'CASCADE') {
44
                            $table->removeForeignKey($foreignKey->getName());
45
                            $table->addForeignKeyConstraint(
46
                                $foreignKey->getUnqualifiedForeignTableName(),
47
                                $foreignKeyColumns,
48
                                $foreignKey->getUnquotedForeignColumns(),
49
                                ['onDelete' => 'CASCADE', 'onUpdate' => $foreignKey->getOption('onUpdate')]
50
                            );
51
                        }
52
53
                        break;
54
                    }
55
                }
56
            }
57
        }
58
    }
59
}
60

src/OroCRM/Bundle/SalesBundle/Migrations/Schema/v1_25_5/OroCRMSalesBundle.php 1 location

@@ 9-60 (lines=52) @@
6
use Oro\Bundle\MigrationBundle\Migration\Migration;
7
use Oro\Bundle\MigrationBundle\Migration\QueryBag;
8
9
class OroCRMSalesBundle implements Migration
10
{
11
    /**
12
     * Changes account_id to onDelete=CASCADE
13
     *
14
     * {@inheritdoc}
15
     */
16
    public function up(Schema $schema, QueryBag $queries)
17
    {
18
        $this->changeOnDeleteToCascade(
19
            $schema,
20
            [
21
                'orocrm_sales_b2bcustomer' => ['account_id'],
22
                'orocrm_sales_opportunity' => ['customer_id'],
23
            ]
24
        );
25
    }
26
27
    /**
28
     * @param Schema $schema
29
     * @param array $data
30
     * [
31
     *     table name => [column name, ...],
32
     *     ...
33
     * ]
34
     */
35
    protected function changeOnDeleteToCascade(Schema $schema, array $data)
36
    {
37
        foreach ($data as $tableName => $columns) {
38
            $table = $schema->getTable($tableName);
39
            foreach ($columns as $column) {
40
                $foreignKeys = $table->getForeignKeys();
41
                foreach ($foreignKeys as $foreignKey) {
42
                    $foreignKeyColumns = $foreignKey->getUnquotedLocalColumns();
43
                    if ($foreignKeyColumns === [$column]) {
44
                        if ($foreignKey->getOption('onDelete') !== 'CASCADE') {
45
                            $table->removeForeignKey($foreignKey->getName());
46
                            $table->addForeignKeyConstraint(
47
                                $foreignKey->getUnqualifiedForeignTableName(),
48
                                $foreignKeyColumns,
49
                                $foreignKey->getUnquotedForeignColumns(),
50
                                ['onDelete' => 'CASCADE', 'onUpdate' => $foreignKey->getOption('onUpdate')]
51
                            );
52
                        }
53
54
                        break;
55
                    }
56
                }
57
            }
58
        }
59
    }
60
}
61