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>
|