PHP code example of blendbyte / filament-resource-lock
1. Go to this page and download the library: Download blendbyte/filament-resource-lock library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
blendbyte / filament-resource-lock example snippets
use Blendbyte\FilamentResourceLock\ResourceLockPlugin;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugin(ResourceLockPlugin::make());
}
use Blendbyte\FilamentResourceLock\Models\Concerns\HasLocks;
class Post extends Model
{
use HasFactory;
use HasLocks;
}
use Blendbyte\FilamentResourceLock\Resources\Pages\Concerns\UsesResourceLock;
class EditPost extends EditRecord
{
use UsesResourceLock;
protected static string $resource = PostResource::class;
}
use Blendbyte\FilamentResourceLock\Resources\Pages\Concerns\UsesSimpleResourceLock;
class ManagePosts extends ManageRecords
{
use UsesSimpleResourceLock;
protected static string $resource = PostResource::class;
}
use Blendbyte\FilamentResourceLock\Resources\Pages\Concerns\UsesRelationManagerResourceLock;
class PostCommentsRelationManager extends RelationManager
{
use UsesRelationManagerResourceLock;
protected static string $relationship = 'comments';
}
use Blendbyte\FilamentResourceLock\Tables\Columns\ResourceLockColumn;
public static function table(Table $table): Table
{
return $table
->columns([
ResourceLockColumn::make(),
// other columns...
]);
}
use Blendbyte\FilamentResourceLock\Resources\Pages\Concerns\WithResourceLockIndicator;
class ListPosts extends ListRecords
{
use WithResourceLockIndicator;
protected static string $resource = PostResource::class;
}
use Blendbyte\FilamentResourceLock\Events\ResourceLocked;
use Blendbyte\FilamentResourceLock\Events\ResourceUnlocked;
use Blendbyte\FilamentResourceLock\Events\ResourceLockForceUnlocked;
Event::listen(ResourceLocked::class, function (ResourceLocked $event) {
// $event->lockable — the model that was locked
// $event->userId — the user who acquired the lock
});
use Blendbyte\FilamentResourceLock\Models\Concerns\HasLocks;
class Post extends Model
{
use HasLocks;
protected int $lockTimeout = 30; // seconds, overrides the global default
}
namespace App\Actions;
use Blendbyte\FilamentResourceLock\Actions\GetResourceLockOwnerAction;
class CustomResourceLockOwnerAction extends GetResourceLockOwnerAction
{
public function execute($userModel): string|null
{
return $userModel->email;
}
}
// app/Console/Kernel.php (or a ServiceProvider using Schedule)
$schedule->command('filament-resource-lock:clear-expired --force')->everyThirtyMinutes();