+
+ // update function - updates the timesheet in database.
+ static function update($fields) {
+ global $user;
+ $mdb2 = getConnection();
+
+ $group_id = $user->getGroup();
+ $org_id = $user->org_id;
+
+ $timesheet_id = $fields['id']; // Timesheet we are updating.
+ $name = $fields['name']; // Timesheet name.
+ $submitter_comment = $fields['submitter_comment'];
+ $status = $fields['status']; // Project status.
+
+ $sql = "update tt_timesheets set name = ".$mdb2->quote($name).", submitter_comment = ".$mdb2->quote($submitter_comment).
+ ", status = ".$mdb2->quote($status).
+ " where id = $timesheet_id and group_id = $group_id and org_id = $org_id";
+ $affected = $mdb2->exec($sql);
+ return (!is_a($affected, 'PEAR_Error'));
+ }
+
+ // isUserValid function is used during access checks and determines whether user id, passed in post, is valid
+ // in current context.
+ static function isUserValid($user_id) {
+ // We have to cover several situations.
+ //
+ // 1) User is a client.
+ // 2) User with view_all_timesheets rights.
+ // 3) User with view_timesheets rights.
+
+ global $user;
+
+ // Step 1.
+ // A client must have view_client_timesheets and
+ // aser must be assigned to one of client projects.
+ if ($user->isClient()) {
+ if (!$user->can('view_client_timesheets'))
+ return false;
+ $valid_users = ttGroupHelper::getUsersForClient($user->client_id);
+ $v = 2;
+ }
+
+ return true;
+ }
+
+ // getReportOptions prepares $options array to be used with ttReportHelper
+ // to obtain items for timesheet view.
+ static function getReportOptions($timesheet) {
+ global $user;
+ $group_by_client = $user->isPluginEnabled('cl') && !$timesheet['client_id'];
+ $trackingMode = $user->getTrackingMode();
+ $group_by_project = MODE_PROJECTS == $trackingMode || MODE_PROJECTS_AND_TASKS == $trackingMode;
+
+ $options['timesheet_id'] = $timesheet['id'];
+ $options['client_id'] = $timesheet['client_id'];
+ $options['users'] = $timesheet['user_id'];
+ $options['show_durarion'] = 1;
+ $options['show_cost'] = 1; // To include expenses.
+ $options['show_totals_only'] = 1;
+ $options['group_by1'] = 'date';
+ if ($group_by_client || $group_by_project) {
+ $options['group_by2'] = $group_by_client ? 'client' : 'project';
+ }
+ if ($options['group_by2'] && $options['group_by2'] != 'project' && $group_by_project) {
+ $options['group_by3'] = 'project';
+ }
+ return $options;
+ }