$USER->gradeediting[$course->id] = 0;
}
- if (($showadvanced == 1) and confirm_sesskey()) {
+ if ($showadvanced == 1) {
$USER->gradeediting[$course->id] = 1;
- } else if (($showadvanced == 0) and confirm_sesskey()) {
+ } else if ($showadvanced == 0) {
$USER->gradeediting[$course->id] = 0;
}
}
$confirm = optional_param('confirm', 0, PARAM_BOOL);
- if ($confirm and confirm_sesskey()) {
+ if ($confirm) {
$object->delete('grade/report/grader/category');
redirect($returnurl);
print_grade_page_head($courseid, 'edittree', $current_view, get_string('categoriesedit', 'grades') . ': ' . $current_view_str);
-$form_key = optional_param('sesskey', null, PARAM_ALPHANUM);
-
-if ($form_key && $data = data_submitted()) {
+if ($data = data_submitted() and confirm_sesskey()) {
// Perform bulk actions first
- if (!empty($data->bulkmove) && confirm_sesskey()) {
+ if (!empty($data->bulkmove)) {
$elements = array();
foreach ($data as $key => $value) {
// Category and item field updates
foreach ($data as $key => $value) {
// Grade category text inputs
- if (preg_match('/(aggregation|droplow|keephigh)_([0-9]*)/', $key, $matches) && confirm_sesskey()) {
- $value = required_param($matches[0], PARAM_INT);
+ if (preg_match('/^(aggregation|droplow|keephigh)_([0-9]+)$/', $key, $matches)) {
+ $param = $matches[1];
+ $aid = $matches[2];
// Do not allow negative values
+ $value = clean_param($value, PARAM_INT);
$value = ($value < 0) ? 0 : $value;
- $param = $matches[1];
- $a->id = $matches[2];
-
- $grade_category = grade_category::fetch(array('id'=>$a->id, 'courseid'=>$courseid));
+ $grade_category = grade_category::fetch(array('id'=>$aid, 'courseid'=>$courseid));
$grade_category->$param = $value;
$grade_category->update();
grade_regrade_final_grades($courseid);
// Grade item text inputs
- } elseif (preg_match('/(grademax|aggregationcoef|multfactor|plusfactor)_([0-9]*)/', $key, $matches) && confirm_sesskey()) {
- $defaults = array('grademax' => 100, 'aggregationcoef' => 1, 'multfactor' => 1, 'plusfactor' => 0);
+ } elseif (preg_match('/^(grademax|aggregationcoef|multfactor|plusfactor)_([0-9]+)$/', $key, $matches)) {
+ $param = $matches[1];
+ $aid = $matches[2];
- if (is_string($_POST[$matches[0]]) && strlen($_POST[$matches[0]]) < 1) {
- $_POST[$matches[0]] = null;
- }
- $value = optional_param($matches[0], $defaults[$matches[1]], PARAM_NUMBER);
+ $value = unformat_float($value);
+ $value = clean_param($value, PARAM_NUMBER);
- $param = $matches[1];
- $a->id = $matches[2];
- $grade_item = grade_item::fetch(array('id'=>$a->id, 'courseid'=>$courseid));
+ $grade_item = grade_item::fetch(array('id'=>$aid, 'courseid'=>$courseid));
+
+ if ($param === 'grademax' and $value < $grade_item->grademin) {
+ // better not allow values lower than grade min
+ $value = $grade_item->grademin;
+ }
$grade_item->$param = $value;
$grade_item->update();
grade_regrade_final_grades($courseid);
// Grade item checkbox inputs
- } elseif (preg_match('/extracredit_original_([0-9]*)/', $key, $matches) && confirm_sesskey()) { // Sum extra credit checkbox
- $extracredit = optional_param("extracredit_{$matches[1]}", null, PARAM_BOOL);
- $original_value = required_param($matches[0], PARAM_BOOL);
- $a->id = $matches[1];
- $newvalue = null;
- if ($original_value == 1 && is_null($extracredit)) {
- $newvalue = 0;
- } elseif ($original_value == 0 && $extracredit == 1) {
- $newvalue = 1;
- } else {
- continue;
- }
+ } elseif (preg_match('/^extracredit_([0-9]+)$/', $key, $matches)) { // Sum extra credit checkbox
+ $aid = $matches[1];
+ $value = clean_param($value, PARAM_BOOL);
- $grade_item = grade_item::fetch(array('id'=>$a->id, 'courseid'=>$courseid));
- $grade_item->aggregationcoef = $newvalue;
+ $grade_item = grade_item::fetch(array('id'=>$aid, 'courseid'=>$courseid));
+ $grade_item->aggregationcoef = $value;
$grade_item->update();
grade_regrade_final_grades($courseid);
// Grade category checkbox inputs
- } elseif (preg_match('/aggregate(onlygraded|subcats|outcomes)_original_([0-9]*)/', $key, $matches) && confirm_sesskey()) {
- $setting = optional_param('aggregate'.$matches[1].'_'.$matches[2], null, PARAM_BOOL);
- $original_value = required_param($matches[0], PARAM_BOOL);
- $a->id = $matches[2];
-
- $newvalue = null;
- if ($original_value == 1 && is_null($setting)) {
- $newvalue = 0;
- } elseif ($original_value == 0 && $setting == 1) {
- $newvalue = 1;
- } else {
- continue;
- }
+ } elseif (preg_match('/^aggregate(onlygraded|subcats|outcomes)_([0-9]+)$/', $key, $matches)) {
+ $param = 'aggregate'.$matches[1];
+ $aid = $matches[2];
+ $value = clean_param($value, PARAM_BOOL);
- $grade_category = grade_category::fetch(array('id'=>$a->id, 'courseid'=>$courseid));
- $grade_category->{'aggregate'.$matches[1]} = $newvalue;
+ $grade_category = grade_category::fetch(array('id'=>$aid, 'courseid'=>$courseid));
+ $grade_category->$param = $value;
$grade_category->update();
grade_regrade_final_grades($courseid);
if ((($aggcoef == 'aggregationcoefweight' || $aggcoef == 'aggregationcoef') && $type == 'weight') ||
($aggcoef == 'aggregationcoefextra' && $type == 'extra')) {
- return '<input type="text" size="6" id="aggregationcoef_'.$item->id.'" name="aggregationcoef_'.$item->id.'"
- value="'.format_float($item->aggregationcoef).'" />';
+ return '<input type="text" size="6" id="aggregationcoef_'.$item->id.'" name="aggregationcoef_'.$item->id.'"
+ value="'.format_float($item->aggregationcoef, 4).'" />';
} elseif ($aggcoef == 'aggregationcoefextrasum' && $type == 'extra') {
- $checked = ($item->aggregationcoef > 0) ? 'checked="checked"' : '';
- $extracredit = ($item->aggregationcoef > 0) ? 1 : 0;
-
- return '<input type="checkbox" id="extracredit_'.$item->id.'" name="extracredit_'.$item->id.'" ' . "$checked />\n"
- . '<input type="hidden" name="extracredit_original_'.$item->id.'" value="'.$extracredit.'" />';
- } else {
- return '';
- }
+ $checked = ($item->aggregationcoef > 0) ? 'checked="checked"' : '';
+ return '<input type="hidden" name="extracredit_'.$item->id.'" value="0" />
+ <input type="checkbox" id="extracredit_'.$item->id.'" name="extracredit_'.$item->id.'" value="1" '."$checked />\n";
+ } else {
+ return '';
}
+ }
/**
* Given an element of the grade tree, returns whether it is deletable or not (only manual grade items are deletable)
} elseif ($item->is_external_item()) {
$grademax = format_float($item->grademax, $item->get_decimals());
} else {
- $grademax = '<input type="text" size="3" id="grademax'.$item->id.'" name="grademax_'.$item->id.'" value="'.format_float($item->grademax, $item->get_decimals()).'" />';
+ $grademax = '<input type="text" size="4" id="grademax'.$item->id.'" name="grademax_'.$item->id.'" value="'.format_float($item->grademax, $item->get_decimals()).'" />';
}
return '<td class="cell">'.$grademax.'</td>';
public function get_category_cell($category, $levelclass, $params) {
$onlygradedcheck = ($category->aggregateonlygraded == 1) ? 'checked="checked"' : '';
- $aggregateonlygraded ='<input type="checkbox" id="aggregateonlygraded_'.$category->id.'" name="aggregateonlygraded_'.$category->id.'" '.$onlygradedcheck . ' />';
- $hidden = '<input type="hidden" name="aggregateonlygraded_original_'.$category->id.'" value="'.$category->aggregateonlygraded.'" />';
+ $hidden = '<input type="hidden" name="aggregateonlygraded_'.$category->id.'" value="0" />';
+ $aggregateonlygraded ='<input type="checkbox" id="aggregateonlygraded_'.$category->id.'" name="aggregateonlygraded_'.$category->id.'" value="1" '.$onlygradedcheck . ' />';
if ($this->forced) {
$aggregateonlygraded = ($category->aggregateonlygraded) ? get_string('yes') : get_string('no');
}
- return '<td class="cell '.$levelclass.'">' . $aggregateonlygraded . $hidden.'</td>';
+ return '<td class="cell '.$levelclass.'">'.$hidden.$aggregateonlygraded.'</td>';
}
public function get_item_cell($item, $params) {
public function get_category_cell($category, $levelclass, $params) {
$subcatscheck = ($category->aggregatesubcats == 1) ? 'checked="checked"' : '';
- $aggregatesubcats = '<input type="checkbox" id="aggregatesubcats_'.$category->id.'" name="aggregatesubcats_'.$category->id.'" ' . $subcatscheck.' />';
- $hidden = '<input type="hidden" name="aggregatesubcats_original_'.$category->id.'" value="'.$category->aggregatesubcats.'" />';
+ $hidden = '<input type="hidden" name="aggregatesubcats_'.$category->id.'" value="0" />';
+ $aggregatesubcats = '<input type="checkbox" id="aggregatesubcats_'.$category->id.'" name="aggregatesubcats_'.$category->id.'" value="1" ' . $subcatscheck.' />';
if ($this->forced) {
$aggregatesubcats = ($category->aggregatesubcats) ? get_string('yes') : get_string('no');
}
- return '<td class="cell '.$levelclass.'">' . $aggregatesubcats . $hidden.'</td>';
+ return '<td class="cell '.$levelclass.'">'.$hidden.$aggregatesubcats.'</td>';
}
public function get_category_cell($category, $levelclass, $params) {
$outcomescheck = ($category->aggregateoutcomes == 1) ? 'checked="checked"' : '';
- $aggregateoutcomes = '<input type="checkbox" id="aggregateoutcomes_'.$category->id.'" name="aggregateoutcomes_'.$category->id.'" ' . $outcomescheck.' />';
- $hidden = '<input type="hidden" name="aggregateoutcomes_original_'.$category->id.'" value="'.$category->aggregateoutcomes.'" />';
+ $hidden = '<input type="hidden" name="aggregateoutcomes_'.$category->id.'" value="0" />';
+ $aggregateoutcomes = '<input type="checkbox" id="aggregateoutcomes_'.$category->id.'" name="aggregateoutcomes_'.$category->id.'" value="1" ' . $outcomescheck.' />';
if ($this->forced) {
$aggregateoutcomes = ($category->aggregateoutcomes) ? get_string('yes') : get_string('no');
}
- return '<td class="cell '.$levelclass.'">' . $aggregateoutcomes . $hidden.'</td>';
+ return '<td class="cell '.$levelclass.'">'.$hidden.$aggregateoutcomes.'</td>';
}
public function get_item_cell($item, $params) {
if (!$item->is_raw_used()) {
return '<td class="cell"> </td>';
}
- $multfactor = '<input type="text" size="3" id="multfactor'.$item->id.'" name="multfactor_'.$item->id.'" value="'.format_float($item->multfactor).'" />';
+ $multfactor = '<input type="text" size="4" id="multfactor'.$item->id.'" name="multfactor_'.$item->id.'" value="'.format_float($item->multfactor, 4).'" />';
return '<td class="cell">'.$multfactor.'</td>';
}
if (!$item->is_raw_used()) {
return '<td class="cell"> </td>';
}
- $plusfactor = '<input type="text" size="3" id="plusfactor_'.$item->id.'" name="plusfactor_'.$item->id.'" value="'.format_float($item->plusfactor).'" />';
+ $plusfactor = '<input type="text" size="4" id="plusfactor_'.$item->id.'" name="plusfactor_'.$item->id.'" value="'.format_float($item->plusfactor, 4).'" />';
return '<td class="cell">'.$plusfactor.'</td>';
}