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

Version20201215142610::up()   A

Complexity

Conditions 5
Paths 5

Size

Total Lines 46
Code Lines 33

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 33
c 1
b 0
f 0
nc 5
nop 1
dl 0
loc 46
rs 9.0808
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\CQuiz;
12
use Chamilo\CourseBundle\Repository\CGroupRepository;
13
use Chamilo\CourseBundle\Repository\CQuizRepository;
14
use Doctrine\DBAL\Connection;
15
use Doctrine\DBAL\Schema\Schema;
16
17
final class Version20201215142610 extends AbstractMigrationChamilo
18
{
19
    public function getDescription(): string
20
    {
21
        return 'Migrate c_quiz';
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
        $quizRepo = $container->get(CQuizRepository::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
40
        $q = $em->createQuery('SELECT c FROM Chamilo\CoreBundle\Entity\Course c');
41
        foreach ($q->toIterable() as $course) {
42
            $courseId = $course->getId();
43
            $course = $courseRepo->find($courseId);
44
45
            $sql = "SELECT * FROM c_quiz 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 CQuiz $resource */
52
                $resource = $quizRepo->find($id);
53
                if ($resource->hasResourceNode()) {
54
                    continue;
55
                }
56
                $result = $this->fixItemProperty(
57
                    'quiz',
58
                    $quizRepo,
59
                    $course,
60
                    $admin,
61
                    $resource,
62
                    $course
63
                );
64
                if (false === $result) {
65
                    continue;
66
                }
67
68
                $em->persist($resource);
69
                $em->flush();
70
71
                /*$sql = "SELECT q.* FROM c_quiz_question q
72
                        INNER JOIN c_quiz_rel_question cq
73
                        ON (q.iid = cq.exercice_id and q.c_id = cq.c_id)
74
                        WHERE q.c_id = $courseId AND exercice_id = $id
75
                        ORDER BY iid";
76
                $result = $connection->executeQuery($sql);
77
                $questions = $result->fetchAllAssociative();
78
                foreach ($questions as $questionData) {
79
                    $questionData[''];
80
                }
81
                $sql = "SELECT * FROM c_quiz_question WHERE c_id = $courseId
82
                        ORDER BY iid";
83
                $result = $connection->executeQuery($sql);
84
                $items = $result->fetchAllAssociative();
85
                foreach ($items as $itemData) {
86
                }*/
87
            }
88
        }
89
    }
90
}
91