Passed
Pull Request — master (#6396)
by Angel Fernando Quiroz
08:39
created

PageHelper::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
declare(strict_types=1);
6
7
namespace Chamilo\CoreBundle\Helpers;
8
9
use Chamilo\CoreBundle\Entity\AccessUrl;
10
use Chamilo\CoreBundle\Entity\Page;
11
use Chamilo\CoreBundle\Entity\PageCategory;
12
use Chamilo\CoreBundle\Entity\User;
13
use Chamilo\CoreBundle\Repository\PageCategoryRepository;
14
use Chamilo\CoreBundle\Repository\PageRepository;
15
16
class PageHelper
17
{
18
    protected PageRepository $pageRepository;
19
    protected PageCategoryRepository $pageCategoryRepository;
20
21
    public function __construct(PageRepository $pageRepository, PageCategoryRepository $pageCategoryRepository)
22
    {
23
        $this->pageRepository = $pageRepository;
24
        $this->pageCategoryRepository = $pageCategoryRepository;
25
    }
26
27
    public function createDefaultPages(User $user, AccessUrl $url, string $locale): bool
28
    {
29
        $categories = $this->pageCategoryRepository->findAll();
30
31
        if (!empty($categories)) {
32
            return false;
33
        }
34
35
        $category = (new PageCategory())
36
            ->setTitle('home')
37
            ->setType('grid')
38
            ->setCreator($user)
39
        ;
40
        $this->pageCategoryRepository->update($category);
41
42
        $indexCategory = (new PageCategory())
43
            ->setTitle('index')
44
            ->setType('grid')
45
            ->setCreator($user)
46
        ;
47
        $this->pageCategoryRepository->update($indexCategory);
48
49
        $indexCategory = (new PageCategory())
50
            ->setTitle('faq')
51
            ->setType('grid')
52
            ->setCreator($user)
53
        ;
54
        $this->pageCategoryRepository->update($indexCategory);
55
56
        $indexCategory = (new PageCategory())
57
            ->setTitle('demo')
58
            ->setType('grid')
59
            ->setCreator($user)
60
        ;
61
        $this->pageCategoryRepository->update($indexCategory);
62
63
        $page = (new Page())
64
            ->setTitle('Welcome')
65
            ->setContent('Welcome to Chamilo')
66
            ->setCategory($category)
67
            ->setCreator($user)
68
            ->setLocale($locale)
69
            ->setEnabled(true)
70
            ->setUrl($url)
71
        ;
72
73
        $this->pageRepository->update($page);
74
75
        $indexPage = (new Page())
76
            ->setTitle('Welcome')
77
            ->setContent('<img src="/img/document/images/mr_chamilo/svg/teaching.svg" />')
78
            ->setCategory($indexCategory)
79
            ->setCreator($user)
80
            ->setLocale($locale)
81
            ->setEnabled(true)
82
            ->setUrl($url)
83
        ;
84
        $this->pageRepository->update($indexPage);
85
86
        $footerPublicCategory = (new PageCategory())
87
            ->setTitle('footer_public')
88
            ->setType('grid')
89
            ->setCreator($user)
90
        ;
91
92
        $this->pageCategoryRepository->update($footerPublicCategory);
93
94
        $footerPrivateCategory = (new PageCategory())
95
            ->setTitle('footer_private')
96
            ->setType('grid')
97
            ->setCreator($user)
98
        ;
99
100
        $this->pageCategoryRepository->update($footerPrivateCategory);
101
102
        // Categories for extra content in admin blocks
103
104
        foreach (self::getCategoriesForAdminBlocks() as $nameBlock) {
105
            $usersAdminBlock = (new PageCategory())
106
                ->setTitle($nameBlock)
107
                ->setType('grid')
108
                ->setCreator($user)
109
            ;
110
            $this->pageCategoryRepository->update($usersAdminBlock);
111
        }
112
113
        $publicCategory = (new PageCategory())
114
            ->setTitle('public')
115
            ->setType('grid')
116
            ->setCreator($user)
117
        ;
118
119
        $this->pageCategoryRepository->update($publicCategory);
120
121
        $introductionCategory = (new PageCategory())
122
            ->setTitle('introduction')
123
            ->setType('grid')
124
            ->setCreator($user)
125
        ;
126
        $this->pageCategoryRepository->update($introductionCategory);
127
128
        return true;
129
    }
130
131
    public static function getCategoriesForAdminBlocks(): array
132
    {
133
        return [
134
            'block-admin-users',
135
            'block-admin-courses',
136
            'block-admin-sessions',
137
            'block-admin-gradebook',
138
            'block-admin-skills',
139
            'block-admin-privacy',
140
            'block-admin-settings',
141
            'block-admin-platform',
142
            'block-admin-chamilo',
143
        ];
144
    }
145
}
146