173 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
  <title>Module HowTo - File upload</title>
 | 
						|
  <link rel="stylesheet" type="text/css" href="style/layout.css">
 | 
						|
	<link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico">
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
<div style="text-align: center;">
 | 
						|
<h1>Module HowTo - File upload<br>
 | 
						|
</h1>
 | 
						|
<br>
 | 
						|
<br>
 | 
						|
<div style="text-align: left;"><br>
 | 
						|
<h2>1. Defining upload columns<br>
 | 
						|
</h2>
 | 
						|
If you want to support account creation via file upload you have to
 | 
						|
define columns in the CSV file.<br>
 | 
						|
Each column has an non-translated identifier, a description, help entry
 | 
						|
and several other values.<br>
 | 
						|
<br>
 | 
						|
The upload columns are specified with <span style="font-weight: bold;">get_uploadColumns()</span>
 | 
						|
or <span style="font-weight: bold;">meta['upload_columns']</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;">ieee802Device</span>
 | 
						|
module has only one attribute and therefore one column: the 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>
 | 
						|
   
 | 
						|
    $return["account_types"] = array("host");<br>
 | 
						|
        // upload fields<br>
 | 
						|
      <span style="color: rgb(255, 0, 0);">   
 | 
						|
    $return['upload_columns'] = array(</span><br
 | 
						|
 style="color: rgb(255, 0, 0);">
 | 
						|
      <span style="color: rgb(255, 0, 0);">   
 | 
						|
        array(</span><br
 | 
						|
 style="color: rgb(255, 0, 0);">
 | 
						|
      <span style="color: rgb(255, 0, 0);">   
 | 
						|
            'name' =>
 | 
						|
'ieee802Device_mac',</span><br style="color: rgb(255, 0, 0);">
 | 
						|
      <span style="color: rgb(255, 0, 0);">   
 | 
						|
            'description'
 | 
						|
=> _('MAC address'),</span><br style="color: rgb(255, 0, 0);">
 | 
						|
      <span style="color: rgb(255, 0, 0);">   
 | 
						|
            'help' =>
 | 
						|
'mac',</span><br style="color: rgb(255, 0, 0);">
 | 
						|
      <span style="color: rgb(255, 0, 0);">   
 | 
						|
            'example'
 | 
						|
=> '00:01:02:DE:EF:18'</span><br style="color: rgb(255, 0, 0);">
 | 
						|
      <span style="color: rgb(255, 0, 0);">   
 | 
						|
        )</span><br
 | 
						|
 style="color: rgb(255, 0, 0);">
 | 
						|
      <span style="color: rgb(255, 0, 0);">    
 | 
						|
   );</span><br>
 | 
						|
        return $return;<br>
 | 
						|
    }<br>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </tbody>
 | 
						|
</table>
 | 
						|
<br>
 | 
						|
<br>
 | 
						|
<h2>2. Building the accounts<br>
 | 
						|
</h2>
 | 
						|
When the user has uploaded the CSV file the modules have to transform
 | 
						|
the input data to LDAP accounts.<br>
 | 
						|
<br>
 | 
						|
This is done with <span style="font-weight: bold;">build_uploadAccounts()</span>.
 | 
						|
The function gets the input data and a list of LDAP accounts as
 | 
						|
parameter.<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;">ieee802Device</span>
 | 
						|
module has only one LDAP attribute - <span style="font-style: italic;">'macAddress'</span>
 | 
						|
- and the <span style="font-style: italic;">'ieee802Device'</span>
 | 
						|
objectClass which is added to all 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>
 | 
						|
    * In this function the LDAP account is built up.<br>
 | 
						|
    *<br>
 | 
						|
    * @param array $rawAccounts list of hash arrays
 | 
						|
(name => value) from user input<br>
 | 
						|
    * @param array $partialAccounts list of hash arrays
 | 
						|
(name => value) which are later added to LDAP<br>
 | 
						|
    * @param array $ids list of IDs for column position
 | 
						|
(e.g. "posixAccount_uid" => 5)<br>
 | 
						|
    * @return array list of error messages if any<br>
 | 
						|
    */<br>
 | 
						|
    <span style="font-weight: bold;">function</span> <span
 | 
						|
 style="color: rgb(255, 0, 0);">build_uploadAccounts</span>($rawAccounts,
 | 
						|
$ids, &$partialAccounts) {<br>
 | 
						|
        $messages = array();<br>
 | 
						|
        for ($i = 0; $i <
 | 
						|
sizeof($rawAccounts); $i++) {<br>
 | 
						|
            // add object
 | 
						|
class<br>
 | 
						|
            if
 | 
						|
(!in_array("ieee802Device", $partialAccounts[$i]['objectClass']))
 | 
						|
$partialAccounts[$i]['objectClass'][] = "ieee802Device";<br>
 | 
						|
            // add MACs<br>
 | 
						|
            if
 | 
						|
($rawAccounts[$i][$ids['ieee802Device_mac']] != "") {<br>
 | 
						|
           
 | 
						|
    $macs = explode(',',
 | 
						|
$rawAccounts[$i][$ids['ieee802Device_mac']]);<br>
 | 
						|
           
 | 
						|
    // check format<br>
 | 
						|
           
 | 
						|
    for ($m = 0; $m < sizeof($macs); $m++) {<br>
 | 
						|
           
 | 
						|
        if (get_preg($macs[$m],
 | 
						|
'macAddress')) {<br>
 | 
						|
           
 | 
						|
           
 | 
						|
$partialAccounts[$i]['macAddress'][] = $macs[$m];<br>
 | 
						|
           
 | 
						|
        }<br>
 | 
						|
           
 | 
						|
        else {<br>
 | 
						|
           
 | 
						|
            $errMsg =
 | 
						|
$this->messages['mac'][1];<br>
 | 
						|
           
 | 
						|
           
 | 
						|
array_push($errMsg, array($i));<br>
 | 
						|
           
 | 
						|
            $messages[] =
 | 
						|
$errMsg;<br>
 | 
						|
           
 | 
						|
        }<br>
 | 
						|
           
 | 
						|
    }<br>
 | 
						|
            }<br>
 | 
						|
        }<br>
 | 
						|
        return $messages;<br>
 | 
						|
    }<br>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </tbody>
 | 
						|
</table>
 | 
						|
<br>
 | 
						|
<br>
 | 
						|
<br>
 | 
						|
<br>
 | 
						|
<span style="font-weight: bold;"></span>
 | 
						|
<h2><span style="font-weight: bold;"></span></h2>
 | 
						|
</div>
 | 
						|
</div>
 | 
						|
</body>
 | 
						|
</html>
 |