public function DatabaseLogger::loadLatestLogEntries in Ultimate Cron 8.2
Load latest log entry for multiple jobs.
This is the fallback method. Loggers should implement an optimized version if possible.
Parameters
array $jobs: Jobs for which the log entries should be loaded.
array $log_types: Type of log messages to load.
Overrides LoggerBase::loadLatestLogEntries
File
- src/
Plugin/ ultimate_cron/ Logger/ DatabaseLogger.php, line 250
Class
- DatabaseLogger
- Database logger.
Namespace
Drupal\ultimate_cron\Plugin\ultimate_cron\LoggerCode
public function loadLatestLogEntries(array $jobs, array $log_types) {
if ($this->connection
->databaseType() !== 'mysql') {
return parent::loadLatestLogEntries($jobs, $log_types);
}
$result = $this->connection
->query("SELECT l.*\n FROM {ultimate_cron_log} l\n JOIN (\n SELECT l3.name, (\n SELECT l4.lid\n FROM {ultimate_cron_log} l4\n WHERE l4.name = l3.name\n AND l4.log_type IN (:log_types)\n ORDER BY l4.name desc, l4.start_time DESC\n LIMIT 1\n ) AS lid FROM {ultimate_cron_log} l3\n GROUP BY l3.name\n ) l2 on l2.lid = l.lid", array(
':log_types' => $log_types,
));
$log_entries = array();
while ($object = $result
->fetchObject()) {
if (isset($jobs[$object->name])) {
$log_entries[$object->name] = new LogEntry($object->name, $this);
$log_entries[$object->name]
->setData((array) $object);
}
}
foreach ($jobs as $name => $job) {
if (!isset($log_entries[$name])) {
$log_entries[$name] = new LogEntry($name, $this);
}
}
return $log_entries;
}