Автор: Romain Pouclet (romain.pouclet@knplabs.com)
Автор: Joseph Bielawski (stloyd@gmail.com)
Пример #1
0
 /**
  * {@inheritdoc}
  */
 public function refreshUser(UserInterface $user)
 {
     $refreshedUser = $this->ownerManager->findDeveloperBy(array('id' => $user->getId()));
     if (null === $refreshedUser) {
         throw new UsernameNotFoundException(sprintf('User with ID "%d" could not be reloaded.', $user->getId()));
     }
     return $refreshedUser;
 }
Пример #2
0
 private function updateMembers($membersData)
 {
     $members = array();
     foreach ($membersData as $memberData) {
         if ($member = $this->manager->createOwner($memberData['login'], 'developer')) {
             $members[] = $member;
         }
     }
     return $members;
 }
Пример #3
0
 /**
  * Takes a bundle and update its contributors
  *
  * @param Bundle $bundle
  */
 private function updateContributors(Bundle $bundle)
 {
     $contributorNames = $this->githubRepoApi->getContributorNames($bundle);
     $contributors = array();
     foreach ($contributorNames as $contributorName) {
         $contributors[] = $this->ownerManager->createOwner($contributorName, 'unknown');
     }
     $bundle->setContributors($contributors);
     if ($this->logger) {
         $this->logger->info(sprintf('%d contributor(s) have been retrieved for bundle %s', count($contributors), $bundle->getName()));
     }
 }
Пример #4
0
 public function updateCommits(Bundle $bundle)
 {
     $this->output->write(' commits');
     try {
         $commits = $this->github->api('repo')->commits()->all($bundle->getOwnerName(), $bundle->getName(), array('sha' => 'HEAD', 'per_page' => 30));
     } catch (RuntimeException $e) {
         return false;
     }
     $activities = $bundle->getLatestActivities();
     $lastEverCommitAt = $bundle->getLastCommitAt();
     /* @var $developer EntityDeveloper */
     foreach ($commits as $commit) {
         if (!isset($commit['commit']['committer'])) {
             continue;
         }
         $lastCommitAt = new \DateTime($commit['commit']['committer']['date']);
         $lastCommitAt->setTimezone(new \DateTimeZone(date_default_timezone_get()));
         $activityData = array('type' => Activity::ACTIVITY_TYPE_COMMIT, 'message' => strtok($commit['commit']['message'], "\n\r"), 'createdAt' => $lastCommitAt);
         if (!empty($activities)) {
             foreach ($activities as $registeredActivity) {
                 if ($registeredActivity->getMessage() === $activityData['message'] && $registeredActivity->getCreatedAt() == $activityData['createdAt']) {
                     continue 2;
                 }
             }
         }
         // be sure that bundle have a latest date following to latest commit
         if ($lastCommitAt > $lastEverCommitAt) {
             $lastEverCommitAt = $lastCommitAt;
         }
         $activity = new Activity();
         $activity->setType($activityData['type']);
         $activity->setMessage($activityData['message']);
         $activity->setCreatedAt($activityData['createdAt']);
         $activity->setBundle($bundle);
         if (isset($commit['committer']) && isset($commit['committer']['login'])) {
             $developer = $this->ownerManager->createOwner($commit['committer']['login'], 'developer', true);
             $developer->setLastCommitAt($lastCommitAt);
             $activity->setDeveloper($developer);
         } else {
             $activity->setAuthor($commit['commit']['committer']['name']);
         }
     }
     // update last pushed commit date
     $bundle->setLastCommitAt(clone $lastEverCommitAt);
     if ('developer' === $bundle->getOwnerType()) {
         $bundle->getOwner()->setLastCommitAt(clone $lastEverCommitAt);
     }
     unset($activities);
     return true;
 }