dcco-8.x-3.x-dev/modules/dcco_store/inc/dcco_store.inc
modules/dcco_store/inc/dcco_store.inc
<?php /** * @file * Helper functions for product creation. */ use Drupal\commerce_price\Price; use Drupal\commerce_product\Entity\ProductVariation; use Drupal\commerce_product\Entity\Product; use Drupal\commerce_product\Entity\ProductAttributeValue; /** * Create a product from supplied info. * * @param array $product * An array of product info. * @param array[] $variants * An array of product variant array info. * * @return \Drupal\commerce_product\Entity\Product * The created product. */ function dcco_store_create_product($product, $variants = []) { $variations = array_map('dcco_store_create_product_variation', $variants); $prod = Product::create([ 'type' => $product['type'], 'title' => $product['title'], 'variations' => $variations, ]); $prod->save(); return $prod; } /** * Create a product variation. * * @param array $variant * An array of product variant info. * * @return \Drupal\commerce_product\Entity\ProductVariation * The created product variation. */ function dcco_store_create_product_variation($variant) { $variation = ProductVariation::create([ 'title' => $variant['title'] ?? '', 'type' => $variant['type'], 'sku' => $variant['sku'], 'price' => new Price($variant['price'] ?? '0.00', 'USD'), ]); $variation->save(); return $variation; } /** * Create product attribute values. * * @param string $attribute_id * The ID of the attribute to add values to. * @param string[] $values * An array of value strings. * * @return \Drupal\commerce_product\Entity\ProductAttributeValue[] * An array of product attribute values. */ function dcco_store_create_attribute_values($attribute_id, $values = []) { return array_map(function ($value) use ($attribute_id) { $attr = ProductAttributeValue::create([ 'attribute' => $attribute_id, 'name' => $value, ]); $attr->save(); return $attr; }, $values); }