Code Duplication    Length = 70-70 lines in 2 locations

plugins/Field/src/Field/FileField.php 1 location

@@ 91-160 (lines=70) @@
88
    /**
89
     * {@inheritDoc}
90
     */
91
    public function validate(Field $field, Validator $validator)
92
    {
93
        if ($field->metadata->required) {
94
            $validator
95
                ->add($field->name, 'isRequired', [
96
                    'rule' => function ($value, $context) use ($field) {
97
                        if (isset($context['data'][$field->name])) {
98
                            $count = 0;
99
                            foreach ($context['data'][$field->name] as $k => $file) {
100
                                if (is_integer($k)) {
101
                                    $count++;
102
                                }
103
                            }
104
105
                            return $count > 0;
106
                        }
107
108
                        return false;
109
                    },
110
                    'message' => __d('field', 'You must upload one file at least.')
111
                ]);
112
        }
113
114
        if ($field->metadata->settings['multi'] !== 'custom') {
115
            $maxFiles = intval($field->metadata->settings['multi']);
116
        } else {
117
            $maxFiles = intval($field->metadata->settings['multi_custom']);
118
        }
119
120
        $validator
121
            ->add($field->name, 'numberOfFiles', [
122
                'rule' => function ($value, $context) use ($field, $maxFiles) {
123
                    if (isset($context['data'][$field->name])) {
124
                        $count = 0;
125
                        foreach ($context['data'][$field->name] as $k => $file) {
126
                            if (is_integer($k)) {
127
                                $count++;
128
                            }
129
                        }
130
131
                        return $count <= $maxFiles;
132
                    }
133
134
                    return false;
135
                },
136
                'message' => __d('field', 'You can upload {0} files as maximum.', $maxFiles)
137
            ]);
138
139
        if (!empty($field->metadata->settings['extensions'])) {
140
            $extensions = $field->metadata->settings['extensions'];
141
            $extensions = array_map('strtolower', array_map('trim', explode(',', $extensions)));
142
            $validator
143
                ->add($field->name, 'extensions', [
144
                    'rule' => function ($value, $context) use ($field, $extensions) {
145
                        if (isset($context['data'][$field->name])) {
146
                            foreach ($context['data'][$field->name] as $k => $file) {
147
                                if (is_integer($k)) {
148
                                    $ext = strtolower(str_replace('.', '', strrchr($file['file_name'], '.')));
149
                                    if (!in_array($ext, $extensions)) {
150
                                        return false;
151
                                    }
152
                                }
153
                            }
154
155
                            return true;
156
                        }
157
158
                        return false;
159
                    },
160
                    'message' => __d('field', 'Invalid file extension. Allowed extension are: {0}', $field->metadata->settings['extensions'])
161
                ]);
162
        }
163

plugins/Field/src/Field/ImageField.php 1 location

@@ 93-162 (lines=70) @@
90
    /**
91
     * {@inheritDoc}
92
     */
93
    public function validate(Field $field, Validator $validator)
94
    {
95
        if ($field->metadata->required) {
96
            $validator
97
                ->add($field->name, 'isRequired', [
98
                    'rule' => function ($value, $context) use ($field) {
99
                        if (isset($context['data'][$field->name])) {
100
                            $count = 0;
101
                            foreach ($context['data'][$field->name] as $k => $file) {
102
                                if (is_integer($k)) {
103
                                    $count++;
104
                                }
105
                            }
106
107
                            return $count > 0;
108
                        }
109
110
                        return false;
111
                    },
112
                    'message' => __d('field', 'You must upload one image at least.')
113
                ]);
114
        }
115
116
        if ($field->metadata->settings['multi'] !== 'custom') {
117
            $maxFiles = intval($field->metadata->settings['multi']);
118
        } else {
119
            $maxFiles = intval($field->metadata->settings['multi_custom']);
120
        }
121
122
        $validator
123
            ->add($field->name, 'numberOfFiles', [
124
                'rule' => function ($value, $context) use ($field, $maxFiles) {
125
                    if (isset($context['data'][$field->name])) {
126
                        $count = 0;
127
                        foreach ($context['data'][$field->name] as $k => $file) {
128
                            if (is_integer($k)) {
129
                                $count++;
130
                            }
131
                        }
132
133
                        return $count <= $maxFiles;
134
                    }
135
136
                    return false;
137
                },
138
                'message' => __d('field', 'You can upload {0} images as maximum.', $maxFiles)
139
            ]);
140
141
        if (!empty($field->metadata->settings['extensions'])) {
142
            $extensions = $field->metadata->settings['extensions'];
143
            $extensions = array_map('strtolower', array_map('trim', explode(',', $extensions)));
144
            $validator
145
                ->add($field->name, 'extensions', [
146
                    'rule' => function ($value, $context) use ($field, $extensions) {
147
                        if (isset($context['data'][$field->name])) {
148
                            foreach ($context['data'][$field->name] as $k => $file) {
149
                                if (is_integer($k)) {
150
                                    $ext = strtolower(str_replace('.', '', strrchr($file['file_name'], '.')));
151
                                    if (!in_array($ext, $extensions)) {
152
                                        return false;
153
                                    }
154
                                }
155
                            }
156
157
                            return true;
158
                        }
159
160
                        return false;
161
                    },
162
                    'message' => __d('field', 'Invalid image extension. Allowed extension are: {0}', $field->metadata->settings['extensions'])
163
                ]);
164
        }
165