/** * @return string */ protected function getProductOptionsXml() { $combinations = $this->getProductCombinations(); if (empty($combinations)) { $price = fn_format_price($this->product->price); return <<<XML <StartPrice currencyID="{$this->getCurrency()}">{$price}</StartPrice> <Quantity>{$this->product->amount}</Quantity> XML; } else { $result = '<Variations><VariationSpecificsSet>'; $picturesXml = ''; foreach ($this->product->getOptions() as $option) { $result .= <<<XML <NameValueList> <Name><![CDATA[{$option->name}]]></Name> XML; $picturesXml .= <<<XML <Pictures> <VariationSpecificName><![CDATA[{$option->name}]]></VariationSpecificName> XML; foreach ($option->getVariants() as $variant) { $picturesXml .= <<<XML <VariationSpecificPictureSet> <VariationSpecificValue><![CDATA[{$variant->name}]]></VariationSpecificValue> <PictureURL>{$this->product->getExternalPicture($variant->picture)}</PictureURL> </VariationSpecificPictureSet> XML; $result .= "<Value><![CDATA[{$variant->name}]]></Value>\n"; } $picturesXml .= "</Pictures>\n"; $result .= "</NameValueList>\n"; } $result .= '</VariationSpecificsSet>' . $picturesXml; foreach ($combinations as $combination) { $sku = ''; $variationsXml = ''; foreach ($combination->getOptionVariants() as $item) { $sku .= $item->getOption()->name . $item->name; $variationsXml .= <<<XML <NameValueList> <Name><![CDATA[{$item->getOption()->name}]]></Name> <Value><![CDATA[{$item->name}]]></Value> </NameValueList> XML; } $deleted = ''; if ($combination->isDeleted()) { $deleted = "<Delete>true</Delete>"; } $result .= <<<XML <Variation> {$deleted} <SKU><![CDATA[{$sku}]]></SKU> <StartPrice>{$combination->price}</StartPrice> <Quantity>{$combination->quantity}</Quantity> <VariationSpecifics> {$variationsXml} </VariationSpecifics> </Variation> XML; } $result .= '</Variations>'; return $result; } }