Source of file GridFieldEagerLoadManipulator.php
Size: 1,911 Bytes - Last Modified: 2021-12-24T06:50:30+00:00
/var/www/docs.ssmods.com/process/src/src/GridFieldEagerLoadManipulator.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | <?php namespace Gurucomkz\EagerLoading; use SilverStripe\Core\Config\Config; use SilverStripe\Forms\GridField\GridField; use SilverStripe\Forms\GridField\GridField_DataManipulator; use SilverStripe\ORM\DataList; use SilverStripe\ORM\SS_List; /** * Adds support for $eager_loading config on the gridfields. * Usage: * class MyModelAdmin extends ModelAdmin { * protected function getGridFieldConfig(): GridFieldConfig * { * $config->addComponent(new GridFieldLazyLoadManipulator()); * } * } */ class GridFieldEagerLoadManipulator implements GridField_DataManipulator { /** * Manipulate the {@link SS_List} as needed by this grid modifier. * * @param GridField $gridField * @param SS_List $dataList * @return SS_List */ public function getManipulatedData(GridField $gridField, SS_List $dataList) { /** @var DataList $dataList */ $class = $dataList->dataClass(); $config = Config::forClass($class); $vars = $gridField->getForm()->getController()->getRequest()->requestVars(); $eager = $config->get('eager_loading'); $exportString = _t('SilverStripe\\Forms\\GridField\\GridField.CSVEXPORT', 'Export to CSV'); if (in_array($exportString, $vars)) { $export_fields = $config->get('export_fields'); if ($export_fields) { foreach ($export_fields as $field => $_title) { $parts = explode('.', $field); if (count($parts) < 2) { continue; } $main = implode('.', array_slice($parts, 0, -1)); if (!in_array($main, $eager)) { $eager[] = $main; } } } } if ($eager) { return $dataList->with($eager); } return $dataList; } } |