/**
  * PopulateProjects
  *
  * Populates the internal list of projects
  *
  * @access protected
  * @throws Exception if file cannot be read
  */
 protected function PopulateProjects()
 {
     $projectRoot = GitPHP_Util::AddSlash(GitPHP_Config::GetInstance()->GetValue('projectroot'));
     $use_errors = libxml_use_internal_errors(true);
     $xml = simplexml_load_file($this->projectConfig);
     libxml_clear_errors();
     libxml_use_internal_errors($use_errors);
     if (!$xml) {
         throw new Exception(sprintf('Could not load SCM manager config %1$s', $this->projectConfig));
     }
     foreach ($xml->repositories->repository as $repository) {
         if ($repository->type != 'git') {
             GitPHP_Log::GetInstance()->Log(sprintf('%1$s is not a git project', $repository->name));
             continue;
         }
         if ($repository->public != 'true') {
             GitPHP_Log::GetInstance()->Log(sprintf('%1$s is not public', $repository->name));
             continue;
         }
         $projName = trim($repository->name);
         if (empty($projName)) {
             continue;
         }
         if (is_file($projectRoot . $projName . '/HEAD')) {
             try {
                 $projObj = new GitPHP_Project($projectRoot, $projName);
                 $projOwner = trim($repository->contact);
                 if (!empty($projOwner)) {
                     $projObj->SetOwner($projOwner);
                 }
                 $projDesc = trim($repository->description);
                 if (!empty($projDesc)) {
                     $projObj->SetDescription($projDesc);
                 }
                 $this->projects[$projName] = $projObj;
             } catch (Exception $e) {
                 GitPHP_Log::GetInstance()->Log($e->getMessage());
             }
         } else {
             GitPHP_Log::GetInstance()->Log(sprintf('%1$s is not a git project', $projName));
         }
     }
 }
Esempio n. 2
0
 public function testCompareDescription()
 {
     $project = new GitPHP_Project(GITPHP_TEST_PROJECTROOT, 'testrepoexported.git', $this->getMock('GitPHP_ProjectLoadStrategy_Interface'));
     $project->SetDescription('A description');
     $project2 = new GitPHP_Project(GITPHP_TEST_PROJECTROOT, 'testrepo.git', $this->getMock('GitPHP_ProjectLoadStrategy_Interface'));
     $project->SetDescription('B description');
     $this->assertEquals(0, GitPHP_Project::CompareDescription($project, $project));
     $this->assertLessThan(0, GitPHP_Project::CompareDescription($project, $project2));
     $this->assertGreaterThan(0, GitPHP_Project::CompareDescription($project2, $project));
     $project->SetCategory('b');
     $this->assertEquals(0, GitPHP_Project::CompareDescription($project, $project));
     $this->assertGreaterThan(0, GitPHP_Project::CompareDescription($project, $project2));
     $this->assertLessThan(0, GitPHP_Project::CompareDescription($project2, $project));
     $project2->SetCategory('a');
     $this->assertEquals(0, GitPHP_Project::CompareDescription($project, $project));
     $this->assertGreaterThan(0, GitPHP_Project::CompareDescription($project, $project2));
     $this->assertLessThan(0, GitPHP_Project::CompareDescription($project2, $project));
 }
Esempio n. 3
0
 /**
  * Applies override settings for a project
  *
  * @param GitPHP_Project $project the project object
  * @param array $projData project data array
  */
 protected function ApplyProjectSettings($project, $projData)
 {
     if (!$project) {
         return;
     }
     if (isset($projData['category']) && is_string($projData['category'])) {
         $project->SetCategory($projData['category']);
     }
     if (isset($projData['owner']) && is_string($projData['owner'])) {
         $project->SetOwner($projData['owner']);
     }
     if (isset($projData['description']) && is_string($projData['description'])) {
         $project->SetDescription($projData['description']);
     }
     if (isset($projData['cloneurl']) && is_string($projData['cloneurl'])) {
         $project->SetCloneUrl($projData['cloneurl']);
     }
     if (isset($projData['pushurl']) && is_string($projData['pushurl'])) {
         $project->SetPushUrl($projData['pushurl']);
     }
     if (isset($projData['bugpattern']) && is_string($projData['bugpattern'])) {
         $project->SetBugPattern($projData['bugpattern']);
     }
     if (isset($projData['bugurl']) && is_string($projData['bugurl'])) {
         $project->SetBugUrl($projData['bugurl']);
     }
     if (isset($projData['compat'])) {
         $project->SetCompat($projData['compat']);
     }
     if (isset($projData['website']) && is_string($projData['website'])) {
         $project->SetWebsite($projData['website']);
     }
     if (!empty($projData['allowedusers'])) {
         $project->SetAllowedUsers($projData['allowedusers']);
     }
 }