You are here

private function Product::getVariations in Commerce Migrate 3.1.x

Same name and namespace in other branches
  1. 8.2 modules/magento/src/Plugin/migrate/source/m2/Product.php \Drupal\commerce_migrate_magento\Plugin\migrate\source\m2\Product::getVariations()
  2. 3.0.x modules/magento/src/Plugin/migrate/source/m2/Product.php \Drupal\commerce_migrate_magento\Plugin\migrate\source\m2\Product::getVariations()

Returns an array of product SKUs for the variations of this product.

If this product is a variation the return array contains the SKUs for all product variations of the product.

Parameters

array $row: The current row.

Return value

array An array of variation SKUs.

1 call to Product::getVariations()
Product::getYield in modules/magento/src/Plugin/migrate/source/m2/Product.php
Prepare one row of product data.

File

modules/magento/src/Plugin/migrate/source/m2/Product.php, line 96

Class

Product
Gets the product rows.

Namespace

Drupal\commerce_migrate_magento\Plugin\migrate\source\m2

Code

private function getVariations(array $row) {
  static $searched = [];
  $search_sku = strstr($row['sku'], '-', TRUE);
  if (!$search_sku) {
    $search_sku = $row['sku'];
  }
  if (isset($searched[$search_sku])) {
    $variations = $searched[$search_sku];
  }
  else {
    if (ctype_alpha($search_sku[0])) {
      $pattern = "/" . $search_sku . ".*/";
      $subject = $this->fileData['all_sku'];
      $variations = preg_grep($pattern, $subject);

      // Exclude the search pattern, it is likely the 'configurable' product
      // SKU.
      $variations = array_diff($variations, [
        $search_sku,
      ]);
      $searched[$search_sku] = $variations;
    }
    else {
      $variations = [
        $row['sku'],
      ];
    }
  }
  return $variations;
}