# Account lists

The account lists are all built after the same schema. They provide a list of found accounts which can be restricted by LDAP filters and the LDAP OU (Organizational Unit).
The list of LDAP attributes and thus table columns is taken from the configuration profile (get_...listAttributes() in config.inc). Each account list has a separate list of attributes.
Only these attributes are given the LDAP search as attribute parameter.
There is also a predefined description list for the attributes in lists.inc. The user may use other values by setting them in the configuration profile.
The number of accounts per page is limited in the configuration profile (get_MaxListEntries() in config.inc). There will be links at the beginning and end of the list if more accounts were found.
Several common helper functions for sorting and some page elements reside in lists.inc.

## 1. Getting accounts from LDAP

Each account list has its own LDAP suffix which is saved in the configuration profile. This is used as search base.
The account modules provide an LDAP filter (get_ldap_filter() in modules.inc) to get only accounts of a special type.
This list can be further reduced if the user provides an additional LDAP filter with the filter boxes or selects another LDAP OU with the drop-down-box.

## 2. Caching LDAP accounts

The lists usually do not ask the LDAP server for an account list every time the user changes the page. The accounts are cached in the session.
A new LDAP search is done if the user:

- changes to another account list or tool
- adds/modifies an account
- selects the "refresh" button
- adds additional LDAP filters or changes the LDAP OU

It is not done if the user:

- changes the list pages if there are more accounts than what can be shown
- sorts the list

## 3. Adding/Editing accounts

There are buttons at the end of the page to add/delete accounts. Adding accounts is done by account/edit.php and deleting by delete.php.
The user can use the link in each account row to modify (in accounts/edit.php) the account. This can also be done by double clicking the row if Java Script is enabled.

## 4. Export to PDF

The user can generate PDF files for the accounts. This is done by the createModulePDF() function from pdf.inc.

## 5. Special abilities of some lists

### 5.1. The user list

If the attribute gidNumber is shown as table column then there will be an additional checkbox to translate the GID to the group name.
This checkbox is hidden if gidNumber is not part of the attribute list.

### 5.2. The group list

If the attribute memberUID is shown as table column then all values of this attribute are shown as links.
These links redirect to userlink.php which tries to find the given user and redirects to account/edit.php for account modifying.