From 1a3aead3719739181d997b6f96dd88c367aa5772 Mon Sep 17 00:00:00 2001 From: Mikola Mirchuk Date: Wed, 3 May 2023 13:35:10 +0200 Subject: [PATCH] Clamp problems --- src/Domain/Traits/ProblemTrait.php | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/Domain/Traits/ProblemTrait.php b/src/Domain/Traits/ProblemTrait.php index 33c39ca..7154c6a 100644 --- a/src/Domain/Traits/ProblemTrait.php +++ b/src/Domain/Traits/ProblemTrait.php @@ -12,7 +12,7 @@ trait ProblemTrait * @var ArrayObject|null */ protected $problems; - protected $defaultMaxProblemsPerObject = 10; + protected $defaultMaxProblemsPerObject = 3; /** * @param ArrayObjectItemInterface $problem @@ -28,19 +28,25 @@ public function addProblemItem(mixed $problem) $problem = new ArrayObjectItem($problem); } + $this->clampProblems(getenv('MAX_PROBLEMS_PER_OBJECT') ?: $this->defaultMaxProblemsPerObject); + $problems = $this->getProblems(); - $problemsCount = $problems->count(); - $maxProblemsPerObject = getenv('MAX_PROBLEMS_PER_OBJECT') ?? $this->defaultMaxProblemsPerObject; + $problems->addItem($problem); + $this->setProblems($problems); + } - if ($problemsCount < $maxProblemsPerObject) { - $this->problems->addItem($problem); - return; + public function clampProblems(int $maxProblemsSize) { + if ($this->problems === null) { + $this->problems = new ArrayObject(true); } + $problems = $this->getProblems(); + $problemsCount = $problems->count(); + $problemsArray = $problems->toArray(); $newProblems = new ArrayObject(true); - $deleteRowsCount = $problemsCount - $maxProblemsPerObject; + $deleteRowsCount = $problemsCount - $maxProblemsSize; for ($i = 0 ; $i < $deleteRowsCount ; $i++) { array_shift($problemsArray); } @@ -48,9 +54,8 @@ public function addProblemItem(mixed $problem) $arrayObjectProblemItem = new ArrayObjectItem($problemItem); $newProblems->addItem($arrayObjectProblemItem); } - - $newProblems->addItem($problem); - $this->setProblems($problems); + + $this->setProblems($newProblems); } /**