/** * Checks if the passed combination is compatible with the provided customer configurator * selection. * * @param \Shopware\Bundle\StoreFrontBundle\Struct\Configurator\Group $group * @param array $combinations * @param $selection * @return bool */ private function isCombinationValid(Struct\Configurator\Group $group, $combinations, $selection) { if (empty($combinations)) { return false; } foreach ($selection as $selectedGroup => $selectedOption) { if (!in_array($selectedOption, $combinations) && $selectedGroup !== $group->getId()) { return false; } } return true; }
/** * Converts a configurator option struct which used for default or selection configurators. * * @param StoreFrontBundle\Struct\Configurator\Group $group * @param StoreFrontBundle\Struct\Configurator\Option $option * @return array */ public function convertConfiguratorOptionStruct(StoreFrontBundle\Struct\Configurator\Group $group, StoreFrontBundle\Struct\Configurator\Option $option) { $data = array('optionID' => $option->getId(), 'groupID' => $group->getId(), 'optionname' => $option->getName(), 'user_selected' => $option->isSelected(), 'selected' => $option->isSelected(), 'selectable' => $option->getActive()); if ($option->getMedia()) { $data['media'] = $this->convertMediaStruct($option->getMedia()); } return $data; }
/** * @param array $data * @return Struct\Configurator\Group */ private function createGroup($data) { $group = new Struct\Configurator\Group(); $translation = $this->getTranslation($data, '__configuratorGroup_translation', '__configuratorGroup_translation_fallback', ['name' => '__configuratorGroup_name', 'description' => '__configuratorGroup_description']); $data = array_merge($data, $translation); $group->setId((int) $data['__configuratorGroup_id']); $group->setName($data['__configuratorGroup_name']); $group->setDescription($data['__configuratorGroup_description']); return $group; }