mirror of
https://github.com/moodle/moodle.git
synced 2025-08-07 18:06:51 +02:00
MDL-35227 SCORM: set completion in correct location.
This commit is contained in:
parent
9273bd1abb
commit
860c7e82bd
1 changed files with 37 additions and 19 deletions
|
@ -150,7 +150,7 @@ function scorm_add_instance($scorm, $mform=null) {
|
||||||
|
|
||||||
scorm_parse($record, true);
|
scorm_parse($record, true);
|
||||||
|
|
||||||
scorm_grade_item_update($record, null, false);
|
scorm_grade_item_update($record);
|
||||||
|
|
||||||
return $record->id;
|
return $record->id;
|
||||||
}
|
}
|
||||||
|
@ -591,18 +591,21 @@ function scorm_get_user_grades($scorm, $userid=0) {
|
||||||
* @param bool $nullifnone
|
* @param bool $nullifnone
|
||||||
*/
|
*/
|
||||||
function scorm_update_grades($scorm, $userid=0, $nullifnone=true) {
|
function scorm_update_grades($scorm, $userid=0, $nullifnone=true) {
|
||||||
global $CFG, $DB;
|
global $CFG;
|
||||||
require_once($CFG->libdir.'/gradelib.php');
|
require_once($CFG->libdir.'/gradelib.php');
|
||||||
|
require_once($CFG->libdir.'/completionlib.php');
|
||||||
|
|
||||||
if ($grades = scorm_get_user_grades($scorm, $userid)) {
|
if ($grades = scorm_get_user_grades($scorm, $userid)) {
|
||||||
scorm_grade_item_update($scorm, $grades);
|
scorm_grade_item_update($scorm, $grades);
|
||||||
|
//set complete
|
||||||
|
scorm_set_completion($scorm, $userid, COMPLETION_COMPLETE, $grades);
|
||||||
} else if ($userid and $nullifnone) {
|
} else if ($userid and $nullifnone) {
|
||||||
$grade = new stdClass();
|
$grade = new stdClass();
|
||||||
$grade->userid = $userid;
|
$grade->userid = $userid;
|
||||||
$grade->rawgrade = null;
|
$grade->rawgrade = null;
|
||||||
scorm_grade_item_update($scorm, $grade);
|
scorm_grade_item_update($scorm, $grade);
|
||||||
|
//set incomplete.
|
||||||
|
scorm_set_completion($scorm, $userid, COMPLETION_INCOMPLETE);
|
||||||
} else {
|
} else {
|
||||||
scorm_grade_item_update($scorm);
|
scorm_grade_item_update($scorm);
|
||||||
}
|
}
|
||||||
|
@ -646,10 +649,9 @@ function scorm_upgrade_grades() {
|
||||||
* @uses GRADE_TYPE_NONE
|
* @uses GRADE_TYPE_NONE
|
||||||
* @param object $scorm object with extra cmidnumber
|
* @param object $scorm object with extra cmidnumber
|
||||||
* @param mixed $grades optional array/object of grade(s); 'reset' means reset grades in gradebook
|
* @param mixed $grades optional array/object of grade(s); 'reset' means reset grades in gradebook
|
||||||
* @param boolean $updatecompletion set whether to update completion stuff
|
|
||||||
* @return object grade_item
|
* @return object grade_item
|
||||||
*/
|
*/
|
||||||
function scorm_grade_item_update($scorm, $grades=null, $updatecompletion=true) {
|
function scorm_grade_item_update($scorm, $grades=null) {
|
||||||
global $CFG, $DB;
|
global $CFG, $DB;
|
||||||
require_once($CFG->dirroot.'/mod/scorm/locallib.php');
|
require_once($CFG->dirroot.'/mod/scorm/locallib.php');
|
||||||
if (!function_exists('grade_update')) { //workaround for buggy PHP versions
|
if (!function_exists('grade_update')) { //workaround for buggy PHP versions
|
||||||
|
@ -680,19 +682,6 @@ function scorm_grade_item_update($scorm, $grades=null, $updatecompletion=true) {
|
||||||
$grades = null;
|
$grades = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update activity completion if applicable
|
|
||||||
if ($updatecompletion) {
|
|
||||||
// Get course info
|
|
||||||
$course = new stdClass();
|
|
||||||
$course->id = $scorm->course;
|
|
||||||
|
|
||||||
$cm = get_coursemodule_from_instance('scorm', $scorm->id, $course->id);
|
|
||||||
if (!empty($cm)) {
|
|
||||||
$completion = new completion_info($course);
|
|
||||||
$completion->update_state($cm, COMPLETION_COMPLETE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return grade_update('mod/scorm', $scorm->course, 'mod', 'scorm', $scorm->id, 0, $grades, $params);
|
return grade_update('mod/scorm', $scorm->course, 'mod', 'scorm', $scorm->id, 0, $grades, $params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1329,3 +1318,32 @@ function scorm_dndupload_handle($uploadinfo) {
|
||||||
|
|
||||||
return scorm_add_instance($scorm, null);
|
return scorm_add_instance($scorm, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets activity completion state
|
||||||
|
*
|
||||||
|
* @param object $scorm object
|
||||||
|
* @param int $userid User ID
|
||||||
|
* @param int $completionstate Completion state
|
||||||
|
* @param array $grades grades array of users with grades - used when $userid = 0
|
||||||
|
*/
|
||||||
|
function scorm_set_completion($scorm, $userid, $completionstate = COMPLETION_COMPLETE, $grades = array()) {
|
||||||
|
if (!completion_info::is_enabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$course = new stdClass();
|
||||||
|
$course->id = $scorm->course;
|
||||||
|
|
||||||
|
$cm = get_coursemodule_from_instance('scorm', $scorm->id, $scorm->course);
|
||||||
|
if (!empty($cm)) {
|
||||||
|
$completion = new completion_info($course);
|
||||||
|
if (empty($userid)) { //we need to get all the relevant users from $grades param.
|
||||||
|
foreach ($grades as $grade) {
|
||||||
|
$completion->update_state($cm, $completionstate, $grade->userid);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$completion->update_state($cm, $completionstate, $userid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue