...
|
...
|
@@ -21,7 +21,7 @@ class Addon extends Command |
|
|
$this
|
|
|
->setName('addon')
|
|
|
->addOption('name', 'a', Option::VALUE_REQUIRED, 'addon name', null)
|
|
|
->addOption('action', 'c', Option::VALUE_REQUIRED, 'action(create/enable/disable/install/uninstall/refresh/upgrade/package)', 'create')
|
|
|
->addOption('action', 'c', Option::VALUE_REQUIRED, 'action(create/enable/disable/install/uninstall/refresh/upgrade/package/move)', 'create')
|
|
|
->addOption('force', 'f', Option::VALUE_OPTIONAL, 'force override', null)
|
|
|
->addOption('release', 'r', Option::VALUE_OPTIONAL, 'addon release version', null)
|
|
|
->addOption('uid', 'u', Option::VALUE_OPTIONAL, 'fastadmin uid', null)
|
...
|
...
|
@@ -51,7 +51,7 @@ class Addon extends Command |
|
|
if (!$name) {
|
|
|
throw new Exception('Addon name could not be empty');
|
|
|
}
|
|
|
if (!$action || !in_array($action, ['create', 'disable', 'enable', 'install', 'uninstall', 'refresh', 'upgrade', 'package'])) {
|
|
|
if (!$action || !in_array($action, ['create', 'disable', 'enable', 'install', 'uninstall', 'refresh', 'upgrade', 'package', 'move'])) {
|
|
|
throw new Exception('Please input correct action name');
|
|
|
}
|
|
|
|
...
|
...
|
@@ -253,8 +253,69 @@ class Addon extends Command |
|
|
$zip->close();
|
|
|
$output->info("Package Successed!");
|
|
|
break;
|
|
|
|
|
|
default :
|
|
|
case 'move':
|
|
|
$movePath = [
|
|
|
'adminOnlySelfDir' => ['admin/behavior', 'admin/controller', 'admin/library', 'admin/model', 'admin/validate', 'admin/view'],
|
|
|
'adminAllSubDir' => ['admin/lang'],
|
|
|
'publicDir' => ['public/assets/addons', 'public/assets/js/backend']
|
|
|
];
|
|
|
$paths = [];
|
|
|
$appPath = str_replace('/', DS, APP_PATH);
|
|
|
$rootPath = str_replace('/', DS, ROOT_PATH);
|
|
|
foreach ($movePath as $k => $items) {
|
|
|
switch ($k) {
|
|
|
case 'adminOnlySelfDir':
|
|
|
foreach ($items as $v) {
|
|
|
$v = str_replace('/', DS, $v);
|
|
|
$oldPath = $appPath . $v . DS . $name;
|
|
|
$newPath = $rootPath . "addons" . DS . $name . DS . "application" . DS . $v . DS . $name;
|
|
|
$paths[$oldPath] = $newPath;
|
|
|
}
|
|
|
break;
|
|
|
case 'adminAllSubDir':
|
|
|
foreach ($items as $v) {
|
|
|
$v = str_replace('/', DS, $v);
|
|
|
$vPath = $appPath . $v;
|
|
|
$list = scandir($vPath);
|
|
|
foreach ($list as $_v) {
|
|
|
if (!in_array($_v, ['.', '..']) && is_dir($vPath . DS . $_v)) {
|
|
|
$oldPath = $appPath . $v . DS . $_v . DS . $name;
|
|
|
$newPath = $rootPath . "addons" . DS . $name . DS . "application" . DS . $v . DS . $_v . DS . $name;
|
|
|
$paths[$oldPath] = $newPath;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
case 'publicDir':
|
|
|
foreach ($items as $v) {
|
|
|
$v = str_replace('/', DS, $v);
|
|
|
$oldPath = $rootPath . $v . DS . $name;
|
|
|
$newPath = $rootPath . 'addons' . DS . $name . DS . $v . DS . $name;
|
|
|
$paths[$oldPath] = $newPath;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
foreach ($paths as $oldPath => $newPath) {
|
|
|
if (is_dir($oldPath)) {
|
|
|
if ($force) {
|
|
|
if (is_dir($newPath)) {
|
|
|
$list = scandir($newPath);
|
|
|
foreach ($list as $_v) {
|
|
|
if (!in_array($_v, ['.', '..'])) {
|
|
|
$file = $newPath . DS . $_v;
|
|
|
@chmod($file, 0777);
|
|
|
@unlink($file);
|
|
|
}
|
|
|
}
|
|
|
@rmdir($newPath);
|
|
|
}
|
|
|
}
|
|
|
copydirs($oldPath, $newPath);
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
...
|
...
|
@@ -318,5 +379,5 @@ class Addon extends Command |
|
|
{
|
|
|
return __DIR__ . '/Addon/stubs/' . $name . '.stub';
|
|
|
}
|
|
|
|
|
|
|
|
|
} |
...
|
...
|
|