Passed
Pull Request — master (#6824)
by
unknown
08:35
created

WorkflowsSettingsSchema::buildForm()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 66
Code Lines 41

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 41
nc 1
nop 1
dl 0
loc 66
rs 9.264
c 1
b 0
f 0

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 Sylius\Bundle\SettingsBundle\Schema\AbstractSettingsBuilder;
11
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
12
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
13
use Symfony\Component\Form\Extension\Core\Type\TextType;
14
use Symfony\Component\Form\FormBuilderInterface;
15
16
class WorkflowsSettingsSchema extends AbstractSettingsSchema
17
{
18
    public function buildSettings(AbstractSettingsBuilder $builder): void
19
    {
20
        $builder->setDefaults([
21
            // admin → workflows
22
            'plugin_redirection_enabled' => 'false',
23
            'usergroup_do_not_unsubscribe_users_from_course_nor_session_on_user_unsubscribe' => 'false',
24
            'usergroup_do_not_unsubscribe_users_from_course_on_course_unsubscribe' => 'false',
25
            'usergroup_do_not_unsubscribe_users_from_session_on_session_unsubscribe' => 'false',
26
            'drh_allow_access_to_all_students' => 'false',
27
28
            // announcement → workflows
29
            'send_all_emails_to' => '',
30
31
            // course → workflows
32
            'go_to_course_after_login' => 'false',
33
            'allow_users_to_create_courses' => 'false',
34
            'allow_user_course_subscription_by_course_admin' => 'true',
35
            'teacher_can_select_course_template' => 'true',
36
            'disabled_edit_session_coaches_course_editing_course' => 'false',
37
            'course_visibility_change_only_admin' => 'false',
38
39
            // platform → workflows
40
            'multiple_url_hide_disabled_settings' => 'false',
41
            'gamification_mode' => '',
42
            'load_term_conditions_section' => 'login',
43
            'update_student_expiration_x_date' => '',
44
            'user_number_of_days_for_default_expiration_date_per_role' => '',
45
            'user_edition_extra_field_to_check' => 'ExtrafieldLabel',
46
            'allow_working_time_edition' => 'false',
47
            'disable_user_conditions_sender_id' => '0',
48
            'redirect_index_to_url_for_logged_users' => '',
49
            'default_menu_entry_for_course_or_session' => 'my_courses',
50
            'session_admin_user_subscription_search_extra_field_to_search' => '',
51
        ]);
52
    }
53
54
    public function buildForm(FormBuilderInterface $builder): void
55
    {
56
        // admin → workflows
57
        $builder
58
            ->add('plugin_redirection_enabled', YesNoType::class, [
59
                // Nota: el título/descr. se ajusta vía SettingsInfo/translations.
60
            ])
61
            ->add('usergroup_do_not_unsubscribe_users_from_course_nor_session_on_user_unsubscribe', YesNoType::class)
62
            ->add('usergroup_do_not_unsubscribe_users_from_course_on_course_unsubscribe', YesNoType::class)
63
            ->add('usergroup_do_not_unsubscribe_users_from_session_on_session_unsubscribe', YesNoType::class)
64
            ->add('drh_allow_access_to_all_students', YesNoType::class)
65
66
            // announcement → workflows
67
            ->add('send_all_emails_to', TextareaType::class, [
68
                'attr' => ['rows' => 5, 'style' => 'font-family: monospace;'],
69
            ])
70
71
            // course → workflows
72
            ->add('go_to_course_after_login', YesNoType::class)
73
            ->add('allow_users_to_create_courses', YesNoType::class)
74
            ->add('allow_user_course_subscription_by_course_admin', YesNoType::class)
75
            ->add('teacher_can_select_course_template', YesNoType::class)
76
            ->add('disabled_edit_session_coaches_course_editing_course', YesNoType::class)
77
            ->add('course_visibility_change_only_admin', YesNoType::class)
78
79
            // platform → workflows
80
            ->add('multiple_url_hide_disabled_settings', YesNoType::class)
81
            ->add('gamification_mode', TextType::class)
82
            ->add(
83
                'load_term_conditions_section',
84
                ChoiceType::class,
85
                [
86
                    'choices' => [
87
                        'Login' => 'login',
88
                        'Course' => 'course',
89
                    ],
90
                ]
91
            )
92
            ->add('update_student_expiration_x_date', TextareaType::class)
93
            ->add('user_number_of_days_for_default_expiration_date_per_role', TextareaType::class)
94
            ->add('user_edition_extra_field_to_check', TextType::class)
95
            ->add('allow_working_time_edition', YesNoType::class)
96
            ->add('disable_user_conditions_sender_id', TextType::class)
97
            ->add('redirect_index_to_url_for_logged_users', TextType::class)
98
            ->add(
99
                'default_menu_entry_for_course_or_session',
100
                ChoiceType::class,
101
                [
102
                    'choices' => [
103
                        'My courses' => 'my_courses',
104
                        'My sessions' => 'my_sessions',
105
                    ],
106
                ]
107
            )
108
            ->add(
109
                'session_admin_user_subscription_search_extra_field_to_search',
110
                TextType::class,
111
                [
112
                    'required' => false,
113
                    'empty_data' => '',
114
                    'help' => 'User extra field key to use when searching and naming sessions from /admin-dashboard/register.',
115
                ]
116
            )
117
        ;
118
119
        $this->updateFormFieldsFromSettingsInfo($builder);
120
    }
121
}
122