plus, * everything non-alphanumeric stripped. Values are product slugs - stable * across environments, unlike uids. */ final class ProductFamilyAliases { private const MAP = [ 'vsnplatforms' => 'vsn-v3', 'visionsc' => 'visionsc-uhd2', 'visionio' => 'visionio-sd14', 'wallcontrol' => 'aetria-wallcontrol', 'imagegraphics' => 'image-4k', 'xseries' => 'fx4', 'endpoints' => 'avedia-end-points', 'mgwproductfamily' => 'mgw-ace-encoder', 'diamondip' => 'diamond-ip-og-ip-to-ip-encoder', 'ogplatform' => 'mgw-diamond-og-sdi-composite-blade-encoder', 'capturecards' => 'visionav-hd', ]; /** * @return array|null the aliased product row, or null when * the label is no known family */ public static function resolve(string $normalisedLabel): ?array { $slug = self::MAP[$normalisedLabel] ?? null; if ($slug === null) { return null; } $row = GeneralUtility::makeInstance(ConnectionPool::class) ->getConnectionForTable('tx_vitec_domain_model_product') ->fetchAssociative( 'SELECT * FROM tx_vitec_domain_model_product WHERE deleted = 0 AND slug = ?', [$slug] ); return $row ?: null; } }