Passed
Push — master ( 702f24...55adc1 )
by Yannick
09:28
created

ProfileSettingsSchema::settingArrayHelpValue()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 69
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 13
c 0
b 0
f 0
nc 2
nop 1
dl 0
loc 69
rs 9.8333

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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\Extension\Core\Type\TextType;
15
use Symfony\Component\Form\FormBuilderInterface;
16
17
class ProfileSettingsSchema extends AbstractSettingsSchema
18
{
19
    public function buildSettings(AbstractSettingsBuilder $builder): void
20
    {
21
        $builder
22
            ->setDefaults([
23
                'changeable_options' => ['name', 'officialcode', 'email', 'picture', 'login', 'password', 'language', 'phone', 'theme'],
24
                'extended_profile' => 'false',
25
                'account_valid_duration' => '3660',
26
                'split_users_upload_directory' => 'true',
27
                'user_selected_theme' => 'false',
28
                'use_users_timezone' => 'true',
29
                'allow_users_to_change_email_with_no_password' => 'false',
30
                'login_is_email' => 'false',
31
                'profiling_filter_adding_users' => '',
32
                'enable_profile_user_address_geolocalization' => '',
33
                'allow_show_skype_account' => '',
34
                'allow_show_linkedin_url' => '',
35
                'hide_username_with_complete_name' => 'false',
36
                'hide_username_in_course_chat' => 'false',
37
                'show_official_code_whoisonline' => 'false',
38
                'allow_career_diagram' => 'false',
39
                'disable_change_user_visibility_for_public_courses' => 'true',
40
                'my_space_users_items_per_page' => '10',
41
                'add_user_course_information_in_mailto' => 'false',
42
                'pass_reminder_custom_link' => '',
43
                'registration_add_helptext_for_2_names' => 'false',
44
                'disable_gdpr' => 'true',
45
                'data_protection_officer_name' => '',
46
                'data_protection_officer_role' => '',
47
                'data_protection_officer_email' => '',
48
                'hide_user_field_from_list' => '',
49
                'send_notification_when_user_added' => '',
50
                'show_conditions_to_user' => '',
51
                'allow_teachers_to_classes' => 'false',
52
                'profile_fields_visibility' => '',
53
                'user_import_settings' => '',
54
                'user_search_on_extra_fields' => '',
55
                'allow_career_users' => 'false',
56
                'community_managers_user_list' => '',
57
                'allow_social_map_fields' => '',
58
                'career_diagram_legend' => 'false',
59
                'career_diagram_disclaimer' => 'false',
60
                'linkedin_organization_id' => 'false',
61
                'visible_options' => ['name', 'officialcode', 'email', 'picture', 'login', 'password', 'language', 'phone', 'theme'],
62
            ])
63
            ->setTransformer('changeable_options', new ArrayToIdentifierTransformer())
64
            ->setTransformer('visible_options', new ArrayToIdentifierTransformer())
65
        ;
66
67
        $allowedTypes = [
68
            'changeable_options' => ['array'],
69
            'visible_options' => ['array'],
70
            'account_valid_duration' => ['string'],
71
        ];
72
        $this->setMultipleAllowedTypes($allowedTypes, $builder);
73
    }
74
75
    public function buildForm(FormBuilderInterface $builder): void
76
    {
77
        $builder
78
            ->add('changeable_options', ChoiceType::class, [
79
                'multiple' => true,
80
                'choices' => [
81
                    'Name' => 'name',
82
                    'Official code' => 'officialcode',
83
                    'E-mail' => 'email',
84
                    'Picture' => 'picture',
85
                    'Login' => 'login',
86
                    'Password' => 'password',
87
                    'Language' => 'language',
88
                    'Phone' => 'phone',
89
                    'Theme' => 'theme',
90
                ],
91
            ])
92
            ->add('visible_options', ChoiceType::class, [
93
                'multiple' => true,
94
                'choices' => [
95
                    'Name' => 'name',
96
                    'Official code' => 'officialcode',
97
                    'E-mail' => 'email',
98
                    'Picture' => 'picture',
99
                    'Login' => 'login',
100
                    'Password' => 'password',
101
                    'Language' => 'language',
102
                    'Phone' => 'phone',
103
                    'Theme' => 'theme',
104
                ],
105
            ])
106
            ->add('extended_profile', YesNoType::class)
107
            ->add('account_valid_duration')
108
            ->add('split_users_upload_directory', YesNoType::class)
109
            ->add('user_selected_theme', YesNoType::class)
110
            ->add('use_users_timezone', YesNoType::class)
111
            ->add('allow_users_to_change_email_with_no_password', YesNoType::class)
112
            ->add('login_is_email', YesNoType::class, [
113
                'label' => 'LoginIsEmailTitle',
114
            ])
115
            ->add('profiling_filter_adding_users', YesNoType::class)
116
            ->add('enable_profile_user_address_geolocalization', YesNoType::class)
117
            ->add('allow_show_skype_account', YesNoType::class)
118
            ->add('allow_show_linkedin_url', YesNoType::class)
119
            ->add('hide_username_with_complete_name', YesNoType::class)
120
            ->add('hide_username_in_course_chat', YesNoType::class)
121
            ->add('show_official_code_whoisonline', YesNoType::class)
122
            ->add('allow_career_diagram', YesNoType::class)
123
            ->add('disable_change_user_visibility_for_public_courses', YesNoType::class)
124
            ->add('my_space_users_items_per_page', TextType::class)
125
            ->add('add_user_course_information_in_mailto', YesNoType::class)
126
            ->add('pass_reminder_custom_link', TextType::class)
127
            ->add('registration_add_helptext_for_2_names', YesNoType::class)
128
            ->add('disable_gdpr', YesNoType::class)
129
            ->add('data_protection_officer_name', TextType::class)
130
            ->add('data_protection_officer_role', TextType::class)
131
            ->add('data_protection_officer_email', TextType::class)
132
            ->add('hide_user_field_from_list', TextareaType::class)
133
            ->add('send_notification_when_user_added', TextareaType::class)
134
            ->add('show_conditions_to_user', TextareaType::class)
135
            ->add('allow_teachers_to_classes', YesNoType::class)
136
            ->add('profile_fields_visibility', TextareaType::class)
137
            ->add('user_import_settings', TextareaType::class)
138
            ->add('user_search_on_extra_fields', TextareaType::class)
139
            ->add('allow_career_users', YesNoType::class)
140
            ->add('community_managers_user_list', TextareaType::class)
141
            ->add('allow_social_map_fields', TextareaType::class)
142
            ->add('career_diagram_legend', YesNoType::class)
143
            ->add('career_diagram_disclaimer', YesNoType::class)
144
            ->add('linkedin_organization_id', YesNoType::class)
145
        ;
146
147
        $this->updateFormFieldsFromSettingsInfo($builder);
148
    }
149
}
150