_` in administration. */ public function getB2BFeed(B2BFeedDefinition $feedDefinition, bool $download = false): ?Response { if (!$this->B2BController) { return null; } if (!($user = \User::createFromFeedToken($feedDefinition->userHash))) { return null; } $feedName = "{$feedDefinition->category}_{$feedDefinition->type}"; $feedRow = sqlQueryBuilder() ->select('*') ->from('feeds') ->where(Operator::equals([JsonOperator::value('data', 'note') => $feedName])) ->execute()->fetchAssociative(); if (!$feedRow) { return null; } $feedRow['data'] = json_decode($feedRow['data'] ?? '', true) ?: []; try { $feed = $this->feedLocator->getServiceByType($feedRow['type']); } catch (UnknownFeedTypeException) { return null; } $feedRow['id_language'] = $feedDefinition->language; $feedRow['id_currency'] = $feedDefinition->currency; $feedRow['id_country'] = Contexts::get(CountryContext::class)->getActiveId(); return $this->B2BController->outputFeed($user, $feed, $feedRow, $feedDefinition->format, null, $download); } /** * Returns ids of default feeds for users. * * @return int[] */ public function getDefaultUserFeeds(): array { return sqlQueryBuilder() ->select('id as i, id') ->from('feeds') ->where(Operator::like([JsonOperator::value('data', 'note') => '%_default'])) ->execute()->fetchFirstColumn(); } }