require_capability('mod/offlinequiz:manage', $modcontext); $slot = $structure->get_slot_by_id($id); if (!is_numeric(str_replace(',', '.', $maxmark))) { echo json_encode(array('instancemaxmark' => offlinequiz_format_question_grade($offlinequiz, $slot->maxmark), 'newsummarks' => offlinequiz_format_grade($offlinequiz, $offlinequiz->sumgrades))); break; } if ($structure->update_slot_maxmark($slot, $maxmark)) { // Recalculate the sumgrades for all groups if ($groups = $DB->get_records('offlinequiz_groups', array('offlinequizid' => $offlinequiz->id), 'number', '*', 0, $offlinequiz->numgroups)) { foreach ($groups as $group) { $sumgrade = offlinequiz_update_sumgrades($offlinequiz, $group->id); } } // Grade has really changed. //$offlinequiz->sumgrades = offlinequiz_update_sumgrades($offlinequiz); offlinequiz_update_question_instance($offlinequiz, $slot->questionid, unformat_float($maxmark)); offlinequiz_update_all_attempt_sumgrades($offlinequiz); //offlinequiz_update_all_final_grades($offlinequiz); offlinequiz_update_grades($offlinequiz, 0, true); } $newsummarks = $DB->get_field('offlinequiz_groups', 'sumgrades', array('id' => $offlinequizgroup->id)); echo json_encode(array('instancemaxmark' => offlinequiz_format_question_grade($offlinequiz, $slot->maxmark), 'newsummarks' => format_float($newsummarks, $offlinequiz->decimalpoints))); break; case 'updatepagebreak': require_capability('mod/offlinequiz:manage', $modcontext); offlinequiz_delete_template_usages($offlinequiz); $slots = $structure->update_page_break($offlinequiz, $id, $value); $json = array(); foreach ($slots as $slot) { $json[$slot->slot] = array('id' => $slot->id, 'slot' => $slot->slot, 'page' => $slot->page); }
offlinequiz_set_grade($maxgrade, $offlinequiz); // offlinequiz_update_all_final_grades($offlinequiz); offlinequiz_update_grades($offlinequiz, 0, true); } } redirect($afteractionurl); } $savegrades = optional_param('savegrades', '', PARAM_ALPHA); if ($savegrades == 'bulksavegrades' && confirm_sesskey()) { $rawdata = (array) data_submitted(); foreach ($rawdata as $key => $value) { if (preg_match('!^g([0-9]+)$!', $key, $matches)) { if (is_numeric(str_replace(',', '.', $value))) { // Parse input for question -> grades. $questionid = $matches[1]; offlinequiz_update_question_instance($offlinequiz, $questionid, unformat_float($value)); } else { $bulkgradewarning = true; } } } // Redmine 983: Upgrade sumgrades for all offlinequiz groups. if ($groups = $DB->get_records('offlinequiz_groups', array('offlinequizid' => $offlinequiz->id), 'number', '*', 0, $offlinequiz->numgroups)) { foreach ($groups as $group) { $sumgrade = offlinequiz_update_sumgrades($offlinequiz, $group->id); } } offlinequiz_update_all_attempt_sumgrades($offlinequiz); offlinequiz_update_grades($offlinequiz, 0, true); redirect($afteractionurl); }