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);
     }
示例#2
0
            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);
}