diff -urp /Users/mik/Downloads/uc_discounts/discounts/uc_discounts_multi_product.module ./discounts/uc_discounts_multi_product.module --- /Users/mik/Downloads/uc_discounts/discounts/uc_discounts_multi_product.module 2008-10-20 20:05:20.000000000 +0300 +++ ./discounts/uc_discounts_multi_product.module 2008-12-24 23:41:02.000000000 +0200 @@ -25,6 +25,7 @@ function uc_discounts_multi_product_disc 'property' => 'product_multi_items', 'description' => t('Discount multiple products from order'), 'has_qty_field' => TRUE, + 'item_name_callback' => 'uc_discounts_multi_product_item_name', 'item_field_callback' => 'uc_discounts_multi_product_item_field', // recycle 'product_class_callback' => 'uc_discounts_multi_product_class_name', // recycle 'apply_callback' => 'uc_discounts_multi_product_apply', @@ -39,10 +40,10 @@ function uc_discounts_multi_product_disc function uc_discounts_multi_product_check($condition, $total_price, $cart) { - if (isset($condition->item)) { + if (isset($condition->item_id)) { $product_count = 0; foreach ($cart as $product) { - if ( (in_array($product->type, $condition->item) || in_array($product->nid, $condition->item)) && (($condition->amount > 0) ? ($product->price == (float)$condition->amount) : TRUE) ) { + if ( (in_array($product->type, $condition->item_id) || in_array($product->nid, $condition->item_id)) && (($condition->amount > 0) ? ($product->price == (float)$condition->amount) : TRUE) ) { $product_count += $product->qty; } } @@ -67,19 +68,16 @@ function uc_discounts_multi_product_clas return $product_name; } -function uc_discounts_multi_product_item_name($class_id) { - $result = db_query("SELECT name FROM {uc_product_classes} WHERE pcid='%s'", $class_id); - $class_name = check_plain(db_result($result)); - return $class_name; +function uc_discounts_multi_product_item_name($prod_ids) { + $result = db_query("SELECT n.nid,n.title FROM {uc_products} p LEFT JOIN {node} n ON n.nid=p.nid WHERE p.nid IN (".implode(',',$prod_ids).") ORDER BY title"); + while( $dat = db_fetch_array($result) ) { + $prod_names_array[] = check_plain($dat['title']); + } + $prod_names = implode('; ',$prod_names_array); + return $prod_names; } function uc_discounts_multi_product_item_field() { - $options = array(); - $result = db_query("SELECT pcid,name FROM {uc_product_classes} ORDER BY pcid"); - while ($row = db_fetch_object($result)) { - $options[$row->pcid] = check_plain($row->name); - } - $products = array(); $result = db_query("SELECT n.nid,n.title FROM {uc_products} p LEFT JOIN {node} n ON n.nid=p.nid ORDER BY title"); while ($row = db_fetch_object($result)) { @@ -111,7 +109,6 @@ function uc_discounts_multi_product_valu function uc_discounts_multi_product_apply($op, $action, $total_price, &$cart) { $action = uc_discounts_load_action($action->id); - $action->item = unserialize($action->item_id); $sql = "SELECT id FROM {uc_discounts_conditions} WHERE discount_id=%d "; $sql .= "AND property='product_multi' "; @@ -120,7 +117,7 @@ function uc_discounts_multi_product_appl $condition_list = array(); while ($row = db_fetch_object($result)) { $c = uc_discounts_load_condition($row->id); - foreach ($action->item as $ai) { + foreach ($action->item_id as $ai) { if ($c->amount && in_array($ai, $c->item)) { $action->condition_amount = $c->amount; } @@ -129,7 +126,7 @@ function uc_discounts_multi_product_appl $product_price = 0; foreach ($cart as $index => $product) { - if ( (in_array($product->nid, $action->item) || in_array($product->type, $action->item)) && (($action->condition_amount > 0) ? ($product->price == (float)$action->condition_amount) : TRUE) ) { + if ( (in_array($product->nid, $action->item_id) || in_array($product->type, $action->item_id)) && (($action->condition_amount > 0) ? ($product->price == (float)$action->condition_amount) : TRUE) ) { $product_count += $product->qty; $product_total += ($product->qty * $product->price); $product_found[$index] = $product->qty; diff -urp /Users/mik/Downloads/uc_discounts/uc_discounts.module ./uc_discounts.module --- /Users/mik/Downloads/uc_discounts/uc_discounts.module 2008-11-05 09:57:29.000000000 +0200 +++ ./uc_discounts.module 2008-12-24 23:39:57.000000000 +0200 @@ -1255,7 +1255,7 @@ function uc_discounts_condition_form($di $form['submit'] = array( '#type' => 'submit', '#value' => t('Next'), - ); + ); } // stage 2 - everything else @@ -1799,6 +1799,10 @@ function uc_discounts_load_condition($co if (!$condition) { drupal_goto('admin/store/discounts'); } + // for product_multi + if ($condition->property=='product_multi') { + $condition->item_id = unserialize($condition->item_id); + } } return $condition; @@ -1826,6 +1830,10 @@ function uc_discounts_load_action($actio if (!$action) { drupal_goto('admin/store/discounts'); } + // for product_multi + if ($action->property=='product_multi_items') { + $action->item_id = unserialize($action->item_id); + } } return $action; Only in ./: uc_discounts_multiproduct.patch