Skip to content

Commit

Permalink
[BUGFIX] Undefined array keys issues
Browse files Browse the repository at this point in the history
  • Loading branch information
DigitalZombies committed Apr 10, 2024
1 parent 924b438 commit c0b9be2
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 43 deletions.
86 changes: 44 additions & 42 deletions local_packages/success/Classes/Content/RecordEnricher.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,52 +49,54 @@ public function createResolvedRecordFromRecord(Record $record): ResolvedRecord

foreach ($record->toArray() as $fieldName => $fieldValue) {
$fieldConfiguration = $this->recordFactory->getFinalFieldConfiguration($fieldName, $tcaSchema, $subSchemaConfig);
switch ($fieldConfiguration['config']['type']) {
case 'file':
/** @var FileCollector $fileCollector */
$fileCollector = GeneralUtility::makeInstance(FileCollector::class);
$fileCollector->addFilesFromRelation($mainType, $fieldName, $record->getRawRecord()->toArray());
$resolvedProperties[$fieldName] = $fileCollector->getFiles();
if ((int)($fieldConfiguration['config']['maxitems'] ?? 0) === 1) {
$resolvedProperties[$fieldName] = reset($resolvedProperties[$fieldName]);
}
break;
case 'inline':
case 'select':
if (!isset($fieldConfiguration['config']['foreign_table']) || !isset($fieldConfiguration['config']['foreign_field'])) {
if (isset($fieldConfiguration['config'])) {
switch ($fieldConfiguration['config']['type']) {
case 'file':
/** @var FileCollector $fileCollector */
$fileCollector = GeneralUtility::makeInstance(FileCollector::class);
$fileCollector->addFilesFromRelation($mainType, $fieldName, $record->getRawRecord()->toArray());
$resolvedProperties[$fieldName] = $fileCollector->getFiles();
if ((int)($fieldConfiguration['config']['maxitems'] ?? 0) === 1) {
$resolvedProperties[$fieldName] = reset($resolvedProperties[$fieldName]);
}
break;
}
$selectConfiguration = [
'where' => $fieldConfiguration['config']['foreign_field'] . '=' . (int)$record->getRawUid(),
];
if (isset($GLOBALS['TCA'][$fieldConfiguration['config']['foreign_table']]['ctrl']['sortby'])) {
$selectConfiguration[$fieldName]['config']['sortBy'] = $GLOBALS['TCA'][$fieldConfiguration['config']['foreign_table']]['ctrl']['sortby'];
} elseif (isset($GLOBALS['TCA'][$fieldConfiguration['config']['foreign_table']]['ctrl']['default_sortby'])) {
$selectConfiguration[$fieldName]['config']['sortBy'] = $GLOBALS['TCA'][$fieldConfiguration['config']['foreign_table']]['ctrl']['default_sortby'];
}
case 'inline':
case 'select':
if (!isset($fieldConfiguration['config']['foreign_table']) || !isset($fieldConfiguration['config']['foreign_field'])) {
break;
}
$selectConfiguration = [
'where' => $fieldConfiguration['config']['foreign_field'] . '=' . (int)$record->getRawUid(),
];
if (isset($GLOBALS['TCA'][$fieldConfiguration['config']['foreign_table']]['ctrl']['sortby'])) {
$selectConfiguration[$fieldName]['config']['sortBy'] = $GLOBALS['TCA'][$fieldConfiguration['config']['foreign_table']]['ctrl']['sortby'];
} elseif (isset($GLOBALS['TCA'][$fieldConfiguration['config']['foreign_table']]['ctrl']['default_sortby'])) {
$selectConfiguration[$fieldName]['config']['sortBy'] = $GLOBALS['TCA'][$fieldConfiguration['config']['foreign_table']]['ctrl']['default_sortby'];
}

$cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class);
$cObj->start($record->getRawRecord()->toArray(), $record->getMainType());
$recordFactory = new RecordFactory();
$subRecords = GeneralUtility::makeInstance(RecordCollector::class, $recordFactory)->collect(
$fieldConfiguration['config']['foreign_table'],
$selectConfiguration,
ContentSlideMode::None,
$cObj
);
/** @var Record $subRecord */
foreach ($subRecords as $subRecord) {
$resolvedProperties[$fieldName][] = $this->createResolvedRecordFromRecord($subRecord)->toArray(true);
}
$cObj = GeneralUtility::makeInstance(ContentObjectRenderer::class);
$cObj->start($record->getRawRecord()->toArray(), $record->getMainType());
$recordFactory = new RecordFactory();
$subRecords = GeneralUtility::makeInstance(RecordCollector::class, $recordFactory)->collect(
$fieldConfiguration['config']['foreign_table'],
$selectConfiguration,
ContentSlideMode::None,
$cObj
);
/** @var Record $subRecord */
foreach ($subRecords as $subRecord) {
$resolvedProperties[$fieldName][] = $this->createResolvedRecordFromRecord($subRecord)->toArray(true);
}

if ((int)($fieldConfiguration['config']['maxitems'] ?? 0) === 1) {
$resolvedProperties[$fieldName] = reset($resolvedProperties[$fieldName]);
}
if ((int)($fieldConfiguration['config']['maxitems'] ?? 0) === 1) {
$resolvedProperties[$fieldName] = reset($resolvedProperties[$fieldName]);
}

break;
case 'flex':
$resolvedProperties[$fieldName] = GeneralUtility::makeInstance(FlexFormService::class)->convertFlexFormContentToArray($fieldValue);
break;
break;
case 'flex':
$resolvedProperties[$fieldName] = GeneralUtility::makeInstance(FlexFormService::class)->convertFlexFormContentToArray($fieldValue);
break;
}
}
}
return new ResolvedRecord($record, $resolvedProperties);
Expand Down
3 changes: 2 additions & 1 deletion local_packages/success/Classes/Domain/RawRecord.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ public function getFullType(): string

public function getType(): string
{
return GeneralUtility::revExplode('.', $this->type, 2)[1] ?: '';
return count(GeneralUtility::revExplode('.', $this->type, 2)) == 1
? GeneralUtility::revExplode('.', $this->type, 2)[1] : '';
}

public function toArray(): array
Expand Down

0 comments on commit c0b9be2

Please sign in to comment.