first(); return view('update_file.index', compact('update')); } public function log(){ $data = SystemUpdate::orderBy('id', 'desc')->get(); return view('update_file.log', compact('data')); } public function setVersion(Request $request){ $versao = $request->versao; $system = SystemUpdate::where('versao', $versao)->first(); if($system == null){ SystemUpdate::create(['versao' => $versao]); } return redirect()->back(); } public function store(Request $request){ $raiz = public_path(); $raiz = substr($raiz, 0, strlen($raiz)-7); if (!is_dir("$raiz/temp-files")){ mkdir("$raiz/temp-files", 0777, true); } $logMessage = []; $zip = new \ZipArchive(); if ($zip->open($request->file) === TRUE) { $zip->extractTo("$raiz/temp-files"); $zip->close(); array_push($logMessage, "Arquivo zip extraido em /temp-files"); }else{ echo "Erro ao extrair arquivo"; die; } if(is_file("$raiz/temp-files/new_tables_api.sql")){ $lines = file_get_contents("$raiz/temp-files/new_tables_api.sql"); $lines = explode(";", $lines); foreach($lines as $sql){ if(trim($sql)){ try{ \DB::unprepared("$sql;"); array_push($logMessage, "Comando SQL executado $sql;"); }catch(\Exception $e){ // array_push($logMessage, "Erro ao inserir tabela: " . $e->getMessage() . " - ISSO NÃO AFETA A ATUALIZAÇÃO"); } } } } if(is_file("$raiz/temp-files/comand_api.sql")){ $lines = file_get_contents("$raiz/temp-files/comand_api.sql"); $lines = explode(";", $lines); foreach($lines as $sql){ if(trim($sql)){ try{ \DB::unprepared("$sql;"); array_push($logMessage, "Comando SQL executado $sql;"); }catch(\Exception $e){ // array_push($logMessage, "Erro ao executar SQL: " . $e->getMessage() . " - ISSO NÃO AFETA A ATUALIZAÇÃO"); } } } } $dir = "$raiz/temp-files"; $directories = array_diff(scandir($dir), array('..', '.')); foreach($directories as $dir){ $source = "$raiz/temp-files/$dir"; $map = $this->mapDiretories($dir); if($map != ""){ $destiny = "$raiz$map"; // echo $source . "
"; array_push($logMessage, "Alteração de diretório $source"); // echo $destiny . "
"; shell_exec("cp -r $source $destiny"); } } sleep(1); if(is_file("$raiz/temp-files/versao.txt")){ $versao = file_get_contents("$raiz/temp-files/versao.txt"); $versao = explode("=", $versao); $versao = isset($versao[1]) ? $versao[1] : ""; $system = SystemUpdate::where('versao', $versao)->first(); if($system == null){ SystemUpdate::create(['versao' => $versao]); } } $this->unlinkr("$raiz/temp-files"); session()->flash('mensagem_sucesso', "Sua aplicação foi atualizada!!"); return view('update_file.finish', compact('logMessage')); } private function mapDiretories($dir){ $mapsDiretories = [ 'app' => '/', 'routes' => '/', 'database' => '/', 'resources' => '/', // 'vendor' => '/', 'config' => '/', 'js' => '/public', 'css' => '/public', 'imgs' => '/public', 'delivery' => '/public', 'food-files' => '/public', ]; return isset($mapsDiretories[$dir]) ? $mapsDiretories[$dir] : ""; } function unlinkr($dir) { $files = array_diff(scandir($dir), array('.', '..')); foreach ($files as $file) { (is_dir("$dir/$file")) ? $this->unlinkr("$dir/$file") : unlink("$dir/$file"); } return rmdir($dir); } }