# Upgrade notes

## 2.4.0 -> 2.5.0

### Self service

$selfServiceSettings in class baseModule is now an object of the class selfServiceProfile. This way all profile settings can be read. To access the module settings use $this->selfServiceSettings->moduleSettings.

## 2.2.0 -> 2.3.0

### Style changes

If you have defined your own account types then you need to update your CSS files (style/type_<type>.css).
Please change "table.<type>list input,select" to "table.<type>list input,select,button" and "fieldset.<type>edit input" to "fieldset.<type>edit input,select,button". "fieldset.<type>edit select" may be deleted afterwards.

## 2.1.0 -> 2.2.0

### Account lists

Account lists now support to define tools. These are displayed as linked images like the edit and delete links in the list.
Overwrite lamList::getAdditionalTools() to use this feature.
The definition of account list options changed. The function lamList::getAdditionalTools() is no longer available. Use these functions instead: lamList::listGetAllConfigOptions() and lamList::listConfigurationChanged().
All options are now saved in cookies for one year.

### Base module

The baseModule class has a new protected option: $autoAddObjectClasses You can set it to false if you do not want that your module's object classes are added when creating or loading an account.
Account modules can now have icons. See baseModule->getIcon().

### Constructors

LAM now uses the PHP5 syntax for constructors: __construct()

### Extended security model

Each server profile now defines an access level.
Currently these are:

- write access
- password changes
- read access

Please check your code and prohibit any actions which do not fit the current access level.
There are two new functions in security.inc: checkIfWriteAccessIsAllowed() and checkIfPasswordChangeIsAllowed()
Only LAM Pro allows to change the access level from write access to a smaller level.

## 2.0.0 -> 2.1.0

### Style changes

- "fieldset.<type>edit fieldset" and "fieldset.<type>edit fieldset fieldset" were removed.
- "table.<type>list input" changed to "table.<type>list input,select"

### baseModule

The class variable $base is no longer visible in child classes. Please use $this->getAccountContainer() to access the accountContainer object.
Several other class variables in accountContainer etc. are now private. Use the new access methods.

## 1.3.0 -> 2.0.0

LAM is now PHP5 only. Several variables are now private and need to be accessed via functions.

## 1.2.0 -> 1.3.0

### New lamList functions

- listPrintTableCellContent(): This function allows you to control how the LDAP attributes are displayed in the table. This can be used to display links or binary data.
- listPrintAdditionalOptions(): If you want to display additional conrols for a list please use this function. The controls will be placed under the account table.

No more lamdaemon commands via delete_attributes() and save_attributes() in account modules.
Please use these new functions to call lamdaemon directly:

- preModifyActions()
- postModifyActions()
- preDeleteActions()
- postDeleteActions()

## 1.1.x -> 1.2.0

### API changes

- removed get_configDescription() from module interface

## 1.0.4 -> 1.1.0

### API changes

- removed $post parameters from module functions (delete_attributes(), process_...(), display_html_...()). Use $_POST instead.
- process_...() functions: returned messages are no longer grouped (e.g. return: array(array('INFO', 'headline', 'text'), array('INFO', 'headline2', 'text2')))

## 1.0.0 -> 1.0.2

### New module functions

- getRequiredExtensions: Allows to define required PHP extensions
- getManagedObjectClasses: Definition of managed object classes for this module
- getLDAPAliases: list of LDAP alias names which are replaced by LAM
- getManagedAttributes: list of LDAP attributes which are managed by this module

The LDAP attributes are no longer loaded by reading the LDAP schema. If your module does not implement the load_attributes() function then you have to use getManagedAttributes() or the meta data to specify them.
The class variable "triggered_messages" in baseModule was removed.