mirror of
https://github.com/andres-montanez/Magallanes
synced 2024-05-25 01:42:14 +02:00
Support custom task class name patterns
This commit is contained in:
parent
f1484e5f4d
commit
436348657f
|
@ -45,13 +45,31 @@ class Factory
|
|||
$taskName = ucwords(str_replace('-', ' ', $taskName));
|
||||
$taskName = str_replace(' ', '', $taskName);
|
||||
|
||||
if (strpos($taskName, '/') === false) {
|
||||
$className = 'Task\\' . $taskName;
|
||||
} else {
|
||||
$className = 'Mage\\Task\\BuiltIn\\' . str_replace(' ', '\\', ucwords(str_replace('/', ' ', $taskName))) . 'Task';
|
||||
$patterns = [];
|
||||
|
||||
if (is_array($taskConfig->general('taskPatterns'))) {
|
||||
$patterns = $taskConfig->general('taskPatterns');
|
||||
}
|
||||
|
||||
if (!class_exists($className)) {
|
||||
$patterns[] = 'Task\\%s';
|
||||
$patterns[] = 'Mage\\Task\\BuiltIn\\%sTask';
|
||||
|
||||
$className = null;
|
||||
|
||||
$taskClass = trim($taskName, '/\\');
|
||||
$taskClass = str_replace(' ', '\\', ucwords(str_replace('/', ' ', $taskClass)));
|
||||
$taskClass = str_replace(' ', '', ucwords(str_replace('-', ' ', $taskClass)));
|
||||
|
||||
foreach ($patterns as $pattern) {
|
||||
$possibleClass = sprintf($pattern, $taskClass);
|
||||
|
||||
if (class_exists($possibleClass)) {
|
||||
$className = $possibleClass;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$className) {
|
||||
throw new Exception('Task "' . $taskName . '" not found.');
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue