diff --git a/lib/models/CronjobSchedule.class.php b/lib/models/CronjobSchedule.class.php index 8808820244415dd0fb0fd26babbc9db9ebaeaf89..028eed7b12ed63c5920498c663823c53524dea03 100644 --- a/lib/models/CronjobSchedule.class.php +++ b/lib/models/CronjobSchedule.class.php @@ -120,7 +120,7 @@ class CronjobSchedule extends SimpleORMap */ public function getTitle() { - return ($this->content['title'] ?: $this->task->name) ?? ''; + return $this->content['title'] ?: $this->task->name ?? ''; } protected function cbJsonifyParameters($type) diff --git a/lib/models/CronjobTask.class.php b/lib/models/CronjobTask.class.php index 5b5350f8c0368839d03154f21c849dcd5e5d80f9..0313e9b8f1d1c24ef25acdd814a4a163964309cf 100644 --- a/lib/models/CronjobTask.class.php +++ b/lib/models/CronjobTask.class.php @@ -56,6 +56,40 @@ class CronjobTask extends SimpleORMap 'on_store' => 'store' ]; + $config['additional_fields'] = [ + 'description' => [ + 'get' => function (CronjobTask $task): string { + if ($task->valid) { + return $task->class::getDescription(); + } + return _('Unbekannt'); + }, + ], + 'name' => [ + 'get' => function (CronjobTask $task): string { + if ($task->valid) { + return $task->class::getName(); + } + $result = $task->filename; + if (strpos($result, 'public/plugins_packages') !== false) { + $result = preg_replace('/.*public\/plugins_packages\/(.+)(_Cronjob)?(\.class)?\.php$/', '$1', $result); + } else { + $result = preg_replace('/(_Cronjob)?(\.class)?\.php$/', '', basename($result)); + } + $result .= ' (' . _('fehlerhaft') . ')'; + return $result; + }, + ], + 'parameters' => [ + 'get' => function (CronjobTask $task): array { + if ($task->valid) { + return $task->class::getParameters(); + } + return []; + }, + ], + ]; + $config['registered_callbacks']['after_initialize'][] = 'loadClass'; parent::configure($config); @@ -122,37 +156,6 @@ class CronjobTask extends SimpleORMap return $result; } - /** - * Proxy the static methods "getDescription", "getName" and - * "getParameters" from the task class. - * - * @param String $field Field which should be accessed. - * @return mixed Value of the method call - */ - public function getValue($field) - { - if (in_array($field, words('description name parameters'))) { - if ($this->valid) { - $method = 'get' . ucfirst($field); - return call_user_func("{$this->class}::{$method}"); - } elseif ($field === 'description') { - return _('Unbekannt'); - } elseif ($field === 'name') { - $result = $this->filename; - if (strpos($result, 'public/plugins_packages') !== false) { - $result = preg_replace('/.*public\/plugins_packages\/(.+)(_Cronjob)?(\.class)?\.php$/', '$1', $result); - } else { - $result = preg_replace('/(_Cronjob)?(\.class)?\.php$/', '', basename($result)); - } - $result .= ' (' . _('fehlerhaft') . ')'; - return $result; - } elseif ($field === 'parameters') { - return []; - } - } - return parent::getValue($field); - } - // Convenience methods to ease the usage /**