/** * @param CustomContextEvent $event */ public function removeCategories(CustomContextEvent $event) { $certification = $event->getCertification(); $context = $certification->getContext(); $metrics = $certification->getMetrics(); $excludedCategories = $context->getExcludeCategories(); if (empty($excludedCategories) || true !== $context->getAllowExcludeCategories()) { return; } foreach ($certification->getCategories() as $category) { if (!in_array($category->getName(), $excludedCategories)) { continue; } $metrics->decrement(Metrics::CATEGORY); foreach ($category->getQuestions() as $question) { $metrics->decrement(Metrics::QUESTION); $metrics->decrement(Metrics::ANSWER, count($question->getAnswers())); } $certification->removeCategory($category); } $event->setCertification($certification); }