1. Licensing
LAM is licensed under the
GNU
General Public License. This means your plugins need a compatible
license.
LAM is distributed with a copy of the GPL license.
2. Naming and position in directory structure
Module names are usually named after the object class they manage.
However, you can use any name you want, it should be short and
containing only a-z and 0-9. The module name is only shown in the
configuration dialog, on all other pages LAM will show a provided
alias name.
All account modules are stored in
lib/modules.
The filename must end with
.inc
and the file must have the same name as its inside class.
Example:
Our example module will provide the
class
ieee802Device,
therefore the file will be called
lib/modules/ieee802Device.inc.
3. Defining the class
All module classes have
baseModule
as parent class. This provides common functionality and dummy functions
for all required class functions.
Example:
/**
* Provides MAC addresses for hosts.
*
* @package modules
*/
class ieee802Device
extends baseModule {
}
|
4. Meta data
The module interface inludes a lot of required and optional functions.
Many of these functions do not need to be implemented directly in the
module, you can define
meta data
for them and the
baseModule
will do the rest.
Providing
meta data is
optional, you can implement the required functions in your class, too.
The
baseModule reads the
meta data by calling
get_metaData() in your class.
Example:
/**
* Returns meta data that is interpreted by parent
class
*
* @return array array with meta data
*/
function get_metaData() {
$return = array();
// manages host accounts
$return["account_types"] =
array("host");
}
|
You will see this functions several times in the next parts of this
HowTo.