96 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
		
		
			
		
	
	
			96 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
|  | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | ||
|  | <html><head> | ||
|  |   <title>Module HowTo - Jobs</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 - Jobs<br> | ||
|  | </h1> | ||
|  | <div style="text-align: left;"><br> | ||
|  | Jobs can be used to run actions in regular intervals like daily.<br> | ||
|  | They are configured on tab "Jobs" in LAM server profile.<br> | ||
|  | <br> | ||
|  | </div> | ||
|  | <div style="text-align: left;">See ppolicyUser module for an example.<br> | ||
|  | <br> | ||
|  | <h2>Adding the job class</h2> | ||
|  | The module defines the list of suuported jobs with function | ||
|  | getSupportedJobs().<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 a list of jobs that can be run.<br> | ||
|  |     *<br> | ||
|  |     * @param LAMConfig $config configuration<br> | ||
|  |     * @return array list of jobs<br> | ||
|  |     */<br> | ||
|  |     public function getSupportedJobs(&$config) {<br> | ||
|  |         return array(<br> | ||
|  |             new | ||
|  | PPolicyPasswordNotifyJob()<br> | ||
|  |         );<br> | ||
|  |     }<br> | ||
|  |       <br> | ||
|  |       </td> | ||
|  |     </tr> | ||
|  |   </tbody> | ||
|  | </table> | ||
|  | <br>The job class itself can be in the module file or in any file | ||
|  | included | ||
|  | by the module file. Please add the class definition in an interface | ||
|  | check as the example below. The job interface is not loaded on all | ||
|  | pages.<br> | ||
|  | 
 | ||
|  | <table style="width: 100%; text-align: left;" class="mod-code" border="0" cellpadding="2" cellspacing="2"> | ||
|  | <tbody> | ||
|  | <tr> | ||
|  | <td style="vertical-align: top;">if (interface_exists('\LAM\JOB\Job')) {<br> | ||
|  |       <br> | ||
|  |     /**<br> | ||
|  |      * Job to notify users about password expiration.<br> | ||
|  |      *<br> | ||
|  |      * @package jobs<br> | ||
|  |      */<br> | ||
|  |     class PPolicyPasswordNotifyJob implements \LAM\JOB\Job {<br> | ||
|  | [...]<br> | ||
|  |       <br> | ||
|  | }<br> | ||
|  | </td> | ||
|  | </tr> | ||
|  | </tbody> | ||
|  | </table> | ||
|  | <br> | ||
|  | <h2>Basic job attributes</h2> | ||
|  | Each job needs to provide a unique name, icon, alias and job | ||
|  | description. You need also to specify if multiple configurations of the | ||
|  | same job are allowed on a server profile.<br> | ||
|  | <br> | ||
|  | If your job requires any configuration options then use get/checkConfigOptions() functions.<br> | ||
|  | <br> | ||
|  | <h2>Database</h2> | ||
|  | Jobs can access a database to read and store data about job runs. Use | ||
|  | this e.g. if you need to save any status information accross job runs.<br> | ||
|  | Database access is specified with needsDatabaseAccess().<br> | ||
|  | <br> | ||
|  | There is a built-in database upgrade mechanism. Your job must return | ||
|  | its current schema version with getDatabaseSchemaVersion() and LAM will | ||
|  | call updateSchemaVersion() whenever it detects a higher version in job | ||
|  | class than on database.<br> | ||
|  | <br> | ||
|  | <h2>Execution</h2> | ||
|  | When jobs are run the the execute() function is called. Please put all your logic in there.<br> | ||
|  | 
 | ||
|  | <span style="font-weight: bold;"></span> | ||
|  | <h2><span style="font-weight: bold;"></span></h2> | ||
|  | </div> | ||
|  | </div> | ||
|  | 
 | ||
|  | </body></html> |