allow to call PSR-4 admin-cmds classes with admin-cli.php

This commit is contained in:
Ralf Becker 2019-05-27 13:55:40 +02:00
parent 950255e554
commit 7f18d059dd

View File

@ -85,7 +85,9 @@ switch($action)
default:
// we allow to call admin_cmd classes directly, if they define the constant SETUP_CLI_CALLABLE
if (substr($action,0,2) == '--' && class_exists($class = str_replace('-','_',substr($action,2))) &&
if (substr($action,0,2) == '--' && (class_exists($class = str_replace('-','_',substr($action, 2))) ||
class_exists($class = preg_replace('/^--([a-z0-9_]+)-([a-z0-9_]+)$/i', 'EGroupware\\$1\\$2', $action)) ||
class_exists($class = preg_replace('/^--([a-z0-9_]+)-([a-z0-9_]+)$/i', 'EGroupware\\$1\\AdminCmds\\$2', $action))) &&
is_subclass_of($class,'admin_cmd') && @constant($class.'::SETUP_CLI_CALLABLE'))
{
$args = array();
@ -100,8 +102,15 @@ switch($action)
if (substr($name,-1) == ']') // allow 1-dim. arrays
{
list($name,$sub) = explode('[',substr($name,0,-1),2);
if (empty($sub))
{
$args[$name][] = $value;
}
else
{
$args[$name][$sub] = $value;
}
}
else
{
$args[$name] = $value;