You are here

function commerce_pricing_attributes_update_7100 in Commerce Pricing Attributes 7

Set default commerce_pricing_attributes settings for all commerce option (list) fields.

File

./commerce_pricing_attributes.install, line 38

Code

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);
        }
      }
    }
  }
}