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

Version20201215135838   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Importance

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

2 Methods

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