X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FttGroupExportHelper.class.php;h=06a3697d05fd1ff8f66edd9eea65fe8642d4f20b;hb=5897ea0d3efe16a50706bcf1bde8d33044b5cf5f;hp=d2ee6413da56b4bdb0471dccd5bfe6c8ee9ed8b4;hpb=a2c6a874b43c46bd110fc8f6d5faf9796e931d8d;p=timetracker.git diff --git a/WEB-INF/lib/ttGroupExportHelper.class.php b/WEB-INF/lib/ttGroupExportHelper.class.php index d2ee6413..06a3697d 100644 --- a/WEB-INF/lib/ttGroupExportHelper.class.php +++ b/WEB-INF/lib/ttGroupExportHelper.class.php @@ -42,6 +42,7 @@ class ttGroupExportHelper { var $taskMap = array(); var $projectMap = array(); var $clientMap = array(); + var $timesheetMap = array(); var $invoiceMap = array(); var $logMap = array(); var $customFieldMap = array(); @@ -174,6 +175,11 @@ class ttGroupExportHelper { foreach ($clients as $key=>$client_item) $this->clientMap[$client_item['id']] = $key + 1; + // Prepare timesheet map. + $timesheets = $this->getRecordsFromTable('tt_timesheets'); + foreach ($timesheets as $key=>$timesheet_item) + $this->timesheetMap[$timesheet_item['id']] = $key + 1; + // Prepare invoice map. $invoices = ttTeamHelper::getAllInvoices(); foreach ($invoices as $key=>$invoice_item) @@ -288,6 +294,7 @@ class ttGroupExportHelper { $user_part .= " role_id=\"".$role_id."\""; $user_part .= " client_id=\"".$this->clientMap[$user_item['client_id']]."\""; $user_part .= " rate=\"".$user_item['rate']."\""; + $user_part .= " quota_percent=\"".$user_item['quota_percent']."\""; $user_part .= " email=\"".$user_item['email']."\""; $user_part .= " status=\"".$user_item['status']."\""; $user_part .= ">\n"; @@ -317,6 +324,27 @@ class ttGroupExportHelper { unset($bind_part); } + // Write timesheets. + if (count($timesheets) > 0) { + fwrite($this->file, $this->indentation." \n"); + foreach ($timesheets as $timesheet_item) { + $timesheet_part = $this->indentation.' '."timesheetMap[$timesheet_item['id']]."\""; + $timesheet_part .= " user_id=\"".$this->userMap[$timesheet_item['user_id']]."\""; + $timesheet_part .= " client_id=\"".$this->clientMap[$timesheet_item['client_id']]."\""; + $timesheet_part .= " name=\"".htmlspecialchars($timesheet_item['name'])."\""; + $timesheet_part .= " submit_status=\"".$timesheet_item['submit_status']."\""; + $timesheet_part .= " submitter_comment=\"".htmlspecialchars($timesheet_item['submitter_name'])."\""; + $timesheet_part .= " approval_status=\"".$timesheet_item['approval_status']."\""; + $timesheet_part .= " manager_comment=\"".htmlspecialchars($timesheet_item['manager_comment'])."\""; + $timesheet_part .= " status=\"".$timesheet_item['status']."\""; + $timesheet_part .= ">\n"; + fwrite($this->file, $timesheet_part); + } + fwrite($this->file, $this->indentation." \n"); + unset($timesheets); + unset($timesheet_part); + } + // Write invoices. if (count($invoices) > 0) { fwrite($this->file, $this->indentation." \n"); @@ -335,6 +363,10 @@ class ttGroupExportHelper { } // Write time log entries and build logMap at the same time. + // TODO: big data sets get us out of memory error. + // We need to optimize this by working on smaller result sets at a time. + // tt_log is one potentially large table, but so may be others. + // Refactor this during next round of work here. $records = $this->getRecordsFromTable('tt_log'); if (count($records) > 0) { fwrite($this->file, $this->indentation." \n"); @@ -350,9 +382,11 @@ class ttGroupExportHelper { $log_part .= " client_id=\"".$this->clientMap[$record['client_id']]."\""; $log_part .= " project_id=\"".$this->projectMap[$record['project_id']]."\""; $log_part .= " task_id=\"".$this->taskMap[$record['task_id']]."\""; + $log_part .= " timesheet_id=\"".$this->timesheetMap[$record['timesheet_id']]."\""; $log_part .= " invoice_id=\"".$this->invoiceMap[$record['invoice_id']]."\""; $log_part .= " comment=\"".htmlspecialchars($record['comment'])."\""; $log_part .= " billable=\"".$record['billable']."\""; + $log_part .= " approved=\"".$record['approved']."\""; $log_part .= " paid=\"".$record['paid']."\""; $log_part .= " status=\"".$record['status']."\""; $log_part .= ">\n"; @@ -422,9 +456,11 @@ class ttGroupExportHelper { $expense_item_part .= " user_id=\"".$this->userMap[$expense_item['user_id']]."\""; $expense_item_part .= " client_id=\"".$this->clientMap[$expense_item['client_id']]."\""; $expense_item_part .= " project_id=\"".$this->projectMap[$expense_item['project_id']]."\""; + $expense_item_part .= " timesheet_id=\"".$this->timesheetMap[$expense_item['timesheet_id']]."\""; $expense_item_part .= " name=\"".htmlspecialchars($expense_item['name'])."\""; $expense_item_part .= " cost=\"".$expense_item['cost']."\""; $expense_item_part .= " invoice_id=\"".$this->invoiceMap[$expense_item['invoice_id']]."\""; + $expense_item_part .= " approved=\"".$expense_item['approved']."\""; $expense_item_part .= " paid=\"".$expense_item['paid']."\""; $expense_item_part .= " status=\"".$expense_item['status']."\""; $expense_item_part .= ">\n"; @@ -486,6 +522,10 @@ class ttGroupExportHelper { $fav_report_part .= " project_id=\"".$this->projectMap[$fav_report['project_id']]."\""; $fav_report_part .= " task_id=\"".$this->taskMap[$fav_report['task_id']]."\""; $fav_report_part .= " billable=\"".$fav_report['billable']."\""; + $fav_report_part .= " approved=\"".$fav_report['approved']."\""; + $fav_report_part .= " invoice=\"".$fav_report['invoice']."\""; + $fav_report_part .= " timesheet=\"".$fav_report['timesheet']."\""; + $fav_report_part .= " paid_status=\"".$fav_report['paid_status']."\""; $fav_report_part .= " users=\"".$user_list."\""; $fav_report_part .= " period=\"".$fav_report['period']."\""; $fav_report_part .= " period_start=\"".$fav_report['period_start']."\""; @@ -495,18 +535,20 @@ class ttGroupExportHelper { $fav_report_part .= " show_paid=\"".$fav_report['show_paid']."\""; $fav_report_part .= " show_ip=\"".$fav_report['show_ip']."\""; $fav_report_part .= " show_project=\"".$fav_report['show_project']."\""; + $fav_report_part .= " show_timesheet=\"".$fav_report['show_timesheet']."\""; $fav_report_part .= " show_start=\"".$fav_report['show_start']."\""; $fav_report_part .= " show_duration=\"".$fav_report['show_duration']."\""; $fav_report_part .= " show_cost=\"".$fav_report['show_cost']."\""; $fav_report_part .= " show_task=\"".$fav_report['show_task']."\""; $fav_report_part .= " show_end=\"".$fav_report['show_end']."\""; $fav_report_part .= " show_note=\"".$fav_report['show_note']."\""; + $fav_report_part .= " show_approved=\"".$fav_report['show_approved']."\""; + $fav_report_part .= " show_totals_only=\"".$fav_report['show_totals_only']."\""; $fav_report_part .= " show_custom_field_1=\"".$fav_report['show_custom_field_1']."\""; $fav_report_part .= " show_work_units=\"".$fav_report['show_work_units']."\""; $fav_report_part .= " group_by1=\"".$fav_report['group_by1']."\""; $fav_report_part .= " group_by2=\"".$fav_report['group_by2']."\""; $fav_report_part .= " group_by3=\"".$fav_report['group_by3']."\""; - $fav_report_part .= " show_totals_only=\"".$fav_report['show_totals_only']."\""; $fav_report_part .= ">\n"; fwrite($this->file, $fav_report_part); }