X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FttGroupExportHelper.class.php;h=f2290fbad1b158402c120c98ae7ea5f5a596f892;hb=bb2dc72d5b08a2e04244a372ed58edc0384f1cdd;hp=4ce8eed6522258c5536feaab5295b7aac7a8cabb;hpb=f05a2db179417c20c7d841f0363bca4988c8a2ca;p=timetracker.git diff --git a/WEB-INF/lib/ttGroupExportHelper.class.php b/WEB-INF/lib/ttGroupExportHelper.class.php index 4ce8eed6..f2290fba 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"; @@ -363,38 +400,6 @@ class ttGroupExportHelper { unset($log_part); } - /* - fwrite($this->file, $this->indentation." \n"); - $key = 0; - foreach ($this->userMap as $key => $value) { - $user_id = $key; - $records = ttTimeHelper::getAllRecords($user_id); - foreach ($records as $record) { - $key++; - $this->logMap[$record['id']] = $key; - $log_part = $this->indentation.' '."userMap[$record['user_id']]."\""; - $log_part .= " date=\"".$record['date']."\""; - $log_part .= " start=\"".$record['start']."\""; - $log_part .= " finish=\"".$record['finish']."\""; - $log_part .= " duration=\"".($record['start']?"":$record['duration'])."\""; - $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 .= " invoice_id=\"".$this->invoiceMap[$record['invoice_id']]."\""; - $log_part .= " comment=\"".htmlspecialchars($record['comment'])."\""; - $log_part .= " billable=\"".$record['billable']."\""; - $log_part .= " paid=\"".$record['paid']."\""; - $log_part .= " status=\"".$record['status']."\""; - $log_part .= ">\n"; - fwrite($this->file, $log_part); - } - } - fwrite($this->file, $this->indentation." \n"); - unset($records); - unset($log_part); - */ - // Write custom fields. if (count($custom_fields) > 0) { fwrite($this->file, $this->indentation." \n"); @@ -457,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"; @@ -482,6 +488,23 @@ class ttGroupExportHelper { unset($predefined_expense_part); } + // Write templates. + $templates = $this->getRecordsFromTable('tt_templates'); + if (count($templates) > 0) { + fwrite($this->file, $this->indentation." \n"); + foreach ($templates as $template) { + $template_part = $this->indentation.' '."