You are here

function commerce_recurring_configure_product_type in Commerce Recurring Framework 7.2

Ensures that the price and interval fields are created.

1 call to commerce_recurring_configure_product_type()
commerce_recurring_enable in ./commerce_recurring.install
Implements hook_enable().

File

./commerce_recurring.module, line 71
Commerce recurring module file.

Code

function commerce_recurring_configure_product_type() {

  // Create the price instances for the recurring product type.
  commerce_recurring_price_create_instance('commerce_price', 'commerce_product', 'recurring', t('Price'), 0, 'calculated_sell_price');

  // Set the formatter display as hidden by default for the additional price
  // fields.
  commerce_recurring_price_create_instance('commerce_recurring_ini_price', 'commerce_product', 'recurring', t('Initial price'), 0, 'calculated_sell_price', array(
    'type' => 'hidden',
  ));
  commerce_recurring_price_create_instance('commerce_recurring_rec_price', 'commerce_product', 'recurring', t('Recurring price'), 0, 'calculated_sell_price', array(
    'type' => 'hidden',
  ));

  // Create interval fields.
  $fields = array(
    'commerce_recurring_ini_period' => array(
      'field_name' => 'commerce_recurring_ini_period',
      'cardinality' => 1,
      'type' => 'interval',
    ),
    'commerce_recurring_rec_period' => array(
      'field_name' => 'commerce_recurring_rec_period',
      'cardinality' => 1,
      'type' => 'interval',
    ),
    'commerce_recurring_end_period' => array(
      'field_name' => 'commerce_recurring_end_period',
      'cardinality' => 1,
      'type' => 'interval',
    ),
  );

  // Set instance settings for the interval fields.
  $basic_interval_instance = array(
    'entity_type' => 'commerce_product',
    'bundle' => 'recurring',
    'widget' => array(
      'type' => 'interval_default',
    ),
    'display' => array(
      'default' => array(
        'label' => 'hidden',
        'type' => 'interval_default',
      ),
    ),
    'settings' => array(
      'allowed_periods' => array(
        'day' => 'day',
        'week' => 'week',
        'month' => 'month',
        'year' => 'year',
      ),
    ),
    'weight' => 0,
  );
  $instances = array(
    'commerce_recurring_ini_period' => $basic_interval_instance,
    'commerce_recurring_rec_period' => $basic_interval_instance,
    'commerce_recurring_end_period' => $basic_interval_instance,
  );
  $instances['commerce_recurring_ini_period']['label'] = t('Initial period');
  $instances['commerce_recurring_rec_period']['label'] = t('Recurring period');
  $instances['commerce_recurring_end_period']['label'] = t('End period');

  // Create fields & instances if necessary.
  foreach ($fields as $field_name => $field) {
    $info_field = field_info_field($field_name);
    $instance = field_info_instance('commerce_product', $field_name, 'recurring');
    if (empty($info_field)) {
      field_create_field($field);
    }
    if (empty($instance)) {
      $instance = $instances[$field_name];
      $instance['field_name'] = $field_name;
      field_create_instance($instance);
    }
  }
}