@@ -103,24 +103,39 @@ function validateCourseData(array $courses): array
103
103
function updateCourse (array $ courseData , int $ courseId ): void
104
104
{
105
105
$ courseTable = Database::get_main_table (TABLE_MAIN_COURSE );
106
+ $ fieldsMapping = [
107
+ 'Title ' => 'title ' ,
108
+ 'Language ' => 'course_language ' ,
109
+ 'CourseCategory ' => 'category_code ' ,
110
+ 'Visibilit ' => 'visibility ' ,
111
+ ];
106
112
$ params = [];
107
- if (isset ($ courseData ['Title ' ])) {
108
- $ params ['title ' ] = $ courseData ['Title ' ];
109
- }
110
- if (isset ($ courseData ['Language ' ])) {
111
- $ params ['course_language ' ] = $ courseData ['Language ' ];
112
- }
113
- if (isset ($ courseData ['CourseCategory ' ])) {
114
- $ params ['category_code ' ] = $ courseData ['CourseCategory ' ];
115
- }
116
- if (isset ($ courseData ['Visibility ' ])) {
117
- $ params ['visibility ' ] = $ courseData ['Visibility ' ];
113
+ foreach ($ fieldsMapping as $ inputField => $ dbField ) {
114
+ if (isset ($ courseData [$ inputField ])) {
115
+ $ params [$ dbField ] = $ courseData [$ inputField ];
116
+ }
118
117
}
118
+
119
119
Database::update ($ courseTable , $ params , ['id = ? ' => $ courseId ]);
120
- $ courseData ['code ' ] = $ courseData ['Code ' ];
121
- $ courseData ['item_id ' ] = $ courseId ;
122
- $ courseFieldValue = new ExtraFieldValue ('course ' );
123
- $ courseFieldValue ->saveFieldValues ($ courseData );
120
+
121
+ if (isset ($ courseData ['extra ' ])) {
122
+ $ courseData ['extra ' ]['code ' ] = $ courseData ['Code ' ];
123
+ $ courseData ['extra ' ]['item_id ' ] = $ courseId ;
124
+ $ saveOnlyThisFields = [];
125
+ foreach ($ courseData ['extra ' ] as $ key => $ value ) {
126
+ $ newKey = preg_replace ('/^extra_/ ' , '' , $ key );
127
+ $ saveOnlyThisFields [] = $ newKey ;
128
+ }
129
+ $ courseFieldValue = new ExtraFieldValue ('course ' );
130
+ $ courseFieldValue ->saveFieldValues (
131
+ $ courseData ['extra ' ],
132
+ false ,
133
+ false ,
134
+ $ saveOnlyThisFields ,
135
+ [],
136
+ true
137
+ );
138
+ }
124
139
}
125
140
126
141
/**
@@ -150,7 +165,7 @@ function parseCsvCourseData(string $file, array $extraFields): array
150
165
}
151
166
if (in_array ($ key , array_column ($ extraFields , 'variable ' ))) {
152
167
$ processedValue = processExtraFieldValue ($ key , $ value , $ extraFields );
153
- $ courseData ['extra_ ' .$ key ] = $ processedValue ;
168
+ $ courseData ['extra ' ][ ' extra_ ' .$ key ] = $ processedValue ;
154
169
} else {
155
170
$ courseData [$ key ] = $ value ;
156
171
}
@@ -181,7 +196,7 @@ function parseXmlCourseData(string $file, array $extraFields): array
181
196
$ value = $ node ->nodeValue ;
182
197
if (in_array ($ key , array_column ($ extraFields , 'variable ' ))) {
183
198
$ processedValue = processExtraFieldValue ($ key , $ value , $ extraFields );
184
- $ courseData ['extra_ ' .$ key ] = $ processedValue ;
199
+ $ courseData ['extra ' ][ ' extra_ ' .$ key ] = $ processedValue ;
185
200
} else {
186
201
$ courseData [$ key ] = $ value ;
187
202
}
@@ -219,6 +234,7 @@ function processExtraFieldValue(string $fieldName, $value, array $extraFields)
219
234
if ($ value == '1 ' ) {
220
235
$ newValue = ['extra_ ' .$ fieldName => '1 ' ];
221
236
}
237
+
222
238
return $ newValue ;
223
239
case ExtraField::FIELD_TYPE_TAG :
224
240
return explode (', ' , $ value );
@@ -345,9 +361,9 @@ function showFileType(type) {
345
361
346
362
$ csvContent = generateCsvModel ($ extraFields );
347
363
$ xmlContent = generateXmlModel ($ extraFields );
348
- echo '<div id="csv-model"><p> ' . get_lang ('CSVMustLookLike ' ) . ' ( ' . get_lang ('MandatoryFields ' ) . '):</p> ' ;
349
- echo '<blockquote><pre> ' . $ csvContent . '</pre></blockquote></div> ' ;
350
- echo '<div id="xml-model" style="display: none;"><p> ' . get_lang ('XMLMustLookLike ' ) . ' ( ' . get_lang ('MandatoryFields ' ) . '):</p> ' ;
351
- echo '<blockquote><pre> ' . $ xmlContent . '</pre></blockquote></div> ' ;
364
+ echo '<div id="csv-model"><p> ' . get_lang ('CSVMustLookLike ' ). ' ( ' . get_lang ('MandatoryFields ' ). '):</p> ' ;
365
+ echo '<blockquote><pre> ' . $ csvContent. '</pre></blockquote></div> ' ;
366
+ echo '<div id="xml-model" style="display: none;"><p> ' . get_lang ('XMLMustLookLike ' ). ' ( ' . get_lang ('MandatoryFields ' ). '):</p> ' ;
367
+ echo '<blockquote><pre> ' . $ xmlContent. '</pre></blockquote></div> ' ;
352
368
353
369
Display::display_footer ();
0 commit comments