diff --git a/plugin/xapi/README.md b/plugin/xapi/README.md index c39b1ce59e..6d2f5f7e20 100644 --- a/plugin/xapi/README.md +++ b/plugin/xapi/README.md @@ -77,7 +77,6 @@ To update, execute this queries: CREATE TABLE xapi_internal_log (id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, statement_id VARCHAR(255) NOT NULL, verb VARCHAR(255) NOT NULL, object_id VARCHAR(255) NOT NULL, activity_name VARCHAR(255) DEFAULT NULL, activity_description VARCHAR(255) DEFAULT NULL, score_scaled DOUBLE PRECISION DEFAULT NULL, score_raw DOUBLE PRECISION DEFAULT NULL, score_min DOUBLE PRECISION DEFAULT NULL, score_max DOUBLE PRECISION DEFAULT NULL, created_at DATETIME DEFAULT NULL, INDEX IDX_C1C667ACA76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB; ALTER TABLE xapi_internal_log ADD CONSTRAINT FK_C1C667ACA76ED395 FOREIGN KEY (user_id) REFERENCES user (id); ``` -- asda **From 0.3 (beta) [2021-11-11]** @@ -86,4 +85,6 @@ ALTER TABLE xapi_internal_log ADD CONSTRAINT FK_C1C667ACA76ED395 FOREIGN KEY (us ALTER TABLE xapi_internal_log ADD CONSTRAINT FK_C1C667ACA76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE; ALTER TABLE xapi_tool_launch ADD CONSTRAINT FK_E18CB58391D79BD3 FOREIGN KEY (c_id) REFERENCES course (id) ON DELETE CASCADE; ALTER TABLE xapi_tool_launch ADD CONSTRAINT FK_E18CB583613FECDF FOREIGN KEY (session_id) REFERENCES session (id) ON DELETE CASCADE; + +ALTER TABLE xapi_internal_log CHANGE statement_id statement_id varchar(255) NULL; ``` diff --git a/plugin/xapi/src/Entity/InternalLog.php b/plugin/xapi/src/Entity/InternalLog.php index b9c807f94d..9130361b4d 100644 --- a/plugin/xapi/src/Entity/InternalLog.php +++ b/plugin/xapi/src/Entity/InternalLog.php @@ -30,7 +30,7 @@ class InternalLog /** * @var string * - * @ORM\Column(name="statement_id", type="string") + * @ORM\Column(name="statement_id", type="string", nullable=true) */ private $statementId; /** @@ -105,12 +105,12 @@ class InternalLog return $this; } - public function getStatementId(): string + public function getStatementId(): ?string { return $this->statementId; } - public function setStatementId(string $statementId): InternalLog + public function setStatementId(?string $statementId): InternalLog { $this->statementId = $statementId; diff --git a/plugin/xapi/src/Lrs/Utils/InternalLogUtil.php b/plugin/xapi/src/Lrs/Utils/InternalLogUtil.php index 95b6d832c9..dc9a1cbcd1 100644 --- a/plugin/xapi/src/Lrs/Utils/InternalLogUtil.php +++ b/plugin/xapi/src/Lrs/Utils/InternalLogUtil.php @@ -22,23 +22,24 @@ class InternalLogUtil return; } - $internalLog = new InternalLog(); - $internalLog->setUser($user); - - $languageIso = api_get_language_isocode(); - - $internalLog->setVerb( - XApiPlugin::extractVerbInLanguage($statement->getVerb()->getDisplay(), $languageIso) - ); - $statementObject = $statement->getObject(); if (!$statementObject instanceof Activity) { return; } - $internalLog->setObjectId($statementObject->getId()->getValue()); - $internalLog->setStatementId($statement->getId()->getValue()); + $languageIso = api_get_language_isocode(); + $statementVerbString = XApiPlugin::extractVerbInLanguage($statement->getVerb()->getDisplay(), $languageIso); + + $internalLog = new InternalLog(); + $internalLog + ->setUser($user) + ->setVerb($statementVerbString) + ->setObjectId($statementObject->getId()->getValue()); + + if (null !== $statementId = $statement->getId()) { + $internalLog->setStatementId($statementId->getValue()); + } if (null !== $definition = $statementObject->getDefinition()) { if (null !== $nameInLanguages = $definition->getName()) { @@ -81,7 +82,7 @@ class InternalLogUtil $em->flush(); } - private static function getUserFromActor(Actor $actor) + private static function getUserFromActor(Actor $actor): ?object { if (!$actor instanceof Agent) { return null;