You are here

commerce_pricing_attributes.install in Commerce Pricing Attributes 7

Same filename and directory in other branches
  1. 7.2 commerce_pricing_attributes.install

File

commerce_pricing_attributes.install
View source
<?php

/**
 * Implements hook_field_schema().
 */
function commerce_pricing_attributes_field_schema($field) {
  return array(
    'columns' => array(
      'set_id' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => FALSE,
      ),
      'set_details' => array(
        'type' => 'blob',
        'not null' => FALSE,
        'size' => 'big',
        'serialize' => TRUE,
        'description' => 'A serialized array of additional data.',
      ),
    ),
    'indexes' => array(
      'set_id' => array(
        'set_id',
      ),
    ),
    'foreign keys' => array(
      'set_id' => array(
        'table' => 'commerce_option_set',
        'columns' => array(
          'set_id' => 'set_id',
        ),
      ),
    ),
  );
}

/**
 * Set default commerce_pricing_attributes settings for all commerce option
 * (list) fields.
 */
function commerce_pricing_attributes_update_7100(&$sandbox) {

  // Update all fields that have been created before commerce_pricing_attributes
  // being installed. Default values must be set.
  $bundles = field_info_instances('commerce_option');
  foreach ($bundles as $bundle => $fields) {
    foreach ($fields as $instance) {
      $field = field_info_field($instance['field_name']);
      if ($field['module'] == 'list') {
        if (!isset($instance['settings']['commerce_pricing_attributes'])) {
          $options = list_allowed_values($field, $instance);
          $instance['settings']['commerce_pricing_attributes'] = array();
          $i = 0;
          $instance['settings']['commerce_pricing_attributes']['_none']['weight'] = -100;
          foreach ($options as $option_value => $option_label) {
            $instance['settings']['commerce_pricing_attributes'][$option_value] = array(
              'enabled' => TRUE,
              'price_op' => 'plus',
              'price' => 0,
              'weight' => $i - 99,
            );
            $i++;
          }
          field_update_instance($instance);
        }
      }
    }
  }
}

/**
 * initialize calculate settings for all commerce option existing (list) fields.
 */
function commerce_pricing_attributes_update_7101(&$sandbox) {

  // Update all fields that have been created before commerce_pricing_attributes
  // being installed and initialize calculate settings.
  $bundles = field_info_instances('commerce_option');
  foreach ($bundles as $bundle => $fields) {
    foreach ($fields as $instance) {
      $field = field_info_field($instance['field_name']);
      if ($field['module'] == 'list') {
        $options = list_allowed_values($field, $instance);
        foreach ($options as $option_value => $option_label) {
          $instance['settings']['commerce_pricing_attributes'][$option_value]['calculate'] = 'per_item';
        }
        field_update_instance($instance);
      }
    }
  }
}

Functions

Namesort descending Description
commerce_pricing_attributes_field_schema Implements hook_field_schema().
commerce_pricing_attributes_update_7100 Set default commerce_pricing_attributes settings for all commerce option (list) fields.
commerce_pricing_attributes_update_7101 initialize calculate settings for all commerce option existing (list) fields.