From b837dd465103a47106d0f2330ae0ad3a4c06c7b2 Mon Sep 17 00:00:00 2001 From: Angel Fernando Quiroz Campos Date: Mon, 19 Oct 2020 16:38:32 -0500 Subject: [PATCH] XAPI: Don't send statement already sent - refs BT#16742 --- .../xapi/src/Hook/XApiActivityHookObserver.php | 18 ++++++++++++++++++ .../xapi/src/Hook/XApiLearningPathEndHook.php | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/plugin/xapi/src/Hook/XApiActivityHookObserver.php b/plugin/xapi/src/Hook/XApiActivityHookObserver.php index 3c47e46473..c0a7f7670b 100644 --- a/plugin/xapi/src/Hook/XApiActivityHookObserver.php +++ b/plugin/xapi/src/Hook/XApiActivityHookObserver.php @@ -133,4 +133,22 @@ abstract class XApiActivityHookObserver extends HookObserver return $context->withPlatform($platform); } + + /** + * @param \Xabbuh\XApi\Model\Statement $statement + * + * @return bool + */ + protected function isStatementAlreadySent(Statement $statement) + { + $sharedStmt = Database::getManager() + ->getRepository(SharedStatement::class) + ->findOneByUuid($statement->getId()->getValue()); + + if ($sharedStmt) { + return true; + } + + return false; + } } diff --git a/plugin/xapi/src/Hook/XApiLearningPathEndHook.php b/plugin/xapi/src/Hook/XApiLearningPathEndHook.php index 71c4732623..40f375ccd0 100644 --- a/plugin/xapi/src/Hook/XApiLearningPathEndHook.php +++ b/plugin/xapi/src/Hook/XApiLearningPathEndHook.php @@ -51,6 +51,10 @@ class XApiLearningPathEndHook extends XApiActivityHookObserver implements HookLe $statement = $this->createStatement(); + if ($this->isStatementAlreadySent($statement)) { + return; + } + try { $statement = $this->sendStatementToLrs($statement);