Passed
Push — master ( b58c60...cd85be )
by Julito
08:44
created

Version20201215141131   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Importance

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

2 Methods

Rating   Name   Duplication   Size   Complexity  
A up() 0 49 5
A getDescription() 0 3 1
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
6
7
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
8
use Chamilo\CoreBundle\Repository\Node\AccessUrlRepository;
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\CLinkCategory;
13
use Chamilo\CourseBundle\Repository\CGroupRepository;
14
use Chamilo\CourseBundle\Repository\CLinkCategoryRepository;
15
use Chamilo\CourseBundle\Repository\CLinkRepository;
16
use Doctrine\DBAL\Connection;
17
use Doctrine\DBAL\Schema\Schema;
18
19
final class Version20201215141131 extends AbstractMigrationChamilo
20
{
21
    public function getDescription(): string
22
    {
23
        return 'Migrate c_link_category, c_link';
24
    }
25
26
    public function up(Schema $schema): void
27
    {
28
        $container = $this->getContainer();
29
        $doctrine = $container->get('doctrine');
30
        $em = $doctrine->getManager();
31
        /** @var Connection $connection */
32
        $connection = $em->getConnection();
33
34
        $urlRepo = $container->get(AccessUrlRepository::class);
35
        $linkRepo = $container->get(CLinkRepository::class);
36
        $linkCategoryRepo = $container->get(CLinkCategoryRepository::class);
37
        $courseRepo = $container->get(CourseRepository::class);
38
        $sessionRepo = $container->get(SessionRepository::class);
39
        $groupRepo = $container->get(CGroupRepository::class);
40
        $userRepo = $container->get(UserRepository::class);
41
42
        $admin = $this->getAdmin();
43
44
        $q = $em->createQuery('SELECT c FROM Chamilo\CoreBundle\Entity\Course c');
45
        foreach ($q->toIterable() as $course) {
46
            $counter = 1;
47
            $courseId = $course->getId();
48
            $course = $courseRepo->find($courseId);
49
50
            $sql = "SELECT * FROM c_link_category WHERE c_id = $courseId
51
                    ORDER BY iid";
52
            $result = $connection->executeQuery($sql);
53
            $items = $result->fetchAllAssociative();
54
            foreach ($items as $itemData) {
55
                $id = $itemData['iid'];
56
                /** @var CLinkCategory $event */
57
                $resource = $linkCategoryRepo->find($id);
58
                if ($resource->hasResourceNode()) {
59
                    continue;
60
                }
61
                $result = $this->fixItemProperty(
62
                    'link_category',
63
                    $linkCategoryRepo,
64
                    $course,
65
                    $admin,
66
                    $resource,
67
                    $course
68
                );
69
70
                if (false === $result) {
71
                    continue;
72
                }
73
                $em->persist($resource);
74
                $em->flush();
75
            }
76
        }
77
    }
78
}
79