public function retrieveFormatTools($fileName, ImportHandler $handler, FormatterManager $formatterManager, ArchiveBuilderManager $archiveBuilderManager) { $nameLength = strlen($fileName); $types = $handler->getHandledTypes(); $formats = $formatterManager->getExtensionsByTypes($types, true) + $archiveBuilderManager->getExtensions(true); $uploadFormat = null; /** @var \Thelia\Core\FileFormat\Formatting\AbstractFormatter $formatter */ $formatter = null; /** @var \Thelia\Core\FileFormat\Archive\AbstractArchiveBuilder $archiveBuilder */ $archiveBuilder = null; foreach ($formats as $objectName => $format) { $formatLength = strlen($format); $formatExtension = substr($fileName, -$formatLength); if ($nameLength >= $formatLength && $formatExtension === $format) { $uploadFormat = $format; try { $formatter = $formatterManager->get($objectName); } catch (\OutOfBoundsException $e) { } try { $archiveBuilder = $archiveBuilderManager->get($objectName); } catch (\OutOfBoundsException $e) { } break; } } $this->checkFileExtension($fileName, $uploadFormat); return array("formatter" => $formatter, "archive_builder" => $archiveBuilder, "extension" => $uploadFormat, "types" => $types); }