next step for file upload - buildUploadAccounts partially implemented
This commit is contained in:
parent
8e3e173dac
commit
aa8028235f
|
@ -127,7 +127,6 @@ function get_ldap_filter($scope) {
|
||||||
*/
|
*/
|
||||||
function getModulesDependencies($scope) {
|
function getModulesDependencies($scope) {
|
||||||
$mods = getAvailableModules($scope);
|
$mods = getAvailableModules($scope);
|
||||||
$deps = array();
|
|
||||||
for ($i = 0; $i < sizeof($mods); $i++) {
|
for ($i = 0; $i < sizeof($mods); $i++) {
|
||||||
$module = new $mods[$i]($scope);
|
$module = new $mods[$i]($scope);
|
||||||
$return[$mods[$i]] = $module->get_dependencies();
|
$return[$mods[$i]] = $module->get_dependencies();
|
||||||
|
@ -368,6 +367,73 @@ function getUploadColumns($scope) {
|
||||||
return $_SESSION["profile_account_$scope"]->get_uploadColumns();
|
return $_SESSION["profile_account_$scope"]->get_uploadColumns();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function builds the LDAP accounts for the file upload.
|
||||||
|
*
|
||||||
|
* If there are problems status messages will be printed automatically.
|
||||||
|
*
|
||||||
|
* @param string $scope account type
|
||||||
|
* @param array $data array containing one account in each element
|
||||||
|
* @param array $ids array(<column_name> => <column number>)
|
||||||
|
* @return mixed array including accounts or false if there were errors
|
||||||
|
*/
|
||||||
|
function buildUploadAccounts($scope, $data, $ids) {
|
||||||
|
// build module order
|
||||||
|
$unOrdered = getAvailableModules($scope);
|
||||||
|
$ordered = array();
|
||||||
|
$predepends = array();
|
||||||
|
for ($i = 0; $i < sizeof($unOrdered); $i++) {
|
||||||
|
$mod = new $unOrdered[$i]($scope);
|
||||||
|
$predepends[$unOrdered[$i]] = $mod->get_uploadPreDepends();
|
||||||
|
}
|
||||||
|
// first all modules without predepends can be ordered
|
||||||
|
for ($i = 0; $i < sizeof($unOrdered); $i++) {
|
||||||
|
if (sizeof($predepends[$unOrdered[$i]]) == 0) {
|
||||||
|
$ordered[] = $unOrdered[$i];
|
||||||
|
unset($unOrdered[$i]);
|
||||||
|
$unOrdered = array_values($unOrdered);
|
||||||
|
$i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$unOrdered = array_values($unOrdered); // fix indexes
|
||||||
|
// now add all modules with fulfilled dependencies until all are in order
|
||||||
|
while (sizeof($unOrdered) > 0) {
|
||||||
|
$newRound = false;
|
||||||
|
for ($i = 0; $i < sizeof($unOrdered); $i++) {
|
||||||
|
$deps = $predepends[$unOrdered[$i]];
|
||||||
|
$depends = false;
|
||||||
|
for ($d = 0; $d < sizeof($deps); $d++) {
|
||||||
|
if (in_array($deps[$d], $unOrdered)) {
|
||||||
|
$depends = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$depends) { // add to order if dependencies are fulfilled
|
||||||
|
$ordered[] = $unOrdered[$i];
|
||||||
|
unset($unOrdered[$i]);
|
||||||
|
$unOrdered = array_values($unOrdered);
|
||||||
|
$newRound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($newRound) continue;
|
||||||
|
// this point should never be reached, LAM was unable to find a correct module order
|
||||||
|
StatusMessage("ERROR", _("Internal Error: Unable to find correct module order."), "");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// give raw data to modules
|
||||||
|
$errors = array();
|
||||||
|
$partialAccounts = array();
|
||||||
|
for ($i = 0; $i < sizeof($data); $i++) $partialAccounts[$i]['objectClasses'] = array();
|
||||||
|
for ($i = 0; $i < sizeof($ordered); $i++) {
|
||||||
|
$module = new $ordered[$i]($scope);
|
||||||
|
$errors = $module->build_uploadAccounts($data, $ids, &$partialAccounts);
|
||||||
|
if (sizeof($errors) > 0) break;
|
||||||
|
}
|
||||||
|
print_r($partialAccounts);
|
||||||
|
print_r($errors);
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class includes all modules and attributes of an account.
|
* This class includes all modules and attributes of an account.
|
||||||
|
|
Loading…
Reference in New Issue