protected function execute(InputInterface $input, OutputInterface $output) { $login = $input->getArgument("login"); $helper = $this->getHelper('question'); $question = new Question("Unix password for « {$login} » : "); $question->setHidden(true); $question->setHiddenFallback(false); $password = $input->getArgument("password") ? $input->getArgument("password") : $helper->ask($input, $output, $question); $blih = new Blih($login, $password); $blihRepositoriesResponse = $blih->repository()->all(); if ($blihRepositoriesResponse->code == 200) { $user = $this->getUserOrCreateIt($login); $repositoryNames = array_keys(get_object_vars($blihRepositoriesResponse->body->repositories)); foreach ($repositoryNames as $repositoryName) { $output->writeln("> Repository « {$login}/{$repositoryName} »"); $repository = $this->getRepoOrCreateIt($user, $repositoryName); $aclResponse = $blih->repository($repositoryName)->acl()->get(); if ($aclResponse->code == 200) { $acls = get_object_vars($aclResponse->body); foreach ($acls as $aclLogin => $acl) { $output->writeln(" ACL for « {$aclLogin} »: {$acl}"); $aclUser = $this->getUserOrCreateIt($aclLogin); $repositoryACL = $this->getACLOrCreateIt($aclUser, $repository); $repositoryACL->setR(strpos($acl, "r") !== false); $repositoryACL->setW(strpos($acl, "w") !== false); $repositoryACL->setA(strpos($acl, "a") !== false); $this->getContainer()->get("doctrine")->getManager()->persist($repositoryACL); } } $output->writeln(""); $this->getContainer()->get("doctrine")->getManager()->persist($repository); $this->getContainer()->get("doctrine")->getManager()->flush(); } } }
public function updateUser(User $user) { // If the user has not a token, ignore if ($user->getToken() == null) { return; } // Connecting with Blih $blih = new Blih($user->getLogin()); $blih->setToken($user->getToken()); // Getting the repositories $blihRepositories = $blih->repository()->all()->body; if (!isset($blihRepositories->repositories)) { return; } $blihRepositories = $blihRepositories->repositories; $repositories = $user->getRepositories(); // Removing the repositories removed $repositories->forAll(function ($key, Repository $repository) use($blihRepositories) { if (!array_key_exists($repository->getName(), $blihRepositories)) { $this->entityManager->remove($repository); } return true; }); // Updating or creating the repositories foreach ($blihRepositories as $name => $data) { $repository = $this->retrieveOrCreateRepository($user, $name); $this->updateRepository($repository); $this->entityManager->persist($repository); } // Updating the user $user->setLastRepositoriesUpdateDate(new \DateTime()); $this->entityManager->persist($user); $this->entityManager->flush(); }