/** * Check if the ser has completed the requirements for the session sequences * @param array $sequences The sequences * @param int $userId Optional. The user ID * @return array */ private static function checkSessionRequirementsForUser(array $sequences, $userId = 0) { $sequenceList = []; $entityManager = Database::getManager(); $gradebookCategoryRepo = $entityManager->getRepository('ChamiloCoreBundle:GradebookCategory'); foreach ($sequences as $sequenceId => $sequence) { $item = ['name' => $sequence['name'], 'requirements' => []]; foreach ($sequence['requirements'] as $sessionRequired) { $itemSession = ['name' => $sessionRequired->getName(), 'status' => true]; $sessionsCourses = $sessionRequired->getCourses(); foreach ($sessionsCourses as $sessionCourse) { $course = $sessionCourse->getCourse(); $gradebooks = $gradebookCategoryRepo->findBy(['courseCode' => $course->getCode(), 'sessionId' => $sessionRequired->getId(), 'isRequirement' => true]); foreach ($gradebooks as $gradebook) { $category = Category::createCategoryObjectFromEntity($gradebook); if (!empty($userId)) { $itemSession['status'] = $itemSession['status'] && Category::userFinishedCourse($userId, $category, null, $course->getCode(), $sessionRequired->getId()); } } } $item['requirements'][$sessionRequired->getId()] = $itemSession; } $sequenceList[$sequenceId] = $item; } return $sequenceList; }