import roles

This commit is contained in:
Uwe Steinmann 2016-09-15 21:40:38 +02:00
parent 6ba36e2cae
commit 42ac18d962

View File

@ -72,6 +72,15 @@ function insert_user($user) { /* {{{ */
if($debug) print_r($user);
$roleobj = null;
if(isset($user['attributes']['role']) && $user['attributes']['role']) {
if(array_key_exists($user['attributes']['role'], $objmap['roles'])) {
if(!$roleobj = $dms->getRole($objmap['roles'][$user['attributes']['role']])) {
$logger->warn("Role ".$user['attributes']['role']." cannot be found");
}
}
}
if ($newUser = $dms->getUserByLogin($user['attributes']['login'])) {
$logger->info("User '".$user['attributes']['login']."' already exists");
} else {
@ -84,7 +93,7 @@ function insert_user($user) { /* {{{ */
$user['attributes']['language'],
$user['attributes']['theme'],
$user['attributes']['comment'],
$user['attributes']['role'],
$roleobj,
$user['attributes']['hidden'],
$user['attributes']['disabled'],
$user['attributes']['pwdexpiration']);
@ -111,14 +120,14 @@ function insert_user($user) { /* {{{ */
} /* }}} */
function set_homefolders() { /* {{{ */
global $dms, $debug, $defaultUser, $users, $objmap;
global $logger, $dms, $debug, $defaultUser, $users, $objmap;
foreach($users as $user) {
if(isset($user['attributes']['homefolder']) && $user['attributes']['homefolder']) {
if(array_key_exists($user['id'], $objmap['users'])) {
$userobj = $dms->getUser($objmap['users'][$user['id']]);
if(!array_key_exists((int) $user['attributes']['homefolder'], $objmap['folders'])) {
echo "Warning: homefolder ".$user['attributes']['homefolder']." cannot be found\n";
$logger->warning("Homefolder ".$user['attributes']['homefolder']." cannot be found");
} else {
$userobj->setHomeFolder($objmap['folders'][(int) $user['attributes']['homefolder']]);
}
@ -172,6 +181,34 @@ function insert_group($group) { /* {{{ */
return $newGroup;
} /* }}} */
function insert_role($role) { /* {{{ */
global $logger, $dms, $debug, $objmap, $sections, $users;
if($debug) print_r($role);
if ($newRole = $dms->getRoleByName($role['attributes']['name'])) {
$logger->info("Role already exists");
} else {
if(in_array('roles', $sections)) {
$newRole = $dms->addRole($role['attributes']['name'], $role['attributes']['role']);
if($newRole) {
$logger->info("Added role '".$role['attributes']['name']."'");
if(!empty($role['attributes']['noaccess'])) {
$newRole->setNoAccess(explode(',', $role['attributes']['noaccess']));
}
} else {
$logger->err("Could not add role");
return false;
}
} else {
$newRole = null;
}
}
if($newRole)
$objmap['roles'][$role['id']] = $newRole->getID();
return $newRole;
} /* }}} */
function insert_attributedefinition($attrdef) { /* {{{ */
global $logger, $dms, $debug, $objmap, $sections;
@ -277,6 +314,8 @@ function insert_workflow($workflow) { /* {{{ */
} else {
$logger->info("Added workflow '".$workflow['attributes']['name']."'");
}
if(!empty($workflow['layoutdata']))
$newWorkflow->setLayoutData($workflow['layoutdata']);
if($workflow['transitions']) {
foreach($workflow['transitions'] as $transition) {
if(!$state = $dms->getWorkflowState($objmap['workflowstates'][(int) $transition['attributes']['startstate']])) {
@ -853,33 +892,33 @@ function insert_folder($folder) { /* {{{ */
} /* }}} */
function insert_transmittal($transmittal) { /* {{{ */
global $dms, $debug, $objmap, $sections;
global $logger, $dms, $debug, $objmap, $sections;
if(1||$debug) print_r($transmittal);
if($debug) print_r($transmittal);
if(!array_key_exists((int) $transmittal['attributes']['owner'], $objmap['users'])) {
echo "Error: owner of transmittal cannot be found\n";
$logger->err( "Owner of transmittal cannot be found");
return false;
}
$owner = $dms->getUser($objmap['users'][(int) $transmittal['attributes']['owner']]);
if(in_array('transmittals', $sections)) {
if(!$newTransmittal = $dms->addTransmittal($transmittal['attributes']['name'], $transmittal['attributes']['comment'], $owner)) {
echo "Error: could not add transmittal\n";
$logger->err("Could not add transmittal");
return false;
}
foreach($transmittal['items'] as $item) {
if(!array_key_exists((int) $item['attributes']['document'], $objmap['documents'])) {
echo "Warning: document mapping of transmittal item cannot be found\n";
$logger->warning("Document mapping of transmittal item cannot be found");
} else {
if($document = $dms->getDocument($objmap['documents'][(int) $item['attributes']['document']])) {
if($content = $document->getContentByVersion((int) $item['attributes']['version'])) {
$newTransmittal->addContent($content);
} else {
echo "Warning: document version of transmittal item cannot be found\n";
$logger->warning("Document version of transmittal item cannot be found");
}
} else {
echo "Warning: document of transmittal item cannot be found\n";
$logger->warning("Document of transmittal item cannot be found");
}
}
}
@ -972,7 +1011,7 @@ function set_mandatory() { /* {{{ */
} /* }}} */
function startElement($parser, $name, $attrs) { /* {{{ */
global $logger, $dms, $noversioncheck, $elementstack, $objmap, $cur_user, $cur_group, $cur_folder, $cur_document, $cur_version, $cur_statuslog, $cur_workflowlog, $cur_approval, $cur_approvallog, $cur_review, $cur_reviewlog, $cur_attrdef, $cur_documentcat, $cur_keyword, $cur_keywordcat, $cur_file, $cur_link, $cur_workflow, $cur_workflowtransition, $cur_workflowaction, $cur_workflowstate, $cur_transition, $cur_transmittal, $cur_transmittalitem;
global $logger, $dms, $noversioncheck, $elementstack, $objmap, $cur_user, $cur_group, $cur_folder, $cur_document, $cur_version, $cur_statuslog, $cur_workflowlog, $cur_approval, $cur_approvallog, $cur_review, $cur_reviewlog, $cur_attrdef, $cur_documentcat, $cur_keyword, $cur_keywordcat, $cur_file, $cur_link, $cur_workflow, $cur_workflowtransition, $cur_workflowaction, $cur_workflowstate, $cur_transition, $cur_transmittal, $cur_transmittalitem, $cur_role;
$parent = end($elementstack);
array_push($elementstack, array('name'=>$name, 'attributes'=>$attrs));
@ -1044,6 +1083,14 @@ function startElement($parser, $name, $attrs) { /* {{{ */
$cur_transition['groups'][] = (int) $attrs['ID'];
}
break;
case "ROLE":
$first = $elementstack[1];
if($first['name'] == 'ROLES') {
$cur_role = array();
$cur_role['id'] = (int) $attrs['ID'];
$cur_role['attributes'] = array();
}
break;
case "TRANSMITTAL":
$cur_transmittal = array();
$cur_transmittal['id'] = (int) $attrs['ID'];
@ -1152,6 +1199,8 @@ function startElement($parser, $name, $attrs) { /* {{{ */
$cur_user['attributes'][$attrs['NAME']] = '';
} elseif($parent['name'] == 'GROUP') {
$cur_group['attributes'][$attrs['NAME']] = '';
} elseif($parent['name'] == 'ROLE') {
$cur_role['attributes'][$attrs['NAME']] = '';
} elseif($parent['name'] == 'KEYWORD') {
$cur_keyword['attributes'][$attrs['NAME']] = '';
} elseif($parent['name'] == 'ATTRIBUTEDEFINITION') {
@ -1330,7 +1379,7 @@ function startElement($parser, $name, $attrs) { /* {{{ */
} /* }}} */
function endElement($parser, $name) { /* {{{ */
global $logger, $dms, $sections, $rootfolder, $objmap, $elementstack, $users, $groups, $links,$cur_user, $cur_group, $cur_folder, $cur_document, $cur_version, $cur_statuslog, $cur_approval, $cur_approvallog, $cur_review, $cur_reviewlog, $cur_attrdef, $cur_documentcat, $cur_keyword, $cur_keywordcat, $cur_file, $cur_link, $cur_workflow, $cur_workflowlog, $cur_workflowtransition, $cur_workflowaction, $cur_workflowstate, $cur_transition, $cur_transmittal, $cur_transmittalitem;
global $logger, $dms, $sections, $rootfolder, $objmap, $elementstack, $users, $groups, $links,$cur_user, $cur_group, $cur_folder, $cur_document, $cur_version, $cur_statuslog, $cur_approval, $cur_approvallog, $cur_review, $cur_reviewlog, $cur_attrdef, $cur_documentcat, $cur_keyword, $cur_keywordcat, $cur_file, $cur_link, $cur_workflow, $cur_workflowlog, $cur_workflowtransition, $cur_workflowaction, $cur_workflowstate, $cur_transition, $cur_transmittal, $cur_transmittalitem, $cur_role;
array_pop($elementstack);
$parent = end($elementstack);
@ -1379,6 +1428,9 @@ function endElement($parser, $name) { /* {{{ */
insert_group($cur_group);
}
break;
case 'ROLE':
insert_role($cur_role);
break;
case 'ATTRIBUTEDEFINITION':
insert_attributedefinition($cur_attrdef);
break;
@ -1463,7 +1515,7 @@ function endElement($parser, $name) { /* {{{ */
} /* }}} */
function characterData($parser, $data) { /* {{{ */
global $elementstack, $objmap, $cur_user, $cur_group, $cur_folder, $cur_document, $cur_version, $cur_statuslog, $cur_approval, $cur_approvallog, $cur_review, $cur_reviewlog, $cur_attrdef, $cur_documentcat, $cur_keyword, $cur_keywordcat, $cur_file, $cur_link, $cur_workflow, $cur_workflowlog, $cur_workflowtransition, $cur_workflowaction, $cur_workflowstate, $cur_transition, $cur_transmittal, $cur_transmittalitem;
global $elementstack, $objmap, $cur_user, $cur_group, $cur_folder, $cur_document, $cur_version, $cur_statuslog, $cur_approval, $cur_approvallog, $cur_review, $cur_reviewlog, $cur_attrdef, $cur_documentcat, $cur_keyword, $cur_keywordcat, $cur_file, $cur_link, $cur_workflow, $cur_workflowlog, $cur_workflowtransition, $cur_workflowaction, $cur_workflowstate, $cur_transition, $cur_transmittal, $cur_transmittalitem, $cur_role;
$current = end($elementstack);
$parent = prev($elementstack);
@ -1551,6 +1603,12 @@ function characterData($parser, $data) { /* {{{ */
else
$cur_group['attributes'][$current['attributes']['NAME']] = $data;
break;
case 'ROLE':
if(isset($cur_role['attributes'][$current['attributes']['NAME']]))
$cur_role['attributes'][$current['attributes']['NAME']] .= $data;
else
$cur_role['attributes'][$current['attributes']['NAME']] = $data;
break;
case 'ATTRIBUTEDEFINITION':
if(isset($cur_attrdef['attributes'][$current['attributes']['NAME']]))
$cur_attrdef['attributes'][$current['attributes']['NAME']] .= $data;
@ -1730,7 +1788,7 @@ if(isset($options['no-version-check'])) {
$noversioncheck = true;
}
$sections = array('documents', 'folders', 'groups', 'users', 'keywordcategories', 'documentcategories', 'attributedefinitions', 'workflows', 'transmittals');
$sections = array('documents', 'folders', 'groups', 'users', 'roles', 'keywordcategories', 'documentcategories', 'attributedefinitions', 'workflows', 'transmittals');
if(isset($options['sections'])) {
$sections = explode(',', $options['sections']);
}
@ -1799,6 +1857,7 @@ set_mandatory();
set_homefolders();
print_r($objmap);
if($exportmapping) {
if($fp = fopen($exportmapping, 'w')) {
fputcsv($fp, array('object type', 'old id', 'new id'));