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

ExerciseSettingsSchema::settingArrayHelpValue()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 95
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 11
nc 2
nop 1
dl 0
loc 95
rs 9.9
c 0
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 ExerciseSettingsSchema extends AbstractSettingsSchema
17
{
18
    public function buildSettings(AbstractSettingsBuilder $builder): void
19
    {
20
        $builder->setDefaults([
21
            'exercise_min_score' => '0',
22
            'exercise_max_score' => '20',
23
            'enable_quiz_scenario' => 'true',
24
            'allow_coach_feedback_exercises' => 'true',
25
            'show_official_code_exercise_result_list' => 'false',
26
            'email_alert_manager_on_new_quiz' => 'true',
27
            'exercise_max_ckeditors_in_page' => '0',
28
            'configure_exercise_visibility_in_course' => 'false',
29
            'exercise_invisible_in_session' => 'false',
30
            'exercise_hide_label' => 'false',
31
            'block_quiz_mail_notification_general_coach' => 'false',
32
            'allow_quiz_question_feedback' => 'false',
33
            'allow_quiz_show_previous_button_setting' => 'false',
34
            'allow_teacher_comment_audio' => 'true',
35
            'quiz_prevent_copy_paste' => 'false',
36
            'quiz_show_description_on_results_page' => 'false',
37
            'quiz_generate_certificate_ending' => 'false',
38
            'quiz_open_question_decimal_score' => 'false',
39
            'quiz_check_button_enable' => 'false',
40
            'allow_notification_setting_per_exercise' => 'false',
41
            'hide_free_question_score' => 'false',
42
            'hide_user_info_in_quiz_result' => 'false',
43
            'exercise_attempts_report_show_username' => 'false',
44
            'disable_clean_exercise_results_for_teachers' => 'true',
45
            'show_exercise_question_certainty_ribbon_result' => 'false',
46
            'quiz_results_answers_report' => 'false',
47
            'send_score_in_exam_notification_mail_to_manager' => 'false',
48
            'show_exercise_expected_choice' => 'false',
49
            'exercise_category_round_score_in_export' => 'false',
50
            'exercises_disable_new_attempts' => 'false',
51
            'show_question_id' => 'false',
52
            'show_question_pagination' => '100',
53
            'question_pagination_length' => '20',
54
            'limit_exercise_teacher_access' => 'false',
55
            'block_category_questions' => 'false',
56
            'exercise_score_format' => '0',
57
            'exercise_additional_teacher_modify_actions' => '',
58
            'quiz_confirm_saved_answers' => 'false',
59
            'allow_exercise_categories' => 'false',
60
            'allow_quiz_results_page_config' => 'false',
61
            'quiz_image_zoom' => '',
62
            'quiz_answer_extra_recording' => 'false',
63
            'allow_mandatory_question_in_category' => 'false',
64
            'add_exercise_best_attempt_in_report' => '',
65
            'exercise_category_report_user_extra_fields' => '',
66
            'score_grade_model' => '',
67
            'allow_time_per_question' => 'false',
68
            'my_courses_show_pending_exercise_attempts' => 'false',
69
            'allow_quick_question_description_popup' => 'false',
70
            'exercise_hide_ip' => 'false',
71
            'tracking_my_progress_show_deleted_exercises' => 'false',
72
            'show_exercise_attempts_in_all_user_sessions' => 'false',
73
            'show_exercise_session_attempts_in_base_course' => 'false',
74
            'quiz_check_all_answers_before_end_test' => 'false',
75
            'quiz_discard_orphan_in_course_export' => 'false',
76
            'exercise_result_end_text_html_strict_filtering' => 'false',
77
            'question_exercise_html_strict_filtering' => 'false',
78
            'quiz_question_delete_automatically_when_deleting_exercise' => 'false',
79
            'quiz_hide_attempts_table_on_start_page' => 'false',
80
            'quiz_hide_question_number' => 'false',
81
            'quiz_keep_alive_ping_interval' => '0',
82
            'exercise_embeddable_extra_types' => '',
83
        ]);
84
85
        $allowedTypes = [
86
            'exercise_min_score' => ['string', 'null'],
87
            'exercise_max_score' => ['string', 'null'],
88
            'enable_quiz_scenario' => ['string'],
89
        ];
90
91
        $this->setMultipleAllowedTypes($allowedTypes, $builder);
92
    }
93
94
    public function buildForm(FormBuilderInterface $builder): void
95
    {
96
        $builder
97
            ->add('exercise_min_score')
98
            ->add('exercise_max_score')
99
            ->add('enable_quiz_scenario', YesNoType::class)
100
            ->add('allow_coach_feedback_exercises', YesNoType::class)
101
            ->add('show_official_code_exercise_result_list', YesNoType::class)
102
            ->add('email_alert_manager_on_new_quiz', YesNoType::class)
103
            ->add('exercise_max_ckeditors_in_page')
104
            ->add('configure_exercise_visibility_in_course', YesNoType::class)
105
            ->add('exercise_invisible_in_session', YesNoType::class)
106
            ->add('exercise_hide_label', YesNoType::class)
107
            ->add('block_quiz_mail_notification_general_coach', YesNoType::class)
108
            ->add('allow_quiz_question_feedback', YesNoType::class)
109
            ->add('allow_quiz_show_previous_button_setting', YesNoType::class)
110
            ->add('allow_teacher_comment_audio', YesNoType::class)
111
            ->add('quiz_prevent_copy_paste', YesNoType::class)
112
            ->add('quiz_show_description_on_results_page', YesNoType::class)
113
            ->add('quiz_generate_certificate_ending', YesNoType::class)
114
            ->add('quiz_open_question_decimal_score', YesNoType::class)
115
            ->add('quiz_check_button_enable', YesNoType::class)
116
            ->add('allow_notification_setting_per_exercise', YesNoType::class)
117
            ->add('hide_free_question_score', YesNoType::class)
118
            ->add('hide_user_info_in_quiz_result', YesNoType::class)
119
            ->add('exercise_attempts_report_show_username', YesNoType::class)
120
            ->add('disable_clean_exercise_results_for_teachers', YesNoType::class)
121
            ->add('show_exercise_question_certainty_ribbon_result', YesNoType::class)
122
            ->add('quiz_results_answers_report', YesNoType::class)
123
            ->add('send_score_in_exam_notification_mail_to_manager', YesNoType::class)
124
            ->add('show_exercise_expected_choice', YesNoType::class)
125
            ->add('exercise_category_round_score_in_export', YesNoType::class)
126
            ->add('exercises_disable_new_attempts', YesNoType::class)
127
            ->add('show_question_id', YesNoType::class)
128
            ->add('show_question_pagination', TextType::class)
129
            ->add('question_pagination_length', TextType::class)
130
            ->add('limit_exercise_teacher_access', YesNoType::class)
131
            ->add('block_category_questions', YesNoType::class)
132
            ->add('exercise_score_format', ChoiceType::class, [
133
                'choices' => [
134
                    'None' => '0',
135
                    'Score average' => '1',
136
                    'Score percent' => '2',
137
                    'Score div percent' => '3',
138
                ],
139
            ])
140
            ->add('exercise_additional_teacher_modify_actions', TextareaType::class)
141
            ->add('quiz_confirm_saved_answers', YesNoType::class)
142
            ->add('allow_exercise_categories', YesNoType::class)
143
            ->add('allow_quiz_results_page_config', YesNoType::class)
144
            ->add('quiz_image_zoom', TextareaType::class)
145
            ->add('quiz_answer_extra_recording', YesNoType::class)
146
            ->add('allow_mandatory_question_in_category', YesNoType::class)
147
            ->add('add_exercise_best_attempt_in_report', TextareaType::class)
148
            ->add('exercise_category_report_user_extra_fields', TextareaType::class)
149
            ->add('score_grade_model', TextareaType::class)
150
            ->add('allow_time_per_question', YesNoType::class)
151
            ->add('my_courses_show_pending_exercise_attempts', YesNoType::class)
152
            ->add('allow_quick_question_description_popup', YesNoType::class)
153
            ->add('exercise_hide_ip', YesNoType::class)
154
            ->add('tracking_my_progress_show_deleted_exercises', YesNoType::class)
155
            ->add('show_exercise_attempts_in_all_user_sessions', YesNoType::class)
156
            ->add('show_exercise_session_attempts_in_base_course', YesNoType::class)
157
            ->add('quiz_check_all_answers_before_end_test', YesNoType::class)
158
            ->add('quiz_discard_orphan_in_course_export', YesNoType::class)
159
            ->add('exercise_result_end_text_html_strict_filtering', YesNoType::class)
160
            ->add('question_exercise_html_strict_filtering', YesNoType::class)
161
            ->add('quiz_question_delete_automatically_when_deleting_exercise', YesNoType::class)
162
            ->add('quiz_hide_attempts_table_on_start_page', YesNoType::class)
163
            ->add('quiz_hide_question_number', YesNoType::class)
164
            ->add('quiz_keep_alive_ping_interval', TextType::class)
165
            ->add('exercise_embeddable_extra_types', TextareaType::class);
166
167
        $this->updateFormFieldsFromSettingsInfo($builder);
168
    }
169
}
170