|
@@ -1770,6 +1770,24 @@ class learnpathItem
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param string $origin
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ public static function getScormTimeFromParameter($origin = 'php', $time = null)
|
|
|
+ {
|
|
|
+ $h = get_lang('h');
|
|
|
+ if (!isset($time)) {
|
|
|
+ if ($origin == 'js') {
|
|
|
+ return '00:00:00';
|
|
|
+ } else {
|
|
|
+ return '00' . $h . '00\'00"';
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return self::calculateScormTime($origin, $time);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Gets the total time spent on this item view so far
|
|
|
* @param string $origin Origin of the request. If coming from PHP,
|
|
@@ -1783,7 +1801,6 @@ class learnpathItem
|
|
|
$given_time = null,
|
|
|
$query_db = false
|
|
|
) {
|
|
|
- $h = get_lang('h');
|
|
|
$time = null;
|
|
|
$course_id = api_get_course_int_id();
|
|
|
if (!isset($given_time)) {
|
|
@@ -1793,34 +1810,26 @@ class learnpathItem
|
|
|
0
|
|
|
);
|
|
|
}
|
|
|
- if (is_object($this)) {
|
|
|
- if ($query_db === true) {
|
|
|
- $table = Database::get_course_table(TABLE_LP_ITEM_VIEW);
|
|
|
- $sql = "SELECT start_time, total_time FROM $table
|
|
|
- WHERE
|
|
|
- c_id = $course_id AND
|
|
|
- id = '" . $this->db_item_view_id . "' AND
|
|
|
- view_count = '" . $this->get_attempt_id() . "'";
|
|
|
- $res = Database::query($sql);
|
|
|
- $row = Database::fetch_array($res);
|
|
|
- $start = $row['start_time'];
|
|
|
- $stop = $start + $row['total_time'];
|
|
|
- } else {
|
|
|
- $start = $this->current_start_time;
|
|
|
- $stop = $this->current_stop_time;
|
|
|
- }
|
|
|
- if (!empty($start)) {
|
|
|
- if (!empty($stop)) {
|
|
|
- $time = $stop - $start;
|
|
|
- } else {
|
|
|
- $time = time() - $start;
|
|
|
- }
|
|
|
- }
|
|
|
+ if ($query_db === true) {
|
|
|
+ $table = Database::get_course_table(TABLE_LP_ITEM_VIEW);
|
|
|
+ $sql = "SELECT start_time, total_time FROM $table
|
|
|
+ WHERE
|
|
|
+ c_id = $course_id AND
|
|
|
+ id = '" . $this->db_item_view_id . "' AND
|
|
|
+ view_count = '" . $this->get_attempt_id() . "'";
|
|
|
+ $res = Database::query($sql);
|
|
|
+ $row = Database::fetch_array($res);
|
|
|
+ $start = $row['start_time'];
|
|
|
+ $stop = $start + $row['total_time'];
|
|
|
} else {
|
|
|
- if ($origin == 'js') {
|
|
|
- return '00:00:00';
|
|
|
+ $start = $this->current_start_time;
|
|
|
+ $stop = $this->current_stop_time;
|
|
|
+ }
|
|
|
+ if (!empty($start)) {
|
|
|
+ if (!empty($stop)) {
|
|
|
+ $time = $stop - $start;
|
|
|
} else {
|
|
|
- return '00' . $h . '00\'00"';
|
|
|
+ $time = time() - $start;
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
@@ -1832,21 +1841,35 @@ class learnpathItem
|
|
|
0
|
|
|
);
|
|
|
}
|
|
|
+ $time = self::calculateScormTime($origin, $time);
|
|
|
+
|
|
|
+ return $time;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param string $origin
|
|
|
+ * @param string $time
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ public static function calculateScormTime($origin, $time)
|
|
|
+ {
|
|
|
+ $h = get_lang('h');
|
|
|
$hours = $time / 3600;
|
|
|
$mins = ($time % 3600) / 60;
|
|
|
$secs = ($time % 60);
|
|
|
+
|
|
|
if ($origin == 'js') {
|
|
|
- $scorm_time = trim(sprintf("%4d:%02d:%02d", $hours, $mins, $secs));
|
|
|
+ $scormTime = trim(sprintf("%4d:%02d:%02d", $hours, $mins, $secs));
|
|
|
} else {
|
|
|
- $scorm_time = trim(
|
|
|
+ $scormTime = trim(
|
|
|
sprintf("%4d$h%02d'%02d\"", $hours, $mins, $secs)
|
|
|
);
|
|
|
}
|
|
|
if (self::debug > 2) {
|
|
|
- error_log('learnpathItem::get_scorm_time(' . $scorm_time . ')', 0);
|
|
|
+ error_log('learnpathItem::get_scorm_time(' . $scormTime . ')', 0);
|
|
|
}
|
|
|
|
|
|
- return $scorm_time;
|
|
|
+ return $scormTime;
|
|
|
}
|
|
|
|
|
|
/**
|