You are here

commerce_product_reference.devel_generate.inc in Commerce Devel 7

Contains devel generate information for Commerce Product Reference fields.

File

commerce_devel_generate/commerce_product_reference.devel_generate.inc
View source
<?php

/**
 * @file
 * Contains devel generate information for Commerce Product Reference fields.
 */

/**
 * Support for processing commerce product reference fields in devel generate.
 *
 * @param object $object
 *   The entity object.
 * @param array $field
 *   The field definition.
 * @param array $instance
 *   The instance definition.
 * @param string $bundle
 *   The entity bundle.
 *
 * @return array
 *   Returns price field array data.
 */
function commerce_product_reference_devel_generate($object, $field, $instance, $bundle) {
  if (field_behaviors_widget('multiple values', $instance) == FIELD_BEHAVIOR_CUSTOM) {
    module_load_include('inc', 'commerce_devel_generate', 'commerce_product_reference.devel_generate');
    return devel_generate_multiple('_commerce_product_reference_devel_generate', $object, $field, $instance, $bundle);
  }
  else {
    return _commerce_product_reference_devel_generate($object, $field, $instance, $bundle);
  }
}

/**
 * Product reference value generation for fields.
 *
 * @param object $object
 *   The entity object.
 * @param array $field
 *   The field definition.
 * @param array $instance
 *   The instance definition.
 * @param string $bundle
 *   The entity bundle.
 *
 * @return array
 *   Returns price field array data.
 */
function _commerce_product_reference_devel_generate($object, $field, $instance, $bundle) {
  $object_field = array();

  // Get all the referenceable product types.
  $referenceable_types = array_keys($instance['settings']['referenceable_types']);
  foreach ($instance['settings']['referenceable_types'] as $product_type => $value) {
    if ($value) {
      $referenceable_types[] = $product_type;
    }
  }

  // Get all the products id eligible for this product reference field.
  $query = new EntityFieldQuery();
  $query
    ->entityCondition('entity_type', 'commerce_product', '=');

  // Check if we should apply a bundle filter.
  if (!empty($referenceable_types)) {
    $query
      ->entityCondition('bundle', $referenceable_types, 'IN');
  }
  $products = $query
    ->execute();
  if (isset($products['commerce_product'])) {
    $product_ids = array_keys($products['commerce_product']);
    $random_key = array_rand($product_ids);
    $object_field['product_id'] = $product_ids[$random_key];
  }
  return $object_field;
}

Functions

Namesort descending Description
commerce_product_reference_devel_generate Support for processing commerce product reference fields in devel generate.
_commerce_product_reference_devel_generate Product reference value generation for fields.