/** * {@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_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]); }
/** * Schedule recalculation of completenesses for all products * of a channel * * @param Channel $channel */ public function scheduleForChannel(Channel $channel) { if ($channel->getId()) { $deletedLocaleIds = $this->channelRepository->getDeletedLocaleIdsForChannel($channel); foreach ($deletedLocaleIds as $deletedLocaleId) { $deletedLocale = $this->localeRepository->find($deletedLocaleId); $this->generator->scheduleForChannelAndLocale($channel, $deletedLocale); } } }