X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/15ae2165165da813912300d223c50b74f44cc1e0..bf2399f1315130312cc513cdd4efbcffaeb617d0:/WEB-INF/lib/ttOrgImportHelper.class.php diff --git a/WEB-INF/lib/ttOrgImportHelper.class.php b/WEB-INF/lib/ttOrgImportHelper.class.php index b22c4fe3..015579c0 100644 --- a/WEB-INF/lib/ttOrgImportHelper.class.php +++ b/WEB-INF/lib/ttOrgImportHelper.class.php @@ -27,22 +27,22 @@ // +----------------------------------------------------------------------+ import('ttUserHelper'); +import('ttRoleHelper'); // ttOrgImportHelper - this class is a future replacement for ttImportHelper. // Currently, it is work in progress. // When done, it should handle import of complex groups consisting of other groups. class ttOrgImportHelper { - var $errors = null; // Errors go here. Set in constructor by reference. - var $cannotImport = null; // A comma-separated string of entity names that we cannot import. - // TODO: rename the above to something better. - - var $canImport = true; // False if we cannot import data due to a login collision. + var $errors = null; // Errors go here. Set in constructor by reference. + var $conflicting_entities = null; // A comma-separated list of entity names we cannot import. + var $canImport = true; // False if we cannot import data due to a conflict such as login collision. var $firstPass = true; // True during first pass through the file. var $org_id = null; // Organization id (same as top group_id). - var $current_parent_group_id = null; // Current parent group id as we parse the file. + var $current_group_id = null; // Current group id during parsing. + var $current_parent_group_id = null; // Current parent group id during parsing. // Set when we create a new group. - // Entities for current group. - var $currentGroupRoles = array(); // Array of arrays of role properties. + // Entities for current group. -- Looks like they are not needed as we insert right away... + // var $currentGroupRoles = array(); // Array of arrays of role properties. // var $currentGroupUsers = array(); // Array of arrays of user properties. // Entity maps for current group. They map XML ids with database ids. @@ -67,7 +67,7 @@ class ttOrgImportHelper { $login = $attrs['LOGIN']; if ('' != $attrs['STATUS'] && ttUserHelper::getUserByLogin($login)) { // We have a login collision. Append colliding login to a list of things we cannot import. - $this->cannotImport .= ($this->cannotImport ? ", $login" : $login); + $this->conflicting_entities .= ($this->conflicting_entities ? ", $login" : $login); } } } @@ -79,7 +79,7 @@ class ttOrgImportHelper { // We are in second pass and can import data. if ($name == 'GROUP') { // Create a new group. - $group_id = $this->createGroup(array( + $this->current_group_id = $this->createGroup(array( 'parent_id' => $this->current_parent_group_id, 'org_id' => $this->org_id, 'name' => $attrs['NAME'], @@ -89,13 +89,13 @@ class ttOrgImportHelper { // Special handling for top group. if (!$this->org_id) { - $this->org_id = $group_id; - $sql = "update tt_groups set org_id = $group_id where org_id is NULL and id = $group_id"; + $this->org_id = $this->current_group_id; + $sql = "update tt_groups set org_id = $this->current_group_id where org_id is NULL and id = $this->current_group_id"; $affected = $mdb2->exec($sql); // TODO: design a better error handling approach for the entire import process. } // Set current parent group. - $this->current_parent_group_id = $group_id; + $this->current_parent_group_id = $this->current_group_id; } if ($name == 'ROLES') { @@ -110,8 +110,16 @@ class ttOrgImportHelper { if ($name == 'ROLE') { // We get here when processing a tag for the current group. - // Add new role to $this->currentGroupRoles and a mapping to $this->currentGroupRoleMap. - $this->currentGroupRoles[$attrs['ID']] = $attrs; + $role_id = ttRoleHelper::insert(array( + 'group_id' => $this->current_group_id, + 'org_id' => $this->org_id, + 'name' => $attrs['NAME'], + 'description' => $attrs['DESCRIPTION'], + 'rank' => $attrs['RANK'], + 'rights' => $attrs['RIGHTS'], + 'status' => $attrs['STATUS'])); + // Add a mapping. + $this->currentGroupRoleMap[$attrs['ID']] = $role_id; } } } @@ -168,10 +176,10 @@ class ttOrgImportHelper { xml_get_current_line_number($parser))); } } - if ($this->cannotImport) { + if ($this->conflicting_entities) { $this->canImport = false; $this->errors->add($i18n->get('error.user_exists')); - $this->errors->add(sprintf($i18n->get('error.cannot_import'), $this->cannotImport)); + $this->errors->add(sprintf($i18n->get('error.cannot_import'), $this->conflicting_entities)); } $this->firstPass = false; // We are done with 1st pass.