/** * 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; }
/** * 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)); } }
/** * 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); } }
/** * 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); } }
/** * 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); } } }