X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FttReportHelper.class.php;h=9c6dfb0fe04c27eae0ed9d5a788e1721a65840a3;hb=223ec69341da525ce2fce640ad5e62b00ec27360;hp=5e8f799f0cdd034fd4239b270ff0187e7c35fb87;hpb=2940db88b0c3e90b9e4937daf295522c44e94030;p=timetracker.git diff --git a/WEB-INF/lib/ttReportHelper.class.php b/WEB-INF/lib/ttReportHelper.class.php index 5e8f799f..9c6dfb0f 100644 --- a/WEB-INF/lib/ttReportHelper.class.php +++ b/WEB-INF/lib/ttReportHelper.class.php @@ -30,6 +30,7 @@ import('ttClientHelper'); import('DateAndTime'); import('Period'); import('ttTimeHelper'); +import('ttConfigHelper'); require_once(dirname(__FILE__).'/../../plugins/CustomFields.class.php'); @@ -154,6 +155,9 @@ class ttReportHelper { global $user; $mdb2 = getConnection(); + $group_id = $user->getGroup(); + $org_id = $user->org_id; + // Determine these once as they are used in multiple places in this function. $canViewReports = $user->can('view_reports') || $user->can('view_all_reports'); $isClient = $user->isClient(); @@ -251,6 +255,9 @@ class ttReportHelper { // Add timesheet name if it is selected. if ($options['show_timesheet']) array_push($fields, 'ts.name as timesheet_name'); + // Add has_files. + if ($options['show_files']) + array_push($fields, 'if(Sub1.entity_id is null, 0, 1) as has_files'); // Prepare sql query part for left joins. $left_joins = null; @@ -274,6 +281,11 @@ class ttReportHelper { } if ($includeCost && MODE_TIME != $trackingMode) $left_joins .= " left join tt_user_project_binds upb on (l.user_id = upb.user_id and l.project_id = upb.project_id)"; + if ($options['show_files']) { + $left_joins .= " left join (select distinct entity_id from tt_files". + " where entity_type = 'time' and group_id = $group_id and org_id = $org_id and status = 1) Sub1". + " on (l.id = Sub1.entity_id)"; + } // Prepare sql query part for inner joins. $inner_joins = null; @@ -349,6 +361,9 @@ class ttReportHelper { array_push($fields, 'i.name as invoice'); if ($options['show_timesheet']) array_push($fields, 'null as timesheet_name'); + // Add has_files. + if ($options['show_files']) + array_push($fields, 'if(Sub1.entity_id is null, 0, 1) as has_files'); // Prepare sql query part for left joins. $left_joins = null; @@ -360,6 +375,11 @@ class ttReportHelper { $left_joins .= " left join tt_projects p on (p.id = ei.project_id)"; if (($canViewReports || $isClient) && $options['show_invoice']) $left_joins .= " left join tt_invoices i on (i.id = ei.invoice_id and i.status = 1)"; + if ($options['show_files']) { + $left_joins .= " left join (select distinct entity_id from tt_files". + " where entity_type = 'expense' and group_id = $group_id and org_id = $org_id and status = 1) Sub1". + " on (ei.id = Sub1.entity_id)"; + } $where = ttReportHelper::getExpenseWhere($options); @@ -716,6 +736,10 @@ class ttReportHelper { $canViewReports = $user->can('view_reports') || $user->can('view_all_reports'); $isClient = $user->isClient(); + $config = new ttConfigHelper($user->getConfig()); + $show_note_column = $options['show_note'] && !$config->getDefinedValue('report_note_on_separate_row'); + $show_note_row = $options['show_note'] && $config->getDefinedValue('report_note_on_separate_row'); + $items = ttReportHelper::getItems($options); $grouping = ttReportHelper::grouping($options); if ($grouping) @@ -849,6 +873,8 @@ class ttReportHelper { $body .= ''.$i18n->get('label.duration').''; if ($options['show_work_units']) $body .= ''.$i18n->get('label.work_units_short').''; + if ($show_note_column) + $body .= ''.$i18n->get('label.note').''; if ($options['show_cost']) $body .= ''.$i18n->get('label.cost').''; if ($options['show_approved']) @@ -895,6 +921,7 @@ class ttReportHelper { if ($options['show_end']) $body .= ''; if ($options['show_duration']) $body .= ''.$subtotals[$prev_grouped_by]['time'].''; if ($options['show_work_units']) $body .= ''.$subtotals[$prev_grouped_by]['units'].''; + if ($show_note_column) $body .= ''; if ($options['show_cost']) { $body .= ''; $body .= ($canViewReports || $isClient) ? $subtotals[$prev_grouped_by]['cost'] : $subtotals[$prev_grouped_by]['expenses']; @@ -934,6 +961,8 @@ class ttReportHelper { $body .= ''.$record['duration'].''; if ($options['show_work_units']) $body .= ''.$record['units'].''; + if ($show_note_column) + $body .= ''.htmlspecialchars($record['note']).''; if ($options['show_cost']) $body .= ''.$record['cost'].''; if ($options['show_approved']) { @@ -956,7 +985,7 @@ class ttReportHelper { if ($options['show_timesheet']) $body .= ''.htmlspecialchars($record['timesheet']).''; $body .= ''; - if ($options['show_note'] && $record['note']) { + if ($show_note_row && $record['note']) { $body .= ''; $body .= ''.$i18n->get('label.note').':'; $body .= ''.$record['note'].''; @@ -982,6 +1011,7 @@ class ttReportHelper { if ($options['show_end']) $body .= ''; if ($options['show_duration']) $body .= ''.$subtotals[$cur_grouped_by]['time'].''; if ($options['show_work_units']) $body .= ''.$subtotals[$cur_grouped_by]['units'].''; + if ($show_note_column) $body .= ''; if ($options['show_cost']) { $body .= ''; $body .= ($canViewReports || $isClient) ? $subtotals[$cur_grouped_by]['cost'] : $subtotals[$cur_grouped_by]['expenses']; @@ -1008,6 +1038,7 @@ class ttReportHelper { if ($options['show_end']) $body .= ''; if ($options['show_duration']) $body .= ''.$totals['time'].''; if ($options['show_work_units']) $body .= ''.$totals['units'].''; + if ($show_note_column) $body .= ''; if ($options['show_cost']) { $body .= ''.htmlspecialchars($user->currency).' '; $body .= ($canViewReports || $isClient) ? $totals['cost'] : $totals['expenses']; @@ -1124,7 +1155,18 @@ class ttReportHelper { if ($user->isPluginEnabled('ap') && $user->isClient() && !$user->can('view_client_unapproved')) $options['approved'] = 1; // Restrict clients to approved records only. $options['timesheet'] = $bean->getAttribute('timesheet'); - if (is_array($bean->getAttribute('users'))) $options['users'] = join(',', $bean->getAttribute('users')); + + $active_users_in_bean = $bean->getAttribute('users_active'); + if ($active_users_in_bean && is_array($active_users_in_bean)) { + $users = join(',', $active_users_in_bean); + } + $inactive_users_in_bean = $bean->getAttribute('users_inactive'); + if ($inactive_users_in_bean && is_array($inactive_users_in_bean)) { + if ($users) $users .= ','; + $users .= join(',', $inactive_users_in_bean); + } + if ($users) $options['users'] = $users; + $options['period'] = $bean->getAttribute('period'); $options['period_start'] = $bean->getAttribute('start_date'); $options['period_end'] = $bean->getAttribute('end_date'); @@ -1143,6 +1185,7 @@ class ttReportHelper { $options['show_custom_field_1'] = $bean->getAttribute('chcf_1'); $options['show_work_units'] = $bean->getAttribute('chunits'); $options['show_timesheet'] = $bean->getAttribute('chtimesheet'); + $options['show_files'] = $bean->getAttribute('chfiles'); $options['show_totals_only'] = $bean->getAttribute('chtotalsonly'); $options['group_by1'] = $bean->getAttribute('group_by1'); $options['group_by2'] = $bean->getAttribute('group_by2'); @@ -1155,13 +1198,19 @@ class ttReportHelper { global $user; // Check users. - $users_in_bean = $bean->getAttribute('users'); - if (is_array($users_in_bean)) { + $active_users_in_bean = $bean->getAttribute('users_active'); + $inactive_users_in_bean = $bean->getAttribute('users_inactive'); + if (is_array($active_users_in_bean) || is_array($inactive_users_in_bean)) { $users_in_group = ttGroupHelper::getUsers(); foreach ($users_in_group as $user_in_group) { $valid_ids[] = $user_in_group['id']; } - foreach ($users_in_bean as $user_in_bean) { + foreach ($active_users_in_bean as $user_in_bean) { + if (!in_array($user_in_bean, $valid_ids)) { + return false; + } + } + foreach ($inactive_users_in_bean as $user_in_bean) { if (!in_array($user_in_bean, $valid_ids)) { return false; }