/** * Get the attribute collection. * * TODO This action is only accessible via a GET or POST query, because of too long query URI. To respect standards, * a refactor must be done. * * @param Request $request * * @return JsonResponse */ public function indexAction(Request $request) { $options = []; $context = ['include_group' => true]; if ($request->request->has('identifiers')) { $options['identifiers'] = explode(',', $request->request->get('identifiers')); $context['include_group'] = false; } if ($request->request->has('types')) { $options['types'] = explode(',', $request->request->get('types')); } if (empty($options)) { $options = $request->request->get('options', ['limit' => SearchableRepositoryInterface::FETCH_LIMIT, 'locale' => null]); } $token = $this->tokenStorage->getToken(); $options['user_groups_ids'] = $token->getUser()->getGroupsIds(); if (null !== $this->attributeSearchRepository) { $attributes = $this->attributeSearchRepository->findBySearch($request->request->get('search'), $options); } else { if (isset($options['identifiers'])) { $options['code'] = $options['identifiers']; } $attributes = $this->attributeRepository->findBy($options); } $normalizedAttributes = $this->normalizer->normalize($attributes, 'internal_api', $context); return new JsonResponse($normalizedAttributes); }
/** * Get fields for products * * @param array $productIds * * @return array */ public function getFieldsList($productIds) { $this->prepareAvailableAttributeIds($productIds); $attributes = $this->getAttributeIds(); if (empty($attributes)) { return []; } $attributes = $this->attributeRepository->findBy(['id' => $this->getAttributeIds()]); return $this->prepareFieldsList($attributes); }
/** * Get the attribute collection * * @return JsonResponse */ public function indexAction(Request $request) { $criteria = []; if ($request->query->has('identifiers')) { $criteria['code'] = explode(',', $request->query->get('identifiers')); } if ($request->query->has('types')) { $criteria['attributeType'] = explode(',', $request->query->get('types')); } $attributes = $this->attributeRepository->findBy($criteria); $filteredAttributes = $this->collectionFilter->filterCollection($attributes, 'pim.internal_api.attribute.view'); $normalizedAttributes = $this->normalizer->normalize($filteredAttributes, 'internal_api'); return new JsonResponse($normalizedAttributes); }
/** * Get non eligible attributes to a product template * * @param GroupInterface $variantGroup * * @return AttributeInterface[] */ public function getNonEligibleAttributes(GroupInterface $variantGroup) { $attributes = $variantGroup->getAxisAttributes()->toArray(); $template = $variantGroup->getProductTemplate(); if (null !== $template) { foreach (array_keys($template->getValuesData()) as $attributeCode) { $attributes[] = $this->attributeRepository->findOneByIdentifier($attributeCode); } } $uniqueAttributes = $this->attributeRepository->findBy(['unique' => true]); foreach ($uniqueAttributes as $attribute) { if (!in_array($attribute, $attributes)) { $attributes[] = $attribute; } } return $attributes; }