Passed
Pull Request — master (#6835)
by Angel Fernando Quiroz
09:54
created

Version20250927180000   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 81
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 45
c 1
b 0
f 0
dl 0
loc 81
rs 10
wmc 11

1 Method

Rating   Name   Duplication   Size   Complexity  
F up() 0 76 11
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
declare(strict_types=1);
6
7
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
8
9
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
10
use Doctrine\DBAL\Schema\Schema;
11
12
class Version20250927180000 extends AbstractMigrationChamilo
13
{
14
    /**
15
     * @inheritDoc
16
     */
17
    public function up(Schema $schema): void
18
    {
19
        $tblPortfolioRelTag = $schema->getTable('portfolio_rel_tag');
20
        $tblPortfolio = $schema->getTable('portfolio');
21
        $tblPortfolioCategory = $schema->getTable('portfolio_category');
22
23
        if ($tblPortfolioRelTag->hasForeignKey('FK_DB73447291D79BD3')) {
24
            $this->addSql("ALTER TABLE portfolio_rel_tag DROP FOREIGN KEY FK_DB73447291D79BD3");
25
        }
26
27
        if ($tblPortfolioRelTag->hasForeignKey('FK_DB734472BAD26311')) {
28
            $this->addSql("ALTER TABLE portfolio_rel_tag DROP FOREIGN KEY FK_DB734472BAD26311");
29
        }
30
31
        if ($tblPortfolioRelTag->hasForeignKey('FK_DB734472613FECDF')) {
32
            $this->addSql("ALTER TABLE portfolio_rel_tag DROP FOREIGN KEY FK_DB734472613FECDF");
33
        }
34
35
        $this->addSql("DELETE FROM portfolio_rel_tag WHERE c_id NOT IN (SELECT id FROM course)");
36
        $this->addSql("DELETE FROM portfolio_rel_tag WHERE session_id NOT IN (SELECT id FROM session)");
37
38
        $this->addSql("ALTER TABLE portfolio_rel_tag ADD CONSTRAINT FK_DB73447291D79BD3 FOREIGN KEY (c_id) REFERENCES course (id)");
39
        $this->addSql("ALTER TABLE portfolio_rel_tag ADD CONSTRAINT FK_DB734472BAD26311 FOREIGN KEY (tag_id) REFERENCES tag (id)");
40
        $this->addSql("ALTER TABLE portfolio_rel_tag ADD CONSTRAINT FK_DB734472613FECDF FOREIGN KEY (session_id) REFERENCES session (id)");
41
42
        $this->addSql("ALTER TABLE portfolio_category CHANGE title title LONGTEXT NOT NULL, CHANGE parent_id parent_id INT DEFAULT NULL");
43
        $this->addSql("UPDATE portfolio_category SET parent_id = NULL WHERE parent_id NOT IN (SELECT id FROM portfolio_category)");
44
45
        if (!$tblPortfolioCategory->hasForeignKey('FK_7AC64359727ACA70')) {
46
            $this->addSql("ALTER TABLE portfolio_category ADD CONSTRAINT FK_7AC64359727ACA70 FOREIGN KEY (parent_id) REFERENCES portfolio_category (id) ON DELETE SET NULL");
47
        }
48
49
        if (!$tblPortfolioCategory->hasIndex('IDX_7AC64359727ACA70')) {
50
            $this->addSql("CREATE INDEX IDX_7AC64359727ACA70 ON portfolio_category (parent_id)");
51
        }
52
53
        $this->addSql("ALTER TABLE portfolio_comment ADD resource_node_id INT DEFAULT NULL");
54
        $this->addSql("ALTER TABLE portfolio_comment ADD CONSTRAINT FK_C2C17DA21BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE");
55
        $this->addSql("CREATE UNIQUE INDEX UNIQ_C2C17DA21BAD783F ON portfolio_comment (resource_node_id)");
56
57
        $this->addSql("ALTER TABLE portfolio ADD resource_node_id INT DEFAULT NULL, CHANGE title title LONGTEXT NOT NULL");
58
        $this->addSql("ALTER TABLE portfolio ADD CONSTRAINT FK_A9ED10621BAD783F FOREIGN KEY (resource_node_id) REFERENCES resource_node (id) ON DELETE CASCADE");
59
        $this->addSql("CREATE UNIQUE INDEX UNIQ_A9ED10621BAD783F ON portfolio (resource_node_id)");
60
61
        if ($tblPortfolio->hasForeignKey('FK_A9ED106212469DE2')) {
62
            $this->addSql('ALTER TABLE portfolio DROP FOREIGN KEY FK_A9ED106212469DE2');
63
        }
64
65
        $this->addSql('UPDATE portfolio SET category_id = NULL WHERE category_id NOT IN (SELECT id FROM portfolio_category)');
66
        $this->addSql('ALTER TABLE portfolio ADD CONSTRAINT FK_A9ED106212469DE2 FOREIGN KEY (category_id) REFERENCES portfolio_category (id) ON DELETE SET NULL');
67
68
        if (!$tblPortfolio->hasColumn('duplicated_from')) {
69
            $this->addSql('ALTER TABLE portfolio ADD duplicated_from INT DEFAULT NULL');
70
            $this->addSql('ALTER TABLE portfolio ADD CONSTRAINT FK_A9ED1062FC4CB679 FOREIGN KEY (duplicated_from) REFERENCES portfolio (id) ON DELETE SET NULL');
71
            $this->addSql("CREATE INDEX IDX_A9ED1062FC4CB679 ON portfolio (duplicated_from)");
72
        } else {
73
            $this->addSql('UPDATE portfolio SET duplicated_from = NULL WHERE duplicated_from NOT IN (SELECT id FROM portfolio)');;
74
        }
75
76
        if ($tblPortfolio->hasColumn('is_visible')) {
77
            $this->addSql('ALTER TABLE portfolio CHANGE is_visible visibility SMALLINT DEFAULT 1 NOT NULL');
78
        }
79
80
        if ($tblPortfolio->hasForeignKey('FK_A9ED106291D79BD3')) {
81
            $this->addSql("ALTER TABLE portfolio DROP FOREIGN KEY FK_A9ED106291D79BD3");
82
            //borrar columna c_id
83
        }
84
85
        $this->addSql("ALTER TABLE portfolio ADD CONSTRAINT FK_A9ED106291D79BD3 FOREIGN KEY (c_id) REFERENCES course (id)");
86
87
        if ($tblPortfolio->hasForeignKey('FK_A9ED1062613FECDF')) {
88
            $this->addSql("ALTER TABLE portfolio DROP FOREIGN KEY FK_A9ED1062613FECDF");
89
            //borrar columna session_id
90
        }
91
92
        $this->addSql("ALTER TABLE portfolio ADD CONSTRAINT FK_A9ED1062613FECDF FOREIGN KEY (session_id) REFERENCES session (id)");
93
    }
94
}
95