/** * Processor to remove user from system * @param User $user * @return mixed */ public function deleteUser(User $user) { // Preparing variables $returnValues['processor'] = 'delete_user'; $returnValues['username'] = $user->getCommonName() . ' (' . $user->getId() . ')'; // If user if ($user) { // Removing LDAP User try { $returnValues['ldapIssue'] = $this->ldapDriver->ldapRemoveUser($user); } catch (\Exception $e) { $returnValues['ldapIssue'] = false; } // Remove VCS user try { $returnValues['vcsIssue'] = $this->gitlabApi->deleteUser($user); } catch (\Exception $e) { $returnValues['vcsIssue'] = false; } // Remove PM user try { $returnValues['pmIssue'] = $this->redmineApi->deleteUser($user); } catch (\Exception $e) { $returnValues['pmIssue'] = false; } // Remove CI User // try { // $returnValues['ciIssue'] = $this->container->get('spirit_dev_dbox_portal_bundle.api.jenkins')->deleteUser($user); // } catch (\Exception $e) { $returnValues['ciIssue'] = 'Deprecated !'; // } // Remove QA User $returnValues['qaIssue'] = $this->sonarApi->deleteUser($user); // Remove demands $demands = $this->em->getRepository('SpiritDevDBoxPortalBundle:Demand')->findBy(array('applicant' => $user)); $status = $this->em->getRepository('SpiritDevDBoxPortalBundle:Status')->findOneBy(array('canonicalName' => 'new')); foreach ($demands as $demand) { $demand->setApplicant(null); $demand->setStatus($status); } // Remove projects $projectsOwned = $this->em->getRepository('SpiritDevDBoxPortalBundle:Project')->findBy(array('owner' => $user)); foreach ($projectsOwned as $project) { $project->setOwner(null); } // $projectMembers = $em->getRepository('SpiritDevDBoxPortalBundle:Project')->findBy(array('teamMembers'=>$user)); // foreach ($projectMembers as $project) { // $project->removeTeamMember($user); // } // Remove DB User $this->em->remove($user); // Save changes $this->em->flush(); $returnValues['dbIssue'] = true; // Send mail $this->mailer->accountUpdate($user, "deletion"); $returnValues['mailIssue'] = true; } else { $returnValues['ldapIssue'] = false; $returnValues['vcsIssue'] = false; $returnValues['pmIssue'] = false; $returnValues['ciIssue'] = false; $returnValues['qaIssue'] = false; $returnValues['dbIssue'] = false; $returnValues['mailIssue'] = false; } // Return values return $returnValues; }