Skip to content
Snippets Groups Projects
Commit 376f5be1 authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms
Browse files

use additional fields instead of overwriting getValue(), fixes #2624

Closes #2624

Merge request studip/studip!1776
parent 0a2d890e
No related branches found
No related tags found
No related merge requests found
...@@ -120,7 +120,7 @@ class CronjobSchedule extends SimpleORMap ...@@ -120,7 +120,7 @@ class CronjobSchedule extends SimpleORMap
*/ */
public function getTitle() public function getTitle()
{ {
return ($this->content['title'] ?: $this->task->name) ?? ''; return $this->content['title'] ?: $this->task->name ?? '';
} }
protected function cbJsonifyParameters($type) protected function cbJsonifyParameters($type)
......
...@@ -56,6 +56,40 @@ class CronjobTask extends SimpleORMap ...@@ -56,6 +56,40 @@ class CronjobTask extends SimpleORMap
'on_store' => 'store' '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'; $config['registered_callbacks']['after_initialize'][] = 'loadClass';
parent::configure($config); parent::configure($config);
...@@ -122,37 +156,6 @@ class CronjobTask extends SimpleORMap ...@@ -122,37 +156,6 @@ class CronjobTask extends SimpleORMap
return $result; 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 // Convenience methods to ease the usage
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment