Passed
Push — master ( b9a35c...ab20b0 )
by Julito
15:41
created

Version20201216105331   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 41
c 1
b 0
f 0
dl 0
loc 67
rs 10
wmc 6

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getDescription() 0 3 1
B up() 0 60 5
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
6
7
use Chamilo\CoreBundle\Entity\Course;
8
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
9
use Chamilo\CoreBundle\Repository\Node\CourseRepository;
10
use Chamilo\CoreBundle\Repository\Node\UserRepository;
11
use Chamilo\CoreBundle\Repository\SessionRepository;
12
use Chamilo\CourseBundle\Entity\CThematic;
13
use Chamilo\CourseBundle\Entity\CThematicAdvance;
14
use Chamilo\CourseBundle\Entity\CThematicPlan;
15
use Chamilo\CourseBundle\Repository\CGroupRepository;
16
use Chamilo\CourseBundle\Repository\CThematicAdvanceRepository;
17
use Chamilo\CourseBundle\Repository\CThematicPlanRepository;
18
use Chamilo\CourseBundle\Repository\CThematicRepository;
19
use Chamilo\Kernel;
20
use Doctrine\DBAL\Connection;
21
use Doctrine\DBAL\Schema\Schema;
22
23
final class Version20201216105331 extends AbstractMigrationChamilo
24
{
25
    public function getDescription(): string
26
    {
27
        return 'Migrate c_thematic, c_thematic_advance, c_thematic_plan';
28
    }
29
30
    public function up(Schema $schema): void
31
    {
32
        $container = $this->getContainer();
33
        $doctrine = $container->get('doctrine');
34
        $em = $doctrine->getManager();
35
        /** @var Connection $connection */
36
        $connection = $em->getConnection();
37
38
        $thematicRepo = $container->get(CThematicRepository::class);
39
        $thematicAdvanceRepo = $container->get(CThematicAdvanceRepository::class);
40
        $thematicPlanRepo = $container->get(CThematicPlanRepository::class);
41
        $courseRepo = $container->get(CourseRepository::class);
42
        $sessionRepo = $container->get(SessionRepository::class);
43
        $groupRepo = $container->get(CGroupRepository::class);
44
        $userRepo = $container->get(UserRepository::class);
45
46
        /** @var Kernel $kernel */
47
        $kernel = $container->get('kernel');
48
        $rootPath = $kernel->getProjectDir();
49
        $admin = $this->getAdmin();
50
51
        $q = $em->createQuery('SELECT c FROM Chamilo\CoreBundle\Entity\Course c');
52
        /** @var Course $course */
53
        foreach ($q->toIterable() as $course) {
54
            $courseId = $course->getId();
55
56
            // c_thematic.
57
            $sql = "SELECT * FROM c_thematic WHERE c_id = $courseId
58
                    ORDER BY iid";
59
            $result = $connection->executeQuery($sql);
60
            $items = $result->fetchAllAssociative();
61
            foreach ($items as $itemData) {
62
                $id = $itemData['iid'];
63
                /** @var CThematic $resource */
64
                $resource = $thematicRepo->find($id);
65
                if ($resource->hasResourceNode()) {
66
                    continue;
67
                }
68
69
                $course = $courseRepo->find($courseId);
70
71
                $result = $this->fixItemProperty(
72
                    'thematic',
73
                    $thematicRepo,
74
                    $course,
75
                    $admin,
76
                    $resource,
77
                    $course
78
                );
79
80
                if (false === $result) {
81
                    continue;
82
                }
83
84
                $em->persist($resource);
85
                $em->flush();
86
            }
87
88
            $em->flush();
89
            $em->clear();
90
91
            // c_thematic_advance.
92
            /*$sql = "SELECT * FROM c_thematic_advance WHERE c_id = $courseId
93
                    ORDER BY iid";
94
            $result = $connection->executeQuery($sql);
95
            $items = $result->fetchAllAssociative();
96
            foreach ($items as $itemData) {
97
                $id = $itemData['iid'];
98
                // @var CThematicAdvance $resource
99
                $resource = $thematicAdvanceRepo->find($id);
100
                if ($resource->hasResourceNode()) {
101
                    continue;
102
                }
103
104
                $course = $courseRepo->find($courseId);
105
                $result = $this->fixItemProperty(
106
                    'thematic_advance',
107
                    $thematicAdvanceRepo,
108
                    $course,
109
                    $admin,
110
                    $resource,
111
                    $course
112
                );
113
114
                if (false === $result) {
115
                    continue;
116
                }
117
118
                $em->persist($resource);
119
                $em->flush();
120
            }
121
122
            $em->flush();
123
            $em->clear();*/
124
125
            // c_thematic_plan.
126
            /*$sql = "SELECT * FROM c_thematic_plan WHERE c_id = $courseId
127
                    ORDER BY iid";
128
            $result = $connection->executeQuery($sql);
129
            $items = $result->fetchAllAssociative();
130
            foreach ($items as $itemData) {
131
                $id = $itemData['iid'];
132
                // @var CThematicPlan $resource
133
                $resource = $thematicPlanRepo->find($id);
134
                if ($resource->hasResourceNode()) {
135
                    continue;
136
                }
137
                $result = $this->fixItemProperty(
138
                    'thematic_plan',
139
                    $thematicPlanRepo,
140
                    $course,
141
                    $admin,
142
                    $resource,
143
                    $course
144
                );
145
146
                if (false === $result) {
147
                    continue;
148
                }
149
150
                $em->persist($resource);
151
                $em->flush();
152
            }
153
            $em->flush();
154
            $em->clear();*/
155
        }
156
    }
157
}
158