X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/0092d0f0e70b66795f5ab0fcff4bfcef89842f3d..85d475278111ea1ed81fcd0dd5eef7140d1cd493:/WEB-INF/lib/ttReportHelper.class.php diff --git a/WEB-INF/lib/ttReportHelper.class.php b/WEB-INF/lib/ttReportHelper.class.php index 612180a9..64128275 100644 --- a/WEB-INF/lib/ttReportHelper.class.php +++ b/WEB-INF/lib/ttReportHelper.class.php @@ -124,7 +124,7 @@ class ttReportHelper { $mdb2 = getConnection(); // Determine these once as they are used in multiple places in this function. - $canViewReports = $user->can('view_reports'); + $canViewReports = $user->can('view_reports') || $user->can('view_all_reports'); $isClient = $user->isClient(); $group_by_option = $options['group_by']; @@ -231,10 +231,8 @@ class ttReportHelper { // If we don't have expense items (such as when the Expenses plugin is desabled), the above is all sql we need, // with an exception of sorting part, that is added in the end. -// TODO: refactoring in progress down from here... The above is identical to getFavItems and is ready to merge. - // However, when we have expenses, we need to do a union with a separate query for expense items from tt_expense_items table. - if ($bean->getAttribute('chcost') && $user->isPluginEnabled('ex')) { // if ex(penses) plugin is enabled + if ($options['show_cost'] && $user->isPluginEnabled('ex')) { // if ex(penses) plugin is enabled $fields = array(); // An array of fields for database query. array_push($fields, 'ei.id'); @@ -243,55 +241,53 @@ class ttReportHelper { if($canViewReports || $isClient) array_push($fields, 'u.name as user'); // Add client name if it is selected. - if ($bean->getAttribute('chclient') || 'client' == $group_by_option) + if ($options['show_client'] || 'client' == $group_by_option) array_push($fields, 'c.name as client'); // Add project name if it is selected. - if ($bean->getAttribute('chproject') || 'project' == $group_by_option) + if ($options['show_project'] || 'project' == $group_by_option) array_push($fields, 'p.name as project'); - if ($bean->getAttribute('chtask') || 'task' == $group_by_option) + if ($options['show_task'] || 'task' == $group_by_option) array_push($fields, 'null'); // null for task name. We need to match column count for union. - if ($bean->getAttribute('chcf_1') || 'cf_1' == $group_by_option) + if ($options['show_custom_field_1'] || 'cf_1' == $group_by_option) array_push($fields, 'null'); // null for cf_1. - if ($bean->getAttribute('chstart')) { + if ($options['show_start']) { array_push($fields, 'null'); // null for unformatted_start. array_push($fields, 'null'); // null for start. } - if ($bean->getAttribute('chfinish')) + if ($options['show_end']) array_push($fields, 'null'); // null for finish. - if ($bean->getAttribute('chduration')) + if ($options['show_duration']) array_push($fields, 'null'); // null for duration. - // Add work units. - if ($bean->getAttribute('chunits')) + if ($options['show_work_units']) array_push($fields, 'null as units'); // null for work units. // Use the note field to print item name. - if ($bean->getAttribute('chnote')) + if ($options['show_note']) array_push($fields, 'ei.name as note'); array_push($fields, 'ei.cost as cost'); array_push($fields, 'ei.cost as expense'); // Add paid status. - if ($canViewReports && $bean->getAttribute('chpaid')) + if ($canViewReports && $options['show_paid']) array_push($fields, 'ei.paid as paid'); // Add IP address. - if ($canViewReports && $bean->getAttribute('chip')) { + if ($canViewReports && $options['show_ip']) { array_push($fields, 'ei.created as created'); array_push($fields, 'ei.created_ip as created_ip'); array_push($fields, 'ei.modified as modified'); array_push($fields, 'ei.modified_ip as modified_ip'); } - // Add invoice name if it is selected. - if (($canViewReports || $isClient) && $bean->getAttribute('chinvoice')) + if (($canViewReports || $isClient) && $options['show_invoice']) array_push($fields, 'i.name as invoice'); // Prepare sql query part for left joins. $left_joins = null; if ($canViewReports || $isClient) $left_joins .= " left join tt_users u on (u.id = ei.user_id)"; - if ($bean->getAttribute('chclient') || 'client' == $group_by_option) + if ($options['show_client'] || 'client' == $group_by_option) $left_joins .= " left join tt_clients c on (c.id = ei.client_id)"; - if ($bean->getAttribute('chproject') || 'project' == $group_by_option) + if ($options['show_project'] || 'project' == $group_by_option) $left_joins .= " left join tt_projects p on (p.id = ei.project_id)"; - if (($canViewReports || $isClient) && $bean->getAttribute('chinvoice')) + if (($canViewReports || $isClient) && $options['show_invoice']) $left_joins .= " left join tt_invoices i on (i.id = ei.invoice_id and i.status = 1)"; $where = ttReportHelper::getExpenseWhere($options); @@ -305,13 +301,13 @@ class ttReportHelper { // Determine sort part. $sort_part = ' order by '; - if ('no_grouping' == $group_by_option || 'date' == $group_by_option) + if ($group_by_option == null || 'no_grouping' == $group_by_option || 'date' == $group_by_option) $sort_part .= 'date'; else $sort_part .= $group_by_option.', date'; - if (($canViewReports || $isClient) && is_array($bean->getAttribute('users')) && 'user' != $group_by_option) + if (($canViewReports || $isClient) && $options['users'] && 'user' != $group_by_option) $sort_part .= ', user, type'; - if ($bean->getAttribute('chstart')) + if ($options['show_start']) $sort_part .= ', unformatted_start'; $sort_part .= ', id'; @@ -400,7 +396,7 @@ class ttReportHelper { $mdb2 = getConnection(); // Determine these once as they are used in multiple places in this function. - $canViewReports = $user->can('view_reports'); + $canViewReports = $user->can('view_reports') || $user->can('view_all_reports'); $isClient = $user->isClient(); $group_by_option = $options['group_by']; @@ -577,11 +573,11 @@ class ttReportHelper { // Determine sort part. $sort_part = ' order by '; - if ($group_by_option == null || 'no_grouping' == $group_by_option || 'date' == $group_by_option) // TODO: fix DB for NULL values in group_by field. + if ($group_by_option == null || 'no_grouping' == $group_by_option || 'date' == $group_by_option) $sort_part .= 'date'; else $sort_part .= $group_by_option.', date'; - if (($canViewReports || $isClient) /*&& is_array($bean->getAttribute('users'))*/ && 'user' != $group_by_option) + if (($canViewReports || $isClient) && $options['users'] && 'user' != $group_by_option) $sort_part .= ', user, type'; if ($options['show_start']) $sort_part .= ', unformatted_start'; @@ -1817,16 +1813,8 @@ class ttReportHelper { $options['show_note'] = $bean->getAttribute('chnote'); $options['show_custom_field_1'] = $bean->getAttribute('chcf_1'); $options['show_work_units'] = $bean->getAttribute('chunits'); -/* - `show_totals_only` tinyint(4) NOT NULL default 0, # whether to show totals only -*/ + $options['show_totals_only'] = $bean->getAttribute('chtotalsonly'); $options['group_by'] = $bean->getAttribute('group_by'); -/* - * TODO: remaining fields to fill in... - `status` tinyint(4) default 1, # favorite report status - PRIMARY KEY (`id`) -); -*/ return $options; }