* or key means do not change existing.
*
* Only following grade item properties can be changed 'itemname', 'idnumber', 'gradetype', 'grademax',
- * 'grademin', 'scaleid', 'multfactor', 'plusfactor', 'deleted'.
+ * 'grademin', 'scaleid', 'multfactor', 'plusfactor', 'deleted' and 'hidden'.
*
* Manual, course or category items can not be updated by this function.
global $USER;
// only following grade_item properties can be changed in this function
- $allowed = array('itemname', 'idnumber', 'gradetype', 'grademax', 'grademin', 'scaleid', 'multfactor', 'plusfactor', 'deleted');
+ $allowed = array('itemname', 'idnumber', 'gradetype', 'grademax', 'grademin', 'scaleid', 'multfactor', 'plusfactor', 'deleted', 'hidden');
// grade item identification
$params = compact('courseid', 'itemtype', 'itemmodule', 'iteminstance', 'itemnumber');
$params['gradetype'] = GRADE_TYPE_NONE;
}
+/* description by TJ:
+1/ If the quiz is set to not show scores while the quiz is still open, and is set to show scores after
+ the quiz is closed, then create the grade_item with a show-after date that is the quiz close date.
+2/ If the quiz is set to not show scores at either of those times, create the grade_item as hidden.
+3/ If the quiz is set to show scores, create the grade_item visible.
+*/
+ if (!($quiz->review & QUIZ_REVIEW_SCORES & QUIZ_REVIEW_CLOSED)
+ and !($quiz->review & QUIZ_REVIEW_SCORES & QUIZ_REVIEW_OPEN)) {
+ $params['hidden'] = 1;
+
+ } else if ( ($quiz->review & QUIZ_REVIEW_SCORES & QUIZ_REVIEW_CLOSED)
+ and !($quiz->review & QUIZ_REVIEW_SCORES & QUIZ_REVIEW_OPEN)) {
+ if ($quiz->timeclose) {
+ $params['hidden'] = $quiz->timeclose;
+ } else {
+ $params['hidden'] = 1;
+ }
+
+ } else {
+ // a) both open and closed enabled
+ // b) open enabled, closed disabled - we can not "hide after", grades are kept visible even after closing
+ $params['hidden'] = 0;
+ }
+
return grade_update('mod/quiz', $quiz->course, 'mod', 'quiz', $quiz->id, 0, NULL, $params);
}