dnadesign/gridfield-bulk-delete

A GridField component allowing to delete records in bulk

Installs: 2 316

Dependents: 1

Suggesters: 0

Security: 0

Stars: 1

Watchers: 4

Forks: 5

Open Issues: 0

Type:silverstripe-vendormodule

1.3 2023-12-12 21:26 UTC

This package is auto-updated.

Last update: 2024-12-12 23:55:14 UTC


README

Introduction

Add a GridFieldBulkDeleteForm component to a gridfield config to add an option to delete the records within that list. By default, it allows to delete every records in the list. If there is more than 50 records (can be configured) and if QueuedJobs are available, a ququedjob will be created to process the deletion. The component can be configured to allow deleting records older than a certain period of time (eg: older tha 30 days).

Requirements

Install

composer require dnadesign/gridfield-bulk-delete ^1

NOTE: for SS3, use version 0.2

Configuration

Add to gridfield config

$config->addComponent(new GridFieldBulkDeleteForm('buttons-after-right'));

Optionally, pass the number of records above which a queuedjob should be used (Defaults is 50).

$config->addComponent(new GridFieldBulkDeleteForm('buttons-after-right', 100));

Use queued jobs

In your mysite/_config/config.yml file:

GridFieldBulkDeleteForm:
  use_queued_threshold: 100

NOTE: Set the value to 0 or -1 to never use queued jobs.

Enable time interval

In your mysite/_config/config.yml file:

GridFieldBulkDeleteForm:
  delete_up_to:
    '30 days' : 'Delete records created over a month ago (%s)'

NOTE: Value must be valid for use with DateTime modify(). Also, supply a label for sprintf() where the number of record affected will be supplied as param.

Next improvments:

  • Delete the records in chunks instead of one big Job that will run out of memory