/** * Entry method for use as TCEMain "inline" field filter * * @param array $parameters * @param \TYPO3\CMS\Core\DataHandling\DataHandler $tceMain * @return array */ public function filterInlineChildren(array $parameters, \TYPO3\CMS\Core\DataHandling\DataHandler $tceMain) { $values = $parameters['values']; if ($parameters['allowedFileExtensions']) { $this->setAllowedFileExtensions($parameters['allowedFileExtensions']); } if ($parameters['disallowedFileExtensions']) { $this->setDisallowedFileExtensions($parameters['disallowedFileExtensions']); } $cleanValues = array(); if (is_array($values)) { foreach ($values as $value) { if (empty($value)) { continue; } $parts = \TYPO3\CMS\Core\Utility\GeneralUtility::revExplode('_', $value, 2); $fileReferenceUid = $parts[count($parts) - 1]; $fileReference = \TYPO3\CMS\Core\Resource\ResourceFactory::getInstance()->getFileReferenceObject($fileReferenceUid); $file = $fileReference->getOriginalFile(); if ($this->isAllowed($file->getName())) { $cleanValues[] = $value; } else { // Remove the erroneously created reference record again $tceMain->deleteAction('sys_file_reference', $fileReferenceUid); } } } return $cleanValues; }