FIX Support or multicompany for sheduled jobs
FIX Use priority to define order of sheduled jobs Conflicts: htdocs/cron/list.php
This commit is contained in:
parent
88b3e08b22
commit
0223d54107
@ -1313,6 +1313,7 @@ class DolibarrModules // Can not be abstract, because we need to insta
|
|||||||
{
|
{
|
||||||
foreach ($this->cronjobs as $key => $value)
|
foreach ($this->cronjobs as $key => $value)
|
||||||
{
|
{
|
||||||
|
$entity = isset($this->cronjobs[$key]['entity'])?$this->cronjobs[$key]['entity']:$conf->entity;
|
||||||
$label = isset($this->cronjobs[$key]['label'])?$this->cronjobs[$key]['label']:'';
|
$label = isset($this->cronjobs[$key]['label'])?$this->cronjobs[$key]['label']:'';
|
||||||
$jobtype = isset($this->cronjobs[$key]['jobtype'])?$this->cronjobs[$key]['jobtype']:'';
|
$jobtype = isset($this->cronjobs[$key]['jobtype'])?$this->cronjobs[$key]['jobtype']:'';
|
||||||
$class = isset($this->cronjobs[$key]['class'])?$this->cronjobs[$key]['class']:'';
|
$class = isset($this->cronjobs[$key]['class'])?$this->cronjobs[$key]['class']:'';
|
||||||
@ -1334,7 +1335,7 @@ class DolibarrModules // Can not be abstract, because we need to insta
|
|||||||
if ($objectname) $sql.= " AND objectname = '".$this->db->escape($objectname)."'";
|
if ($objectname) $sql.= " AND objectname = '".$this->db->escape($objectname)."'";
|
||||||
if ($method) $sql.= " AND methodename = '".$this->db->escape($method)."'";
|
if ($method) $sql.= " AND methodename = '".$this->db->escape($method)."'";
|
||||||
if ($command) $sql.= " AND command = '".$this->db->escape($command)."'";
|
if ($command) $sql.= " AND command = '".$this->db->escape($command)."'";
|
||||||
$sql.= " AND entity = ".$conf->entity;
|
$sql.= " AND entity = ".$entity; // Must be exact entity
|
||||||
|
|
||||||
$now=dol_now();
|
$now=dol_now();
|
||||||
|
|
||||||
@ -1371,7 +1372,7 @@ class DolibarrModules // Can not be abstract, because we need to insta
|
|||||||
if(is_int($unitfrequency)){ $sql.= "'".$this->db->escape($unitfrequency)."', "; }
|
if(is_int($unitfrequency)){ $sql.= "'".$this->db->escape($unitfrequency)."', "; }
|
||||||
if(is_int($priority)) {$sql.= "'".$this->db->escape($priority)."', ";}
|
if(is_int($priority)) {$sql.= "'".$this->db->escape($priority)."', ";}
|
||||||
if(is_int($status)){ $sql.= "'".$this->db->escape($status)."', "; }
|
if(is_int($status)){ $sql.= "'".$this->db->escape($status)."', "; }
|
||||||
$sql.= $conf->entity.",";
|
$sql.= $entity.",";
|
||||||
$sql.= "'".$this->db->escape($test)."'";
|
$sql.= "'".$this->db->escape($test)."'";
|
||||||
$sql.= ")";
|
$sql.= ")";
|
||||||
|
|
||||||
|
|||||||
@ -97,9 +97,9 @@ class modCron extends DolibarrModules
|
|||||||
|
|
||||||
// Cronjobs
|
// Cronjobs
|
||||||
$this->cronjobs = array(
|
$this->cronjobs = array(
|
||||||
0=>array('label'=>'PurgeDeleteTemporaryFilesShort', 'jobtype'=>'method', 'class'=>'core/class/utils.class.php', 'objectname'=>'Utils', 'method'=>'purgeFiles', 'parameters'=>'', 'comment'=>'PurgeDeleteTemporaryFiles', 'frequency'=>2, 'unitfrequency'=>3600 * 24 * 7, 'priority'=>50, 'status'=>1, 'test'=>true),
|
0=>array('entity'=>0, 'label'=>'PurgeDeleteTemporaryFilesShort', 'jobtype'=>'method', 'class'=>'core/class/utils.class.php', 'objectname'=>'Utils', 'method'=>'purgeFiles', 'parameters'=>'', 'comment'=>'PurgeDeleteTemporaryFiles', 'frequency'=>2, 'unitfrequency'=>3600 * 24 * 7, 'priority'=>50, 'status'=>1, 'test'=>true),
|
||||||
1=>array('label'=>'MakeLocalDatabaseDumpShort', 'jobtype'=>'method', 'class'=>'core/class/utils.class.php', 'objectname'=>'Utils', 'method'=>'dumpDatabase', 'parameters'=>'none,auto,1,auto,10', 'comment'=>'MakeLocalDatabaseDump', 'frequency'=>1, 'unitfrequency'=>3600 * 24 * 7, 'priority'=>90, 'status'=>0, 'test'=>in_array($db->type, array('mysql', 'mysqli'))),
|
1=>array('entity'=>0, 'label'=>'MakeLocalDatabaseDumpShort', 'jobtype'=>'method', 'class'=>'core/class/utils.class.php', 'objectname'=>'Utils', 'method'=>'dumpDatabase', 'parameters'=>'none,auto,1,auto,10', 'comment'=>'MakeLocalDatabaseDump', 'frequency'=>1, 'unitfrequency'=>3600 * 24 * 7, 'priority'=>90, 'status'=>0, 'test'=>in_array($db->type, array('mysql', 'mysqli'))),
|
||||||
// 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>1, 'unitfrequency'=>3600*24)
|
// 1=>array('entity'=>0, 'label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>1, 'unitfrequency'=>3600*24)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Permissions
|
// Permissions
|
||||||
|
|||||||
@ -614,6 +614,22 @@ else
|
|||||||
print $langs->trans($object->note);
|
print $langs->trans($object->note);
|
||||||
print "</td></tr>";
|
print "</td></tr>";
|
||||||
|
|
||||||
|
if (! empty($conf->multicompany->enabled))
|
||||||
|
{
|
||||||
|
print '<tr><td>';
|
||||||
|
print $langs->trans('Entity')."</td><td>";
|
||||||
|
if (! $object->entity)
|
||||||
|
{
|
||||||
|
print $langs->trans("AllEntities");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$mc->getInfo($obj->entity);
|
||||||
|
print $mc->label;
|
||||||
|
}
|
||||||
|
print "</td></tr>";
|
||||||
|
}
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
|
|||||||
@ -34,6 +34,7 @@ class Cronjob extends CommonObject
|
|||||||
public $table_element='cronjob'; //!< Name of table without prefix where object is stored
|
public $table_element='cronjob'; //!< Name of table without prefix where object is stored
|
||||||
public $picto = 'cron';
|
public $picto = 'cron';
|
||||||
|
|
||||||
|
public $entity;
|
||||||
public $jobtype;
|
public $jobtype;
|
||||||
public $tms='';
|
public $tms='';
|
||||||
public $datec='';
|
public $datec='';
|
||||||
@ -153,7 +154,7 @@ class Cronjob extends CommonObject
|
|||||||
|
|
||||||
// Insert request
|
// Insert request
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."cronjob(";
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX."cronjob(";
|
||||||
|
$sql.= "entity,";
|
||||||
$sql.= "datec,";
|
$sql.= "datec,";
|
||||||
$sql.= "jobtype,";
|
$sql.= "jobtype,";
|
||||||
$sql.= "label,";
|
$sql.= "label,";
|
||||||
@ -183,6 +184,7 @@ class Cronjob extends CommonObject
|
|||||||
$sql.= "libname,";
|
$sql.= "libname,";
|
||||||
$sql.= "test";
|
$sql.= "test";
|
||||||
$sql.= ") VALUES (";
|
$sql.= ") VALUES (";
|
||||||
|
$sql.= " ".(! isset($this->entity)?$conf->entity:$this->db->escape($this->entity)).",";
|
||||||
$sql.= " '".$this->db->idate($now)."',";
|
$sql.= " '".$this->db->idate($now)."',";
|
||||||
$sql.= " ".(! isset($this->jobtype)?'NULL':"'".$this->db->escape($this->jobtype)."'").",";
|
$sql.= " ".(! isset($this->jobtype)?'NULL':"'".$this->db->escape($this->jobtype)."'").",";
|
||||||
$sql.= " ".(! isset($this->label)?'NULL':"'".$this->db->escape($this->label)."'").",";
|
$sql.= " ".(! isset($this->label)?'NULL':"'".$this->db->escape($this->label)."'").",";
|
||||||
@ -265,8 +267,8 @@ class Cronjob extends CommonObject
|
|||||||
function fetch($id)
|
function fetch($id)
|
||||||
{
|
{
|
||||||
$sql = "SELECT";
|
$sql = "SELECT";
|
||||||
$sql.= " t.rowid,";
|
$sql.= " t.rowid,";
|
||||||
|
$sql.= " t.entity,";
|
||||||
$sql.= " t.tms,";
|
$sql.= " t.tms,";
|
||||||
$sql.= " t.datec,";
|
$sql.= " t.datec,";
|
||||||
$sql.= " t.jobtype,";
|
$sql.= " t.jobtype,";
|
||||||
@ -310,7 +312,7 @@ class Cronjob extends CommonObject
|
|||||||
|
|
||||||
$this->id = $obj->rowid;
|
$this->id = $obj->rowid;
|
||||||
$this->ref = $obj->rowid;
|
$this->ref = $obj->rowid;
|
||||||
|
$this->entity = $obj->entity;
|
||||||
$this->tms = $this->db->jdate($obj->tms);
|
$this->tms = $this->db->jdate($obj->tms);
|
||||||
$this->datec = $this->db->jdate($obj->datec);
|
$this->datec = $this->db->jdate($obj->datec);
|
||||||
$this->label = $obj->label;
|
$this->label = $obj->label;
|
||||||
@ -417,7 +419,7 @@ class Cronjob extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql.= " ORDER BY $sortfield $sortorder ";
|
$sql.= $this->db->order($sortfield,$sortorder);
|
||||||
if (!empty($limit) && !empty($offset)) {
|
if (!empty($limit) && !empty($offset)) {
|
||||||
$sql.= $this->db->plimit($limit + 1,$offset);
|
$sql.= $this->db->plimit($limit + 1,$offset);
|
||||||
}
|
}
|
||||||
@ -445,7 +447,6 @@ class Cronjob extends CommonObject
|
|||||||
|
|
||||||
$line->id = $obj->rowid;
|
$line->id = $obj->rowid;
|
||||||
$line->ref = $obj->rowid;
|
$line->ref = $obj->rowid;
|
||||||
|
|
||||||
$line->entity = $obj->entity;
|
$line->entity = $obj->entity;
|
||||||
$line->tms = $this->db->jdate($obj->tms);
|
$line->tms = $this->db->jdate($obj->tms);
|
||||||
$line->datec = $this->db->jdate($obj->datec);
|
$line->datec = $this->db->jdate($obj->datec);
|
||||||
@ -575,7 +576,7 @@ class Cronjob extends CommonObject
|
|||||||
|
|
||||||
// Update request
|
// Update request
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."cronjob SET";
|
$sql = "UPDATE ".MAIN_DB_PREFIX."cronjob SET";
|
||||||
|
$sql.= " entity=".(isset($this->entity)?$this->db->escape($this->entity):$conf->entity).",";
|
||||||
$sql.= " label=".(isset($this->label)?"'".$this->db->escape($this->label)."'":"null").",";
|
$sql.= " label=".(isset($this->label)?"'".$this->db->escape($this->label)."'":"null").",";
|
||||||
$sql.= " jobtype=".(isset($this->jobtype)?"'".$this->db->escape($this->jobtype)."'":"null").",";
|
$sql.= " jobtype=".(isset($this->jobtype)?"'".$this->db->escape($this->jobtype)."'":"null").",";
|
||||||
$sql.= " command=".(isset($this->command)?"'".$this->db->escape($this->command)."'":"null").",";
|
$sql.= " command=".(isset($this->command)?"'".$this->db->escape($this->command)."'":"null").",";
|
||||||
@ -773,7 +774,7 @@ class Cronjob extends CommonObject
|
|||||||
{
|
{
|
||||||
$this->id=0;
|
$this->id=0;
|
||||||
$this->ref=0;
|
$this->ref=0;
|
||||||
|
$this->entity=0;
|
||||||
$this->tms='';
|
$this->tms='';
|
||||||
$this->datec='';
|
$this->datec='';
|
||||||
$this->label='';
|
$this->label='';
|
||||||
@ -930,6 +931,16 @@ class Cronjob extends CommonObject
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Force the environment of running to the environment declared for job, so jobs launched from command line will run into correct environment
|
||||||
|
// When job is ran from GUI, the environment should already be same, except if job has entity 0 (visible into all environments)
|
||||||
|
if ($conf->entity != $this->entity && $this->entity > 0)
|
||||||
|
{
|
||||||
|
dol_syslog("We try to run a job in entity ".$this->entity." when we are in entity ".$conf->entity, LOG_WARNING);
|
||||||
|
}
|
||||||
|
$savcurrententity = $conf->entity;
|
||||||
|
$conf->entity = $this->entity;
|
||||||
|
dol_syslog(get_class($this)."::run_jobs entity for running job is ".$conf->entity);
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
||||||
$user=new User($this->db);
|
$user=new User($this->db);
|
||||||
$result=$user->fetch('',$userlogin);
|
$result=$user->fetch('',$userlogin);
|
||||||
@ -937,6 +948,7 @@ class Cronjob extends CommonObject
|
|||||||
{
|
{
|
||||||
$this->error="User Error:".$user->error;
|
$this->error="User Error:".$user->error;
|
||||||
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
||||||
|
$conf->entity = $savcurrententity;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -945,6 +957,7 @@ class Cronjob extends CommonObject
|
|||||||
{
|
{
|
||||||
$this->error=" User user login:".$userlogin." do not exists";
|
$this->error=" User user login:".$userlogin." do not exists";
|
||||||
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
||||||
|
$conf->entity = $savcurrententity;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -976,6 +989,7 @@ class Cronjob extends CommonObject
|
|||||||
$result = $this->update($user); // This include begin/commit
|
$result = $this->update($user); // This include begin/commit
|
||||||
if ($result<0) {
|
if ($result<0) {
|
||||||
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
||||||
|
$conf->entity = $savcurrententity;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1073,6 +1087,7 @@ class Cronjob extends CommonObject
|
|||||||
{
|
{
|
||||||
$this->error = $langs->trans('CronCannotLoadLib') . ': ' . $libpath;
|
$this->error = $langs->trans('CronCannotLoadLib') . ': ' . $libpath;
|
||||||
dol_syslog(get_class($this) . "::run_jobs " . $this->error, LOG_ERR);
|
dol_syslog(get_class($this) . "::run_jobs " . $this->error, LOG_ERR);
|
||||||
|
$conf->entity = $savcurrententity;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
// Load langs
|
// Load langs
|
||||||
@ -1080,6 +1095,7 @@ class Cronjob extends CommonObject
|
|||||||
if ($result<0)
|
if ($result<0)
|
||||||
{
|
{
|
||||||
dol_syslog(get_class($this) . "::run_jobs Cannot load module langs" . $langs->error, LOG_ERR);
|
dol_syslog(get_class($this) . "::run_jobs Cannot load module langs" . $langs->error, LOG_ERR);
|
||||||
|
$conf->entity = $savcurrententity;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
dol_syslog(get_class($this) . "::run_jobs " . $this->libname . "::" . $this->methodename."(" . $this->params . ");", LOG_DEBUG);
|
dol_syslog(get_class($this) . "::run_jobs " . $this->libname . "::" . $this->methodename."(" . $this->params . ");", LOG_DEBUG);
|
||||||
@ -1142,13 +1158,12 @@ class Cronjob extends CommonObject
|
|||||||
if ($result < 0)
|
if ($result < 0)
|
||||||
{
|
{
|
||||||
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR);
|
||||||
|
$conf->entity = $savcurrententity;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
return $error?-1:1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
$conf->entity = $savcurrententity;
|
||||||
|
return $error?-1:1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -187,7 +187,7 @@ $sql.= " t.nbrun,";
|
|||||||
$sql.= " t.libname,";
|
$sql.= " t.libname,";
|
||||||
$sql.= " t.test";
|
$sql.= " t.test";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."cronjob as t";
|
$sql.= " FROM ".MAIN_DB_PREFIX."cronjob as t";
|
||||||
$sql.= " WHERE 1 = 1";
|
$sql.= " WHERE entity IN (0,".$conf->entity.")";
|
||||||
if ($status >= 0 && $status < 2) $sql.= " AND t.status = ".(empty($status)?'0':'1');
|
if ($status >= 0 && $status < 2) $sql.= " AND t.status = ".(empty($status)?'0':'1');
|
||||||
if ($status == 2) $sql.= " AND t.status = 2";
|
if ($status == 2) $sql.= " AND t.status = 2";
|
||||||
//Manage filter
|
//Manage filter
|
||||||
|
|||||||
@ -85,7 +85,7 @@ if ($key != $conf->global->CRON_KEY)
|
|||||||
// If param userlogin is reserved word 'firstadmin'
|
// If param userlogin is reserved word 'firstadmin'
|
||||||
if ($userlogin == 'firstadmin')
|
if ($userlogin == 'firstadmin')
|
||||||
{
|
{
|
||||||
$sql='SELECT login from '.MAIN_DB_PREFIX.'user WHERE admin = 1 and statut = 1 ORDER BY entity LIMIT 1';
|
$sql='SELECT login, entity from '.MAIN_DB_PREFIX.'user WHERE admin = 1 and statut = 1 ORDER BY entity LIMIT 1';
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
@ -93,7 +93,7 @@ if ($userlogin == 'firstadmin')
|
|||||||
if ($obj)
|
if ($obj)
|
||||||
{
|
{
|
||||||
$userlogin = $obj->login;
|
$userlogin = $obj->login;
|
||||||
echo "First admin user found is login '".$userlogin."'\n";
|
echo "First admin user found is login '".$userlogin."', entity ".$obj->entity."\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else dol_print_error($db);
|
else dol_print_error($db);
|
||||||
@ -132,7 +132,7 @@ if (! empty($id)) {
|
|||||||
$filter['t.rowid']=$id;
|
$filter['t.rowid']=$id;
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $object->fetch_all('DESC','t.rowid', 0, 0, 1, $filter, 0);
|
$result = $object->fetch_all('ASC,ASC,ASC','t.priority,t.entity,t.rowid', 0, 0, 1, $filter, 0);
|
||||||
if ($result<0)
|
if ($result<0)
|
||||||
{
|
{
|
||||||
echo "Error: ".$object->error;
|
echo "Error: ".$object->error;
|
||||||
@ -159,8 +159,8 @@ if(is_array($qualifiedjobs) && (count($qualifiedjobs)>0))
|
|||||||
// Loop over job
|
// Loop over job
|
||||||
foreach($qualifiedjobs as $line)
|
foreach($qualifiedjobs as $line)
|
||||||
{
|
{
|
||||||
dol_syslog("cron_run_jobs.php cronjobid: ".$line->id, LOG_DEBUG);
|
dol_syslog("cron_run_jobs.php cronjobid: ".$line->id." priority=".$line->priority." entity=".$line->entity." label=".$line->label, LOG_DEBUG);
|
||||||
echo "cron_run_jobs.php cronjobid: ".$line->id."\n";
|
echo "cron_run_jobs.php cronjobid: ".$line->id." priority=".$line->priority." entity=".$line->entity." label=".$line->label."\n";
|
||||||
|
|
||||||
//If date_next_jobs is less of current date, execute the program, and store the execution time of the next execution in database
|
//If date_next_jobs is less of current date, execute the program, and store the execution time of the next execution in database
|
||||||
if (($line->datenextrun < $now) && (empty($line->datestart) || $line->datestart <= $now) && (empty($line->dateend) || $line->dateend >= $now))
|
if (($line->datenextrun < $now) && (empty($line->datestart) || $line->datestart <= $now) && (empty($line->dateend) || $line->dateend >= $now))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user