X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FttImportHelper.class.php;h=42c7102be6a46f0f9fd3a2f2d71cd9af26c852a8;hb=ee95ed0e72258b76ed0280f04d6846d802aefa12;hp=7b68ba7ce881f6f534b45647f415f6aa87cce7c3;hpb=7b81d0e15ca73f1ee3558f4b042c513933d8735a;p=timetracker.git diff --git a/WEB-INF/lib/ttImportHelper.class.php b/WEB-INF/lib/ttImportHelper.class.php index 7b68ba7c..42c7102b 100644 --- a/WEB-INF/lib/ttImportHelper.class.php +++ b/WEB-INF/lib/ttImportHelper.class.php @@ -47,6 +47,7 @@ class ttImportHelper { var $canImport = true; // False if we cannot import data due to a login collision. var $groupData = array(); // Array of group data such as group name, etc. + var $org_id = null; // New organization id we are importing. It is created during the import operation. var $group_id = null; // New group id we are importing. It is created during the import operation. var $roles = array(); // Array of arrays of role properties. var $users = array(); // Array of arrays of user properties. @@ -66,7 +67,7 @@ class ttImportHelper { var $logMap = array(); // Time log ids. // Constructor. - function ttImportHelper(&$errors) { + function __construct(&$errors) { $this->errors = &$errors; } @@ -144,6 +145,7 @@ class ttImportHelper { 'workday_minutes' => $this->groupData['WORKDAY_MINUTES'], 'config' => $this->groupData['CONFIG'])); if ($group_id) { + $this->org_id = $group_id; $this->group_id = $group_id; // Create roles. @@ -161,6 +163,7 @@ class ttImportHelper { $role_id = $user_item['ROLE_ID'] === '0' ? $this->top_role_id : $this->roleMap[$user_item['ROLE_ID']]; // 0 (not null) means top manager role. $user_id = ttUserHelper::insert(array( 'group_id' => $this->group_id, + 'org_id' => $this->org_id, 'role_id' => $role_id, 'client_id' => $user_item['CLIENT_ID'], // Note: NOT mapped value, replaced in CLIENT handler. 'name' => $user_item['NAME'], @@ -248,6 +251,7 @@ class ttImportHelper { $this->logMap[$this->currentElement['ID']] = ttTimeHelper::insert(array( 'user_id' => $this->userMap[$this->currentElement['USER_ID']], + 'group_id' => $this->group_id, 'date' => $this->currentElement['DATE'], 'start' => $this->currentElement['START'], 'finish' => $this->currentElement['FINISH'], @@ -292,6 +296,7 @@ class ttImportHelper { ttExpenseHelper::insert(array( 'date' => $this->currentElement['DATE'], 'user_id' => $this->userMap[$this->currentElement['USER_ID']], + 'group_id' => $this->group_id, 'client_id' => $this->clientMap[$this->currentElement['CLIENT_ID']], 'project_id' => $this->projectMap[$this->currentElement['PROJECT_ID']], 'name' => $this->currentElement['NAME'], @@ -333,7 +338,9 @@ class ttImportHelper { 'chnote' => (int) $this->currentElement['SHOW_NOTE'], 'chcf_1' => (int) $this->currentElement['SHOW_CUSTOM_FIELD_1'], 'chunits' => (int) $this->currentElement['SHOW_WORK_UNITS'], - 'group_by' => $this->currentElement['GROUP_BY'], + 'group_by1' => $this->currentElement['GROUP_BY1'], + 'group_by2' => $this->currentElement['GROUP_BY2'], + 'group_by3' => $this->currentElement['GROUP_BY3'], 'chtotalsonly' => (int) $this->currentElement['SHOW_TOTALS_ONLY'])); } $this->currentTag = ''; @@ -470,11 +477,18 @@ class ttImportHelper { $sql = 'insert into tt_groups '.$columns.$values; $affected = $mdb2->exec($sql); - if (!is_a($affected, 'PEAR_Error')) { - $group_id = $mdb2->lastInsertID('tt_groups', 'id'); - return $group_id; - } - return false; + if (is_a($affected, 'PEAR_Error')) return false; + + $group_id = $mdb2->lastInsertID('tt_groups', 'id'); + + // Update org_id with group_id. + // NOTE: Both export and import need an additional effort to properly operate on subgroups. + // Currently we are importing one group only, which becomes a top level group. + $sql = "update tt_groups set org_id = $group_id where org_id is NULL and id = $group_id"; + $affected = $mdb2->exec($sql); + if (is_a($affected, 'PEAR_Error')) return false; + + return $group_id; } // insertMonthlyQuota - a helper function to insert a monthly quota.