Source of file SubsiteReportWrapper.php
Size: 2,383 Bytes - Last Modified: 2021-12-23T10:04:53+00:00
/var/www/docs.ssmods.com/process/src/code/Reports/SubsiteReportWrapper.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | <?php namespace AirNZ\SimpleSubsites\Reports; use SilverStripe\Forms\TreeMultiselectField; use SilverStripe\Forms\FieldList; use SilverStripe\Reports\ReportWrapper; use AirNZ\SimpleSubsites\Model\Subsite; /** * Creates a subsite-aware version of another report. * Pass another report (or its classname) into the constructor. */ class SubsiteReportWrapper extends ReportWrapper { /////////////////////////////////////////////////////////////////////////////////////////// // Filtering public function parameterFields() { $subsites = Subsite::accessible_sites('CMS_ACCESS_CMSMain', true); $options = $subsites->toDropdownMap('ID', 'Title'); $subsiteField = new TreeMultiselectField( 'Subsites', _t('SubsiteReportWrapper.ReportDropdown', 'Sites'), $options ); $subsiteField->setValue(array_keys($options)); // We don't need to make the field editable if only one subsite is available if (sizeof($options) <= 1) { $subsiteField = $subsiteField->performReadonlyTransformation(); } $fields = parent::parameterFields(); if ($fields) { $fields->insertBefore($subsiteField, $fields->First()->Name()); } else { $fields = new FieldList($subsiteField); } return $fields; } /////////////////////////////////////////////////////////////////////////////////////////// // Columns public function columns() { $columns = parent::columns(); $columns['Subsite.Title'] = Subsite::class; return $columns; } /////////////////////////////////////////////////////////////////////////////////////////// // Querying public function beforeQuery($params) { // The user has select a few specific sites if (!empty($params['Subsites'])) { Subsite::$force_subsite = $params['Subsites']; // Default: restrict to all accessible sites } else { $subsites = Subsite::accessible_sites('CMS_ACCESS_CMSMain'); $options = $subsites->toDropdownMap('ID', 'Title'); Subsite::$force_subsite = join(',', array_keys($options)); } } public function afterQuery() { // Manually manage the subsite filtering Subsite::$force_subsite = null; } } |