You are here

function uc_discounts_copy in Ubercart Discounts (Alternative) 6.2

Copy a discount.

1 string reference to 'uc_discounts_copy'
uc_discounts_menu in uc_discounts/uc_discounts.module
Implementation of hook_menu().

File

uc_discounts/uc_discounts.admin.inc, line 764

Code

function uc_discounts_copy($original_discount_id) {
  $discount = uc_discounts_load($original_discount_id);
  $discount->name = t("Copy of @discount", array(
    "@discount" => $discount->name,
  ));
  $discount->insert_timestamp = time();
  drupal_write_record('uc_discounts', $discount);

  //Copy discount's codes
  $codes = get_codes_for_discount($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(
    DISCOUNT_FILTER_GROUPING_APPLICATION,
    DISCOUNT_FILTER_GROUPING_QUALIFICATION,
  ) as $grouping) {

    //Copy discount's products
    $product_ids = get_product_ids_for_discount($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 = get_term_ids_for_discount($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 = get_skus_for_discount($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 = get_classes_for_discount($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 = get_author_ids_for_discount($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 = get_role_ids_for_discount($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}");
}