| 
									
										
										
										
											2004-11-14 17:46:46 +00:00
										 |  |  | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | 
					
						
							|  |  |  | <html> | 
					
						
							|  |  |  | <head> | 
					
						
							|  |  |  |   <title>Module HowTo - Advanced upload options</title> | 
					
						
							|  |  |  |   <link rel="stylesheet" type="text/css" href="style/layout.css"> | 
					
						
							| 
									
										
										
										
											2008-01-01 13:06:51 +00:00
										 |  |  | 	<link rel="shortcut icon" type="image/x-icon" href="images/favicon.ico"> | 
					
						
							| 
									
										
										
										
											2004-11-14 17:46:46 +00:00
										 |  |  | </head> | 
					
						
							|  |  |  | <body> | 
					
						
							|  |  |  | <div style="text-align: center;"> | 
					
						
							|  |  |  | <h1>Module HowTo - Advanced upload options<br> | 
					
						
							|  |  |  | </h1> | 
					
						
							|  |  |  | <div style="text-align: left;"><br> | 
					
						
							|  |  |  | The <span style="font-style: italic;">ieee802Device</span> module only | 
					
						
							|  |  |  | needs the basic upload functions for its functionality.<br> | 
					
						
							|  |  |  | However there are more possibilities for the modules to control the | 
					
						
							|  |  |  | file upload.<br> | 
					
						
							|  |  |  | </div> | 
					
						
							|  |  |  | <div style="text-align: left;"><br> | 
					
						
							|  |  |  | <h2>1. Module order<br> | 
					
						
							|  |  |  | </h2> | 
					
						
							|  |  |  | Your module might depend on the input values of another module. In this | 
					
						
							|  |  |  | case you probably want that your module is called as the second one.<br> | 
					
						
							|  |  |  | <br> | 
					
						
							|  |  |  | You can define dependencies to other modules with the function <span | 
					
						
							|  |  |  |  style="font-weight: bold;">get_uploadPreDepends()</span> or <span | 
					
						
							|  |  |  |  style="font-weight: bold;">meta['upload_preDepends']</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;">sambaGroupMapping</span> module | 
					
						
							|  |  |  | needs the group name to set the default <span | 
					
						
							|  |  |  |  style="font-style: italic;">displayName</span>. Therefore it depends | 
					
						
							|  |  |  | on the <span style="font-style: italic;">posixGroup</span> module<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> | 
					
						
							|  |  |  |         // upload dependencies<br> | 
					
						
							|  |  |  |         $return[<span | 
					
						
							|  |  |  |  style="color: rgb(255, 0, 0);">'upload_preDepends'</span>] = | 
					
						
							|  |  |  | array('posixGroup');<br> | 
					
						
							|  |  |  |         [...]<br> | 
					
						
							|  |  |  |       </td> | 
					
						
							|  |  |  |     </tr> | 
					
						
							|  |  |  |   </tbody> | 
					
						
							|  |  |  | </table> | 
					
						
							|  |  |  | <br> | 
					
						
							|  |  |  | <br> | 
					
						
							|  |  |  | <h2>2. Upload post actions<br> | 
					
						
							|  |  |  | </h2> | 
					
						
							|  |  |  | If your module does not only create an account but relates the account | 
					
						
							|  |  |  | with other existing LDAP entries you can do these modifications after | 
					
						
							|  |  |  | the account was created.<br> | 
					
						
							|  |  |  | This is useful for adding users to groups or setting quotas.<br> | 
					
						
							|  |  |  | <br> | 
					
						
							|  |  |  | You have to implement the function <span style="font-weight: bold;">doUploadPostActions()</span> | 
					
						
							|  |  |  | in your module. Since post actions are very special there is no <span | 
					
						
							|  |  |  |  style="font-style: italic;">meta data</span> for this.<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;">posixAccount</span> module | 
					
						
							|  |  |  | offers to put the user account in additional groups. This is done in | 
					
						
							|  |  |  | the post actions.<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 executes one post upload action.<br> | 
					
						
							|  |  |  |     *<br> | 
					
						
							|  |  |  |     * @param array $data array containing one account in | 
					
						
							|  |  |  | each element<br> | 
					
						
							|  |  |  |     * @param array $ids array(<column_name> => | 
					
						
							|  |  |  | <column number>)<br> | 
					
						
							|  |  |  |     * @param array $failed list of accounts which were | 
					
						
							|  |  |  | not created successfully<br> | 
					
						
							|  |  |  |     * @param array $temp variable to store temporary | 
					
						
							|  |  |  | data between two post actions<br> | 
					
						
							|  |  |  |     * @return array current status<br> | 
					
						
							|  |  |  |     * <br> array (<br> | 
					
						
							|  |  |  |     * <br>  'status' => 'finished' | | 
					
						
							|  |  |  | 'inProgress'<br> | 
					
						
							|  |  |  |     * <br>  'progress' => 0..100<br> | 
					
						
							|  |  |  |     * <br>  'errors' => array (<array | 
					
						
							|  |  |  | of parameters for StatusMessage>)<br> | 
					
						
							|  |  |  |     * <br> )<br> | 
					
						
							|  |  |  |     */<br> | 
					
						
							|  |  |  |     <span style="font-weight: bold;">function</span> <span | 
					
						
							|  |  |  |  style="color: rgb(255, 0, 0);">doUploadPostActions</span>($data, $ids, | 
					
						
							|  |  |  | $failed, &$temp) {<br> | 
					
						
							|  |  |  |          [...]<br> | 
					
						
							|  |  |  |     }<br> | 
					
						
							|  |  |  |       </td> | 
					
						
							|  |  |  |     </tr> | 
					
						
							|  |  |  |   </tbody> | 
					
						
							|  |  |  | </table> | 
					
						
							|  |  |  | <br> | 
					
						
							|  |  |  | Please make sure that the actions in one call of <span | 
					
						
							|  |  |  |  style="font-weight: bold;">doUploadPostActions()</span> are not very | 
					
						
							|  |  |  | time consuming (only one LDAP operation). Your function will be called | 
					
						
							|  |  |  | repeatedly until you give back the status "finished".<br> | 
					
						
							|  |  |  | This allows LAM to avoid running longer than the maximum execution time | 
					
						
							|  |  |  | by sending meta refreshes to the browser.<br> | 
					
						
							|  |  |  | <span style="font-weight: bold;"></span> | 
					
						
							|  |  |  | <h2><span style="font-weight: bold;"></span></h2> | 
					
						
							|  |  |  | </div> | 
					
						
							|  |  |  | </div> | 
					
						
							|  |  |  | </body> | 
					
						
							|  |  |  | </html> |