X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FttImportHelper.class.php;h=e732b9890ba47d754834ea2298e1a880b937dc19;hb=0fdda830ba3e780c365c90e1fdfd5cfa7ed77244;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..e732b989 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,13 +145,16 @@ 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. foreach ($this->roles as $key=>$role_item) { $role_id = ttRoleHelper::insert(array( 'group_id' => $this->group_id, + 'org_id' => $this->org_id, 'name' => $role_item['NAME'], + 'description' => $role_item['DESCRIPTION'], 'rank' => $role_item['RANK'], 'rights' => $role_item['RIGHTS'], 'status' => $role_item['STATUS'])); @@ -161,6 +165,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'], @@ -217,6 +222,7 @@ class ttImportHelper { $this->clientMap[$this->currentElement['ID']] = ttClientHelper::insert(array( 'group_id' => $this->group_id, + 'org_id' => $this->org_id, 'name' => $this->currentElement['NAME'], 'address' => $this->currentElement['ADDRESS'], 'tax' => $this->currentElement['TAX'], @@ -248,6 +254,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 +299,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 +341,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 +480,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.