diff --git a/lam/session-vars.txt b/lam/session-vars.txt index 9d005fd1..b09d3881 100644 --- a/lam/session-vars.txt +++ b/lam/session-vars.txt @@ -7,19 +7,11 @@ Alle: - lampath: String mit Pfad zum LAM-Verzeichnis -massdetail: -- accounts: Array aus account-Objekten -- errors: Array aus Fehlermeldungen. Index ist gleich Index von accounts - - masscreate: -- accounts: Array aus account-Objekten -- pointer: Zeigt auf den aktuellen Startpunkt, ab dem Benutzer angelegt werden sollen. - Noetig, da mit Meta-Refreshs gearbeitet werden muss -- errors: Array aus Fehlermeldungen. Index ist gleich Index von accounts -- group_suffix: Suffix, unter welchem eine Gruppe bei Bedarf angelegt wird -- group_selectprofile: Profil, mit dem eine Gruppe bei Bedarf angelegt werden soll -- rowstart: ??? nicht mehr benutzt +- mass_accounts: verschlüsseltes, serialisiertes Array mit Accounts +- mass_dn: DN der Accounts +- mass_counter: aktuelle Position im Account-Array +- mass_errors: Fehlermeldungen beim Upload main: diff --git a/lam/templates/massBuildAccounts.php b/lam/templates/massBuildAccounts.php index 53ade98d..c337bfa3 100644 --- a/lam/templates/massBuildAccounts.php +++ b/lam/templates/massBuildAccounts.php @@ -145,11 +145,8 @@ if ($_FILES['inputfile'] && ($_FILES['inputfile']['size'] > 0)) { $accounts[$i]['dn'] = $account_dn; } } - // accounts were built, now add them to LDAP - // TODO add to LDAP } } - print_r($accounts); // if input data is invalid just display error messages (max 50) if (sizeof($errors) > 0) { for ($i = 0; (($i < sizeof($errors)) || ($i > 49)); $i++) StatusMessage("ERROR", $errors[$i][0], $errors[$i][1]); @@ -157,6 +154,8 @@ if ($_FILES['inputfile'] && ($_FILES['inputfile']['size'] > 0)) { else { // store accounts in session $_SESSION['mass_accounts'] = $_SESSION['ldap']->encrypt(serialize($accounts)); + $_SESSION['mass_counter'] = 0; + $_SESSION['mass_errors'] = array(); // show links for upload and LDIF export echo "

" . _("LAM has checked your input and is now ready to create the accounts.") . "

\n"; echo "

 

\n"; diff --git a/lam/templates/massDoUpload.php b/lam/templates/massDoUpload.php new file mode 100644 index 00000000..87a51574 --- /dev/null +++ b/lam/templates/massDoUpload.php @@ -0,0 +1,104 @@ +account upload\n"; +echo "\n"; + +// create accounts +$accounts = unserialize($_SESSION['ldap']->decrypt($_SESSION['mass_accounts'])); +if ($_SESSION['mass_counter'] < sizeof($accounts)) { + $maxTime = get_cfg_var('max_execution_time') - 5; + $refreshTime = get_cfg_var('max_execution_time') + 1; + $startTime = time(); + echo "\n"; + echo "\n\n"; + echo "

" . _("LDAP upload in progress. Please wait.") . "

\n"; + echo "\n"; + echo ""; + echo "\n"; + echo "
  
"; + flush(); // send HTML to browser + while (($_SESSION['mass_counter'] < sizeof($accounts)) && ($startTime + $maxTime > time())) { + // create accounts as long as max_execution_time is not near + $attrs = $accounts[$_SESSION['mass_counter']]; + $dn = $attrs['dn']; + unset($attrs['dn']); + $success = @ldap_add($_SESSION['ldap']->server, $dn, $attrs); + if (!$success) { + $errorMessage = array( + "ERROR", + _("LAM was unable to create account %s! An LDAP error occured."), + ldap_errno($_SESSION[ldap]->server) . ": " . ldap_error($_SESSION[ldap]->server), + array($_SESSION['mass_counter'])); + $_SESSION['mass_errors'][] = $errorMessage; + } + $_SESSION['mass_counter']++; + } + echo ""; +} +// all accounts have been created +else { + echo "\n\n"; + echo "

" . _("LDAP upload has finished") . "

\n"; + if (sizeof($_SESSION['mass_errors']) > 0) { + echo "

" . _("There were errors while uploading:") . "

\n"; + for ($i = 0; $i < sizeof($_SESSION['mass_errors']); $i++) { + call_user_func_array('StatusMessage', $_SESSION['mass_errors'][$i]); + } + } + echo ""; +} + + +?> \ No newline at end of file