public function getResources($record)
{
$databaseConnection = $this->getDatabaseConnection();
if (isset($record['t3ver_oid']) && (int) $record['t3ver_oid'] !== 0) {
$sqlRecordUid = $record['t3ver_oid'];
} else {
$sqlRecordUid = $record[$this->idField];
}
$fileReferences = [];
if (empty($GLOBALS['TSFE']->sys_page) === false) {
$fileReferences = $this->getFileReferences($this->getTable(), $this->getField(), $sqlRecordUid);
} else {
if ($GLOBALS['BE_USER']->workspaceRec['uid']) {
$versionWhere = 'AND sys_file_reference.deleted=0 AND (sys_file_reference.t3ver_wsid=0 OR ' . 'sys_file_reference.t3ver_wsid=' . $GLOBALS['BE_USER']->workspaceRec['uid'] . ') AND sys_file_reference.pid<>-1';
} else {
$versionWhere = 'AND sys_file_reference.deleted=0 AND sys_file_reference.t3ver_state<=0 AND ' . 'sys_file_reference.pid<>-1 AND sys_file_reference.hidden=0';
}
$references = $databaseConnection->exec_SELECTgetRows('uid', 'sys_file_reference', 'tablenames=' . $databaseConnection->fullQuoteStr($this->getTable(), 'sys_file_reference') . ' AND uid_foreign=' . (int) $sqlRecordUid . ' AND fieldname=' . $databaseConnection->fullQuoteStr($this->getField(), 'sys_file_reference') . $versionWhere, '', 'sorting_foreign', '', 'uid');
if (empty($references) === false) {
$referenceUids = array_keys($references);
$fileReferences = [];
if (empty($referenceUids) === false) {
foreach ($referenceUids as $referenceUid) {
try {
// Just passing the reference uid, the factory is doing workspace
// overlays automatically depending on the current environment
$fileReferences[] = $this->resourceFactory->getFileReferenceObject($referenceUid);
} catch (ResourceDoesNotExistException $exception) {
// No handling, just omit the invalid reference uid
continue;
}
}
}
}
}
$resources = [];
foreach ($fileReferences as $file) {
// Exclude workspace deleted files references
if ($file->getProperty('t3ver_state') !== VersionState::DELETE_PLACEHOLDER) {
$resources[] = $this->getResource($file);
}
}
return $resources;
}