X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/5e861d92d6d758ba4888e35109cc6df4ab5e2df1..807daaa6d030a1ee01a5fb3822db3a299a84bfc9:/WEB-INF/lib/ttUser.class.php diff --git a/WEB-INF/lib/ttUser.class.php b/WEB-INF/lib/ttUser.class.php index 469345b7..79f7ae77 100644 --- a/WEB-INF/lib/ttUser.class.php +++ b/WEB-INF/lib/ttUser.class.php @@ -27,6 +27,7 @@ // +----------------------------------------------------------------------+ import('ttConfigHelper'); +import('ttGroupHelper'); class ttUser { var $login = null; // User login. @@ -192,10 +193,11 @@ class ttUser { $result = array(); $mdb2 = getConnection(); + $group_id = $this->behalf_group_id ? $this->behalf_group_id : $this->group_id; // Do a query with inner join to get assigned projects. $sql = "select p.id, p.name, p.description, p.tasks, upb.rate from tt_projects p inner join tt_user_project_binds upb on (upb.user_id = ".$this->getActiveUser()." and upb.project_id = p.id and upb.status = 1) - where p.group_id = $this->group_id and p.status = 1 order by p.name"; + where p.group_id = $group_id and p.status = 1 order by p.name"; $res = $mdb2->query($sql); if (!is_a($res, 'PEAR_Error')) { while ($val = $res->fetchRow()) { @@ -378,14 +380,14 @@ class ttUser { if ($selected_group_id != $this->group_id) { // We are in one of subgroups, and a parent exists. // Get parent group info. - $sql = "select parent_id from tt_groups where org_id = $this->org_id and id = $selected_group_id"; + $sql = "select parent_id from tt_groups where org_id = $this->org_id and id = $selected_group_id and status = 1"; $res = $mdb2->query($sql); if (!is_a($res, 'PEAR_Error')) { $val = $res->fetchRow(); $parent_id = $val['parent_id']; if ($parent_id) { // Get parent group name. - $sql = "select name from tt_groups where org_id = $this->org_id and id = $parent_id"; + $sql = "select name from tt_groups where org_id = $this->org_id and id = $parent_id and status = 1"; $res = $mdb2->query($sql); if (!is_a($res, 'PEAR_Error')) { $val = $res->fetchRow(); @@ -399,11 +401,29 @@ class ttUser { $groups[] = array('id'=>$selected_group_id,'name'=>$selected_group_name); // Add subgroups. - $sql = "select id, name from tt_groups where org_id = $this->org_id and parent_id = $selected_group_id"; + $sql = "select id, name from tt_groups where org_id = $this->org_id and parent_id = $selected_group_id and status = 1"; + //die($sql); $res = $mdb2->query($sql); if (!is_a($res, 'PEAR_Error')) { while ($val = $res->fetchRow()) { - $groups[] = array('id'=>$val['id'],'name'=>$val['name']); + $groups[] = $val; + } + } + return $groups; + } + + // getSubgroups obtains a list of immediate subgroups. + function getSubgroups($group_id = null) { + $mdb2 = getConnection(); + + if (!$group_id) $group_id = $this->getActiveGroup(); + + $sql = "select id, name, description from tt_groups where org_id = $this->org_id". + " and parent_id = $group_id and status is not null"; + $res = $mdb2->query($sql); + if (!is_a($res, 'PEAR_Error')) { + while ($val = $res->fetchRow()) { + $groups[] = $val; } } return $groups; @@ -489,8 +509,13 @@ class ttUser { if (!($this->can('manage_basic_settings') || $this->can('manage_advanced_settings') || $this->can('manage_features'))) return false; + // TODO: update the above for subgroup updates. + + $group_id = $fields['group_id']; + if ($group_id && !$this->isGroupValid($group_id)) return false; $mdb2 = getConnection(); + if (!$group_id) $group_id = $this->getActiveGroup(); if (isset($fields['name'])) $name_part = ', name = '.$mdb2->quote($fields['name']); if (isset($fields['currency'])) $currency_part = ', currency = '.$mdb2->quote($fields['currency']); @@ -517,7 +542,7 @@ class ttUser { $time_format_part.$week_start_part.$tracking_mode_part.$task_required_part.$project_required_part.$record_type_part. $bcc_email_part.$allow_ip_part.$plugins_part.$config_part.$lock_spec_part.$workday_minutes_part.$modified_part, ','); - $sql = "update tt_groups set $parts where id = $this->group_id"; + $sql = "update tt_groups set $parts where id = $group_id and org_id = $this->org_id"; $affected = $mdb2->exec($sql); if (is_a($affected, 'PEAR_Error')) return false; @@ -584,6 +609,14 @@ class ttUser { return true; } + // isGroupValid determines if a group is valid for user. + function isGroupValid($group_id) { + if ($group_id == $this->group_id) + return true; + else + return $this->isSubgroupValid($group_id); + } + // isSubgroupValid determines if a subgroup is valid for user. // A subgroup is valid if: // - user can manage_subgroups;