<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Module HowTo - General module options</title> <link rel="stylesheet" type="text/css" href="style/layout.css"> </head> <body> <p align="center"> <script type="text/javascript"><!-- google_ad_client = "pub-4179059556107138"; google_alternate_ad_url = "http://lam.sourceforge.net/google_adsense_script.html"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text_image"; google_ad_channel =""; google_page_url = document.location; google_color_border = "EEEEEE"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_url = "008000"; google_color_text = "000000"; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </p> <div style="text-align: center;"> <h1>Module HowTo - General module options<br> </h1> <br> <br> <div style="text-align: left;"><br> <h2>1. Account types<br> </h2> LAM currently provides three account types: <span style="font-weight: bold;">users, groups, hosts<br> </span>A module can manage one or more account types.<br> <br> The types are specified with <span style="font-weight: bold;">can_manage()</span> or <span style="font-weight: bold;">meta['account_types']</span>.<br> <br> <span style="font-weight: bold; text-decoration: underline;">Example:</span><br style="font-weight: bold; text-decoration: underline;"> <br> Our <span style="font-style: italic;">ieee802Device</span> module will be used only for host accounts.<br> <br> <table style="width: 100%; text-align: left;" class="mod-code" border="0" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: top;"> /**<br> * Returns meta data that is interpreted by parent class<br> *<br> * @return array array with meta data<br> */<br> <span style="font-weight: bold;">function</span> get_metaData() {<br> $return = array();<br> // manages host accounts<br> <span style="color: rgb(255, 0, 0);"> $return["account_types"] = array("host");</span><br style="color: rgb(255, 0, 0);"> return $return;<br> }<br> </td> </tr> </tbody> </table> <br> <br> <h2>2. Base modules<br> </h2> In LDAP every entry needs exactly one <span style="font-style: italic;">structural object class</span>. Therefore all modules which provide a <span style="font-style: italic;">structural object class</span> are marked as <span style="font-weight: bold;">base module</span>.<br> <br> This is done with <span style="font-weight: bold;">is_base_module()</span> or <span style="font-weight: bold;">meta['is_base']</span>.<br> <br> <span style="font-weight: bold; text-decoration: underline;">Example:</span><br style="font-weight: bold; text-decoration: underline;"> <br> The <span style="font-style: italic;">inetOrgPerson</span> module manages the structural object class "inetOrgPerson" and therefore is a <span style="font-weight: bold;">base module</span>.<br> If your module is not a base module you can skip the meta data for this, default is <span style="font-style: italic;">false</span>.<br> <br> <table style="width: 100%; text-align: left;" class="mod-code" border="0" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: top;"> /**<br> * Returns meta data that is interpreted by parent class<br> *<br> * @return array array with meta data<br> */<br> <span style="font-weight: bold;">function</span> get_metaData() {<br> $return = array();<br> // base module<br> <span style="color: rgb(255, 0, 0);"> $return["is_base"] = true;</span><br style="color: rgb(255, 0, 0);"> return $return;<br> }<br> </td> </tr> </tbody> </table> <br> <br> <h2>3. Alias name</h2> The module name is very limited, therefore every module has an <span style="font-style: italic;">alias name</span>. This <span style="font-style: italic;">alias name</span> has no limitations and can be translated. It may contain special characters but make sure that it does not contain HTML special characters like "<".<br> The <span style="font-style: italic;">alias name </span>can be the same for all managed <span style="font-style: italic;">account types</span> or differ for each type.<br> <br> The <span style="font-style: italic;">alias name</span> is specified with <span style="font-weight: bold;">get_alias()</span> or <span style="font-weight: bold;">meta['alias']</span>.<br> <br> <span style="font-weight: bold; text-decoration: underline;">Example:</span><br style="font-weight: bold; text-decoration: underline;"> <br> Our <span style="font-style: italic;">ieee802Device</span> module will get the alias MAC address.<br> <br> <table style="width: 100%; text-align: left;" class="mod-code" border="0" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: top;"> /**<br> * Returns meta data that is interpreted by parent class<br> *<br> * @return array array with meta data<br> */<br> <span style="font-weight: bold;">function</span> get_metaData() {<br> $return = array();<br> // manages host accounts<br> <span style="color: rgb(255, 0, 0);"> </span>$return["account_types"] = array("host");<br style="color: rgb(255, 0, 0);"> // alias name<br> <span style="color: rgb(255, 0, 0);"> $return["alias"] = _("MAC address");</span><br style="color: rgb(255, 0, 0);"> return $return;<br> }<br> </td> </tr> </tbody> </table> <br> <br> <h2>4. Dependencies</h2> Modules can depend on eachother. This is useful if you need to access attributes from other modules or the managed object classes of your module are not structural.<br> <br> The dependencies are specified with <span style="font-weight: bold;">get_dependencies()</span> or <span style="font-weight: bold;">meta['dependencies']</span>.<br> <br> <span style="font-weight: bold; text-decoration: underline;">Example:</span><br style="font-weight: bold; text-decoration: underline;"> <br> Our <span style="font-style: italic;">ieee802Device</span> module depends on the account module (because it is the only structural module at this time).<br> <br> <table style="width: 100%; text-align: left;" class="mod-code" border="0" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: top;"> /**<br> * Returns meta data that is interpreted by parent class<br> *<br> * @return array array with meta data<br> */<br> <span style="font-weight: bold;">function</span> get_metaData() {<br> $return = array();<br> // manages host accounts<br> <span style="color: rgb(255, 0, 0);"> </span>$return["account_types"] = array("host");<br style="color: rgb(255, 0, 0);"> // alias name<br> $return["alias"] = _("MAC address");<br> // module dependencies<br> <span style="color: rgb(255, 0, 0);"> $return['dependencies'] = array('depends' => array('account'), 'conflicts' => array());</span><br style="color: rgb(255, 0, 0);"> return $return;<br> }<br> </td> </tr> </tbody> </table> <br> <br> <h2>5. Messages</h2> There are many situations where you will display messages to the user. The modules should define such messages at a common place to make it easier to modify them without searching the complete file.<br> The <span style="font-style: italic;">baseModule</span> offers the $<span style="font-weight: bold;">messages</span> variable for this. It should be filled by a function called <span style="font-weight: bold;">load_Messages()</span>.<br> The <span style="font-style: italic;">baseModule</span> will automatically check if you have implemented this function and call it at construction time.<br> <br> <span style="font-weight: bold; text-decoration: underline;">Example:</span><br style="font-weight: bold; text-decoration: underline;"> <br> Now let our <span style="font-style: italic;">ieee802Device</span> module define a message.<br> <br> <table style="width: 100%; text-align: left;" class="mod-code" border="0" cellpadding="2" cellspacing="2"> <tbody> <tr> <td style="vertical-align: top;"> /**<br> * This function fills the error message array with messages<br> */<br> <span style="font-weight: bold;">function</span> <span style="color: rgb(255, 0, 0);">load_Messages</span>() {<br> $this->messages['mac'][0] = array('ERROR', 'MAC address is invalid!'); // third array value is set dynamically<br> }<br> </td> </tr> </tbody> </table> <br> <br> <h2><br> </h2> <h2></h2> <br> <br> <span style="font-weight: bold;"></span> <h2><span style="font-weight: bold;"></span></h2> </div> </div> <p align="center"> <script type="text/javascript"><!-- google_ad_client = "pub-4179059556107138"; google_alternate_ad_url = "http://lam.sourceforge.net/google_adsense_script.html"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text_image"; google_ad_channel =""; google_page_url = document.location; google_color_border = "EEEEEE"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_url = "008000"; google_color_text = "000000"; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> </p> </body> </html>