| 
									
										
										
										
											2015-07-12 09:11:16 +00:00
										 |  |  | <!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> | 
					
						
							| 
									
										
										
										
											2020-03-02 15:44:15 +00:00
										 |  |  | The module defines the list of supported jobs with function | 
					
						
							| 
									
										
										
										
											2015-07-12 09:11:16 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2020-03-02 15:44:15 +00:00
										 |  |  | this e.g. if you need to save any status information across job runs.<br> | 
					
						
							| 
									
										
										
										
											2015-07-12 09:11:16 +00:00
										 |  |  | 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> |