system jobs

This commit is contained in:
yuri
2017-05-08 12:34:07 +03:00
parent d7f8e4e050
commit bf699d88f7
4 changed files with 49 additions and 2 deletions

View File

@@ -63,7 +63,7 @@ class Admin extends \Espo\Core\Controllers\Base
{
$scheduledJob = $this->getContainer()->get('scheduledJob');
return $scheduledJob->getAllNamesOnly();
return $scheduledJob->getAvailableList();
}
public function postActionUploadUpgradePackage($params, $data)

View File

@@ -59,6 +59,8 @@ class DataManager
$result &= $this->rebuildDatabase($entityList);
$this->rebuildScheduledJobs();
return $result;
}
@@ -121,6 +123,40 @@ class DataManager
return empty($ormData) ? false : true;
}
public function rebuildScheduledJobs()
{
$metadata = $this->getContainer()->get('metadata');
$entityManager = $this->getContainer()->get('entityManager');
$jobs = $metadata->get(['entityDefs', 'ScheduledJob', 'jobs'], array());
foreach ($jobs as $jobName => $defs) {
if ($jobName && !empty($defs['isSystem']) && !empty($defs['scheduling'])) {
if (!$entityManager->getRepository('ScheduledJob')->where(array(
'job' => $jobName,
'status' => 'Active',
'scheduling' => $defs['scheduling']
))->findOne()) {
$job = $entityManager->getRepository('ScheduledJob')->where(array(
'job' => $jobName
))->findOne();
if ($job) {
$entityManager->removeEntity($job);
}
$job = $entityManager->getEntity('ScheduledJob');
$job->set(array(
'job' => $jobName,
'status' => 'Active',
'scheduling' => $defs['scheduling'],
'isInternal' => true,
'name' => $jobName
));
$entityManager->saveEntity($job);
}
}
}
}
/**
* Update cache timestamp
*

View File

@@ -111,6 +111,15 @@ class ScheduledJob
return $this->getClassName($name);
}
public function getAvailableList()
{
$data = $this->getAll();
$list = array_keys($data);
return $list;
}
/**
* Get list of all job names
*

View File

@@ -37,7 +37,9 @@ Espo.define('views/scheduled-job/fields/job', 'views/fields/enum', function (Dep
$.ajax({
url: 'Admin/jobs',
success: function (data) {
this.params.options = data;
this.params.options = data.filter(function (item) {
return !this.getMetadata().get(['entityDefs', 'ScheduledJob', 'jobs', item, 'isSystem']);
}, this);
this.params.options.unshift('');
this.wait(false);
}.bind(this)