You are here

function commerce_discount_extra_update_7001 in Commerce Discount Extra 7

Change per-qty discount product fields to multivalue.

File

./commerce_discount_extra.install, line 384
Installs necessary fields for extra discounts.

Code

function commerce_discount_extra_update_7001() {
  field_info_cache_clear();
  $fields = field_info_fields();
  $instances = field_info_instances();
  foreach (array(
    'commerce_discount_product',
    'commerce_trigger_product',
  ) as $field_name) {
    foreach (array(
      'per_quantity_fixed',
      'per_quantity_percentage',
    ) as $offer_type) {
      if (!empty($instances['commerce_discount_offer'][$offer_type][$field_name])) {

        // Delete instances.
        field_delete_instance($instances['commerce_discount_offer'][$offer_type][$field_name]);
      }
    }

    // Delete fields.
    if (isset($fields[$field_name])) {
      field_delete_field($field_name);
    }
  }

  // Create multivalue discount products field.
  $field = array(
    'entity_types' => array(
      'commerce_discount_offer',
    ),
    'field_name' => 'commerce_discount_products',
    'type' => 'commerce_product_reference',
    'locked' => TRUE,
    'cardinality' => FIELD_CARDINALITY_UNLIMITED,
  );
  field_create_field($field);

  // Create multivalue trigger products field.
  $field = array(
    'entity_types' => array(
      'commerce_discount_offer',
    ),
    'field_name' => 'commerce_trigger_products',
    'type' => 'commerce_product_reference',
    'locked' => TRUE,
    'cardinality' => FIELD_CARDINALITY_UNLIMITED,
  );
  field_create_field($field);

  // Create instances.
  foreach (array(
    'per_quantity_fixed',
    'per_quantity_percentage',
  ) as $offer_type) {

    // Trigger products.
    $instance = array(
      'field_name' => 'commerce_trigger_products',
      'entity_type' => 'commerce_discount_offer',
      'bundle' => $offer_type,
      'label' => t('product(s)'),
      'required' => TRUE,
      'widget' => array(
        'type' => 'commerce_product_reference_autocomplete',
        'weight' => 1,
      ),
    );
    field_create_instance($instance);

    // Offer products.
    $instance = array(
      'field_name' => 'commerce_discount_products',
      'entity_type' => 'commerce_discount_offer',
      'bundle' => $offer_type,
      'label' => t('product(s)'),
      'required' => TRUE,
      'widget' => array(
        'type' => 'commerce_product_reference_autocomplete',
        'weight' => 3,
      ),
    );
    field_create_instance($instance);
  }
}