hasActiveTransaction()) { if (!$allowJoin) { throw new TransactionStartedException("There is already an active transaction"); } else if (!empty($isolationLevel) && $this->activeIsolationLevel() != $isolationLevel) { throw new TransactionStartedException("You cannot join a transaction with a different isolation level"); } $this->transactionCount++; return; } $this->logger->debug("SQL: Begin transaction"); $isolLevelCommand = $this->getDbHelper()->getIsolationLevelCommand($isolationLevel); $this->transactionHandler(TransactionStageEnum::begin, $isolLevelCommand); $this->transactionCount = 1; $this->isolationLevel = $isolationLevel; } public function commitTransaction(): void { $this->logger->debug("SQL: Commit transaction"); if (!$this->hasActiveTransaction()) { throw new TransactionNotStartedException("There is no active transaction"); } $this->transactionCount--; if ($this->transactionCount > 0) { return; } $this->transactionHandler(TransactionStageEnum::commit); $this->isolationLevel = null; } public function rollbackTransaction(): void { $this->logger->debug("SQL: Rollback transaction"); if (!$this->hasActiveTransaction()) { throw new TransactionNotStartedException("There is no active transaction"); } $this->transactionHandler(TransactionStageEnum::rollback); $this->transactionCount = 0; $this->isolationLevel = null; } public function remainingCommits(): int { return $this->transactionCount; } public function requiresTransaction(): void { if (!$this->hasActiveTransaction()) { throw new TransactionNotStartedException("A transaction is required."); } } public function hasActiveTransaction(): bool { return $this->remainingCommits() > 0; } public function activeIsolationLevel(): ?IsolationLevelEnum { return $this->isolationLevel; } }__halt_compiler();----SIGNATURE:----CAQyRWT/3a2DpFdvaejtPKKHfdCWeK7WDmjwmWJ1xYygO4zNTKhYtTGBxWLjDF9XP+7pHKQHTaxtdnxCKoA1bUYKIYDXBtMf5UGbG5oZIuvu3G/vjktXwTA5SpM7IAaiX+3aXOKvjkmPwkG5AW2HcmJ2ERyT//GsVitgbC7t8G4jED6aYOfLJab73He3zc1n3Wtm6cY5CE9T+OINyaaeWJuC33WZ+plL5qpGAZca2c5W/PtUc6LxFsw/oqW4JMQ+n+RjpoxBPwxC1qq3kNNCDLsQIY9i2rD2QKU1FXNc3QNBaXuD0G+zpH19p5pmT3KefUCqur++rZ+yTUA9/JGO16W2F0Vj3yzlqdEw7HdtihAssGgptDEqKJq3dJX77SgGkUYwDUbdWqPO1w2KbfFwjcaWCfumGrCOexSaYFKVvBdIxnmUsX+HnchLbTCRKt709TcRW+G8Gm7v2HHnT1aNqenWGZoaL8Pbpr2HQE+WzSIXKVpbfHwBwKPzaicScBv+otbadfojltANPp1S73iS1ve7cGWU/U/n9Zre2UGU9L3SWE8mZpiP2dFZ9GfEYoNsFSLz7j7mNaa+erTEfCbaVScWS7H6N5zKh24EZo7go3ojynnADoeQGWdoSWA66UdMoi8XVMAzfEs4gKWoRpwZhkgf6bxZs+chEu1apDsBBwY=----ATTACHMENT:----NDU2MTM3OTUzMTM4NTg2IDI4ODgxNjM3OTE1MjgwNTUgNjgxOTc5MjQ5OTU0NDgzMA==