/** * Project Tracking Gitolite * Add "Add New Git Repository" option under source tab. * Check for allowed repository as per the permissions */ function index() { parent::index(); // check whether user have access to add repositories if (ProjectSourceRepositories::canAdd($this->logged_user, $this->active_project)) { $this->wireframe->actions->add('add_git', lang('Create Git Repository'), Router::assemble('add_git_repository', array('project_slug' => $this->active_project->getSlug())), array('onclick' => new FlyoutFormCallback('repository_created', array('width' => 'narrow')), 'icon' => AngieApplication::getPreferedInterface() == AngieApplication::INTERFACE_DEFAULT ? AngieApplication::getImageUrl('icons/16X16-git.png', AC_GITOLITE_MODULE) : AngieApplication::getImageUrl('icons/16X16-git.png', AC_GITOLITE_MODULE, AngieApplication::INTERFACE_PHONE))); $this->wireframe->actions->add('add_remote_git', lang('Clone Remote Repository'), Router::assemble('add_remote_git', array('project_slug' => $this->active_project->getSlug())), array('onclick' => new FlyoutFormCallback('repository_created', array('width' => '900')), 'icon' => AngieApplication::getPreferedInterface() == AngieApplication::INTERFACE_DEFAULT ? AngieApplication::getImageUrl('icons/16X16-git.png', AC_GITOLITE_MODULE) : AngieApplication::getImageUrl('icons/16X16-git.png', AC_GITOLITE_MODULE, AngieApplication::INTERFACE_PHONE))); } $repositories = ProjectSourceRepositories::findByProjectId($this->active_project->getId(), $this->logged_user->getMinVisibility()); $get_admin_settings = GitoliteAdmin::get_admin_settings(); //print_r($get_admin_settings); //if(is_array($get_admin_settings) && count($get_admin_settings) > 0) //{ $cloneurls = array(); $gitolite_repos = array(); $remote_repos = array(); foreach ($repositories as $repository) { $repo_fk = $repository->getFieldValue("integer_field_1"); $chk_gitolite = ProjectGitolite::is_gitolite_repo($repo_fk); if (is_array($chk_gitolite) && sizeof($chk_gitolite) > 0 && $chk_gitolite['chk_gitolite'] > 0) { $permissions = @unserialize($chk_gitolite['permissions']); if ($permissions !== false || $permissions === 'b:0;') { $permissions_array = $permissions; } else { $permissions_array = array(); } if (array_key_exists($this->logged_user->getId(), $permissions_array) && $permissions_array[$this->logged_user->getId()] > 1 || $this->logged_user->isAdministrator() || $this->logged_user->isProjectManager() || $this->active_project->isLeader($this->logged_user)) { $allowed_repos[] = $repository->getId(); } /* $clone_url = $get_admin_settings['gitoliteuser']."@".$get_admin_settings['gitoliteserveradd'].":".$repository->getName(); $cloneurls[$repository->getId()] = "git clone ".$clone_url.".git"; */ $gitolite_repos[] = $repository->getId(); } elseif (is_array($chk_gitolite) && sizeof($chk_gitolite) > 0 && $chk_gitolite['chk_gitolite'] == 0) { $chk_remote = ProjectGitolite::chk_remote_repo($repo_fk); if (is_array($chk_remote) && sizeof($chk_remote) > 0 && $chk_remote['chk_remote'] > 0) { $remote_repos[] = $repository->getId(); $allowed_repos[] = $repository->getId(); } else { $allowed_repos[] = $repository->getId(); } } else { $allowed_repos[] = $repository->getId(); } } //} //echo "asdas dasd"; //print_r($allowed_repos); //die(); $this->response->assign(array('repositories' => $repositories, 'cloneurls' => $cloneurls, 'gitolite_repos' => $gitolite_repos, 'remote_repos' => $remote_repos, 'can_add_repository' => $can_add_repository, 'allowed_repos' => $allowed_repos)); }