Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
forbidals
/
gambling
/
app
/
Http
/
Controllers
/
Admin
:
SystemController.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Lib\CurlRequest; use App\Lib\FileManager; use App\Models\UpdateLog; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; use Laramin\Utility\VugiChugi; class SystemController extends Controller { public function systemInfo() { $laravelVersion = app()->version(); $timeZone = config('app.timezone'); $pageTitle = 'Application Information'; return view('admin.system.info', compact('pageTitle', 'laravelVersion', 'timeZone')); } public function optimize() { $pageTitle = 'Clear System Cache'; return view('admin.system.optimize', compact('pageTitle')); } public function optimizeClear() { Artisan::call('optimize:clear'); $notify[] = ['success', 'Cache cleared successfully']; return back()->withNotify($notify); } public function systemServerInfo() { $currentPHP = phpversion(); $pageTitle = 'Server Information'; $serverDetails = $_SERVER; return view('admin.system.server', compact('pageTitle', 'currentPHP', 'serverDetails')); } public function systemUpdate() { $pageTitle = 'System Updates'; return view('admin.system.update', compact('pageTitle')); } public function systemUpdateProcess() { if (gs('system_customized')) { return response()->json([ 'status' => 'error', 'message' => [ 'The system already customized. You can\'t update the project', ], ]); } if (version_compare(systemDetails()['version'], gs('available_version'), '==')) { return response()->json([ 'status' => 'info', 'message' => [ 'The system is currently up to date', ], ]); } if (!extension_loaded('zip')) { return response()->json([ 'status' => 'error', 'message' => [ 'Zip Extension is required to update the system', ], ]); } return response()->json([ 'status' => 'error', 'message' => ['Auto-update is disabled. Please update manually.'], ]); if ($response->remark == 'already_updated') { return response()->json([ 'status' => 'info', 'message' => $response->message->success, ]); } $directory = 'core/temp/'; $files = []; foreach ($response->data->files as $key => $fileUrl) { $opts = [ "http" => [ "method" => "GET", "header" => "Purchase-Code: $purchasecode", ], ]; $context = stream_context_create($opts); $fileContent = file_get_contents($fileUrl, false, $context); $data = json_decode($fileContent); if (isset($data->status) && $data->status == 'error') { return response()->json([ 'status' => 'error', 'message'=> isset($data->message->error) ? $data->message->error: null ]); } file_put_contents($directory . $key . '.zip', $fileContent); $files[$key] = $fileContent; } $fileNames = array_keys($files); foreach ($fileNames as $fileName) { $rand = Str::random(10); $dir = base_path('temp/' . $rand); $extract = $this->extractZip(base_path('temp/' . $fileName . '.zip'), $dir); if ($extract == false) { $this->removeDir($dir); return response()->json([ 'status' => 'error', 'message' => ['Something went wrong while extracting the update'], ]); } if (!file_exists($dir . '/config.json')) { $this->removeDir($dir); return response()->json([ 'status' => 'error', 'message' => ['Config file not found'], ]); } $getConfig = file_get_contents($dir . '/config.json'); $config = json_decode($getConfig); $this->removeFile($directory . '/' . $fileName . '.zip'); $mainFile = $dir . '/update.zip'; if (!file_exists($mainFile)) { $this->removeDir($dir); return response()->json([ 'status' => 'error', 'message' => ['Something went wrong while patching the update'], ]); } //move file $extract = $this->extractZip(base_path('temp/' . $rand . '/update.zip'), base_path('../')); if ($extract == false) { return response()->json([ 'status' => 'error', 'message' => ['Something went wrong while extracting the update'], ]); } //Execute database if (file_exists($dir . '/update.sql')) { $sql = file_get_contents($dir . '/update.sql'); DB::unprepared($sql); } $updateLog = new UpdateLog(); $updateLog->version = $config->version; $updateLog->update_log = $config->changes; $updateLog->save(); $this->removeDir($dir); } Artisan::call('optimize:clear'); return response()->json([ 'status' => 'success', 'message' => ['System updated successfully'], ]); } public function systemUpdateLog() { $pageTitle = 'System Update Log'; $updates = UpdateLog::orderBy('id', 'desc')->paginate(getPaginate()); return view('admin.system.update_log', compact('pageTitle', 'updates')); } protected function extractZip($file, $extractTo) { $zip = new \ZipArchive; $res = $zip->open($file); if ($res != true) { return false; } for ($i = 0; $i < $zip->numFiles; $i++) { if ($zip->getNameIndex($i) != '/' && $zip->getNameIndex($i) != '__MACOSX/_') { $zip->extractTo($extractTo, array($zip->getNameIndex($i))); } } $zip->close(); return true; } protected function removeFile($path) { $fileManager = new FileManager(); $fileManager->removeFile($path); } protected function removeDir($location) { $fileManager = new FileManager(); $fileManager->removeDirectory($location); } }