/**
  * Return a reference that match keyword and value
  * @param Project $project
  * @param String $keyword
  * @param String $value
  * @return Reference
  */
 public function getReference(Project $project, $keyword, $value)
 {
     $reference = false;
     list($repository_name, $sha1) = $this->splitRepositoryAndSha1($value);
     $repository = $this->repository_factory->getRepositoryByPath($project->getId(), $project->getUnixName() . '/' . $repository_name . '.git');
     if ($repository) {
         $args = array($repository->getId(), $sha1);
         $reference = $this->reference_manager->loadReferenceFromKeywordAndNumArgs($keyword, $project->getID(), count($args), $value);
         if ($reference) {
             $reference->setLink($reference->getLink() . '&p=' . $repository_name);
             $reference->replaceLink($args);
         }
     }
     return $reference;
 }
Beispiel #2
0
 /**
  * @return GitRepository|null
  */
 private function getRepositoryFromStandardURL()
 {
     $repository_id = $this->matches['repository_id'];
     $repository_id_is_a_int = preg_match('/^([0-9]+)$/', $repository_id);
     if ($repository_id_is_a_int) {
         return $this->repository_factory->getRepositoryById($repository_id);
     } else {
         $project = $this->getProjectFromStandardURL();
         if (!$project->isError()) {
             return $this->repository_factory->getRepositoryByPath($project->getID(), GitRepository::getPathFromProjectAndName($project, $repository_id));
         }
     }
     return null;
 }
 public function process()
 {
     $parameters = $this->getParametersAsArray();
     $repository_id = 0;
     if (!empty($parameters[0])) {
         $repository_id = (int) $parameters[0];
     } else {
         $this->error('Missing argument repository id');
         return false;
     }
     $repository = $this->repository_factory->getDeletedRepository($repository_id);
     $active_repository = $this->repository_factory->getRepositoryByPath($repository->getProject()->getId(), $repository->getPath());
     if ($active_repository instanceof GitRepository) {
         $this->error('Repository with the same name already exsit');
         return false;
     }
     if (!$repository->getBackend()->restoreArchivedRepository($repository)) {
         $this->error('Unable to restore repository : ' . $repository->getName());
         return false;
     }
     $repository->getBackend()->updateRepoConf($repository);
     $this->system_event_manager->queueGrokMirrorManifest($repository);
     $this->done();
 }
 public function restoreRepository($repo_id, $project_id)
 {
     $repository = $this->factory->getDeletedRepository($repo_id);
     $url = '/admin/show_pending_documents.php?group_id=' . $project_id . '&focus=git_repository';
     if (!$repository) {
         $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_git', 'restore_invalid_id'));
         $GLOBALS['Response']->redirect($url);
     }
     $active_repository = $this->factory->getRepositoryByPath($project_id, $repository->getPath());
     if ($active_repository instanceof GitRepository) {
         $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_git', 'restore_invalid_name'));
     } else {
         $this->git_system_event_manager->queueRepositoryRestore($repository);
         $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_git', 'restore_event_created') . ' : ' . $repository->getName());
     }
     $GLOBALS['Response']->redirect($url);
 }