diff --git a/utils/xmlimport.php b/utils/xmlimport.php index 98b05c01d..510284121 100644 --- a/utils/xmlimport.php +++ b/utils/xmlimport.php @@ -1,5 +1,6 @@ err("Could not add role"); return false; } + if($aro = SeedDMS_Aro::getInstance($newRole, $dms)) { + $logger->info("Added aro"); + if($role['acos']) { + $acl = new SeedDMS_Acl($dms); + foreach($role['acos'] as $alias=>$perm) { + if($aco = SeedDMS_Aco::getInstance($alias, $dms)) { + $logger->info("Added aco with alias '".$alias."'"); + if(isset($perm['attributes']['permission'])) { + if($acl->add($aro, $aco, $perm['attributes']['permission'])) { + } + } + } else { + $logger->err("Could not add Aco"); + return false; + } + } + } + } else { + $logger->err("Could not add Aro"); + return false; + } } else { $newRole = null; } @@ -1022,7 +1044,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, $cur_role; + 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, $cur_acopath, $cur_acos; $parent = end($elementstack); array_push($elementstack, array('name'=>$name, 'attributes'=>$attrs)); @@ -1094,12 +1116,19 @@ function startElement($parser, $name, $attrs) { /* {{{ */ $cur_transition['groups'][] = (int) $attrs['ID']; } break; + case "ACO": + array_push($cur_acopath, $attrs['ALIAS']); + $cur_acos[implode('/', $cur_acopath)] = array(); + break; case "ROLE": $first = $elementstack[1]; if($first['name'] == 'ROLES') { $cur_role = array(); $cur_role['id'] = (int) $attrs['ID']; $cur_role['attributes'] = array(); + $cur_role['acos'] = array(); + $cur_acopath = array(); + $cur_acos = array(); } break; case "TRANSMITTAL": @@ -1212,6 +1241,8 @@ function startElement($parser, $name, $attrs) { /* {{{ */ $cur_group['attributes'][$attrs['NAME']] = ''; } elseif($parent['name'] == 'ROLE') { $cur_role['attributes'][$attrs['NAME']] = ''; + } elseif($parent['name'] == 'ACO') { + $cur_acos[implode('/', $cur_acopath)]['attributes'][$attrs['NAME']] = ''; } elseif($parent['name'] == 'KEYWORD') { $cur_keyword['attributes'][$attrs['NAME']] = ''; } elseif($parent['name'] == 'ATTRIBUTEDEFINITION') { @@ -1390,7 +1421,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, $cur_role; + 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, $cur_acopath, $cur_acos; array_pop($elementstack); $parent = end($elementstack); @@ -1439,7 +1470,11 @@ function endElement($parser, $name) { /* {{{ */ insert_group($cur_group); } break; + case 'ACO': + array_pop($cur_acopath); + break; case 'ROLE': + $cur_role['acos'] = $cur_acos; insert_role($cur_role); break; case 'ATTRIBUTEDEFINITION': @@ -1526,7 +1561,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, $cur_role; + 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, $cur_acopath, $cur_acos; $current = end($elementstack); $parent = prev($elementstack); @@ -1620,6 +1655,12 @@ function characterData($parser, $data) { /* {{{ */ else $cur_role['attributes'][$current['attributes']['NAME']] = $data; break; + case 'ACO': + if(isset($cur_acos[implode('/', $cur_acopath)]['attributes'][$current['attributes']['NAME']])) + $cur_acos[implode('/', $cur_acopath)]['attributes'][$current['attributes']['NAME']] .= $data; + else + $cur_acos[implode('/', $cur_acopath)]['attributes'][$current['attributes']['NAME']] = $data; + break; case 'ATTRIBUTEDEFINITION': if(isset($cur_attrdef['attributes'][$current['attributes']['NAME']])) $cur_attrdef['attributes'][$current['attributes']['NAME']] .= $data; @@ -1833,6 +1874,7 @@ if($defaultuserid) { $defaultUser = null; } +$users = array(); $elementstack = array(); $objmap = array( 'attributedefs' => array(),