added module:download command

This commit is contained in:
Denis Duliçi
2020-12-24 02:16:00 +03:00
parent 5b0a50c758
commit 531dcd8dab
16 changed files with 793 additions and 515 deletions

View File

@ -3,8 +3,16 @@
namespace App\Http\Controllers\Install;
use App\Abstracts\Http\Controller;
use App\Utilities\Updater;
use App\Events\Install\UpdateCacheCleared;
use App\Events\Install\UpdateCopied;
use App\Events\Install\UpdateDownloaded;
use App\Events\Install\UpdateUnzipped;
use App\Jobs\Install\CopyFiles;
use App\Jobs\Install\DownloadFile;
use App\Jobs\Install\FinishUpdate;
use App\Jobs\Install\UnzipFile;
use App\Utilities\Versions;
use Illuminate\Support\Facades\Cache;
use Illuminate\Http\Request;
class Updates extends Controller
@ -16,7 +24,7 @@ class Updates extends Controller
*/
public function index()
{
$updates = Updater::all();
$updates = Versions::getUpdates();
$core = null;
@ -62,7 +70,10 @@ class Updates extends Controller
public function check()
{
// Clear cache in order to check for updates
Updater::clear();
Cache::forget('updates');
Cache::forget('versions');
event(new UpdateCacheCleared(session('company_id')));
return redirect()->back();
}
@ -155,7 +166,9 @@ class Updates extends Controller
set_time_limit(900); // 15 minutes
try {
$path = Updater::download($request['alias'], $request['version'], $request['installed']);
$path = $this->dispatch(new DownloadFile($request['alias'], $request['version']));
event(new UpdateDownloaded($request['alias'], $request['version'], $request['installed']));
$json = [
'success' => true,
@ -189,7 +202,9 @@ class Updates extends Controller
set_time_limit(900); // 15 minutes
try {
$path = Updater::unzip($request['path'], $request['alias'], $request['version'], $request['installed']);
$path = $this->dispatch(new UnzipFile($request['alias'], $request['path']));
event(new UpdateUnzipped($request['alias'], $request['version'], $request['installed']));
$json = [
'success' => true,
@ -223,7 +238,9 @@ class Updates extends Controller
set_time_limit(900); // 15 minutes
try {
$path = Updater::copyFiles($request['path'], $request['alias'], $request['version'], $request['installed']);
$path = $this->dispatch(new CopyFiles($request['alias'], $request['path']));
event(new UpdateCopied($request['alias'], $request['version'], $request['installed']));
$json = [
'success' => true,
@ -257,7 +274,7 @@ class Updates extends Controller
set_time_limit(900); // 15 minutes
try {
Updater::finish($request['alias'], $request['version'], $request['installed']);
$this->dispatch(new FinishUpdate($request['alias'], $request['version'], $request['installed']));
$json = [
'success' => true,

View File

@ -3,11 +3,16 @@
namespace App\Http\Controllers\Modules;
use App\Abstracts\Http\Controller;
use App\Jobs\Install\CopyFiles;
use App\Jobs\Install\DisableModule;
use App\Jobs\Install\DownloadFile;
use App\Jobs\Install\EnableModule;
use App\Jobs\Install\InstallModule;
use App\Jobs\Install\UninstallModule;
use App\Jobs\Install\UnzipFile;
use App\Models\Module\Module;
use App\Traits\Modules;
use File;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class Item extends Controller
{
@ -83,9 +88,13 @@ class Item extends Controller
$name = $request['name'];
$alias = $request['alias'];
$module_path = config('module.paths.modules') . '/' . Str::studly($alias);
if (!File::isDirectory($module_path)) {
if ($this->moduleExists($alias)) {
// Install
$steps[] = [
'text' => trans('modules.installation.install', ['module' => $name]),
'url' => route('apps.install')
];
} else {
// Download
$steps[] = [
'text' => trans('modules.installation.download', ['module' => $name]),
@ -104,12 +113,6 @@ class Item extends Controller
'url' => route('apps.copy')
];
// Install
$steps[] = [
'text' => trans('modules.installation.install', ['module' => $name]),
'url' => route('apps.install')
];
} else {
// Install
$steps[] = [
'text' => trans('modules.installation.install', ['module' => $name]),
@ -134,13 +137,25 @@ class Item extends Controller
*/
public function download(Request $request)
{
$path = $request['path'];
try {
$path = $this->dispatch(new DownloadFile($request['alias'], $request['version']));
$version = $request['version'];
$path .= '/' . $version . '/' . version('short') . '/' . setting('apps.api_key');
$json = $this->downloadModule($path);
$json = [
'success' => true,
'error' => false,
'message' => null,
'data' => [
'path' => $path,
],
];
} catch (\Exception $e) {
$json = [
'success' => false,
'error' => true,
'message' => $e->getMessage(),
'data' => [],
];
}
return response()->json($json);
}
@ -154,9 +169,25 @@ class Item extends Controller
*/
public function unzip(Request $request)
{
$path = $request['path'];
try {
$path = $this->dispatch(new UnzipFile($request['alias'], $request['path']));
$json = $this->unzipModule($path);
$json = [
'success' => true,
'error' => false,
'message' => null,
'data' => [
'path' => $path,
],
];
} catch (\Exception $e) {
$json = [
'success' => false,
'error' => true,
'message' => $e->getMessage(),
'data' => [],
];
}
return response()->json($json);
}
@ -170,9 +201,27 @@ class Item extends Controller
*/
public function copy(Request $request)
{
$path = $request['path'];
try {
$this->dispatch(new CopyFiles($request['alias'], $request['path']));
$json = $this->copyModule($path);
event(new \App\Events\Module\Copied($request['alias'], session('company_id')));
$json = [
'success' => true,
'error' => false,
'message' => null,
'data' => [
'alias' => $request['alias'],
],
];
} catch (\Exception $e) {
$json = [
'success' => false,
'error' => true,
'message' => $e->getMessage(),
'data' => [],
];
}
return response()->json($json);
}
@ -186,16 +235,36 @@ class Item extends Controller
*/
public function install(Request $request)
{
$alias = $request['alias'];
try {
$this->dispatch(new InstallModule($request['alias']));
$json = $this->installModule($alias);
$name = module($request['alias'])->getName();
if ($json['success']) {
$message = trans('modules.installed', ['module' => $json['data']['name']]);
$message = trans('modules.installed', ['module' => $name]);
flash($message)->success();
} else {
flash($json['message'])->error();
$json = [
'success' => true,
'error' => false,
'message' => null,
'redirect' => route('apps.app.show', $request['alias']),
'data' => [
'name' => $name,
'alias' => $request['alias'],
],
];
} catch (\Exception $e) {
$message = $e->getMessage();
flash($message)->error();
$json = [
'success' => false,
'error' => true,
'message' => $message,
'data' => [],
];
}
return response()->json($json);
@ -203,14 +272,18 @@ class Item extends Controller
public function uninstall($alias)
{
$json = $this->uninstallModule($alias);
try {
$name = module($alias)->getName();
if ($json['success']) {
$message = trans('modules.uninstalled', ['module' => $json['data']['name']]);
$this->dispatch(new UninstallModule($alias));
$message = trans('modules.uninstalled', ['module' => $name]);
flash($message)->success();
} else {
flash($json['message'])->error();
} catch (\Exception $e) {
$message = $e->getMessage();
flash($message)->error();
}
return redirect()->route('apps.app.show', $alias)->send();
@ -218,14 +291,18 @@ class Item extends Controller
public function enable($alias)
{
$json = $this->enableModule($alias);
try {
$name = module($alias)->getName();
if ($json['success']) {
$message = trans('modules.enabled', ['module' => $json['data']['name']]);
$this->dispatch(new EnableModule($alias));
$message = trans('modules.enabled', ['module' => $name]);
flash($message)->success();
} else {
flash($json['message'])->error();
} catch (\Exception $e) {
$message = $e->getMessage();
flash($message)->error();
}
return redirect()->route('apps.app.show', $alias)->send();
@ -233,14 +310,18 @@ class Item extends Controller
public function disable($alias)
{
$json = $this->disableModule($alias);
try {
$name = module($alias)->getName();
if ($json['success']) {
$message = trans('modules.disabled', ['module' => $json['data']['name']]);
$this->dispatch(new DisableModule($alias));
$message = trans('modules.disabled', ['module' => $name]);
flash($message)->success();
} else {
flash($json['message'])->error();
} catch (\Exception $e) {
$message = $e->getMessage();
flash($message)->error();
}
return redirect()->route('apps.app.show', $alias)->send();