X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=WEB-INF%2Flib%2FttImportHelper.class.php;h=ca717caefcd302f74cafb432584e850c26ace91c;hb=5f64df1308fd641565631e6e38d282432f5e6250;hp=b6c7b8b3ae8e9ac1080e74171fa8261c39a277ee;hpb=1ad0313b11df884c04ca0354abcbc18e4b334537;p=timetracker.git diff --git a/WEB-INF/lib/ttImportHelper.class.php b/WEB-INF/lib/ttImportHelper.class.php index b6c7b8b3..ca717cae 100644 --- a/WEB-INF/lib/ttImportHelper.class.php +++ b/WEB-INF/lib/ttImportHelper.class.php @@ -48,10 +48,13 @@ class ttImportHelper { var $canImport = true; // False if we cannot import data due to a login collision. var $teamData = array(); // Array of team data such as team name, etc. var $team_id = null; // New team 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. + var $top_role_id = null; // Top manager role id on the new server. // The following arrays are maps between entity ids in the file versus the database. // In the file they are sequential (1,2,3...) while in the database the entities have different ids. + var $roleMap = array(); // Role ids. var $userMap = array(); // User ids. var $projectMap = array(); // Project ids. var $taskMap = array(); // Task ids. @@ -101,6 +104,10 @@ class ttImportHelper { // Cannot create the team here. Need to determine whether logins collide with existing logins. $this->currentElement = array(); } + if ($name == 'ROLE') { + $this->roles[$this->currentElement['ID']] = $this->currentElement; + $this->currentElement = array(); + } if ($name == 'USER') { $this->users[$this->currentElement['ID']] = $this->currentElement; $this->currentElement = array(); @@ -116,6 +123,7 @@ class ttImportHelper { // Now we can create a team. if ($this->canImport) { + $this->top_role_id = ttRoleHelper::getRoleByRank(512, 0); $team_id = ttTeamHelper::insert(array( 'name' => $this->teamData['NAME'], 'currency' => $this->teamData['CURRENCY'], @@ -135,10 +143,23 @@ class ttImportHelper { 'config' => $this->teamData['CONFIG'])); if ($team_id) { $this->team_id = $team_id; + + // Create roles. + foreach ($this->roles as $key=>$role_item) { + $role_id = ttRoleHelper::insert(array( + 'team_id' => $this->team_id, + 'name' => $role_item['NAME'], + 'rank' => $role_item['RANK'], + 'rights' => $role_item['RIGHTS'], + 'status' => $role_item['STATUS'])); + $this->roleMap[$role_item['ID']] = $role_id; + } + foreach ($this->users as $key=>$user_item) { + $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( 'team_id' => $this->team_id, - 'role' => $user_item['ROLE'], + 'role_id' => $role_id, 'client_id' => $user_item['CLIENT_ID'], // Note: NOT mapped value, replaced in CLIENT handler. 'name' => $user_item['NAME'], 'login' => $user_item['LOGIN'], @@ -224,7 +245,6 @@ class ttImportHelper { if ($name == 'LOG_ITEM' && $this->canImport) { $this->logMap[$this->currentElement['ID']] = ttTimeHelper::insert(array( - 'timestamp' => $this->currentElement['TIMESTAMP'], 'user_id' => $this->userMap[$this->currentElement['USER_ID']], 'date' => $this->currentElement['DATE'], 'start' => $this->currentElement['START'], @@ -301,6 +321,7 @@ class ttImportHelper { 'chclient' => (int) $this->currentElement['SHOW_CLIENT'], 'chinvoice' => (int) $this->currentElement['SHOW_INVOICE'], 'chpaid' => (int) $this->currentElement['SHOW_PAID'], + 'chip' => (int) $this->currentElement['SHOW_IP'], 'chproject' => (int) $this->currentElement['SHOW_PROJECT'], 'chstart' => (int) $this->currentElement['SHOW_START'], 'chduration' => (int) $this->currentElement['SHOW_DURATION'], @@ -312,15 +333,6 @@ class ttImportHelper { 'group_by' => $this->currentElement['GROUP_BY'], 'chtotalsonly' => (int) $this->currentElement['SHOW_TOTALS_ONLY'])); } - - if ($name == 'ROLE' && $this->canImport) { - ttRoleHelper::insert(array( - 'team_id' => $this->team_id, - 'name' => $this->currentElement['NAME'], - 'rank' => $this->currentElement['RANK'], - 'rights' => $this->currentElement['RIGHTS'], - 'status' => $this->currentElement['STATUS'])); - } $this->currentTag = ''; } @@ -359,13 +371,13 @@ class ttImportHelper { // If the file is compressed - uncompress it. if ($compressed) { if (!$this->uncompress($_FILES['xmlfile']['tmp_name'], $filename)) { - $this->errors->add($i18n->getKey('error.sys')); + $this->errors->add($i18n->get('error.sys')); return; } unlink($_FILES['xmlfile']['tmp_name']); } else { if (!move_uploaded_file($_FILES['xmlfile']['tmp_name'], $filename)) { - $this->errors->add($i18n->getKey('error.upload')); + $this->errors->add($i18n->get('error.upload')); return; } } @@ -385,7 +397,7 @@ class ttImportHelper { xml_get_current_line_number($parser))); } if (!$this->canImport) { - $this->errors->add($i18n->getKey('error.user_exists')); + $this->errors->add($i18n->get('error.user_exists')); break; } }