Passed
Pull Request — master (#6448)
by
unknown
08:18
created

DocumentSettingsSchema::settingArrayHelpValue()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 29
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 7
nc 2
nop 1
dl 0
loc 29
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\Settings;
8
9
use Chamilo\CoreBundle\Form\Type\YesNoType;
10
use Chamilo\CoreBundle\Transformer\ArrayToIdentifierTransformer;
11
use Sylius\Bundle\SettingsBundle\Schema\AbstractSettingsBuilder;
12
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
13
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
14
use Symfony\Component\Form\FormBuilderInterface;
15
16
class DocumentSettingsSchema extends AbstractSettingsSchema
17
{
18
    public function buildSettings(AbstractSettingsBuilder $builder): void
19
    {
20
        $builder
21
            ->setDefaults([
22
                'default_document_quotum' => '1000',
23
                'default_group_quotum' => '250',
24
                'permanently_remove_deleted_files' => 'false',
25
                'upload_extensions_list_type' => 'blacklist',
26
                'upload_extensions_blacklist' => '',
27
                'upload_extensions_whitelist' => 'htm;html;jpg;jpeg;gif;png;swf;avi;mpg;mpeg;mov;flv;doc;docx;xls;xlsx;ppt;pptx;odt;odp;ods;pdf;webm;oga;ogg;ogv;h264',
28
                'upload_extensions_skip' => 'true',
29
                'upload_extensions_replace_by' => 'dangerous',
30
                'permissions_for_new_directories' => '0770',
31
                'permissions_for_new_files' => '0660',
32
                'show_glossary_in_documents' => 'none',
33
                'students_download_folders' => 'true',
34
                'users_copy_files' => 'true',
35
                'pdf_export_watermark_enable' => 'false',
36
                'pdf_export_watermark_by_course' => 'false',
37
                'pdf_export_watermark_text' => '',
38
                'students_export2pdf' => 'true',
39
                'show_users_folders' => 'true',
40
                'show_default_folders' => 'true',
41
                'show_documents_preview' => 'false',
42
                'enable_webcam_clip' => 'false',
43
                'tool_visible_by_default_at_creation' => [
44
                    'documents',
45
                    'learning_path',
46
                    'links',
47
                    'announcements',
48
                    'forums',
49
                    'quiz',
50
                    'gradebook',
51
                ],
52
                'documents_default_visibility_defined_in_course' => 'false',
53
                'send_notification_when_document_added' => 'false',
54
                'thematic_pdf_orientation' => 'landscape',
55
                'certificate_pdf_orientation' => 'landscape',
56
                'allow_general_certificate' => 'false',
57
                'group_document_access' => 'false',
58
                'group_category_document_access' => 'false',
59
                'allow_compilatio_tool' => 'false',
60
                'compilatio_tool' => '',
61
                'documents_hide_download_icon' => 'false',
62
                'enable_x_sendfile_headers' => 'false',
63
                'documents_custom_cloud_link_list' => '',
64
            ])
65
            ->setTransformer(
66
                'tool_visible_by_default_at_creation',
67
                new ArrayToIdentifierTransformer()
68
            );
69
70
        $allowedTypes = [
71
            'tool_visible_by_default_at_creation' => ['array'],
72
            'default_document_quotum' => ['string'],
73
            'default_group_quotum' => ['string'],
74
        ];
75
76
        $this->setMultipleAllowedTypes($allowedTypes, $builder);
77
    }
78
79
    public function buildForm(FormBuilderInterface $builder): void
80
    {
81
        $builder
82
            ->add('default_document_quotum')
83
            ->add('default_group_quotum')
84
            ->add('permanently_remove_deleted_files', YesNoType::class)
85
            ->add('upload_extensions_list_type', ChoiceType::class, [
86
                'choices' => [
87
                    'Black list' => 'blacklist',
88
                    'White list' => 'whitelist',
89
                ],
90
            ])
91
            ->add('upload_extensions_blacklist', TextareaType::class, [
92
                'attr' => ['rows' => 3, 'style' => 'font-family: monospace;'],
93
            ])
94
            ->add('upload_extensions_whitelist', TextareaType::class, [
95
                'attr' => ['rows' => 3, 'style' => 'font-family: monospace;'],
96
            ])
97
            ->add('upload_extensions_skip', TextareaType::class, [
98
                'attr' => ['rows' => 3, 'style' => 'font-family: monospace;'],
99
            ])
100
            ->add('upload_extensions_replace_by', TextareaType::class, [
101
                'attr' => ['rows' => 3, 'style' => 'font-family: monospace;'],
102
            ])
103
            ->add('permissions_for_new_directories')
104
            ->add('permissions_for_new_files')
105
            ->add('show_glossary_in_documents', ChoiceType::class, [
106
                'choices' => [
107
                    'Show glossary in documents is none' => 'none',
108
                    'Show glossary in documents is manual' => 'ismanual',
109
                    'Show glossary in documents is automatic' => 'isautomatic',
110
                ],
111
            ])
112
            ->add('students_download_folders', YesNoType::class)
113
            ->add('users_copy_files', YesNoType::class)
114
            ->add('pdf_export_watermark_enable', YesNoType::class)
115
            ->add('pdf_export_watermark_by_course', YesNoType::class)
116
            ->add('pdf_export_watermark_text', TextareaType::class, [
117
                'attr' => ['rows' => 3, 'style' => 'font-family: monospace;'],
118
            ])
119
            ->add('students_export2pdf', YesNoType::class)
120
            ->add('show_users_folders', YesNoType::class)
121
            ->add('show_default_folders', YesNoType::class)
122
            ->add('show_documents_preview', YesNoType::class)
123
            ->add('enable_webcam_clip', YesNoType::class)
124
            ->add('tool_visible_by_default_at_creation', ChoiceType::class, [
125
                'multiple' => true,
126
                'choices' => [
127
                    'Documents' => 'documents',
128
                    'LearningPath' => 'learning_path',
129
                    'Links' => 'links',
130
                    'Announcements' => 'announcements',
131
                    'Forums' => 'forums',
132
                    'Quiz' => 'quiz',
133
                    'Gradebook' => 'gradebook',
134
                ],
135
            ])
136
            ->add('send_notification_when_document_added', YesNoType::class)
137
            ->add('thematic_pdf_orientation', ChoiceType::class, [
138
                'choices' => [
139
                    'Portrait' => 'portrait',
140
                    'Landscape' => 'landscape',
141
                ],
142
            ])
143
            ->add('certificate_pdf_orientation', ChoiceType::class, [
144
                'choices' => [
145
                    'Portrait' => 'portrait',
146
                    'Landscape' => 'landscape',
147
                ],
148
            ])
149
            ->add('allow_general_certificate', YesNoType::class)
150
            ->add('group_document_access', YesNoType::class)
151
            ->add('group_category_document_access', YesNoType::class)
152
            ->add('allow_compilatio_tool', YesNoType::class)
153
            ->add('compilatio_tool', TextareaType::class, [
154
                'attr' => ['rows' => 8, 'style' => 'font-family: monospace;'],
155
            ])
156
            ->add('documents_hide_download_icon', YesNoType::class)
157
            ->add('enable_x_sendfile_headers', YesNoType::class)
158
            ->add('documents_custom_cloud_link_list', TextareaType::class, [
159
                'attr' => ['rows' => 3, 'style' => 'font-family: monospace;'],
160
            ]);
161
162
        $this->updateFormFieldsFromSettingsInfo($builder);
163
    }
164
}
165