Example #1
0
 /**
  * Retrieve project commits from specified date and time.
  *
  * @param Project $project Project model
  * @param DateTime $dateFrom Date and time from get a commits.
  *
  * @return BaseCommit[]
  */
 public function getProjectContributions(Project $project, DateTime $dateFrom)
 {
     $pageLimit = 10;
     $skip = 0;
     /* @var $repository BaseRepository */
     $repository = $project->getRepositoryObject();
     $currentDate = new DateTime();
     do {
         /* @var $commits BaseCommit[] */
         $commits = $repository->getHistory($pageLimit, $skip);
         foreach ($commits as $commit) {
             if ($commit->getDate()->getTimestamp() > $dateFrom->getTimestamp()) {
                 /* @var $commit BaseCommit */
                 (yield $commit);
             }
             // if current timestamp less than commit timestamp
             $currentDate = $commit->getDate();
             if ($currentDate->getTimestamp() <= $dateFrom->getTimestamp()) {
                 break;
             }
         }
         $skip += count($commits);
         // reached last page, break
         if (count($commits) < $pageLimit) {
             break;
         }
     } while ($currentDate->getTimestamp() > $dateFrom->getTimestamp());
 }
 /**
  * Get commit model.
  *
  * Throws 404 if commit not found, or system error.
  *
  * @param Project $project Project model
  * @param string $commitId Commit identifier
  *
  * @return BaseCommit
  *
  * @throws NotFoundHttpException
  */
 protected function findCommit(Project $project, $commitId)
 {
     try {
         return $project->getRepositoryObject()->getCommit($commitId);
     } catch (CommonException $ex) {
         throw new NotFoundHttpException(Yii::t('app', 'System error: {message}', ['message' => $ex->getMessage()]), $ex->getCode(), $ex);
     }
 }