/**
  * @return int[] array(102 => 324, 106 => 325, <template_ugroup_id> => <target_ugroup_id>, …)
  */
 public function getMapping(Tracker $template_tracker, Project $target_project)
 {
     $template_ugroups = $this->permissions_retriever->getListOfInvolvedStaticUgroups($template_tracker);
     $target_ugroups = $this->ugroup_manager->getStaticUGroups($target_project);
     $ugroups = array();
     foreach ($template_ugroups as $template_ugroup) {
         foreach ($target_ugroups as $target_ugroup) {
             if ($template_ugroup->getName() == $target_ugroup->getName()) {
                 $ugroups[$template_ugroup->getId()] = $target_ugroup->getId();
             }
         }
     }
     return $ugroups;
 }
示例#2
0
 protected function adminGitAdminsView($is_admin_mass_change_allowed)
 {
     $params = $this->getData();
     $presenter = new GitPresenters_AdminGitAdminsPresenter($this->groupId, $is_admin_mass_change_allowed, $this->ugroup_manager->getStaticUGroups($this->project), $this->git_permissions_manager->getCurrentGitAdminUgroups($this->project->getId()));
     $renderer = TemplateRendererFactory::build()->getRenderer(dirname(GIT_BASE_DIR) . '/templates');
     echo $renderer->renderToString('admin', $presenter);
 }
 /**
  * @return Tracker_UgroupPermissionsConsistencyMessage
  */
 public function checkConsistency(Tracker $template_tracker, Project $target_project)
 {
     if ($template_tracker->getProject() == $target_project) {
         $this->messenger->allIsWell();
         return;
     }
     $ugroups = $this->permissions_retriever->getListOfInvolvedStaticUgroups($template_tracker);
     if (!$ugroups) {
         $this->messenger->allIsWell();
         return;
     }
     $template_ugroups_names = array_map(array($this, 'extractUGroupName'), $ugroups);
     $target_ugroups = $this->ugroup_manager->getStaticUGroups($target_project);
     $target_ugroups_names = array_map(array($this, 'extractUGroupName'), $target_ugroups);
     $diff = array_diff($template_ugroups_names, $target_ugroups_names);
     if ($diff) {
         $this->messenger->ugroupsMissing($diff);
     } else {
         $this->messenger->ugroupsAreTheSame($template_ugroups_names);
     }
 }
 private function exportProjectUgroups(Project $project, SimpleXMLElement $into_xml)
 {
     $this->logger->debug("Exporting project's static ugroups");
     $ugroups = $this->ugroup_manager->getStaticUGroups($project);
     if (empty($ugroups)) {
         return;
     }
     $ugroups_node = $into_xml->addChild('ugroups');
     foreach ($ugroups as $ugroup) {
         $this->logger->debug("Current static ugroups: " . $ugroup->getName());
         $ugroup_node = $ugroups_node->addChild('ugroup');
         $ugroup_node->addAttribute('name', $ugroup->getNormalizedName());
         $ugroup_node->addAttribute('description', $ugroup->getDescription());
         $members_node = $ugroup_node->addChild('members');
         foreach ($ugroup->getMembers() as $member) {
             $this->user_xml_exporter->exportUser($member, $members_node, 'member');
         }
     }
     $rng_path = realpath(dirname(__FILE__) . '/../xml/resources/ugroups.rng');
     $this->xml_validator->validate($ugroups_node, $rng_path);
 }