public function members()
 {
     $pane = $this->pane_management->getPaneById(Project_Admin_UGroup_View_Members::IDENTIFIER);
     $controller_members = new Project_Admin_UGroup_UGroupController_Members($this->request, $this->ugroup, $pane);
     $validated_request = $controller_members->validateRequest($this->ugroup->getProjectId(), $this->request);
     $view = new Project_Admin_UGroup_View_Members($this->ugroup, $this->request, $this->ugroup_manager, $validated_request);
     $this->render($view);
 }
 private function appendMembersForStaticGroups(DOMElement $ugroup_node, ProjectUGroup $ugroup)
 {
     if ($ugroup->getId() > ProjectUGroup::NONE) {
         foreach ($ugroup->getMembersUserName() as $user_name) {
             $this->appendChild($ugroup_node, 'member', $user_name);
         }
     }
 }
 /**
  * Output repo management sub screen to the browser
  */
 public function display()
 {
     project_admin_header(array('title' => $GLOBALS['Language']->getText('project_admin_editugroup', 'edit_ug'), 'group' => $this->ugroup->getProjectId(), 'help' => 'project-admin.html#creating-a-user-group'));
     echo '<h1><a href="/project/admin/ugroup.php?group_id=' . $this->ugroup->getProjectId() . '">' . $GLOBALS['Language']->getText('project_admin_utils', 'ug_admin') . '</a> - ' . $this->ugroup->getName() . '</h1>';
     echo '<div class="tabbable tabs-left">';
     echo '<ul class="nav nav-tabs">';
     foreach ($this->panes as $key => $pane) {
         $this->displayTab($pane);
     }
     echo '</ul>';
     echo '<div class="tab-content">';
     echo '<div class="tab-pane active">';
     echo $this->view->getContent();
     echo '</div>';
     echo '</div>';
     $GLOBALS['HTML']->footer(array());
 }
 /**
  * Get the list of source ugroups by project
  *
  * @param Integer $sourceProject Id of the current soucrce project
  * @param ProjectUGroup  $currentSource Currently bound ugroup
  *
  * @return Array
  */
 private function getUgroupList($sourceProject, ProjectUGroup $currentSource = null)
 {
     $ugroupList = array();
     $selected = false;
     $ugroups = ugroup_db_get_existing_ugroups($sourceProject);
     while ($ugroup = db_fetch_array($ugroups)) {
         $userGroup = new ProjectUGroup(array('ugroup_id' => $ugroup['ugroup_id']));
         if (!$userGroup->isBound()) {
             if ($currentSource && $currentSource->getId() == $ugroup['ugroup_id']) {
                 $selected = true;
             }
             $ugroupList[] = array('ugroup_id' => $ugroup['ugroup_id'], 'name' => $ugroup['name'], 'selected' => $selected);
         }
     }
     return $ugroupList;
 }
 public function setSourceGroup(ProjectUGroup $ugroup = null)
 {
     $this->source_ugroup = $ugroup;
     $this->source_id = $ugroup === null ? null : $ugroup->getId();
 }
 public function getServersForUGroup(ProjectUGroup $ugroup)
 {
     $servers = array();
     foreach ($this->dao->searchAllByUGroupId($ugroup->getProjectId(), $ugroup->getId()) as $row) {
         $servers[$row['id']] = $this->instantiateFromRow($row);
     }
     return $servers;
 }
 public function getProject()
 {
     return $this->ugroup->getProject();
 }
 /**
  * @todo should be private
  *
  * @param Project $project
  * @param ProjectUGroup $ugroup
  * @param PFUser $user
  * @return \GitRepositoryWithPermissions
  */
 public function getGerritRepositoriesWithPermissionsForUGroupAndProject(Project $project, ProjectUGroup $ugroup, PFUser $user)
 {
     $repositories = array();
     $ugroups = $user->getUgroups($project->getID(), null);
     $ugroups[] = $ugroup->getId();
     $dar = $this->dao->searchGerritRepositoriesWithPermissionsForUGroupAndProject($project->getID(), $ugroups);
     foreach ($dar as $row) {
         if (isset($repositories[$row['repository_id']])) {
             $repo_with_perms = $repositories[$row['repository_id']];
         } else {
             $repo_with_perms = new GitRepositoryWithPermissions($this->instanciateFromRow($row));
             $repositories[$row['repository_id']] = $repo_with_perms;
         }
         $repo_with_perms->addUGroupForPermissionType($row['permission_type'], $row['ugroup_id']);
     }
     return $repositories;
 }
