Example #1
0
 public function testGetMultipleValueSeparatorFromParameters()
 {
     $expectedSeparator = 'value';
     $this->setPropertyValue($this->importProduct, '_parameters', [\Magento\ImportExport\Model\Import::FIELD_FIELD_MULTIPLE_VALUE_SEPARATOR => $expectedSeparator]);
     $this->assertEquals($expectedSeparator, $this->importProduct->getMultipleValueSeparator());
 }
Example #2
0
 /**
  * Parse custom options string to inner format.
  *
  * @param array $rowData
  * @return array
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 protected function _parseCustomOptions($rowData)
 {
     $beforeOptionValueSkuDelimiter = ';';
     if (empty($rowData['custom_options'])) {
         return $rowData;
     }
     $rowData['custom_options'] = str_replace($beforeOptionValueSkuDelimiter, $this->_productEntity->getMultipleValueSeparator(), $rowData['custom_options']);
     $options = [];
     $optionValues = explode(Product::PSEUDO_MULTI_LINE_SEPARATOR, $rowData['custom_options']);
     $k = 0;
     $name = '';
     foreach ($optionValues as $optionValue) {
         $optionValueParams = explode($this->_productEntity->getMultipleValueSeparator(), $optionValue);
         foreach ($optionValueParams as $nameAndValue) {
             $nameAndValue = explode('=', $nameAndValue);
             if (!empty($nameAndValue)) {
                 $value = isset($nameAndValue[1]) ? $nameAndValue[1] : '';
                 $value = trim($value);
                 $fieldName = trim($nameAndValue[0]);
                 if ($value && $fieldName == 'name') {
                     if ($name != $value) {
                         $name = $value;
                         $k = 0;
                     }
                 }
                 if ($name) {
                     $options[$name][$k][$fieldName] = $value;
                 }
             }
         }
         $options[$name][$k]['_custom_option_store'] = $rowData[Product::COL_STORE_VIEW_CODE];
         $k++;
     }
     $rowData['custom_options'] = $options;
     return $rowData;
 }