public function __construct(Cursus $cursus) { $details = []; $details['id'] = $cursus->getId(); $details['title'] = $cursus->getTitle(); $details['code'] = $cursus->getCode(); $details['blocking'] = $cursus->isBlocking(); $details['details'] = $cursus->getDetails(); $details['root'] = $cursus->getRoot(); $details['lvl'] = $cursus->getLvl(); $details['lft'] = $cursus->getLft(); $details['rgt'] = $cursus->getRgt(); $parent = $cursus->getParent(); $course = $cursus->getCourse(); $workspace = $cursus->getWorkspace(); if (!is_null($parent)) { $details['parentId'] = $parent->getId(); $details['parentTitle'] = $parent->getTitle(); $details['parentCode'] = $parent->getCode(); } if (!is_null($course)) { $details['courseId'] = $course->getId(); $details['courseTitle'] = $course->getTitle(); $details['courseCode'] = $course->getCode(); } if (!is_null($workspace)) { $details['workspaceId'] = $workspace->getId(); $details['workspaceName'] = $workspace->getName(); $details['workspaceCode'] = $workspace->getCode(); $details['workspaceGuid'] = $workspace->getGuid(); } parent::__construct(self::ACTION, $details); }
public function unregisterGroupFromCursus(Cursus $cursus, Group $group) { $users = $group->getUsers()->toArray(); $cursusGroupsToDelete = array(); $cursusUsersToDelete = array(); $coursesToUnregister = array(); $root = $cursus->getRoot(); $cursusRoot = $this->getOneCursusById($root); if ($cursus->isBlocking()) { $course = $cursus->getCourse(); if (!is_null($course)) { $coursesToUnregister[] = $course; } $cursusUsersToDelete = $this->getCursusUsersFromCursusAndUsers(array($cursus), $users); $cursusGroupsToDelete = $this->getCursusGroupsFromCursusAndGroups(array($cursus), array($group)); } else { // Determines from which cursus descendants user has to be removed. $unlockedDescendants = $this->getUnlockedDescendants($cursus); // Current cursus is included $unlockedDescendants[] = $cursus; $cursusUsersToDelete = $this->getCursusUsersFromCursusAndUsers($unlockedDescendants, $users); $removableGroupDescendants = $this->getCursusGroupsFromCursusAndGroups($unlockedDescendants, array($group)); foreach ($users as $user) { // Determines from which cursus ancestors user has to be removed $removableUserAncestors = $this->searchRemovableCursusUsersFromAncestors($cursus, $user); // Merge all removable CursusUser $cursusUsersToDelete = array_merge_recursive($cursusUsersToDelete, $removableUserAncestors); } $removableGroupAncestors = $this->searchRemovableCursusGroupsFromAncestors($cursus, $group); // Merge all removable CursusGroup $cursusGroupsToDelete = array_merge_recursive($removableGroupDescendants, $removableGroupAncestors); foreach ($cursusGroupsToDelete as $cursusGroup) { $cursus = $cursusGroup->getCursus(); $course = $cursus->getCourse(); if (!is_null($course)) { $coursesToUnregister[] = $course; } } } $sessionsToUnregister = is_null($cursusRoot) ? array() : $this->getSessionsByCursusAndCourses($cursusRoot, $coursesToUnregister); $sessionsGroups = $this->getSessionGroupsBySessionsAndGroup($sessionsToUnregister, $group, 0); $this->om->startFlushSuite(); foreach ($sessionsGroups as $sessionGroup) { $this->unregisterGroupFromSession($sessionGroup); } foreach ($cursusUsersToDelete as $cu) { $this->deleteCursusUser($cu); } foreach ($cursusGroupsToDelete as $cg) { $this->deleteCursusGroup($cg); } $this->om->endFlushSuite(); }