summaryrefslogtreecommitdiff
path: root/src/Entity/Scorm.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/Scorm.php
Initiate commit
Diffstat (limited to 'src/Entity/Scorm.php')
-rw-r--r--src/Entity/Scorm.php146
1 files changed, 146 insertions, 0 deletions
diff --git a/src/Entity/Scorm.php b/src/Entity/Scorm.php
new file mode 100644
index 0000000..4095986
--- /dev/null
+++ b/src/Entity/Scorm.php
@@ -0,0 +1,146 @@
+<?php
+
+
+namespace Peopleaps\Scorm\Entity;
+
+
+use Doctrine\Common\Collections\ArrayCollection;
+
+class Scorm
+{
+ const SCORM_12 = 'scorm_12';
+ const SCORM_2004 = 'scorm_2004';
+
+ public $uuid;
+ public $id;
+ public $version;
+ public $hashName;
+ public $ratio = 56.25;
+ public $scos;
+ public $scoSerializer;
+
+ /**
+ * @return string
+ */
+ public function getUuid()
+ {
+ return $this->uuid;
+ }
+
+ /**
+ * @param int $id
+ */
+ public function setUuid($uuid)
+ {
+ $this->uuid = $uuid;
+ }
+
+ /**
+ * @return int
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+
+ /**
+ * @param int $id
+ */
+ public function setId($id)
+ {
+ $this->id = $id;
+ }
+
+ /**
+ * @return string
+ */
+ public function getVersion()
+ {
+ return $this->version;
+ }
+
+ /**
+ * @param string $version
+ */
+ public function setVersion($version)
+ {
+ $this->version = $version;
+ }
+
+ /**
+ * @return string
+ */
+ public function getHashName()
+ {
+ return $this->hashName;
+ }
+
+ /**
+ * @param string $hashName
+ */
+ public function setHashName($hashName)
+ {
+ $this->hashName = $hashName;
+ }
+
+ /**
+ * @return float
+ */
+ public function getRatio()
+ {
+ return $this->ratio;
+ }
+
+ /**
+ * @param float $ratio
+ */
+ public function setRatio($ratio)
+ {
+ $this->ratio = $ratio;
+ }
+
+ /**
+ * @return Sco[]
+ */
+ public function getScos()
+ {
+ return $this->scos;
+ }
+
+ /**
+ * @return Sco[]
+ */
+ public function getRootScos()
+ {
+ $roots = [];
+
+ if (!empty($this->scos)) {
+ foreach ($this->scos as $sco) {
+ if (is_null($sco->getScoParent())) {
+ // Root sco found
+ $roots[] = $sco;
+ }
+ }
+ }
+
+ return $roots;
+ }
+
+ public function serialize(Scorm $scorm)
+ {
+ return [
+ 'id' => $scorm->getUuid(),
+ 'version' => $scorm->getVersion(),
+ 'hashName' => $scorm->getHashName(),
+ 'ratio' => $scorm->getRatio(),
+ 'scos' => $this->serializeScos($scorm),
+ ];
+ }
+
+ private function serializeScos(Scorm $scorm)
+ {
+ return array_map(function (Sco $sco) {
+ return $sco->serialize($sco);
+ }, $scorm->getRootScos());
+ }
+}