X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FttUser.class.php;h=2511ecfb0eddc731d0734ec1b055f4d97b7b34fc;hb=c2b4a52bc12c6ee6204fd03d1d1b2534b7249554;hp=f9edc8cc7a71ebd17a0d02568ef7ee2a51db759c;hpb=d9ef3e94c49d9b5e8c7532efc8b460c3e1135fdd;p=timetracker.git diff --git a/WEB-INF/lib/ttUser.class.php b/WEB-INF/lib/ttUser.class.php index f9edc8cc..2511ecfb 100644 --- a/WEB-INF/lib/ttUser.class.php +++ b/WEB-INF/lib/ttUser.class.php @@ -30,7 +30,7 @@ class ttUser { var $login = null; // User login. var $name = null; // User name. var $id = null; // User id. - var $team_id = null; // Team id. + var $group_id = null; // Group id. var $role_id = null; // Role id. var $role_name = null; // Role name. var $rank = null; // User role rank. @@ -53,6 +53,7 @@ class ttUser { var $future_entries = 0; // Whether to allow creating future entries. var $uncompleted_indicators = 0; // Uncompleted time entry indicators (show nowhere or on users page). var $bcc_email = null; // Bcc email. + var $allow_ip = null; // Specification from where user is allowed access. var $currency = null; // Currency. var $plugins = null; // Comma-separated list of enabled plugins. var $config = null; // Comma-separated list of miscellaneous config options. @@ -72,11 +73,11 @@ class ttUser { $mdb2 = getConnection(); - $sql = "SELECT u.id, u.login, u.name, u.team_id, u.role_id, r.rank, r.name as role_name, r.rights, u.client_id, u.email, t.name as team_name, - t.currency, t.lang, t.decimal_mark, t.date_format, t.time_format, t.week_start, - t.tracking_mode, t.project_required, t.task_required, t.record_type, - t.bcc_email, t.plugins, t.config, t.lock_spec, t.workday_minutes, t.custom_logo - FROM tt_users u LEFT JOIN tt_teams t ON (u.team_id = t.id) LEFT JOIN tt_roles r on (r.id = u.role_id) WHERE "; + $sql = "SELECT u.id, u.login, u.name, u.group_id, u.role_id, r.rank, r.name as role_name, r.rights, u.client_id, u.email, g.name as group_name, + g.currency, g.lang, g.decimal_mark, g.date_format, g.time_format, g.week_start, + g.tracking_mode, g.project_required, g.task_required, g.record_type, + g.bcc_email, g.allow_ip, g.plugins, g.config, g.lock_spec, g.workday_minutes, g.custom_logo + FROM tt_users u LEFT JOIN tt_groups g ON (u.group_id = g.id) LEFT JOIN tt_roles r on (r.id = u.role_id) WHERE "; if ($id) $sql .= "u.id = $id"; else @@ -93,7 +94,7 @@ class ttUser { $this->login = $val['login']; $this->name = $val['name']; $this->id = $val['id']; - $this->team_id = $val['team_id']; + $this->group_id = $val['group_id']; $this->role_id = $val['role_id']; $this->role_name = $val['role_name']; $this->rights = explode(',', $val['rights']); @@ -111,7 +112,8 @@ class ttUser { $this->task_required = $val['task_required']; $this->record_type = $val['record_type']; $this->bcc_email = $val['bcc_email']; - $this->team = $val['team_name']; + $this->allow_ip = $val['allow_ip']; + $this->team = $val['group_name']; $this->currency = $val['currency']; $this->plugins = $val['plugins']; $this->lock_spec = $val['lock_spec']; @@ -193,7 +195,38 @@ class ttUser { // 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.team_id = $this->team_id and p.status = 1 order by p.name"; + where p.group_id = $this->group_id and p.status = 1 order by p.name"; + $res = $mdb2->query($sql); + if (!is_a($res, 'PEAR_Error')) { + while ($val = $res->fetchRow()) { + $result[] = $val; + } + } + return $result; + } + + // getAssignedTasks - returns an array of assigned tasks. + function getAssignedTasks() + { + // Start with projects; + $projects = $this->getAssignedProjects(); + if (!$projects) return false; + + // Build an array of task ids. + $task_ids = array(); + foreach($projects as $project) { + $one_project_tasks = $project['tasks'] ? explode(',', $project['tasks']) : array(); + $task_ids = array_unique(array_merge($task_ids, $one_project_tasks)); + } + if (!$task_ids) return false; + + // Get task descriptions. + $result = array(); + $mdb2 = getConnection(); + $tasks = implode(',', $task_ids); // This is a comma-separated list of task ids. + + $sql = "select id, name, description from tt_tasks". + " where group_id = $this->group_id and status = 1 and id in ($tasks) order by name"; $res = $mdb2->query($sql); if (!is_a($res, 'PEAR_Error')) { while ($val = $res->fetchRow()) { @@ -261,7 +294,7 @@ class ttUser { if (isset($options['max_rank']) || $skipClients || isset($options['include_role'])) $left_joins .= ' left join tt_roles r on (u.role_id = r.id)'; - $where_part = " where u.team_id = $this->team_id"; + $where_part = " where u.group_id = $this->group_id"; if (isset($options['status'])) $where_part .= ' and u.status = '.(int)$options['status']; else @@ -312,7 +345,7 @@ class ttUser { $sql = "select u.id, u.name, u.login, u.role_id, u.status, u.rate, u.email from tt_users u". " left join tt_roles r on (u.role_id = r.id)". - " where u.id = $user_id and u.team_id = $this->team_id and u.status is not null". + " where u.id = $user_id and u.group_id = $this->group_id and u.status is not null". " and (r.rank < $this->rank or (r.rank = $this->rank and u.id = $this->id))"; // Users with lesser roles or self. $res = $mdb2->query($sql); if (!is_a($res, 'PEAR_Error')) {