Skip to content

Commit 71d60b0

Browse files
authored
Merge pull request #338 from creative-commoners/pulls/3/php81
ENH PHP 8.1 compatibility
2 parents ec93c99 + 93e4379 commit 71d60b0

11 files changed

Lines changed: 39 additions & 39 deletions

src/Extensions/GridFieldDetailFormItemRequestExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ private function getHTMLFragment(GridFieldAddNewMultiClass $component)
4747

4848
$classes = $component->getClasses($grid);
4949

50-
if (!count($classes)) {
50+
if (!count($classes ?? [])) {
5151
return false;
5252
}
5353

src/GridFieldAddNewInlineButton.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public function getHTMLFragments($grid)
118118
private function getRowTemplate(GridField $grid, GridFieldEditableColumns $editable)
119119
{
120120
$columns = ArrayList::create();
121-
$handled = array_keys($editable->getDisplayFields($grid));
121+
$handled = array_keys($editable->getDisplayFields($grid) ?? []);
122122

123123
if ($grid->getList()) {
124124
$record = Injector::inst()->create($grid->getModelClass());
@@ -129,7 +129,7 @@ private function getRowTemplate(GridField $grid, GridFieldEditableColumns $edita
129129
$fields = $editable->getFields($grid, $record);
130130

131131
foreach ($grid->getColumns() as $column) {
132-
if (in_array($column, $handled)) {
132+
if (in_array($column, $handled ?? [])) {
133133
$field = $fields->dataFieldByName($column);
134134
$field->setName(sprintf(
135135
'%s[%s][{%%=o.num%%}][%s]',
@@ -149,7 +149,7 @@ private function getRowTemplate(GridField $grid, GridFieldEditableColumns $edita
149149
$content = str_replace(
150150
sprintf('[%s][0]', GridFieldEditableColumns::POST_KEY),
151151
sprintf('[%s][{%%=o.num%%}]', self::POST_KEY),
152-
$content
152+
$content ?? ''
153153
);
154154
}
155155

@@ -215,7 +215,7 @@ public function handleSave(GridField $grid, DataObjectInterface $record)
215215
}
216216

217217
if ($list instanceof ManyManyList) {
218-
$extra = array_intersect_key($form->getData(), (array) $list->getExtraFields());
218+
$extra = array_intersect_key($form->getData() ?? [], (array) $list->getExtraFields());
219219
}
220220

221221
$item->write(false, false, false, true);

src/GridFieldAddNewMultiClass.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public function getClasses(GridField $grid)
124124
$result = array();
125125

126126
if (is_null($this->classes)) {
127-
$classes = array_values(ClassInfo::subclassesFor($grid->getModelClass()));
127+
$classes = array_values(ClassInfo::subclassesFor($grid->getModelClass()) ?? []);
128128
sort($classes);
129129
} else {
130130
$classes = $this->classes;
@@ -135,7 +135,7 @@ public function getClasses(GridField $grid)
135135
if (!is_string($class)) {
136136
$class = $title;
137137
}
138-
if (!class_exists($class)) {
138+
if (!class_exists($class ?? '')) {
139139
continue;
140140
}
141141
$is_abstract = (($reflection = new ReflectionClass($class)) && $reflection->isAbstract());
@@ -216,7 +216,7 @@ public function handleAdd($grid, $request)
216216
throw new Exception('The add new multi class component requires the detail form component.');
217217
}
218218

219-
if (!$class || !array_key_exists($class, $classes)) {
219+
if (!$class || !array_key_exists($class, $classes ?? [])) {
220220
throw new HTTPResponse_Exception(400);
221221
}
222222

@@ -241,7 +241,7 @@ public function getHTMLFragments($grid)
241241
{
242242
$classes = $this->getClasses($grid);
243243

244-
if (!count($classes)) {
244+
if (!count($classes ?? [])) {
245245
return array();
246246
}
247247

@@ -293,7 +293,7 @@ public function setItemRequestClass($class)
293293
*/
294294
protected function sanitiseClassName($class)
295295
{
296-
return str_replace('\\', '-', $class);
296+
return str_replace('\\', '-', $class ?? '');
297297
}
298298

299299
/**
@@ -304,6 +304,6 @@ protected function sanitiseClassName($class)
304304
*/
305305
protected function unsanitiseClassName($class)
306306
{
307-
return str_replace('-', '\\', $class);
307+
return str_replace('-', '\\', $class ?? '');
308308
}
309309
}

src/GridFieldAddNewMultiClassHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@ public function Link($action = null)
3131
*/
3232
protected function sanitiseClassName($class)
3333
{
34-
return str_replace('\\', '-', $class);
34+
return str_replace('\\', '-', $class ?? '');
3535
}
3636
}

src/GridFieldConfigurablePaginator.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ public function setPageSizes(array $pageSizes)
171171
$this->pageSizes = $pageSizes;
172172

173173
// Reset items per page
174-
$this->setItemsPerPage(current($pageSizes));
174+
$this->setItemsPerPage(current($pageSizes ?? []));
175175

176176
return $this;
177177
}
@@ -356,7 +356,7 @@ public function getHTMLFragments($gridField)
356356
return array(
357357
'footer' => $forTemplate->renderWith(
358358
__CLASS__,
359-
array('Colspan' => count($gridField->getColumns()))
359+
array('Colspan' => count($gridField->getColumns() ?? []))
360360
)
361361
);
362362
}

src/GridFieldEditableColumns.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public function getColumnContent($grid, $record, $col)
6161
if (!$this->displayFields) {
6262
// If setDisplayFields() not used, utilize $summary_fields
6363
// in a way similar to base class
64-
$colRelation = explode('.', $col);
64+
$colRelation = explode('.', $col ?? '');
6565
$value = $grid->getDataFieldValue($record, $colRelation[0]);
6666
$field = $fields->fieldByName($colRelation[0]);
6767
if (!$field || $field->isReadonly() || $field->isDisabled()) {
@@ -82,7 +82,7 @@ public function getColumnContent($grid, $record, $col)
8282

8383
// Fall back to previous logic
8484
if (!$field) {
85-
$rel = (strpos($col, '.') === false); // field references a relation value
85+
$rel = (strpos($col ?? '', '.') === false); // field references a relation value
8686
$field = ($rel) ? clone $fields->fieldByName($col) : ReadonlyField::create($col);
8787
}
8888

@@ -91,7 +91,7 @@ public function getColumnContent($grid, $record, $col)
9191
}
9292
}
9393

94-
if (array_key_exists($col, $this->fieldCasting)) {
94+
if (array_key_exists($col, $this->fieldCasting ?? [])) {
9595
$value = $grid->getCastedValue($value, $this->fieldCasting[$col]);
9696
}
9797

@@ -157,7 +157,7 @@ public function handleSave(GridField $grid, DataObjectInterface $record)
157157
}
158158

159159
if ($list instanceof ManyManyList) {
160-
$extra = array_intersect_key($form->getData(), (array) $list->getExtraFields());
160+
$extra = array_intersect_key($form->getData() ?? [], (array) $list->getExtraFields());
161161
}
162162

163163
$item->write(false, false, false, true);
@@ -244,7 +244,7 @@ public function getFields(GridField $grid, DataObjectInterface $record)
244244
if (!$field && $list instanceof ManyManyList) {
245245
$extra = $list->getExtraFields();
246246

247-
if ($extra && array_key_exists($col, $extra)) {
247+
if ($extra && array_key_exists($col, $extra ?? [])) {
248248
$field = Injector::inst()->create($extra[$col], $col)->scaffoldFormField();
249249
}
250250
}
@@ -259,7 +259,7 @@ public function getFields(GridField $grid, DataObjectInterface $record)
259259
// revert to looking good in cases where the field isn't
260260
// available or is readonly
261261
//
262-
$colRelation = explode('.', $col);
262+
$colRelation = explode('.', $col ?? '');
263263
if ($class && $obj = DataObject::singleton($class)->dbObject($colRelation[0])) {
264264
$field = $obj->scaffoldFormField();
265265
} else {

src/GridFieldExternalLink.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class GridFieldExternalLink extends GridFieldDataColumns
1919
*/
2020
public function augmentColumns($gridField, &$columns)
2121
{
22-
if (!in_array('Actions', $columns)) {
22+
if (!in_array('Actions', $columns ?? [])) {
2323
$columns[] = 'Actions';
2424
}
2525
}

src/GridFieldOrderableRows.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ public function validateSortField(SS_List $list)
205205
if ($list instanceof ManyManyList) {
206206
$extra = $list->getExtraFields();
207207

208-
if ($extra && array_key_exists($field, $extra)) {
208+
if ($extra && array_key_exists($field, $extra ?? [])) {
209209
return;
210210
}
211211
} elseif ($list instanceof ManyManyThroughList) {
@@ -239,7 +239,7 @@ public function getSortTable(SS_List $list)
239239
if ($list instanceof ManyManyList) {
240240
$extra = $list->getExtraFields();
241241
$table = $list->getJoinTable();
242-
if ($extra && array_key_exists($field, $extra)) {
242+
if ($extra && array_key_exists($field, $extra ?? [])) {
243243
return $table;
244244
}
245245
} elseif ($list instanceof ManyManyThroughList) {
@@ -277,8 +277,8 @@ public function getHTMLFragments($field)
277277

278278
public function augmentColumns($grid, &$cols)
279279
{
280-
if (!in_array('Reorder', $cols) && $grid->getState()->GridFieldOrderableRows->enabled) {
281-
array_splice($cols, $this->reorderColumnNumber, 0, 'Reorder');
280+
if (!in_array('Reorder', $cols ?? []) && $grid->getState()->GridFieldOrderableRows->enabled) {
281+
array_splice($cols, $this->reorderColumnNumber ?? 0, 0, 'Reorder');
282282
}
283283
}
284284

@@ -308,7 +308,7 @@ public function getColumnContent($grid, $record, $col)
308308
// if it exists, not directly from the record
309309
$throughListSorts = $this->getSortValuesFromManyManyThroughList($list, $this->getSortField());
310310

311-
if (array_key_exists($record->ID, $throughListSorts)) {
311+
if (array_key_exists($record->ID, $throughListSorts ?? [])) {
312312
$currentSortValue = $throughListSorts[$record->ID];
313313
}
314314
}
@@ -408,8 +408,8 @@ public function handleReorder($grid, $request)
408408

409409
// Get records from the `GridFieldEditableColumns` column
410410
$gridFieldName = $grid->getName();
411-
if (strpos($gridFieldName, '.') !== false) {
412-
$gridFieldName = str_replace('.', '_', $gridFieldName);
411+
if (strpos($gridFieldName ?? '', '.') !== false) {
412+
$gridFieldName = str_replace('.', '_', $gridFieldName ?? '');
413413
}
414414

415415
$data = $request->postVar($gridFieldName);
@@ -549,7 +549,7 @@ protected function executeReorder(GridField $grid, $sortedIDs)
549549
$items = $list->filter('ID', $sortedIDs)->sort($sortterm);
550550

551551
// Ensure that each provided ID corresponded to an actual object.
552-
if (count($items) != count($sortedIDs)) {
552+
if (count($items ?? []) != count($sortedIDs ?? [])) {
553553
return false;
554554
}
555555

@@ -720,7 +720,7 @@ protected function populateSortValues(DataList $list)
720720
protected function getSortTableClauseForIds(DataList $list, $ids)
721721
{
722722
if (is_array($ids)) {
723-
$value = 'IN (' . implode(', ', array_map('intval', $ids)) . ')';
723+
$value = 'IN (' . implode(', ', array_map('intval', $ids ?? [])) . ')';
724724
} else {
725725
$value = '= ' . (int) $ids;
726726
}
@@ -734,7 +734,7 @@ protected function getSortTableClauseForIds(DataList $list, $ids)
734734
$foreignKey = $this->getManyManyInspectorForeignKey($introspector);
735735
$foreignID = (int) $list->getForeignID();
736736

737-
if ($extra && array_key_exists($this->getSortField(), $extra)) {
737+
if ($extra && array_key_exists($this->getSortField(), $extra ?? [])) {
738738
return sprintf(
739739
'"%s" %s AND "%s" = %d',
740740
$key,

tests/GridFieldOrderableRowsTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public function testReorderItems($fixtureID, $relationName, $sortName)
6969
$config = new GridFieldConfig_RelationEditor();
7070
$config->addComponent($orderable);
7171

72-
list($parentClass, $parentInstanceID) = explode('.', $fixtureID);
72+
list($parentClass, $parentInstanceID) = explode('.', $fixtureID ?? '');
7373
$parent = $this->objFromFixture($parentClass, $parentInstanceID);
7474

7575
$grid = new GridField(
@@ -83,7 +83,7 @@ public function testReorderItems($fixtureID, $relationName, $sortName)
8383
$desiredOrder = [];
8484

8585
// Make order non-contiguous, and 1-based
86-
foreach (array_reverse($originalOrder) as $index => $id) {
86+
foreach (array_reverse($originalOrder ?? []) as $index => $id) {
8787
$desiredOrder[$index * 2 + 1] = $id;
8888
}
8989

@@ -183,7 +183,7 @@ public function testSortableChildClass()
183183
);
184184

185185
$originalOrder = $parent->Children()->column('ID');
186-
$desiredOrder = array_reverse($originalOrder);
186+
$desiredOrder = array_reverse($originalOrder ?? []);
187187

188188
$this->assertNotEquals($originalOrder, $desiredOrder);
189189

@@ -270,7 +270,7 @@ public function testReorderItemsSubclassVersioned()
270270
$desiredOrder = [];
271271

272272
// Make order non-contiguous, and 1-based
273-
foreach (array_reverse($originalOrder) as $index => $id) {
273+
foreach (array_reverse($originalOrder ?? []) as $index => $id) {
274274
$desiredOrder[$index * 2 + 1] = $id;
275275
}
276276

tests/OrderableRowsThroughVersionedTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,11 @@ public function testReorderingSavesAndPublishes()
8080
$originalOrder = $parent->$relationName()->sort($sortName)->column('ID');
8181
// Ring (un)shift by one, e.g. 3,2,1 becomes 1,3,2.
8282
// then string key our new order starting at 1
83-
$desiredOrder = array_values($originalOrder);
83+
$desiredOrder = array_values($originalOrder ?? []);
8484
array_unshift($desiredOrder, array_pop($desiredOrder));
8585
$desiredOrder = array_combine(
86-
range('1', count($desiredOrder)),
87-
$desiredOrder
86+
range('1', count($desiredOrder ?? [])),
87+
$desiredOrder ?? []
8888
);
8989
$this->assertNotEquals($originalOrder, $desiredOrder);
9090

0 commit comments

Comments
 (0)