X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=time.php;h=68aaf40e7e4f9648c12f24d8e67cfdd9c0f878ea;hb=d6a5ffec0f76b9ab5b1ee4f8e69ecdb2afd7c0ff;hp=5307d8b2af2fcb21571756a5675c77e3a2acb0cb;hpb=948617a6a0f129ba4090934ee8f544009dbcd935;p=timetracker.git diff --git a/time.php b/time.php index 5307d8b2..68aaf40e 100644 --- a/time.php +++ b/time.php @@ -124,10 +124,11 @@ if ($user->can('manage_subgroups')) { } // SUBGROUP_DEBUG if ($user->can('track_time')) { + $rank = $user->getMaxRankForGroup($on_behalf_group_id); 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'=>$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'=>$rank); $user_list = $user->getUsers($options); if (count($user_list) >= 1) { $form->addInput(array('type'=>'combobox', @@ -312,6 +313,7 @@ if ($request->isPost()) { 'date' => $cl_date, 'user_id' => $user->getActiveUser(), 'group_id' => $user->getActiveGroup(), + 'org_id' => $user->org_id, 'client' => $cl_client, 'project' => $cl_project, 'task' => $cl_task, @@ -365,31 +367,61 @@ if ($request->isPost()) { exit(); } } - elseif ($request->getParameter('onBehalfGroup')) { - if($user->can('manage_subgroups')) { - unset($_SESSION['behalf_group_id']); - unset($_SESSION['behalf_group_name']); - - if($on_behalf_group_id != $user->group_id) { - $_SESSION['behalf_group_id'] = $on_behalf_group_id; - $_SESSION['behalf_group_name'] = ttGroupHelper::getGroupName($on_behalf_group_id); + elseif ($request->getParameter('onBehalfUser') || $request->getParameter('onBehalfGroup')) { + // User changed either on behalf user or group. + // TODO: Organize this code into a separate function. + + // We get here if one of the dropdowns changed. Handle these 2 situations differently. + // 1) User changed. Determine if user changed. Then do exactly as before. + // + // Group changed. Determine if group changed. + // Adjust group info. + // Adjust user info to first user in group (or self if we are in home group now). + // + // Determine if user was changed. + if ($request->getParameter('onBehalfUser')) { + $request_user_id = $request->getParameter('onBehalfUser'); + $session_user_id = $_SESSION['behalf_id']; + $user_changed = !(($session_user_id == null && ($user->id == $request_user_id)) + || ($session_user_id != null && ($request_user_id == $session_user_id))); + if ($user_changed && $user->can('track_time')) { + unset($_SESSION['behalf_id']); + unset($_SESSION['behalf_name']); + + if($request_user_id != $user->id) { + $_SESSION['behalf_id'] = $request_user_id; + $_SESSION['behalf_name'] = ttUserHelper::getUserName($request_user_id); + } } - header('Location: time.php'); - exit(); } - } - elseif ($request->getParameter('onBehalfUser')) { - if($user->can('track_time')) { - unset($_SESSION['behalf_id']); - unset($_SESSION['behalf_name']); - - if($on_behalf_id != $user->id) { - $_SESSION['behalf_id'] = $on_behalf_id; - $_SESSION['behalf_name'] = ttUserHelper::getUserName($on_behalf_id); + + if ($request->getParameter('onBehalfGroup')) { + // Determine if group was changed. + $request_group_id = $request->getParameter('onBehalfGroup'); + $session_group_id = $_SESSION['behalf_group_id']; + $group_changed = !(($session_group_id == null && ($user->group_id == $request_group_id)) + || ($session_group_id != null && ($request_group_id == $session_group_id))); + + if ($group_changed && $user->can('manage_subgroups')) { + unset($_SESSION['behalf_group_id']); + unset($_SESSION['behalf_group_name']); + if ($request_group_id == $user->group_id) + $user->behalf_group_id = null; + + if (($request_group_id != $user->group_id) && $user->isSubgroupValid($request_group_id)) { + $_SESSION['behalf_group_id'] = $request_group_id; + $_SESSION['behalf_group_name'] = ttGroupHelper::getGroupName($request_group_id); + $user->behalf_group_id = $request_group_id; + } + + unset($_SESSION['behalf_id']); + unset($_SESSION['behalf_name']); + if ($request_group_id != $user->group_id) + $user->adjustBehalfId(); } - header('Location: time.php'); - exit(); } + header('Location: time.php'); + exit(); } } // isPost