/** * {@inheritdoc} */ public function apply(DatasourceInterface $datasource, $field, $direction) { $attribute = $this->attributeRepository->findOneByCode($field); $qb = $datasource->getQueryBuilder(); $pqb = $this->productRepository->getProductQueryBuilder($qb); $pqb->addAttributeSorter($attribute, $direction); }
/** * {@inheritdoc} */ public function initialize() { $this->channels = $this->channelRepository->findAll(); foreach ($this->attributeRepository->getNonIdentifierAttributes() as $attribute) { $this->attributes[(string) $attribute->getGroup()][] = $attribute; foreach ($this->channels as $channel) { $this->addAttributeRequirement($this->factory->createAttributeRequirement($attribute, $channel, false)); } } }
function it_returns_attribute_informations_from_field_name_with_price_attribute($managerRegistry, AttributeRepository $repository, AbstractAttribute $attribute) { $attribute->getCode()->willReturn('foo'); $attribute->isLocalizable()->willReturn(false); $attribute->isScopable()->willReturn(false); $attribute->getBackendType()->willReturn('prices'); $repository->findByReference('foo')->willReturn($attribute); $managerRegistry->getRepository(self::ATTRIBUTE_CLASS)->willReturn($repository); $this->extractAttributeFieldNameInfos('foo-USD')->shouldReturn(['attribute' => $attribute, 'locale_code' => null, 'scope_code' => null, 'price_currency' => 'USD']); }
function it_initializes_attribute_requirements_with_all_channels_and_attributes_in_the_PIM(ChannelRepository $channelRepository, Channel $ecommerce, Channel $mobile, AttributeRepository $attributeRepository, AbstractAttribute $name, AbstractAttribute $description, AttributeRequirementFactory $factory, AttributeRequirement $r1, AttributeRequirement $r2, AttributeRequirement $r3, AttributeRequirement $r4) { $channelRepository->findAll()->willReturn([$ecommerce, $mobile]); $attributeRepository->getNonIdentifierAttributes()->willReturn([$name, $description]); $factory->createAttributeRequirement($name, $ecommerce, false)->willReturn($r1); $r1->getAttributeCode()->willReturn('name'); $r1->getChannelCode()->willReturn('ecommerce'); $factory->createAttributeRequirement($name, $mobile, false)->willReturn($r2); $r2->getAttributeCode()->willReturn('name'); $r2->getChannelCode()->willReturn('mobile'); $factory->createAttributeRequirement($description, $ecommerce, false)->willReturn($r3); $r3->getAttributeCode()->willReturn('description'); $r3->getChannelCode()->willReturn('ecommerce'); $factory->createAttributeRequirement($description, $mobile, false)->willReturn($r4); $r4->getAttributeCode()->willReturn('description'); $r4->getChannelCode()->willReturn('mobile'); $this->initialize(); $this->getAttributeRequirements()->toArray()->shouldReturn(['name_ecommerce' => $r1, 'name_mobile' => $r2, 'description_ecommerce' => $r3, 'description_mobile' => $r4]); }
/** * Find common attributes * Common attributes are: * - not unique (and not identifier) * - without value AND link to family * - with value * * @param array $productIds * * @return \Pim\Bundle\CatalogBundle\Model\AbstractAttribute[] */ public function findCommonAttributes(array $productIds) { $attributeIds = $this->massActionRepository->findCommonAttributeIds($productIds); return $this->attributeRepository->findWithGroups(array_unique($attributeIds), array('conditions' => ['unique' => 0])); }
/** * Get the identifier attribute code. * * @return string */ protected function getIdentifierAttributeCode() { return $this->attributeRepository->getIdentifierCode(); }
/** * {@inheritdoc} */ public function getReferenceProperties() { return array($this->attributeRepository->getIdentifierCode()); }
/** * Returns the Attribute * * @param string $code * * @return AbstractAttribute */ protected function getAttributeByCode($code) { return $this->attributeRepository->findOneByCode($code); }
function it_provides_the_identifier_attribute(AttributeRepository $attributeRepository, AbstractAttribute $sku) { $attributeRepository->findOneBy(['attributeType' => 'pim_catalog_identifier'])->willReturn($sku); $this->getIdentifierAttribute()->shouldReturn($sku); }
/** * Return the identifier attribute * * @return AbstractAttribute|null */ public function getIdentifierAttribute() { return $this->attributeRepository->findOneBy(['attributeType' => 'pim_catalog_identifier']); }