X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FttGroupExportHelper.class.php;h=7810c79e8034e5beaf72222b3cfeb8d66784b889;hb=3b3e56c2f4e2a9624f0e25b1d5b0892a421a00bd;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..7810c79e 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,30 @@ 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 .= " project_id=\"".$this->projectMap[$timesheet_item['project_id']]."\""; + $timesheet_part .= " name=\"".htmlspecialchars($timesheet_item['name'])."\""; + $timesheet_part .= " comment=\"".htmlspecialchars($timesheet_item['comment'])."\""; + $timesheet_part .= " start_date=\"".$timesheet_item['start_date']."\""; + $timesheet_part .= " end_date=\"".$timesheet_item['end_date']."\""; + $timesheet_part .= " submit_status=\"".$timesheet_item['submit_status']."\""; + $timesheet_part .= " approve_status=\"".$timesheet_item['approve_status']."\""; + $timesheet_part .= " approve_comment=\"".htmlspecialchars($timesheet_item['approve_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 +366,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 +385,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"; @@ -425,6 +462,7 @@ class ttGroupExportHelper { $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 +524,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 +537,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); }