Example #1
0
    /**
     * @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;
        }
    }