Пример #1
0
 /**
  * Return all git repositories of a project (gitshell, gitolite, personal forks)
  *
  * @param Project $project
  *
  * @return Array of GitRepository
  */
 public function getAllRepositories(Project $project)
 {
     $repositories = array();
     $repository_list = $this->dao->getProjectRepositoryList($project->getID(), false, false);
     foreach ($repository_list as $row) {
         $repository = new GitRepository();
         $this->dao->hydrateRepositoryObject($repository, $row);
         $repositories[] = $repository;
     }
     return $repositories;
 }
Пример #2
0
 /**
  * Constructor.
  *
  * @param Integer $groupId     Project Id
  * @param Integer $weeksNumber Statistics duration in weeks
  *
  * @return Void
  */
 public function __construct($groupId, $weeksNumber)
 {
     $dao = new GitDao();
     // TODO: Optionally include presonal forks in repo list
     $allRepositories = $dao->getProjectRepositoryList($groupId);
     $um = UserManager::instance();
     $user = $um->getCurrentUser();
     $repoFactory = new GitRepositoryFactory($dao, ProjectManager::instance());
     foreach ($allRepositories as $repo) {
         $repository = $repoFactory->getRepositoryById($repo['repository_id']);
         if ($repository->userCanRead($user)) {
             $this->repoList[] = $repository;
         }
     }
     $this->displayChart = false;
     $this->weeksNumber = min($weeksNumber, self::MAX_WEEKSNUMBER);
     // Init some class properties according to 'weeks number' parameter
     $today = $_SERVER['REQUEST_TIME'];
     $startPeriod = strtotime("-{$this->weeksNumber} weeks");
     $weekInSeconds = self::WEEKS_IN_SECONDS;
     for ($i = $startPeriod + $weekInSeconds; $i < $today + $weekInSeconds; $i += $weekInSeconds) {
         $this->dates[] = date('M d', $i);
         $this->weekNum[] = intval(date('W', $i));
         $this->year[] = intval(date('Y', $i));
     }
 }
Пример #3
0
 /**
  * Internal method called by SystemEvent_PROJECT_IS_PRIVATE
  * @param <type> $projectId
  * @param <type> $isPublic
  * @return <type>
  */
 public static function changeProjectRepositoriesAccess($projectId, $isPrivate, GitDao $dao, GitRepositoryFactory $factory)
 {
     //if the project is private, then no changes may be applied to repositories,
     //in other words only if project is set to private, its repositories have to be set to private
     if (empty($isPrivate)) {
         return;
     }
     $repositories = $dao->getProjectRepositoryList($projectId);
     foreach ($repositories as $repoId => $repoData) {
         $r = $factory->getRepositoryById($repoId);
         if (!$r) {
             continue;
         }
         if ($r->getAccess() == GitRepository::PRIVATE_ACCESS) {
             continue;
         }
         $r->setAccess(GitRepository::PRIVATE_ACCESS);
         $r->changeAccess();
         unset($r);
     }
 }
Пример #4
0
 /**
  * Internal method called by SystemEvent_PROJECT_IS_PRIVATE
  * @param <type> $projectId
  * @param <type> $isPublic
  * @return <type>
  */
 public static function changeProjectRepositoriesAccess($projectId, $isPrivate)
 {
     //if the project is private, then no changes may be applied to repositories,
     //in other words only if project is set to private, its repositories have to be set to private
     if (empty($isPrivate)) {
         return;
     }
     $dao = new GitDao();
     $repositories = $dao->getProjectRepositoryList($projectId);
     if (empty($repositories)) {
         return false;
     }
     foreach ($repositories as $repoId => $repoData) {
         $r = new GitRepository();
         $r->setId($repoId);
         if (!$r->exists()) {
             continue;
         }
         $newAccess = !empty($isPrivate) ? GitRepository::PRIVATE_ACCESS : GitRepository::PUBLIC_ACCESS;
         if ($r->getAccess() == $newAccess) {
             continue;
         }
         $r->setAccess($newAccess);
         $r->changeAccess();
         unset($r);
     }
 }
Пример #5
0
 /**
  * Retrieve git triggers
  *
  * @param Array $params Hook parameters
  *
  * @return Array
  */
 function retrieveTriggers($params)
 {
     if (isset($params['group_id']) && !empty($params['group_id'])) {
         $project = $this->getProjectManager()->getProject($params['group_id']);
         if ($project->usesService(GitPlugin::SERVICE_SHORTNAME)) {
             $repositoryId = '';
             $used = array();
             $checked = '';
             if (isset($params['job_id']) && !empty($params['job_id'])) {
                 $res = $this->getDao()->retrieveTrigger($params['job_id']);
                 if ($res && !$res->isError() && $res->rowCount() == 1) {
                     $row = $res->getRow();
                     $repositoryId = $row['repository_id'];
                     $checked = 'checked="checked"';
                 }
             } else {
                 $res = $this->getDao()->retrieveTriggers($params['group_id']);
                 if ($res && !$res->isError() && $res->rowCount() > 0) {
                     foreach ($res as $row) {
                         $used[$row['job_id']] = true;
                     }
                 }
             }
             $dao = new GitDao();
             $repositories = $dao->getProjectRepositoryList($params['group_id'], false, false);
             $selectBox = '<select id="hudson_use_plugin_git_trigger" name="hudson_use_plugin_git_trigger">';
             $selectBox .= '<option>' . $GLOBALS['Language']->getText('global', 'none') . '</option>';
             foreach ($repositories as $repository) {
                 $nameSpace = '';
                 if (!empty($repository['repository_namespace'])) {
                     $nameSpace = $repository['repository_namespace'] . "/";
                 }
                 $selectBox .= '<option value="' . $repository['repository_id'] . '" ';
                 if ($repositoryId == $repository['repository_id']) {
                     $selectBox .= 'selected="selected"';
                 }
                 $selectBox .= '>' . $nameSpace . $repository['repository_name'] . '</option>';
             }
             $selectBox .= '</select>';
             $addForm = '<p>
                              <div id="hudson_use_plugin_git_trigger_checkbox">
                                  <label class="checkbox">
                                  <input name="hudson_use_plugin_git_trigger_checkbox" type="hidden" value="0" />
                                  <input name="hudson_use_plugin_git_trigger_checkbox" onclick="toggle_checkbox()" type="checkbox" ' . $checked . ' value="1" />
                                     Git
                                  </label>
                              </div>
                              <div id="hudson_use_plugin_git_trigger_form">
                                  <label for="hudson_use_plugin_git_trigger">' . $GLOBALS['Language']->getText('plugin_git', 'ci_repo_id') . ': </label>
                                  ' . $selectBox . '
                              </div>
                              <script>
                                  function toggle_checkbox() {
                                      Effect.toggle(\'hudson_use_plugin_git_trigger_form\', \'slide\', { duration: 0.3 });
                                  }
                                  Element.toggle(\'hudson_use_plugin_git_trigger_form\', \'slide\', { duration: 0.3 })
                              </script>
                          </p>';
             $editForm = '<label for="hudson_use_plugin_git_trigger">' . $GLOBALS['Language']->getText('plugin_git', 'ci_field_description') . ': </label>' . $selectBox;
             return array('service' => GitPlugin::SERVICE_SHORTNAME, 'title' => $GLOBALS['Language']->getText('plugin_git', 'ci_trigger'), 'used' => $used, 'add_form' => $addForm, 'edit_form' => $editForm);
         }
     }
 }