summaryrefslogtreecommitdiff
path: root/src/Entity/ScoTracking.php
diff options
context:
space:
mode:
authorDevian <devianleong@gmail.com>2021-04-22 17:03:46 +0800
committerDevian <devianleong@gmail.com>2021-04-22 17:03:46 +0800
commit745cf2431a71d0e6c5f08f8605839279b2f7496e (patch)
tree11e4c7a19ac9f9efc1bb253b29b1fa488c34238e /src/Entity/ScoTracking.php
Initiate commit
Diffstat (limited to 'src/Entity/ScoTracking.php')
-rw-r--r--src/Entity/ScoTracking.php343
1 files changed, 343 insertions, 0 deletions
diff --git a/src/Entity/ScoTracking.php b/src/Entity/ScoTracking.php
new file mode 100644
index 0000000..c0b001d
--- /dev/null
+++ b/src/Entity/ScoTracking.php
@@ -0,0 +1,343 @@
+<?php
+
+
+namespace Peopleaps\Scorm\Entity;
+
+
+class ScoTracking
+{
+ public $userId;
+ public $sco;
+ public $scoreRaw;
+ public $scoreMin;
+ public $scoreMax;
+ public $progression = 0;
+ public $scoreScaled;
+ public $lessonStatus;
+ public $completionStatus;
+ public $sessionTime;
+ public $totalTimeInt;
+ public $totalTimeString;
+ public $entry;
+ public $suspendData;
+ public $credit;
+ public $exitMode;
+ public $lessonLocation;
+ public $lessonMode;
+ public $isLocked;
+ public $details;
+ public $latestDate;
+
+ public function getUserId()
+ {
+ return $this->userId;
+ }
+
+ public function setUserId($userId)
+ {
+ $this->userId = $userId;
+ }
+
+ /**
+ * @return Sco
+ */
+ public function getSco()
+ {
+ return $this->sco;
+ }
+
+ public function setSco($sco)
+ {
+ $this->sco = $sco;
+ }
+
+ public function getScoreRaw()
+ {
+ return $this->scoreRaw;
+ }
+
+ public function setScoreRaw($scoreRaw)
+ {
+ $this->scoreRaw = $scoreRaw;
+ }
+
+ public function getScoreMin()
+ {
+ return $this->scoreMin;
+ }
+
+ public function setScoreMin($scoreMin)
+ {
+ $this->scoreMin = $scoreMin;
+ }
+
+ public function getScoreMax()
+ {
+ return $this->scoreMax;
+ }
+
+ public function setScoreMax($scoreMax)
+ {
+ $this->scoreMax = $scoreMax;
+ }
+
+ public function getScoreScaled()
+ {
+ return $this->scoreScaled;
+ }
+
+ public function setScoreScaled($scoreScaled)
+ {
+ $this->scoreScaled = $scoreScaled;
+ }
+
+ public function getLessonStatus()
+ {
+ return $this->lessonStatus;
+ }
+
+ public function setLessonStatus($lessonStatus)
+ {
+ $this->lessonStatus = $lessonStatus;
+ }
+
+ public function getCompletionStatus()
+ {
+ return $this->completionStatus;
+ }
+
+ public function setCompletionStatus($completionStatus)
+ {
+ $this->completionStatus = $completionStatus;
+ }
+
+ public function getSessionTime()
+ {
+ return $this->sessionTime;
+ }
+
+ public function setSessionTime($sessionTime)
+ {
+ $this->sessionTime = $sessionTime;
+ }
+
+ public function getTotalTime($scormVersion)
+ {
+ if (Scorm::SCORM_2004 === $scormVersion) {
+ return $this->totalTimeString;
+ } else {
+ return $this->totalTimeInt;
+ }
+ }
+
+ public function setTotalTime($totalTime, $scormVersion)
+ {
+ if (Scorm::SCORM_2004 === $scormVersion) {
+ $this->setTotalTimeString($totalTime);
+ } else {
+ $this->setTotalTimeInt($totalTime);
+ }
+ }
+
+ public function getTotalTimeInt()
+ {
+ return $this->totalTimeInt;
+ }
+
+ public function setTotalTimeInt($totalTimeInt)
+ {
+ $this->totalTimeInt = $totalTimeInt;
+ }
+
+ public function getTotalTimeString()
+ {
+ return $this->totalTimeString;
+ }
+
+ public function setTotalTimeString($totalTimeString)
+ {
+ $this->totalTimeString = $totalTimeString;
+ }
+
+ public function getEntry()
+ {
+ return $this->entry;
+ }
+
+ public function setEntry($entry)
+ {
+ $this->entry = $entry;
+ }
+
+ public function getSuspendData()
+ {
+ return $this->suspendData;
+ }
+
+ public function setSuspendData($suspendData)
+ {
+ $this->suspendData = $suspendData;
+ }
+
+ public function getCredit()
+ {
+ return $this->credit;
+ }
+
+ public function setCredit($credit)
+ {
+ $this->credit = $credit;
+ }
+
+ public function getExitMode()
+ {
+ return $this->exitMode;
+ }
+
+ public function setExitMode($exitMode)
+ {
+ $this->exitMode = $exitMode;
+ }
+
+ public function getLessonLocation()
+ {
+ return $this->lessonLocation;
+ }
+
+ public function setLessonLocation($lessonLocation)
+ {
+ $this->lessonLocation = $lessonLocation;
+ }
+
+ public function getLessonMode()
+ {
+ return $this->lessonMode;
+ }
+
+ public function setLessonMode($lessonMode)
+ {
+ $this->lessonMode = $lessonMode;
+ }
+
+ public function getIsLocked()
+ {
+ return $this->isLocked;
+ }
+
+ public function setIsLocked($isLocked)
+ {
+ $this->isLocked = $isLocked;
+ }
+
+ public function getDetails()
+ {
+ return $this->details;
+ }
+
+ public function setDetails($details)
+ {
+ $this->details = $details;
+ }
+
+ public function getLatestDate()
+ {
+ return $this->latestDate;
+ }
+
+ public function setLatestDate(\DateTime $latestDate = null)
+ {
+ $this->latestDate = $latestDate;
+ }
+
+ public function getProgression()
+ {
+ return $this->progression;
+ }
+
+ public function setProgression($progression)
+ {
+ $this->progression = $progression;
+ }
+
+ public function getFormattedTotalTime()
+ {
+ if (Scorm::SCORM_2004 === $this->sco->getScorm()->getVersion()) {
+ return $this->getFormattedTotalTimeString();
+ } else {
+ return $this->getFormattedTotalTimeInt();
+ }
+ }
+
+ public function getFormattedTotalTimeInt()
+ {
+ $remainingTime = $this->totalTimeInt;
+ $hours = intval($remainingTime / 360000);
+ $remainingTime %= 360000;
+ $minutes = intval($remainingTime / 6000);
+ $remainingTime %= 6000;
+ $seconds = intval($remainingTime / 100);
+ $remainingTime %= 100;
+
+ $formattedTime = '';
+
+ if ($hours < 10) {
+ $formattedTime .= '0';
+ }
+ $formattedTime .= $hours.':';
+
+ if ($minutes < 10) {
+ $formattedTime .= '0';
+ }
+ $formattedTime .= $minutes.':';
+
+ if ($seconds < 10) {
+ $formattedTime .= '0';
+ }
+ $formattedTime .= $seconds.'.';
+
+ if ($remainingTime < 10) {
+ $formattedTime .= '0';
+ }
+ $formattedTime .= $remainingTime;
+
+ return $formattedTime;
+ }
+
+ public function getFormattedTotalTimeString()
+ {
+ $pattern = '/^P([0-9]+Y)?([0-9]+M)?([0-9]+D)?T([0-9]+H)?([0-9]+M)?([0-9]+S)?$/';
+ $formattedTime = '';
+
+ if (!empty($this->totalTimeString) && 'PT' !== $this->totalTimeString && preg_match($pattern, $this->totalTimeString)) {
+ $interval = new \DateInterval($this->totalTimeString);
+ $time = new \DateTime();
+ $time->setTimestamp(0);
+ $time->add($interval);
+ $timeInSecond = $time->getTimestamp();
+
+ $hours = intval($timeInSecond / 3600);
+ $timeInSecond %= 3600;
+ $minutes = intval($timeInSecond / 60);
+ $timeInSecond %= 60;
+
+ if ($hours < 10) {
+ $formattedTime .= '0';
+ }
+ $formattedTime .= $hours.':';
+
+ if ($minutes < 10) {
+ $formattedTime .= '0';
+ }
+ $formattedTime .= $minutes.':';
+
+ if ($timeInSecond < 10) {
+ $formattedTime .= '0';
+ }
+ $formattedTime .= $timeInSecond;
+ } else {
+ $formattedTime .= '00:00:00';
+ }
+
+ return $formattedTime;
+ }
+}