Esempio n. 1
0
 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();
         }
     }
 }
Esempio n. 2
0
 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();
 }