X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/5fdf8659516ad2b07458deba8eda234e8e07c554..796b9e17473ca045e448b7876472bb73015247e9:/charts.php diff --git a/charts.php b/charts.php index 3ef76e52..3923d9a0 100644 --- a/charts.php +++ b/charts.php @@ -32,16 +32,28 @@ require_once('initialize.php'); import('form.Form'); import('DateAndTime'); import('ttChartHelper'); -import('ttSysConfig'); +import('ttUserConfig'); import('PieChartEx'); import('ttUserHelper'); import('ttTeamHelper'); -// Access check. -if (!ttAccessCheck(right_view_charts) || !$user->isPluginEnabled('ch')) { +// Access checks. +if (!(ttAccessAllowed('view_own_charts') || ttAccessAllowed('view_charts'))) { header('Location: access_denied.php'); exit(); } +if (!$user->isPluginEnabled('ch')) { + header('Location: feature_disabled.php'); + exit(); +} +if ($user->behalf_id && (!$user->can('view_charts') || !$user->checkBehalfId())) { + header('Location: access_denied.php'); // Trying on behalf, but no right or wrong user. + exit(); +} +if (!$user->behalf_id && !$user->can('view_own_charts') && !$user->adjustBehalfId()) { + header('Location: access_denied.php'); // Trying as self, but no right for self, and noone to view on behalf. + exit(); +} // Initialize and store date in session. $cl_date = $request->getParameter('date', @$_SESSION['date']); @@ -54,8 +66,8 @@ $_SESSION['date'] = $cl_date; // Initialize chart interval. $cl_interval = $_SESSION['chart_interval']; if (!$cl_interval) { - $sc = new ttSysConfig($user->id); - $cl_interval = $sc->getValue(SYSC_CHART_INTERVAL); + $uc = new ttUserConfig(); + $cl_interval = $uc->getValue(SYSC_CHART_INTERVAL); } if (!$cl_interval) $cl_interval = INTERVAL_THIS_MONTH; $_SESSION['chart_interval'] = $cl_interval; @@ -63,10 +75,10 @@ $_SESSION['chart_interval'] = $cl_interval; // Initialize chart type. $cl_type = $_SESSION['chart_type']; if (!$cl_type) { - $sc = new ttSysConfig($user->id); - $cl_type = $sc->getValue(SYSC_CHART_TYPE); + $uc = new ttUserConfig(); + $cl_type = $uc->getValue(SYSC_CHART_TYPE); } -if (MODE_TIME == $user->tracking_mode) { +if (MODE_TIME == $user->getTrackingMode()) { if ($user->isPluginEnabled('cl')) $cl_type = CHART_CLIENTS; } else { @@ -74,7 +86,7 @@ if (MODE_TIME == $user->tracking_mode) { if (!$user->isPluginEnabled('cl')) $cl_type = CHART_PROJECTS; } elseif ($cl_type == CHART_TASKS) { - if (MODE_PROJECTS_AND_TASKS != $user->tracking_mode) + if (MODE_PROJECTS_AND_TASKS != $user->getTrackingMode()) $cl_type = CHART_PROJECTS; } } @@ -84,15 +96,15 @@ $_SESSION['chart_type'] = $cl_type; // Who do we draw charts for? $on_behalf_id = $request->getParameter('onBehalfUser', (isset($_SESSION['behalf_id'])? $_SESSION['behalf_id'] : $user->id)); -if ($request->getMethod( )== 'POST') { +if ($request->isPost()) { // If chart interval changed - save it. $cl_interval = $request->getParameter('interval'); if ($cl_interval) { // Save in the session $_SESSION['chart_interval'] = $cl_interval; // and permanently. - $sc = new ttSysConfig($user->id); - $sc->setValue(SYSC_CHART_INTERVAL, $cl_interval); + $uc = new ttUserConfig(); + $uc->setValue(SYSC_CHART_INTERVAL, $cl_interval); } // If chart type changed - save it. $cl_type = $request->getParameter('type'); @@ -100,12 +112,12 @@ if ($request->getMethod( )== 'POST') { // Save in the session $_SESSION['chart_type'] = $cl_type; // and permanently. - $sc = new ttSysConfig($user->id); - $sc->setValue(SYSC_CHART_TYPE, $cl_type); + $uc = new ttUserConfig(); + $uc->setValue(SYSC_CHART_TYPE, $cl_type); } // If user has changed - set behalf_id accordingly in the session. if ($request->getParameter('onBehalfUser')) { - if($user->canManageTeam()) { + if($user->can('view_charts')) { unset($_SESSION['behalf_id']); unset($_SESSION['behalf_name']); @@ -123,9 +135,13 @@ if ($request->getMethod( )== 'POST') { $chart_form = new Form('chartForm'); // User dropdown. Changes the user "on behalf" of whom we are working. -if ($user->canManageTeam()) { - $user_list = ttTeamHelper::getActiveUsers(array('putSelfFirst'=>true)); - if (count($user_list) > 1) { +if ($user->can('view_charts')) { + if ($user->can('view_own_charts')) + $options = array('status'=>ACTIVE,'max_rank'=>$user->rank-1,'include_self'=>true,'self_first'=>true); + else + $options = array('status'=>ACTIVE,'max_rank'=>$user->rank-1); + $user_list = $user->getUsers($options); + if (count($user_list) >= 1) { $chart_form->addInput(array('type'=>'combobox', 'onchange'=>'this.form.submit();', 'name'=>'onBehalfUser', @@ -139,11 +155,11 @@ if ($user->canManageTeam()) { // Chart interval options. $intervals = array(); -$intervals[INTERVAL_THIS_DAY] = $i18n->getKey('dropdown.this_day'); -$intervals[INTERVAL_THIS_WEEK] = $i18n->getKey('dropdown.this_week'); -$intervals[INTERVAL_THIS_MONTH] = $i18n->getKey('dropdown.this_month'); -$intervals[INTERVAL_THIS_YEAR] = $i18n->getKey('dropdown.this_year'); -$intervals[INTERVAL_ALL_TIME] = $i18n->getKey('dropdown.all_time'); +$intervals[INTERVAL_THIS_DAY] = $i18n->get('dropdown.selected_day'); +$intervals[INTERVAL_THIS_WEEK] = $i18n->get('dropdown.selected_week'); +$intervals[INTERVAL_THIS_MONTH] = $i18n->get('dropdown.selected_month'); +$intervals[INTERVAL_THIS_YEAR] = $i18n->get('dropdown.selected_year'); +$intervals[INTERVAL_ALL_TIME] = $i18n->get('dropdown.all_time'); // Chart interval dropdown. $chart_form->addInput(array('type' => 'combobox', @@ -158,11 +174,11 @@ $chart_selector = (MODE_PROJECTS_AND_TASKS == $user->tracking_mode || $user->isP if ($chart_selector) { $types = array(); if (MODE_PROJECTS == $user->tracking_mode || MODE_PROJECTS_AND_TASKS == $user->tracking_mode) - $types[CHART_PROJECTS] = $i18n->getKey('dropdown.projects'); + $types[CHART_PROJECTS] = $i18n->get('dropdown.projects'); if (MODE_PROJECTS_AND_TASKS == $user->tracking_mode) - $types[CHART_TASKS] = $i18n->getKey('dropdown.tasks'); + $types[CHART_TASKS] = $i18n->get('dropdown.tasks'); if ($user->isPluginEnabled('cl')) - $types[CHART_CLIENTS] = $i18n->getKey('dropdown.clients'); + $types[CHART_CLIENTS] = $i18n->get('dropdown.clients'); // Add chart type dropdown. $chart_form->addInput(array('type' => 'combobox', @@ -223,6 +239,6 @@ $chart->renderEx(array('fileName'=>$file_name,'hideLogo'=>true,'hideTitle'=>true $smarty->assign('img_file_name', $img_ref); $smarty->assign('chart_selector', $chart_selector); $smarty->assign('forms', array($chart_form->getName() => $chart_form->toArray())); -$smarty->assign('title', $i18n->getKey('title.charts')); +$smarty->assign('title', $i18n->get('title.charts')); $smarty->assign('content_page_name', 'charts.tpl'); $smarty->display('index.tpl');