Browse Source

Save course extra fields - refs BT#9070

Angel Fernando Quiroz Campos 10 years ago
parent
commit
2edf952100
2 changed files with 5 additions and 21 deletions
  1. 3 19
      main/admin/course_edit.php
  2. 2 2
      main/inc/lib/extra_field_value.lib.php

+ 3 - 19
main/admin/course_edit.php

@@ -317,20 +317,6 @@ if ($form->validate()) {
         $warn = substr($warn, 0, -1);
     }
 
-    // an extra field
-    $extras = array();
-    foreach ($course as $key => $value) {
-        if (substr($key, 0, 6) == 'extra_') {
-            $extras[substr($key, 6)] = $value;
-        }
-
-        if (substr($key, 0, 7) == '_extra_') {
-            if (!array_key_exists(substr($key, 7), $extras)) {
-                $extras[substr($key, 7)] = $value;
-            }
-        }
-    }
-
 	$tutor_id = isset($course['tutor_name']) ? $course['tutor_name'] : null;
 	$tutor_name = isset($platform_teachers[$tutor_id]) ? $platform_teachers[$tutor_id] : null;
 	$teachers = $course['group']['course_teachers'];
@@ -344,6 +330,7 @@ if ($form->validate()) {
 	$disk_quota = $course['disk_quota'];
 	$subscribe = $course['subscribe'];
 	$unsubscribe = $course['unsubscribe'];
+    $course['course_code'] = $course_code;
 
 	if (!stristr($department_url, 'http://')) {
 		$department_url = 'http://'.$department_url;
@@ -364,11 +351,8 @@ if ($form->validate()) {
 	Database::query($sql);
 
 	// update the extra fields
-	if (count($extras) > 0) {
-		foreach ($extras as $key => $value) {
-			CourseManager::update_course_extra_field_value($course_code, $key, $value);
-		}
-	}
+    $courseFieldValue = new ExtraFieldValue('course');
+    $courseFieldValue->save_field_values($course);
 
     $addTeacherToSessionCourses = isset($course['add_teachers_to_sessions_courses']) && !empty($course['add_teachers_to_sessions_courses']) ? 1 : 0;
 

+ 2 - 2
main/inc/lib/extra_field_value.lib.php

@@ -114,7 +114,7 @@ class ExtraFieldValue extends Model
 
         // Parse params.
         foreach ($params as $key => $value) {
-            if (substr($key, 0, 6) == 'extra_') {
+            if (substr($key, 0, 6) == 'extra_' || substr($key, 0, 7) == '_extra_') {
                 // An extra field.
                 $field_variable = substr($key, 6);
                 $extra_field_info = $extra_field->get_handler_field_info_by_field_variable($field_variable);
@@ -447,7 +447,7 @@ class ExtraFieldValue extends Model
     public function get_values_by_handler_and_field_id($item_id, $field_id, $transform = false)
     {
         $field_id = intval($field_id);
-        $item_id = intval($item_id);
+        $item_id = Database::escape_string($item_id);
 
         $sql = "SELECT s.*, field_type FROM {$this->table} s
                 INNER JOIN {$this->table_handler_field} sf ON (s.field_id = sf.id)