Esempio n. 1
0
			AND UMP.`user_id` = ?d";
    $row = Database::get()->querySingle($sql, $_SESSION['path_id'], $_SESSION['lp_module_id'], $uid);

    $scormSessionTime = seconds_to_scorm_time($timeToCompleteExe);

    // build sql query
    $sqlupd = "UPDATE `lp_user_module_progress` SET ";
    // if recorded score is less then the new score => update raw, credit and status

    if ($row->raw < $totalScore) {
        // update raw
        $sqlupd .= "`raw` = $totalScore,";
        // update credit and status if needed ( score is better than raw_to_pass )
        if ($newRaw >= $row->raw_to_pass) {
            $sqlupd .= "`credit` = 'CREDIT',`lesson_status` = 'PASSED',";
        } else { // minimum raw to pass needed to get credit
            $sqlupd .= "`credit` = 'NO-CREDIT',`lesson_status` = 'FAILED',";
        }
    }// else don't change raw, credit and lesson_status
    // default query statements
    $sqlupd .= " `scoreMin` 	= ?d,
                 `scoreMax` 	= ?d,
                 `total_time`	= ?s,
                 `session_time`	= ?s
           WHERE `learnPath_module_id` = ?d
             AND `user_id` = ?d";
    Database::get()->query($sqlupd, $scoreMin, $scoreMax, addScormTime($row->total_time, $scormSessionTime), $scormSessionTime, $row->learnPath_module_id, $uid);
}

echo "</div></body></html>" . "\n";
Esempio n. 2
0
    if ($lesson_status_value == "COMPLETED" || $lesson_status_value == "PASSED") {
        if (strtoupper($_POST['credit']) == "CREDIT") {
            $credit_value = "CREDIT";
        }
    }

    //set maxScore to 100 if the SCO didn't change it itself, but gave raw
    if (isset($raw_value) && isset($scoreMax_value) && $raw_value > 0 && $raw_value <= 100 && $scoreMax_value == 0) {
        $scoreMax_value = 100;
    }

    if (isScorm2004Time($_POST['session_time'])) {
        $total_time_value = addScorm2004Time($_POST['total_time'], $_POST['session_time']);
        $session_time_formatted = addScorm2004Time("0000:00:00.00", $_POST['session_time']);
    } else if (isScormTime($_POST['session_time'])) {
        $total_time_value = addScormTime($_POST['total_time'], $_POST['session_time']);
        $session_time_formatted = $_POST['session_time'];
    } else {
        $total_time_value = $_POST['total_time'];
    }

    $sql = "UPDATE `lp_user_module_progress`
            SET
                `lesson_location` = ?s,
                `lesson_status` = ?s,
                `entry` = ?s,
                `raw` = ?d,
                `scoreMin` = ?d,
                `scoreMax` = ?d,
                `total_time` = ?s,
                `session_time` = ?s,
Esempio n. 3
0
            $moduleImg = 'fa-info-circle';
        } elseif ($module['contentType'] == CTMEDIA_ or $module['contentType'] == CTMEDIALINK_) {
            $moduleImg = 'fa-film';
        } else {
            $moduleImg = choose_image(basename($module['path']));
        }
        $contentType_alt = selectAlt($module['contentType']);
        $tool_content .= icon($moduleImg, $contentType_alt) . q($module['name']) . '</small>';
    }

    $tool_content .= '</td>' . "\n";

    if ($module['contentType'] == CTSCORM_) {
        $session_time = preg_replace("/\.[0-9]{0,2}/", "", $module['session_time']);
        $total_time = preg_replace("/\.[0-9]{0,2}/", "", $module['total_time']);
        $global_time = addScormTime($global_time, $total_time);
    } elseif ($module['contentType'] == CTLABEL_ || $module['contentType'] == CTEXERCISE_) {
        $session_time = $module['session_time'];
        $total_time = $module['total_time'];
    } else {
        // if no progression has been recorded for this module
        // leave
        if ($module['lesson_status'] == "") {
            $session_time = "&nbsp;";
            $total_time = "&nbsp;";
        } else { // columns are n/a
            $session_time = "-";
            $total_time = "-";
        }
    }
    //-- session_time
