Browse Source

Add docblock on BackupsController class

pull/16/head
Nafies Luthfi 8 years ago
parent
commit
b4ab6f0623
  1. 71
      app/Http/Controllers/BackupsController.php

71
app/Http/Controllers/BackupsController.php

@ -2,16 +2,26 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Http\Requests\BackupUploadRequest;
use BackupManager\Filesystems\Destination;
use BackupManager\Manager; use BackupManager\Manager;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use League\Flysystem\FileExistsException; use League\Flysystem\FileExistsException;
use App\Http\Requests\BackupUploadRequest;
use BackupManager\Filesystems\Destination;
use League\Flysystem\FileNotFoundException; use League\Flysystem\FileNotFoundException;
/**
* Database Backups Controller.
*
* @author Nafies Luthfi <nafiesL@gmail.com>
*/
class BackupsController extends Controller class BackupsController extends Controller
{ {
/**
* List of backup files.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\View\View
*/
public function index(Request $request) public function index(Request $request)
{ {
if (!file_exists(storage_path('app/backup/db'))) { if (!file_exists(storage_path('app/backup/db'))) {
@ -20,18 +30,24 @@ class BackupsController extends Controller
$backups = \File::allFiles(storage_path('app/backup/db')); $backups = \File::allFiles(storage_path('app/backup/db'));
// Sort files by modified time DESC // Sort files by modified time DESC
usort($backups, function($a, $b) {
usort($backups, function ($a, $b) {
return -1 * strcmp($a->getMTime(), $b->getMTime()); return -1 * strcmp($a->getMTime(), $b->getMTime());
}); });
} }
return view('backups.index',compact('backups'));
return view('backups.index', compact('backups'));
} }
/**
* Create new backup file.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Routing\Redirector
*/
public function store(Request $request) public function store(Request $request)
{ {
$this->validate($request, [ $this->validate($request, [
'file_name' => 'nullable|max:30|regex:/^[\w._-]+$/'
'file_name' => 'nullable|max:30|regex:/^[\w._-]+$/',
]); ]);
try { try {
@ -39,8 +55,8 @@ class BackupsController extends Controller
$fileName = $request->get('file_name') ?: date('Y-m-d_Hi'); $fileName = $request->get('file_name') ?: date('Y-m-d_Hi');
$manager->makeBackup()->run('mysql', [ $manager->makeBackup()->run('mysql', [
new Destination('local', 'backup/db/' . $fileName)
], 'gzip');
new Destination('local', 'backup/db/'.$fileName),
], 'gzip');
return redirect()->route('backups.index'); return redirect()->route('backups.index');
} catch (FileExistsException $e) { } catch (FileExistsException $e) {
@ -48,38 +64,63 @@ class BackupsController extends Controller
} }
} }
/**
* Delete a backup file from storage.
*
* @param string $fileName
* @return \Illuminate\Routing\Redirector
*/
public function destroy($fileName) public function destroy($fileName)
{ {
if (file_exists(storage_path('app/backup/db/') . $fileName)) {
unlink(storage_path('app/backup/db/') . $fileName);
if (file_exists(storage_path('app/backup/db/').$fileName)) {
unlink(storage_path('app/backup/db/').$fileName);
} }
return redirect()->route('backups.index'); return redirect()->route('backups.index');
} }
/**
* Download a backup file.
*
* @param string $fileName
* @return \Symfony\Component\HttpFoundation\BinaryFileResponse
*/
public function download($fileName) public function download($fileName)
{ {
return response()->download(storage_path('app/backup/db/') . $fileName);
return response()->download(storage_path('app/backup/db/').$fileName);
} }
/**
* Restore database from a backup file.
*
* @param string $fileName
* @return \Illuminate\Routing\Redirector
*/
public function restore($fileName) public function restore($fileName)
{ {
try { try {
$manager = app()->make(Manager::class); $manager = app()->make(Manager::class);
$manager->makeRestore()->run('local', 'backup/db/' . $fileName, 'mysql', 'gzip');
} catch (FileNotFoundException $e) {}
$manager->makeRestore()->run('local', 'backup/db/'.$fileName, 'mysql', 'gzip');
} catch (FileNotFoundException $e) {
}
return redirect()->route('backups.index'); return redirect()->route('backups.index');
} }
/**
* Upload a backup file to the storage.
*
* @param \App\Http\Requests\BackupUploadRequest $request
* @return \Illuminate\Routing\Redirector
*/
public function upload(BackupUploadRequest $request) public function upload(BackupUploadRequest $request)
{ {
$file = $request->file('backup_file'); $file = $request->file('backup_file');
if (file_exists(storage_path('app/backup/db/') . $file->getClientOriginalName()) == false) {
if (file_exists(storage_path('app/backup/db/').$file->getClientOriginalName()) == false) {
$file->storeAs('backup/db', $file->getClientOriginalName()); $file->storeAs('backup/db', $file->getClientOriginalName());
} }
return redirect()->route('backups.index'); return redirect()->route('backups.index');
} }
} }
Loading…
Cancel
Save