You are here

function uc_discounts_admin_discount_copy_form in Ubercart Discounts (Alternative) 7.2

Generates admin form to create a copy of existing discount.

1 string reference to 'uc_discounts_admin_discount_copy_form'
uc_discounts_menu in uc_discounts/uc_discounts.module
Implements hook_menu().

File

uc_discounts/uc_discounts.admin.inc, line 972
Admin forms and functions for uc_discounts module.

Code

function uc_discounts_admin_discount_copy_form($original_discount_id) {
  $discount = uc_discounts_load($original_discount_id);
  $discount->name = t('Copy of @discount', array(
    '@discount' => $discount->name,
  ));
  $discount->insert_timestamp = REQUEST_TIME;
  unset($discount->discount_id);
  drupal_write_record('uc_discounts', $discount);

  // Copy discount's codes.
  $codes = uc_discounts_get_codes_for_discount_id($original_discount_id);
  foreach ($codes as $code) {
    $new_code = array(
      'discount_id' => $discount->discount_id,
      'code' => $code,
    );
    drupal_write_record('uc_discounts_codes', $new_code);
  }
  foreach (array(
    UC_DISCOUNTS_GROUPING_APPLICATION,
    UC_DISCOUNTS_GROUPING_QUALIFICATION,
  ) as $grouping) {

    // Copy discount's products.
    $product_ids = uc_discounts_get_product_ids_for_discount_id($original_discount_id, $grouping);
    foreach ($product_ids as $product_id) {
      $new_product = array(
        'discount_id' => $discount->discount_id,
        'product_id' => $product_id,
        'grouping' => $grouping,
      );
      drupal_write_record('uc_discounts_products', $new_product);
    }

    // Copy discount's terms.
    $term_ids = uc_discounts_get_term_ids_for_discount_id($original_discount_id, $grouping);
    foreach ($term_ids as $term_id) {
      $new_term = array(
        'discount_id' => $discount->discount_id,
        'term_id' => $term_id,
        'grouping' => $grouping,
      );
      drupal_write_record('uc_discounts_terms', $new_term);
    }

    // Copy discount's SKUs.
    $skus = uc_discounts_get_skus_for_discount_id($original_discount_id, $grouping);
    foreach ($skus as $sku) {
      $new_sku = array(
        'discount_id' => $discount->discount_id,
        'sku' => $sku,
        'grouping' => $grouping,
      );
      drupal_write_record('uc_discounts_skus', $new_sku);
    }

    // Copy discount's Classes.
    $classes = uc_discounts_get_classes_for_discount_id($original_discount_id, $grouping);
    foreach ($classes as $class) {
      $new_class = array(
        'discount_id' => $discount->discount_id,
        'class' => $class,
        'grouping' => $grouping,
      );
      drupal_write_record('uc_discounts_classes', $new_class);
    }

    // Copy discount's authors.
    $author_ids = uc_discounts_get_author_ids_for_discount_id($original_discount_id, $grouping);
    foreach ($author_ids as $author_id) {
      $new_author = array(
        'discount_id' => $discount->discount_id,
        'author_id' => $author_id,
        'grouping' => $grouping,
      );
      drupal_write_record('uc_discounts_authors', $new_author);
    }
  }

  // Copy discount's roles.
  $role_ids = uc_discounts_get_role_ids_for_discount_id($original_discount_id);
  foreach ($role_ids as $role_id) {
    $new_role = array(
      'discount_id' => $discount->discount_id,
      'role_id' => $role_id,
    );
    drupal_write_record('uc_discounts_roles', $new_role);
  }
  foreach (module_implements('uc_discount') as $module) {
    $function = $module . '_uc_discount';
    $function('save', $discount);
  }
  drupal_set_message(t('The discount was successfully copied as %name.', array(
    '%name' => $discount->name,
  )));
  drupal_goto('admin/store/uc_discounts/edit/' . $discount->discount_id);
}