/**
  * @param PFUser $user
  * @return ProjectUGroup[]
  */
 private function getDynamicUgroupsForUser(PFUser $user)
 {
     $project_ids = $user->getProjects();
     $ugroups = array();
     foreach ($project_ids as $group_id) {
         $ugroups[] = new ProjectUGroup(array('ugroup_id' => ProjectUGroup::PROJECT_MEMBERS, 'group_id' => $group_id));
         if ($user->isAdmin($group_id)) {
             $ugroups[] = new ProjectUGroup(array('ugroup_id' => ProjectUGroup::PROJECT_ADMIN, 'group_id' => $group_id));
         }
     }
     return $ugroups;
 }
 /**
  * Append project dynamic ugroups of user
  *
  * @param PFUser  $user
  * @param array $user_ugroups
  *
  * @return array the new array of user's ugroup
  */
 private function appendDynamicUGroups(PFUser $user, array $user_ugroups = array())
 {
     $user_projects = $user->getProjects(true);
     foreach ($user_projects as $user_project) {
         $project_name = strtolower($user_project['unix_group_name']);
         $group_id = $user_project['group_id'];
         $user_ugroups[] = $this->ugroupIdToStringWithoutArobase(ProjectUGroup::PROJECT_MEMBERS, $project_name);
         if ($user->isMember($group_id, 'A')) {
             $user_ugroups[] = $this->ugroupIdToStringWithoutArobase(ProjectUGroup::PROJECT_ADMIN, $project_name);
         }
     }
     return $user_ugroups;
 }
 public function fetchTrackerSwitcher(PFUser $user, $separator, Project $include_project = null, Tracker $current_tracker = null)
 {
     $hp = Codendi_HTMLPurifier::instance();
     $html = '';
     //Projects/trackers
     $projects = $user->getProjects(true);
     if ($include_project) {
         $found = false;
         foreach ($projects as $data) {
             if ($data['group_id'] == $include_project->getGroupId()) {
                 $found = true;
                 break;
             }
         }
         if (!$found) {
             $projects[] = array('group_id' => $include_project->getGroupId(), 'group_name' => $include_project->getPublicName());
         }
     }
     $html .= '<strong>';
     if ($current_tracker) {
         $html .= $hp->purify($current_tracker->getProject()->getPublicName(), CODENDI_PURIFIER_CONVERT_HTML);
     } else {
         $html .= $GLOBALS['Language']->getText('plugin_tracker', 'tracker_switcher');
     }
     $html .= '</strong>' . $separator;
     $html .= '<select id="tracker_select_tracker">';
     if (!$current_tracker) {
         $html .= '<option selected="selected">--</option>';
     }
     $factory = TrackerFactory::instance();
     foreach ($projects as $data) {
         if ($trackers = $factory->getTrackersByGroupId($data['group_id'])) {
             foreach ($trackers as $key => $v) {
                 if (!$v->userCanView($user)) {
                     unset($trackers[$key]);
                 }
             }
             if ($trackers) {
                 $html .= '<optgroup label="' . $hp->purify($data['group_name'], CODENDI_PURIFIER_CONVERT_HTML) . '">';
                 foreach ($trackers as $t) {
                     $selected = $current_tracker && $t->getId() == $current_tracker->getId() ? 'selected="selected"' : '';
                     $html .= '<option ' . $selected . ' value="' . $t->getId() . '">';
                     $html .= $hp->purify($t->getName(), CODENDI_PURIFIER_CONVERT_HTML);
                     $html .= '</option>';
                 }
                 $html .= '</optgroup>';
             }
         }
     }
     $html .= '</select>';
     return $html;
 }
 /**
  * Generates project list of the given user
  *
  * @param PFUser $user
  *
  * @return Array
  */
 function getUserProjectList($user)
 {
     $res = $user->getProjects();
     $projects = array();
     foreach ($res as $groupId) {
         if ($this->isWebDAVAllowedForProject($groupId)) {
             $project = $this->getWebDAVProject($groupId);
             if ($project->userCanRead()) {
                 $projects[] = $project;
             }
         }
     }
     return $projects;
 }
Beispiel #5
0
 /**
  * Update CVS writers into all projects that given user belongs to
  *
  * @param PFUser $user member to add as committer
  *
  * @return Boolean
  */
 public function updateCVSWritersForGivenMember($user)
 {
     $projects = $user->getProjects();
     if (isset($projects)) {
         $pm = $this->getProjectManager();
         foreach ($projects as $groupId) {
             $project = $pm->getProject($groupId);
             if ($this->repositoryExists($project)) {
                 if (!$this->updateCVSwriters($groupId)) {
                     return false;
                 }
             }
         }
     }
     return true;
 }