Account selection (masscreate.php)
This is the initial page of the file upload. The user selects the
account type for the new upload.
Attribute overview (masscreate.php)
After the account selection LAM will display an overview of the
possible and required input columns.
The DN attributes (DN suffix and RDN) are static and are always
displayed. The default suffix is read from config with getAccountSuffix() and the list of
RDN possibilities is taken from modules.inc - getRDNAttributes().
The next attributes are read from modules.inc - getUploadColumns(). LAM will display
all attributes of one module in a separate fieldset. The getUploadColumns() function also
returns if an attribute is required and additional information like an
example value.
After clicking the upload button the user will be forwarded to the
account building page.
Account building (massBuildAccounts.php)
This part takes the submitted CSV file
and generates the LDAP accounts.
The scripts separates the head row from the data rows in the CSV file.
The head array is used to find the position of the input values. The
data array contains one subarray for each account.
After the data has been extracted there are some basic checks done,
e.g. checking required and unique columns. The modules provide the
necessary information for this.
Then all data is given to the modules with buildUploadAccounts() in
modules.inc. They return a list of accounts which can be uploaded with ldap-add() and generate possible
error messages.
If the accounts are built the script will give the user the possibility
to check the result with an LDIF-file
or to do the upload.
LDIF export (massBuildAccounts.php)
LAM simply takes the built accounts and generates an LDIF-file from them. This is passed
to the user's browser.
The LDIF-file will only
contain the accounts itself. If modules do additional tasks after the
upload (e.g. adding users to groups) this will not be covered.
Account creation (massDoUpload.php)
This script finally uploads the LDAP accounts with ldap_add().
The upload can last longer than the maximum execution time of PHP.
Therefore the script will check regularly how much time is left and
pause the upload. This is resumed with a meta refresh which loads the
script again.
After all accounts were created in LDAP the modules may do additional
tasks. LAM will call doUploadPostActions()
and also provide a list of failed accounts which can be ignored. The
function is called as long the returned status is "inProgress". The script uses again
a
meta refresh to handle the maximum execution time.
Typical post actions are setting quotas or adding an user to groups.
A progress bar is shown for the LDAP adding and the module actions to
give the user a hint how long it will still take.