Exemple #9
0
 public function itReturnsAStaticGroup()
 {
     $ugroup = new ProjectUGroup(array('ugroup_id' => 120, 'name' => 'Zoum_zoum_zen'));
     $this->assertEqual('Zoum_zoum_zen', $ugroup->getName());
     $this->assertEqual('Zoum_zoum_zen', $ugroup->getTranslatedName());
     $this->assertEqual('Zoum_zoum_zen', $ugroup->getNormalizedName());
 }
 public function resetUgroupMembers(ProjectUGroup $user_group, array $users_to_add)
 {
     $this->getDao()->startTransaction();
     $user_group->removeAllUsers();
     foreach ($users_to_add as $user) {
         $user_group->addUser($user);
     }
     $this->getDao()->commit();
 }
 /**
  * Get the list of of ugroups used in this field     *
  *
  * @return array, the list of all ugroups with id and name
  */
 protected function getSoapBindingList()
 {
     $ugroups = array();
     foreach ($this->value_function as $ugroup) {
         if ($ugroup) {
             switch ($ugroup) {
                 case 'group_members':
                     $ugroups[] = array(self::SOAP_BINDING_LIST_ID => $GLOBALS['UGROUP_PROJECT_MEMBERS'], self::SOAP_BINDING_LIST_LABEL => util_translate_name_ugroup(ugroup_get_name_from_id($GLOBALS['UGROUP_PROJECT_MEMBERS'])));
                     break;
                 case 'group_admins':
                     $ugroups[] = array(self::SOAP_BINDING_LIST_ID => $GLOBALS['UGROUP_PROJECT_ADMIN'], self::SOAP_BINDING_LIST_LABEL => util_translate_name_ugroup(ugroup_get_name_from_id($GLOBALS['UGROUP_PROJECT_ADMIN'])));
                     break;
                 case 'artifact_submitters':
                     $ugroups[] = array(self::SOAP_BINDING_LIST_ID => 0, self::SOAP_BINDING_LIST_LABEL => $ugroup);
                     break;
                 default:
                     if (preg_match('/ugroup_([0-9]+)/', $ugroup, $matches)) {
                         $ugroup_data = db_fetch_array(ugroup_db_get_ugroup($matches[1]));
                         $user_group = new ProjectUGroup($ugroup_data);
                         $ugroups[] = array(self::SOAP_BINDING_LIST_ID => $matches[1], self::SOAP_BINDING_LIST_LABEL => $user_group->getNormalizedName());
                     }
                     break;
             }
         }
     }
     return $ugroups;
 }
 /**
  * Remove User from User Group
  * 
  * * Error codes:
  *   * 3000, Invalid project id
  *   * 3201, Permission denied: need to be project admin
  *   * 3203, Invalid user id
  *   * 3301, User Group doesn't exist
  * 
  * @param String  $sessionKey The project admin session hash
  * @param Integer $groupId    The Project id where the User Group is defined
  * @param Integer $ugroupId   The User Group where the user should be removed
  * @param Integer $userId     The user id to remove
  * 
  * @return Boolean 
  */
 public function removeUserFromUGroup($sessionKey, $groupId, $ugroupId, $userId)
 {
     $this->getProjectIfUserIsAdmin($groupId, $sessionKey);
     if ($user = $this->userManager->getUserById($userId)) {
         try {
             $ugroup = new ProjectUGroup(array('ugroup_id' => $ugroupId, 'group_id' => $groupId));
             $ugroup->removeUser($user);
         } catch (Exception $e) {
             throw new SoapFault((string) $e->getCode(), $e->getMessage());
         }
         $this->feedbackToSoapFault();
         return true;
     } else {
         throw new SoapFault('3203', "Invalid user id {$userId}");
     }
 }
 private function extractUGroupName(ProjectUGroup $ugroup)
 {
     return $ugroup->getName();
 }
 private function removeUserFromUserGroup(ProjectUGroup $user_group, PFUser $user)
 {
     if ($user_group->getId() == ProjectUGroup::PROJECT_MEMBERS) {
         return account_remove_user_from_group($user_group->getProjectId(), $user->getId());
     }
     return $user_group->removeUser($user);
 }
 public function itAddsMembersOfPreviousSourceAsHardCodedMembersOnRemove()
 {
     $user = aUser()->withLdapId('blabla')->build();
     $gerrit_user = mock('Git_Driver_Gerrit_User');
     stub($this->gerrit_user_manager)->getGerritUser($user)->returns($gerrit_user);
     $source_ugroup = mock('ProjectUGroup');
     stub($source_ugroup)->getMembers()->returns(array($user));
     $project = stub('Project')->getUnixName()->returns('mozilla');
     $ugroup = new ProjectUGroup(array('ugroup_id' => 112, 'name' => 'developers'));
     $ugroup->setProject($project);
     $ugroup->setSourceGroup($source_ugroup);
     expect($this->driver)->addUserToGroup($this->remote_server, $gerrit_user, 'mozilla/developers')->once();
     $this->membership_manager->removeUGroupBinding($ugroup);
 }
 /**
  * Get title of the link to binding interface
  *
  * @param Integer $ugroupId Id of the user group
  *
  * @return String
  */
 public function getLinkTitle($ugroupId)
 {
     $ugroup = new ProjectUGroup(array('ugroup_id' => $ugroupId));
     if ($ugroup->isBound()) {
         $action = 'update_binding';
     } else {
         $action = 'add_binding';
     }
     return '- ' . $GLOBALS['Language']->getText('project_ugroup_binding', $action);
 }
 /**
  *
  * @param ProjectUGroup $ugroup
  * @return bool
  */
 private function ugroupCanBeMigrated(ProjectUGroup $ugroup)
 {
     return $ugroup->getId() > ProjectUGroup::NONE || $ugroup->getId() == ProjectUGroup::PROJECT_MEMBERS || $ugroup->getId() == ProjectUGroup::PROJECT_ADMIN;
 }