function get_product_ids_for_discount_object in Ubercart Discounts (Alternative) 6.2
Returns product_ids for discount object. Note: this function correctly returns all products for term-based discounts.
Parameters
$discount object:
$exclude_all_products bool:
$grouping const:
Return value
array of product ids (nids)
2 calls to get_product_ids_for_discount_object()
- get_discounts_for_order in uc_discounts/
uc_discounts.module - Returns discounts for order. Note: $order->uc_discounts_codes must be set
- uc_discounts_init in uc_discounts/
uc_discounts.module - Implementation of hook_init().
File
- uc_discounts/
uc_discounts.module, line 910
Code
function get_product_ids_for_discount_object($discount, $grouping = DISCOUNT_FILTER_GROUPING_APPLICATION, $exclude_all_products = FALSE) {
$filter = $grouping == DISCOUNT_FILTER_GROUPING_APPLICATION ? $discount->filter_type : $discount->required_product_type;
switch ($filter) {
case FILTER_TYPE_PRODUCTS:
return get_product_ids_for_discount($discount->discount_id, $grouping, $exclude_all_products);
case FILTER_TYPE_TERMS:
$product_ids = array();
//Get products for terms
$terms = get_term_ids_for_discount($discount->discount_id, $grouping, $exclude_all_products);
$query = 'SELECT DISTINCT p.nid FROM {uc_products} p';
if (!empty($terms)) {
$query .= ' INNER JOIN {term_node} tn ON p.nid=tn.nid
INNER JOIN {uc_discounts_terms} dt ON tn.tid=dt.term_id
WHERE dt.discount_id=%d';
}
$result = db_query($query, $discount->discount_id);
while ($row = db_fetch_object($result)) {
$product_ids[] = $row->nid;
}
return $product_ids;
case FILTER_TYPE_SKUS:
$skus = get_skus_for_discount($discount->discount_id, $grouping, $exclude_all_products);
$query = 'SELECT DISTINCT p.nid FROM {uc_products} p';
if (!empty($skus)) {
$query .= ' INNER JOIN {uc_discounts_skus} ds ON p.model=ds.sku
WHERE ds.discount_id=%d';
}
$result = db_query($query, $discount->discount_id);
while ($row = db_fetch_object($result)) {
$product_ids[] = $row->nid;
}
return $product_ids;
case FILTER_TYPE_CLASS:
$classes = get_classes_for_discount($discount->discount_id, $grouping, $exclude_all_products);
$query = 'SELECT DISTINCT n.nid FROM {node} n';
if (!empty($classes)) {
$query .= ' INNER JOIN {uc_discounts_classes} dcl ON n.type=dcl.class
WHERE dcl.discount_id=%d';
}
$result = db_query($query, $discount->discount_id);
while ($row = db_fetch_object($result)) {
$product_ids[] = $row->nid;
}
return $product_ids;
case FILTER_TYPE_AUTHORS:
$authors = get_author_ids_for_discount($discount->discount_id, $grouping, $exclude_all_products);
$query = 'SELECT DISTINCT n.nid FROM {node} n';
if (!empty($authors)) {
$query .= ' INNER JOIN {uc_discounts_authors} dau ON n.uid=dau.author_id
WHERE dau.discount_id=%d';
}
$result = db_query($query, $discount->discount_id);
while ($row = db_fetch_object($result)) {
$product_ids[] = $row->nid;
}
return $product_ids;
}
return array();
}