shuvroroy / filament-spatie-laravel-backup
This plugin is built on top of Spatie's Laravel-backup package
Fund package maintenance!
shuvroroy
Installs: 118 044
Dependents: 7
Suggesters: 0
Security: 0
Stars: 194
Watchers: 5
Forks: 42
Open Issues: 10
Requires
- php: ^8.1
- calebporzio/sushi: ^2.4
- filament/filament: ^3.0
- spatie/laravel-backup: ^8.0|^9.0
- spatie/laravel-package-tools: ^1.15
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
README
This package provides a Filament page that you can create backup of your application. You'll find installation instructions and full documentation on spatie/laravel-backup.
Support For This Project
Installation
You can install the package via composer:
composer require shuvroroy/filament-spatie-laravel-backup
Publish the package's assets:
php artisan filament:assets
You can publish the lang file with:
php artisan vendor:publish --tag="filament-spatie-backup-translations"
Usage
You first need to register the plugin with Filament. This can be done inside of your PanelProvider
, e.g. AdminPanelProvider
.
<?php namespace App\Providers\Filament; use Filament\Panel; use Filament\PanelProvider; use ShuvroRoy\FilamentSpatieLaravelBackup\FilamentSpatieLaravelBackupPlugin; class AdminPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel // ... ->plugin(FilamentSpatieLaravelBackupPlugin::make()); } }
If you want to override the default Backups
page icon, heading then you can extend the page class and override the navigationIcon
property and getHeading
method and so on.
<?php namespace App\Filament\Pages; use ShuvroRoy\FilamentSpatieLaravelBackup\Pages\Backups as BaseBackups; class Backups extends BaseBackups { protected static ?string $navigationIcon = 'heroicon-o-cpu-chip'; public function getHeading(): string | Htmlable { return 'Application Backups'; } public static function getNavigationGroup(): ?string { return 'Core'; } }
Then register the extended page class on AdminPanelProvider
class.
<?php namespace App\Providers\Filament; use Filament\Panel; use Filament\PanelProvider; use App\Filament\Pages\Backups; use ShuvroRoy\FilamentSpatieLaravelBackup\FilamentSpatieLaravelBackupPlugin; class AdminPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel // ... ->plugin( FilamentSpatieLaravelBackupPlugin::make() ->usingPage(Backups::class) ); } }
Customising the polling interval
You can customise the polling interval for the Backups
by following the steps below:
<?php namespace App\Providers\Filament; use Filament\Panel; use Filament\PanelProvider; use ShuvroRoy\FilamentSpatieLaravelBackup\FilamentSpatieLaravelBackupPlugin; class AdminPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel // ... ->plugin( FilamentSpatieLaravelBackupPlugin::make() ->usingPolingInterval('10s') // default value is 4s ); } }
Customising the queue
You can customise the queue name for the Backups
by following the steps below:
<?php namespace App\Providers\Filament; use Filament\Panel; use Filament\PanelProvider; use ShuvroRoy\FilamentSpatieLaravelBackup\FilamentSpatieLaravelBackupPlugin; class AdminPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel // ... ->plugin( FilamentSpatieLaravelBackupPlugin::make() ->usingQueue('my-queue') // default value is null ); } }
Customising the timeout
You can customise the timeout for the backup job by following the steps below:
<?php namespace App\Providers\Filament; use Filament\Panel; use Filament\PanelProvider; use ShuvroRoy\FilamentSpatieLaravelBackup\FilamentSpatieLaravelBackupPlugin; class AdminPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel // ... ->plugin( FilamentSpatieLaravelBackupPlugin::make() ->timeout(120) // default value is max_execution_time from php.ini, or 30s if it wasn't defined ); } }
For more details refer to the set_time_limit function.
You can also disable the timeout altogether to let the job run as long as needed:
<?php namespace App\Providers\Filament; use Filament\Panel; use Filament\PanelProvider; use ShuvroRoy\FilamentSpatieLaravelBackup\FilamentSpatieLaravelBackupPlugin; class AdminPanelProvider extends PanelProvider { public function panel(Panel $panel): Panel { return $panel // ... ->plugin( FilamentSpatieLaravelBackupPlugin::make() ->noTimeout() ); } }
Upgrading
Please see UPGRADE for details on how to upgrade 1.X to 2.0.
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.