. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Tools\Export; use Espo\Core\InjectableFactory; use Espo\Core\Utils\Metadata; use LogicException; class AdditionalFieldsLoaderFactory { public function __construct( private InjectableFactory $injectableFactory, private Metadata $metadata ) {} public function create(string $format): AdditionalFieldsLoader { $className = $this->getClassName($format); if (!$className) { throw new LogicException(); } return $this->injectableFactory->create($className); } public function isCreatable(string $format): bool { return (bool) $this->getClassName($format); } /** * @return ?class-string */ private function getClassName(string $format): ?string { return $this->metadata->get(['app', 'export', 'formatDefs', $format, 'additionalFieldsLoaderClassName']); } }