Esempio n. 4
0
function set_learning_path_progression($totalResult, $totalGrade, $timeToCompleteExe, $_uid)
{
    $tbl_cdb_names = get_module_course_tbl(array('lp_rel_learnPath_module', 'lp_user_module_progress'), claro_get_current_course_id());
    $tbl_lp_rel_learnPath_module = $tbl_cdb_names['lp_rel_learnPath_module'];
    $tbl_lp_user_module_progress = $tbl_cdb_names['lp_user_module_progress'];
    // update raw in DB to keep the best one, so update only if new raw is better  AND if user NOT anonymous
    if ($_uid) {
        // exercices can have a negative score, but we don't accept that in LP
        // so if totalScore is negative use 0 as result
        $totalResult = max($totalResult, 0);
        if ($totalGrade != 0) {
            $newRaw = @round($totalResult / $totalGrade * 100);
        } else {
            $newRaw = 0;
        }
        $scoreMin = 0;
        $scoreMax = $totalGrade;
        $scormSessionTime = seconds_to_scorm_time($timeToCompleteExe);
        // need learningPath_module_id and raw_to_pass value
        $sql = "SELECT LPM.`raw_to_pass`, LPM.`learnPath_module_id`, UMP.`total_time`, UMP.`raw`\n                  FROM `" . $tbl_lp_rel_learnPath_module . "` AS LPM, `" . $tbl_lp_user_module_progress . "` AS UMP\n                 WHERE LPM.`learnPath_id` = '" . (int) $_SESSION['path_id'] . "'\n                   AND LPM.`module_id` = '" . (int) $_SESSION['module_id'] . "'\n                   AND LPM.`learnPath_module_id` = UMP.`learnPath_module_id`\n                   AND UMP.`user_id` = " . (int) $_uid;
        $lastProgression = claro_sql_query_get_single_row($sql);
        if ($lastProgression) {
            // build sql query
            $sql = "UPDATE `" . $tbl_lp_user_module_progress . "` SET ";
            // if recorded score is more than the new score => update raw, credit and status
            if ($lastProgression['raw'] < $totalResult) {
                // update raw
                $sql .= "`raw` = " . $totalResult . ",";
                // update credit and statut if needed ( score is better than raw_to_pass )
                if ($newRaw >= $lastProgression['raw_to_pass']) {
                    $sql .= "    `credit` = 'CREDIT',\n                                 `lesson_status` = 'PASSED',";
                } else {
                    $sql .= "    `credit` = 'NO-CREDIT',\n                                `lesson_status` = 'FAILED',";
                }
            }
            // else don't change raw, credit and lesson_status
            // default query statements
            $sql .= "    `scoreMin`         = " . (int) $scoreMin . ",\n                        `scoreMax`         = " . (int) $scoreMax . ",\n                        `total_time`    = '" . addScormTime($lastProgression['total_time'], $scormSessionTime) . "',\n                        `session_time`    = '" . $scormSessionTime . "'\n                     WHERE `learnPath_module_id` = " . (int) $lastProgression['learnPath_module_id'] . "\n                       AND `user_id` = " . (int) $_uid . "";
            // Generate an event to notify that the exercise has been completed
            $learnPathEventArgs = array('userId' => (int) $_uid, 'courseCode' => claro_get_current_course_id(), 'scoreRaw' => (int) $totalResult, 'scoreMin' => (int) $scoreMin, 'scoreMax' => (int) $scoreMax, 'sessionTime' => $scormSessionTime, 'learnPathModuleId' => (int) $lastProgression['learnPath_module_id'], 'type' => "update");
            if ($newRaw >= $lastProgression['raw_to_pass']) {
                $learnPathEventArgs['status'] = "PASSED";
            } else {
                $learnPathEventArgs['status'] = "FAILED";
            }
            $learnPathEvent = new Event('lp_user_module_progress_modified', $learnPathEventArgs);
            EventManager::notify($learnPathEvent);
            return claro_sql_query($sql);
        } else {
            return false;
        }
    }
}