You are here

function commerce_coupon_update_7200 in Commerce Coupon 7.2

Upgrade a Coupons 1.x site to 2.x. MAKE A BACKUP BEFORE DOING THIS.

File

./commerce_coupon.install, line 286
Installation hooks and procedures for Commerce Coupon.

Code

function commerce_coupon_update_7200(&$sandbox) {
  module_load_include('inc', 'commerce_coupon', 'includes/commerce_coupon.update');
  if (!module_enable(array(
    'commerce_discount',
  ))) {
    throw new DrupalUpdateException('Commerce Discount is a new dependency of Commerce Coupon - you must add it to your site.');
  }
  if (!isset($sandbox['did_schema_updates'])) {
    $schema = drupal_get_schema_unprocessed('commerce_coupon', 'commerce_coupon');
    $fields = $schema['fields'];

    // Change "is active" field to "status".
    db_change_field('commerce_coupon', 'is_active', 'status', $fields['status']);

    // Add all the new columns.
    db_add_field('commerce_coupon', 'bulk', $fields['bulk']);
    db_add_field('commerce_coupon', 'code', $fields['code']);
    db_add_field('commerce_coupon', 'uid', $fields['uid']);

    // Indexes.
    db_add_index('commerce_coupon', 'code', array(
      'code',
    ));
    db_add_index('commerce_coupon', 'uid', array(
      'uid',
    ));

    // Disable coupons ui module.
    module_disable(array(
      'commerce_coupon_ui',
    ));

    // Enable dependencies.
    module_enable(array(
      'commerce_discount',
      'inline_conditions',
      'commerce_coupon_usage',
    ));

    // Install coupon fields.
    commerce_coupon_install_helper();

    // Add the inline conditions field because we're going to need it.
    _commerce_coupon_install_inline_conditions_field();
    $sandbox['did_schema_updates'] = TRUE;
  }
  $drush = function_exists('drush_print');

  // Update coupon entities.
  _commerce_coupon_update_coupons_multipass($sandbox, $drush);

  // Update order entities.
  _commerce_coupon_update_orders_multipass($sandbox, $drush);
  $sandbox['#finished'] = $sandbox['coupons']['#finished'] >= 1 && $sandbox['orders']['#finished'] >= 1;
  if ($sandbox['#finished'] == TRUE) {
    module_disable(array(
      'commerce_coupon_pct',
      'commerce_coupon_fixed_amount',
    ));
  }
}