From 0bf91be4d6ee52adaf09a74d729c7a34cf012de7 Mon Sep 17 00:00:00 2001 From: Nik Okuntseff Date: Sat, 3 Nov 2018 12:15:12 +0000 Subject: [PATCH] Some more work in progress on subgroups. --- WEB-INF/lib/ttUser.class.php | 17 +++++++++-------- WEB-INF/templates/footer.tpl | 2 +- time.php | 6 ++++-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/WEB-INF/lib/ttUser.class.php b/WEB-INF/lib/ttUser.class.php index 21cd19aa..003cf0fe 100644 --- a/WEB-INF/lib/ttUser.class.php +++ b/WEB-INF/lib/ttUser.class.php @@ -41,7 +41,8 @@ class ttUser { var $behalf_id = null; // User id, on behalf of whom we are working. var $behalf_group_id = null; // Group id, on behalf of which we are working. var $behalf_name = null; // User name, on behalf of whom we are working. - var $behalf_group = null; // Group name, on behalf of which we are working. + var $group_name = null; // Group name. + var $behalf_group_name = null;// Group name, on behalf of which we are working. var $email = null; // User email. var $lang = null; // Language. var $decimal_mark = null; // Decimal separator. @@ -63,7 +64,6 @@ class ttUser { var $currency = null; // Currency. var $plugins = null; // Comma-separated list of enabled plugins. var $config = null; // Comma-separated list of miscellaneous config options. - var $group = null; // Group name. var $custom_logo = 0; // Whether to use a custom logo for group. var $lock_spec = null; // Cron specification for record locking. var $workday_minutes = 480; // Number of work minutes in a regular day. @@ -124,7 +124,7 @@ class ttUser { $this->bcc_email = $val['bcc_email']; $this->allow_ip = $val['allow_ip']; $this->password_complexity = $val['password_complexity']; - $this->group = $val['group_name']; + $this->group_name = $val['group_name']; $this->currency = $val['currency']; $this->plugins = $val['plugins']; $this->lock_spec = $val['lock_spec']; @@ -155,7 +155,7 @@ class ttUser { // Set "on behalf" id and name (group). if (isset($_SESSION['behalf_group_id'])) { $this->behalf_group_id = $_SESSION['behalf_group_id']; - $this->behalf_group = $_SESSION['behalf_group_name']; + $this->behalf_group_name = $_SESSION['behalf_group_name']; } } } @@ -309,6 +309,7 @@ class ttUser { $skipClients = !isset($options['include_clients']); $includeSelf = isset($options['include_self']); + $group_id = isset($options['group_id']) ? $options['group_id'] : $this->group_id; $select_part = 'select u.id, u.name'; if (isset($options['include_login'])) $select_part .= ', u.login'; @@ -321,7 +322,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.group_id = $this->group_id"; + $where_part = " where u.org_id = $this->org_id and u.group_id = $group_id"; if (isset($options['status'])) $where_part .= ' and u.status = '.(int)$options['status']; else @@ -371,11 +372,11 @@ class ttUser { $mdb2 = getConnection(); $selected_group_id = ($this->behalf_group_id ? $this->behalf_group_id : $this->group_id); - $selected_group_name = ($this->behalf_group_id ? $this->behalf_group : $this->group); + $selected_group_name = ($this->behalf_group_id ? $this->behalf_group_name : $this->group_name); // Start with parent group. - if ($selected_group_id != $this->org_id) { - // We are in one of the subgroups, and a parent exists. + 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"; $res = $mdb2->query($sql); diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index 3f32ac03..d9c3e334 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
-
 Anuko Time Tracker 1.18.06.4351 | Copyright © Anuko | +  Anuko Time Tracker 1.18.06.4352 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} diff --git a/time.php b/time.php index 5307d8b2..da816362 100644 --- a/time.php +++ b/time.php @@ -124,10 +124,12 @@ if ($user->can('manage_subgroups')) { } // SUBGROUP_DEBUG if ($user->can('track_time')) { + // Determine max rank. + $max_rank = $on_behalf_group_id == $user->group_id ? $user->rank-1 : 512; // TODO: stop using magic numbers. if ($user->can('track_own_time')) - $options = array('status'=>ACTIVE,'max_rank'=>$user->rank-1,'include_self'=>true,'self_first'=>true); + $options = array('group_id'=>$on_behalf_group_id,'status'=>ACTIVE,'max_rank'=>$max_rank,'include_self'=>true,'self_first'=>true); else - $options = array('status'=>ACTIVE,'max_rank'=>$user->rank-1); + $options = array('group_id'=>$on_behalf_group_id,'status'=>ACTIVE,'max_rank'=>$max_rank); $user_list = $user->getUsers($options); if (count($user_list) >= 1) { $form->addInput(array('type'=>'combobox', -- 2.20.1