X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/c13d7023d283bda30121b8c9be56f982feeed89c..c5742659a15a48bd5ddcba78d648a26cc6c520ee:/WEB-INF/lib/ttOrgImportHelper.class.php diff --git a/WEB-INF/lib/ttOrgImportHelper.class.php b/WEB-INF/lib/ttOrgImportHelper.class.php index 9f5dd788..4c57739b 100644 --- a/WEB-INF/lib/ttOrgImportHelper.class.php +++ b/WEB-INF/lib/ttOrgImportHelper.class.php @@ -29,7 +29,6 @@ import('ttUserHelper'); import('ttRoleHelper'); import('ttTaskHelper'); -import('ttProjectHelper'); import('ttClientHelper'); import('ttInvoiceHelper'); import('ttTimeHelper'); @@ -200,11 +199,13 @@ class ttOrgImportHelper { // We get here when processing tags for the current group. // Prepare a list of task ids. - $tasks = explode(',', $attrs['TASKS']); - foreach ($tasks as $id) - $mapped_tasks[] = $this->currentGroupTaskMap[$id]; + if ($attrs['TASKS']) { + $tasks = explode(',', $attrs['TASKS']); + foreach ($tasks as $id) + $mapped_tasks[] = $this->currentGroupTaskMap[$id]; + } - $project_id = ttProjectHelper::insert(array( + $project_id = $this->insertProject(array( 'group_id' => $this->current_group_id, 'org_id' => $this->org_id, 'name' => $attrs['NAME'], @@ -415,11 +416,11 @@ class ttOrgImportHelper { if ($name == 'EXPENSE_ITEM') { // We get here when processing tags for the current group. - $expense_item_id = ttExpenseHelper::insert(array( + $expense_item_id = $this->insertExpense(array( 'date' => $attrs['DATE'], 'user_id' => $this->currentGroupUserMap[$attrs['USER_ID']], 'group_id' => $this->current_group_id, - // 'org_id' => $this->org_id, TODO: add this when org_id field is added to the table. + 'org_id' => $this->org_id, 'client_id' => $this->currentGroupClientMap[$attrs['CLIENT_ID']], 'project_id' => $this->currentGroupProjectMap[$attrs['PROJECT_ID']], 'name' => $attrs['NAME'], @@ -679,4 +680,70 @@ class ttOrgImportHelper { $affected = $mdb2->exec($sql); return (!is_a($affected, 'PEAR_Error')); } + + // insertExpense - a helper function to insert an expense item. + private function insertExpense($fields) { + global $user; + $mdb2 = getConnection(); + + $group_id = (int) $fields['group_id']; + $org_id = (int) $fields['org_id']; + $date = $fields['date']; + $user_id = (int) $fields['user_id']; + $client_id = $fields['client_id']; + $project_id = $fields['project_id']; + $name = $fields['name']; + $cost = str_replace(',', '.', $fields['cost']); + $invoice_id = $fields['invoice_id']; + $status = $fields['status']; + $paid = (int) $fields['paid']; + $created = ', now(), '.$mdb2->quote($_SERVER['REMOTE_ADDR']).', '.$mdb2->quote($user->id); + + $sql = "insert into tt_expense_items". + " (date, user_id, group_id, org_id, client_id, project_id, name, cost, invoice_id, paid, created, created_ip, created_by, status)". + " values (".$mdb2->quote($date).", $user_id, $group_id, $org_id, ".$mdb2->quote($client_id).", ".$mdb2->quote($project_id). + ", ".$mdb2->quote($name).", ".$mdb2->quote($cost).", ".$mdb2->quote($invoice_id).", $paid $created, ".$mdb2->quote($status).")"; + $affected = $mdb2->exec($sql); + return (!is_a($affected, 'PEAR_Error')); + } + + // insertProject - a helper function to insert a project as well as project to task binds. + private function insertProject($fields) + { + $mdb2 = getConnection(); + + $group_id = (int) $fields['group_id']; + $org_id = (int) $fields['org_id']; + + $name = $fields['name']; + $description = $fields['description']; + $tasks = $fields['tasks']; + $comma_separated = implode(',', $tasks); // This is a comma-separated list of associated task ids. + $status = $fields['status']; + + $sql = "insert into tt_projects (group_id, org_id, name, description, tasks, status) + values ($group_id, $org_id, ".$mdb2->quote($name).", ".$mdb2->quote($description).", ".$mdb2->quote($comma_separated).", ".$mdb2->quote($status).")"; + $affected = $mdb2->exec($sql); + if (is_a($affected, 'PEAR_Error')) + return false; + + $last_id = 0; + $sql = "select last_insert_id() as last_insert_id"; + $res = $mdb2->query($sql); + $val = $res->fetchRow(); + $last_id = $val['last_insert_id']; + + // Insert binds into tt_project_task_binds table. + if (is_array($tasks)) { + foreach ($tasks as $task_id) { + $sql = "insert into tt_project_task_binds (project_id, task_id, group_id, org_id)". + " values($last_id, $task_id, $group_id, $org_id)"; + $affected = $mdb2->exec($sql); + if (is_a($affected, 'PEAR_Error')) + return false; + } + } + + return $last_id; + } }