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

Version20201216122012   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 95
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 58
c 2
b 0
f 0
dl 0
loc 95
rs 10
wmc 9

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getDescription() 0 3 1
B up() 0 88 8
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\CLp;
13
use Chamilo\CourseBundle\Entity\CLpCategory;
14
use Chamilo\CourseBundle\Repository\CGroupRepository;
15
use Chamilo\CourseBundle\Repository\CLpCategoryRepository;
16
use Chamilo\CourseBundle\Repository\CLpRepository;
17
use Doctrine\DBAL\Connection;
18
use Doctrine\DBAL\Schema\Schema;
19
20
final class Version20201216122012 extends AbstractMigrationChamilo
21
{
22
    public function getDescription(): string
23
    {
24
        return 'Migrate c_lp, c_lp_category';
25
    }
26
27
    public function up(Schema $schema): void
28
    {
29
        $container = $this->getContainer();
30
        $doctrine = $container->get('doctrine');
31
        $em = $doctrine->getManager();
32
        /** @var Connection $connection */
33
        $connection = $em->getConnection();
34
35
        $lpCategoryRepo = $container->get(CLpCategoryRepository::class);
36
        $lpRepo = $container->get(CLpRepository::class);
37
38
        $courseRepo = $container->get(CourseRepository::class);
39
        $sessionRepo = $container->get(SessionRepository::class);
40
        $groupRepo = $container->get(CGroupRepository::class);
41
        $userRepo = $container->get(UserRepository::class);
42
43
        $admin = $this->getAdmin();
44
45
        $q = $em->createQuery('SELECT c FROM Chamilo\CoreBundle\Entity\Course c');
46
        /** @var Course $course */
47
        foreach ($q->toIterable() as $course) {
48
            $courseId = $course->getId();
49
            $course = $courseRepo->find($courseId);
50
51
            // c_lp_category.
52
            $sql = "SELECT * FROM c_lp_category WHERE c_id = $courseId
53
                    ORDER BY iid";
54
            $result = $connection->executeQuery($sql);
55
            $items = $result->fetchAllAssociative();
56
            foreach ($items as $itemData) {
57
                $id = $itemData['iid'];
58
                /** @var CLpCategory $resource */
59
                $resource = $lpCategoryRepo->find($id);
60
                if ($resource->hasResourceNode()) {
61
                    continue;
62
                }
63
64
                $result = $this->fixItemProperty(
65
                    'learnpath_category',
66
                    $lpCategoryRepo,
67
                    $course,
68
                    $admin,
69
                    $resource,
70
                    $course
71
                );
72
73
                if (false === $result) {
74
                    continue;
75
                }
76
77
                $em->persist($resource);
78
                $em->flush();
79
            }
80
81
            $em->flush();
82
            $em->clear();
83
84
            // c_lp.
85
            $sql = "SELECT * FROM c_lp WHERE c_id = $courseId
86
                    ORDER BY iid";
87
            $result = $connection->executeQuery($sql);
88
            $items = $result->fetchAllAssociative();
89
            foreach ($items as $itemData) {
90
                $id = $itemData['iid'];
91
92
                /** @var CLp $resource */
93
                $resource = $lpRepo->find($id);
94
                if ($resource->hasResourceNode()) {
95
                    continue;
96
                }
97
98
                $course = $courseRepo->find($courseId);
99
100
                $result = $this->fixItemProperty(
101
                    'learnpath',
102
                    $lpRepo,
103
                    $course,
104
                    $admin,
105
                    $resource,
106
                    $course
107
                );
108
109
                if (false === $result) {
110
                    continue;
111
                }
112
113
                $em->persist($resource);
114
                $em->flush();
115
            }
116
        }
117
    }
118
}
119