insert acos and aros

This commit is contained in:
Uwe Steinmann 2016-09-22 08:48:28 +02:00
parent 159aa09636
commit df63e1bb7e

View File

@ -1,5 +1,6 @@
<?php <?php
require_once("../inc/inc.ClassSettings.php"); require_once("../inc/inc.ClassSettings.php");
require_once("../inc/inc.ClassAcl.php");
require("Log.php"); require("Log.php");
function usage() { /* {{{ */ function usage() { /* {{{ */
@ -229,6 +230,27 @@ function insert_role($role) { /* {{{ */
$logger->err("Could not add role"); $logger->err("Could not add role");
return false; 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 { } else {
$newRole = null; $newRole = null;
} }
@ -1022,7 +1044,7 @@ function set_mandatory() { /* {{{ */
} /* }}} */ } /* }}} */
function startElement($parser, $name, $attrs) { /* {{{ */ 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); $parent = end($elementstack);
array_push($elementstack, array('name'=>$name, 'attributes'=>$attrs)); array_push($elementstack, array('name'=>$name, 'attributes'=>$attrs));
@ -1094,12 +1116,19 @@ function startElement($parser, $name, $attrs) { /* {{{ */
$cur_transition['groups'][] = (int) $attrs['ID']; $cur_transition['groups'][] = (int) $attrs['ID'];
} }
break; break;
case "ACO":
array_push($cur_acopath, $attrs['ALIAS']);
$cur_acos[implode('/', $cur_acopath)] = array();
break;
case "ROLE": case "ROLE":
$first = $elementstack[1]; $first = $elementstack[1];
if($first['name'] == 'ROLES') { if($first['name'] == 'ROLES') {
$cur_role = array(); $cur_role = array();
$cur_role['id'] = (int) $attrs['ID']; $cur_role['id'] = (int) $attrs['ID'];
$cur_role['attributes'] = array(); $cur_role['attributes'] = array();
$cur_role['acos'] = array();
$cur_acopath = array();
$cur_acos = array();
} }
break; break;
case "TRANSMITTAL": case "TRANSMITTAL":
@ -1212,6 +1241,8 @@ function startElement($parser, $name, $attrs) { /* {{{ */
$cur_group['attributes'][$attrs['NAME']] = ''; $cur_group['attributes'][$attrs['NAME']] = '';
} elseif($parent['name'] == 'ROLE') { } elseif($parent['name'] == 'ROLE') {
$cur_role['attributes'][$attrs['NAME']] = ''; $cur_role['attributes'][$attrs['NAME']] = '';
} elseif($parent['name'] == 'ACO') {
$cur_acos[implode('/', $cur_acopath)]['attributes'][$attrs['NAME']] = '';
} elseif($parent['name'] == 'KEYWORD') { } elseif($parent['name'] == 'KEYWORD') {
$cur_keyword['attributes'][$attrs['NAME']] = ''; $cur_keyword['attributes'][$attrs['NAME']] = '';
} elseif($parent['name'] == 'ATTRIBUTEDEFINITION') { } elseif($parent['name'] == 'ATTRIBUTEDEFINITION') {
@ -1390,7 +1421,7 @@ function startElement($parser, $name, $attrs) { /* {{{ */
} /* }}} */ } /* }}} */
function endElement($parser, $name) { /* {{{ */ 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); array_pop($elementstack);
$parent = end($elementstack); $parent = end($elementstack);
@ -1439,7 +1470,11 @@ function endElement($parser, $name) { /* {{{ */
insert_group($cur_group); insert_group($cur_group);
} }
break; break;
case 'ACO':
array_pop($cur_acopath);
break;
case 'ROLE': case 'ROLE':
$cur_role['acos'] = $cur_acos;
insert_role($cur_role); insert_role($cur_role);
break; break;
case 'ATTRIBUTEDEFINITION': case 'ATTRIBUTEDEFINITION':
@ -1526,7 +1561,7 @@ function endElement($parser, $name) { /* {{{ */
} /* }}} */ } /* }}} */
function characterData($parser, $data) { /* {{{ */ 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); $current = end($elementstack);
$parent = prev($elementstack); $parent = prev($elementstack);
@ -1620,6 +1655,12 @@ function characterData($parser, $data) { /* {{{ */
else else
$cur_role['attributes'][$current['attributes']['NAME']] = $data; $cur_role['attributes'][$current['attributes']['NAME']] = $data;
break; 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': case 'ATTRIBUTEDEFINITION':
if(isset($cur_attrdef['attributes'][$current['attributes']['NAME']])) if(isset($cur_attrdef['attributes'][$current['attributes']['NAME']]))
$cur_attrdef['attributes'][$current['attributes']['NAME']] .= $data; $cur_attrdef['attributes'][$current['attributes']['NAME']] .= $data;
@ -1833,6 +1874,7 @@ if($defaultuserid) {
$defaultUser = null; $defaultUser = null;
} }
$users = array();
$elementstack = array(); $elementstack = array();
$objmap = array( $objmap = array(
'attributedefs' => array(), 'attributedefs' => array(),