silverstripe/gridfieldqueuedexport

Export large data sets from your GridField in the SilverStripe CMS interface through async jobs

Installs: 46 415

Dependents: 1

Suggesters: 6

Security: 0

Stars: 8

Watchers: 9

Forks: 14

Open Issues: 6

Type:silverstripe-vendormodule

2.3.0 2019-08-20 04:37 UTC

README

Build Status Scrutinizer Code Quality SilverStripe supported module Code Coverage

Introduction

Allows for large data set exports from a GridField. By using an asynchronous job queue, we avoid running out of PHP memory or exceeding any maximum execution time limits.

The exact limitations of a standard GridField export vary based on the server configuration, server capacity and the complexity of the exported DataObject. As a rough guide, you should consider using this module when more than 1000 records need to be exported. The module should be able to export 10,000 records on a standard server configuration within a few minutes.

Requirements

Note: For SilverStripe 3.x, please use the 1.x release line.

Installation

To install run composer require silverstripe/gridfieldqueuedexport.

Configuration

Since this component operates on a GridField, you can simply use it's addComponent() API.

$gridField = GridField::create('Pages', 'All pages', SiteTree::get())
$config = $gridField->getConfig();
$config->addComponent(GridFieldQueuedExportButton::create('buttons-after-left'));

If you want to replace the GridFieldExportButton created by the default GridField configuration, you also need to call removeComponentsByType().

// Find GridField
$gridField = $fields->fieldByName('MyGridField');
$config = $gridField->getConfig();

// Add new component
$oldExportButton = $config->getComponentByType(GridFieldExportButton::class);
$config->addComponent($newExportButton = GridFieldQueuedExportButton::create('buttons-after-left'));

// Set Header and Export columns on new Export Button
$newExportButton->setCsvHasHeader($oldExportButton->getCsvHasHeader()); 
$newExportButton->setExportColumns($oldExportButton->getExportColumns());

// Remove original component
$config->removeComponentsByType(GridFieldExportButton::class);

Note: This module is preconfigured to work with the silverstripe/userforms submission CSV export.

Related