@@ -356,18 +356,19 @@ sub getCourseSettings ($self, %args) {
356356 my @settings_from_db = $course -> course_settings;
357357
358358 return \@settings_from_db if $args {as_result_set };
359- my @settings_to_return ;
360- if ($args {merged }) {
361- @settings_to_return = map {
359+ my @settings_to_return = ($args {merged })
360+ ? map {
362361 { $_ -> get_inflated_columns, $_ -> global_setting-> get_inflated_columns };
363- } @settings_from_db ;
364- for my $setting (@settings_to_return ) {
365- $setting -> {default_value } = $setting -> {default_value }-> {value };
366- }
367- } else {
368- @settings_to_return = map {
362+ } @settings_from_db
363+ : map {
369364 { $_ -> get_inflated_columns };
370365 } @settings_from_db ;
366+
367+ for my $setting (@settings_to_return ) {
368+ # value and default_value are decoded from JSON as a hash. Return to a value.
369+ for my $key (qw/ default_value value/ ) {
370+ $setting -> {$key } = $setting -> {$key }-> {value } if defined ($setting -> {$key });
371+ }
371372 }
372373 return \@settings_to_return ;
373374}
@@ -409,13 +410,16 @@ sub getCourseSetting ($self, %args) {
409410 my $setting = $course -> course_settings-> find({ setting_id => $global_setting -> setting_id });
410411
411412 return $setting if $args {as_result_set };
412- if ($args {merged }) {
413- my $setting_to_return = { $setting -> get_inflated_columns, $setting -> global_setting-> get_inflated_columns };
414- $setting_to_return -> {default_value } = $setting_to_return -> {default_value }-> {value };
415- return $setting_to_return ;
416- } else {
417- return { $setting -> get_inflated_columns };
413+ my $setting_to_return =
414+ $args {merged }
415+ ? { $setting -> get_inflated_columns, $setting -> global_setting-> get_inflated_columns }
416+ : { $setting -> get_inflated_columns };
417+
418+ # value and default_value are decoded from JSON as a hash. Return to a value.
419+ for my $key (qw/ default_value value/ ) {
420+ $setting_to_return -> {$key } = $setting_to_return -> {$key }-> {value } if defined ($setting_to_return -> {$key });
418421 }
422+ return $setting_to_return ;
419423}
420424
421425=pod
@@ -445,7 +449,9 @@ global setting.
445449A single course setting as either a hashref or a C<DBIx::Class::ResultSet::CourseSetting > object.
446450
447451=cut
452+
448453use Data::Dumper;
454+
449455sub updateCourseSetting ($self , %args ) {
450456 my $course = $self -> getCourse(info => getCourseInfo($args {info }), as_result_set => 1);
451457
@@ -460,32 +466,32 @@ sub updateCourseSetting ($self, %args) {
460466 my $params = {
461467 course_id => $course -> course_id,
462468 setting_id => $global_setting -> {setting_id },
463- value => $args {params }-> {value }
469+ value => { value => $args {params }-> {value } }
464470 };
465471
466472 # remove the following fields before checking for valid settings:
467473 for (qw/ setting_id course_id/ ) { delete $global_setting -> {$_ }; }
468474
469- isValidSetting($global_setting , $params -> {value });
475+ isValidSetting($global_setting , $params -> {value }-> { value } );
470476
471477 # The course_id must be deleted to ensure it is written to the database correctly.
472478 delete $params -> {course_id } if defined ($params -> {course_id });
473479
474- my $updated_course_setting = defined ($course_setting ) ? $course_setting -> update($params ) : $course -> add_to_course_settings($params );
475-
476- if ($args {merged }) {
477- my $setting_to_return = {
478- $updated_course_setting -> get_inflated_columns,
479- $updated_course_setting -> global_setting-> get_inflated_columns
480- };
481- $setting_to_return -> {default_value } = $setting_to_return -> {default_value }-> {value };
482- return $setting_to_return ;
483- } else {
484- return { $updated_course_setting -> get_inflated_columns };
485- }
480+ my $updated_course_setting =
481+ defined ($course_setting ) ? $course_setting -> update($params ) : $course -> add_to_course_settings($params );
486482
483+ return $updated_course_setting if $args {as_result_set };
484+ my $setting_to_return =
485+ ($args {merged })
486+ ? { $updated_course_setting -> get_inflated_columns,
487+ $updated_course_setting -> global_setting-> get_inflated_columns }
488+ : { $updated_course_setting -> get_inflated_columns };
487489
488- return $args {as_result_set } ? $updated_course_setting : { $updated_course_setting -> get_inflated_columns };
490+ # value and default_value are decoded from JSON as a hash. Return to a value.
491+ for my $key (qw/ default_value value/ ) {
492+ $setting_to_return -> {$key } = $setting_to_return -> {$key }-> {value } if defined ($setting_to_return -> {$key });
493+ }
494+ return $setting_to_return ;
489495}
490496
491497=pod
@@ -516,7 +522,17 @@ sub deleteCourseSetting ($self, %args) {
516522 my $deleted_setting = $setting -> delete ;
517523
518524 return $deleted_setting if $args {as_result_set };
519- return { $deleted_setting -> get_inflated_columns };
525+
526+ my $setting_to_return =
527+ ($args {merged })
528+ ? { $deleted_setting -> get_inflated_columns, $deleted_setting -> global_setting-> get_inflated_columns }
529+ : { $deleted_setting -> get_inflated_columns };
530+
531+ # value and default_value are decoded from JSON as a hash. Return to a value.
532+ for my $key (qw/ default_value value/ ) {
533+ $setting_to_return -> {$key } = $setting_to_return -> {$key }-> {value } if defined ($setting_to_return -> {$key });
534+ }
535+ return $setting_to_return ;
520536}
521537
5225381;
0 commit comments