РЕДАКТИРОВАТЬ: Есть, не могу поверить, что я пропустил -
$ HTTP_POST_VARS не является глобальным, изменил его на параметр для передачи.
Обычно я использую $ _POST, но в oscommerce по умолчанию это так, поэтому я использовал это для поддержания сходства.
Я не могу заставить этот код работать, и я понятия не имею, почему.
function check_product_available() {
global $cart;
$products = $cart->get_products();
//product exclusion
//check to see if the product is in one of the limited categories
$check_product_query = tep_db_query( $sql = 'SELECT products_id
FROM discount_coupons_to_products
WHERE coupons_id="'.tep_db_input( $HTTP_POST_VARS['couponcart'] ).'"' );
$exlproducts = array();
if( tep_db_num_rows( $check_product_query ) > 0 ) {
while( $products = tep_db_fetch_array( $check_product_query ) ) {
$exlproducts[] = $products['products_id'];
}
}
for ($i=0, $n=sizeof($products); $i<$n; $i++) {
if( in_array( $products[$i]['id'], $exlproducts ) ) {
//use this to debug exclusions:
return false;
}
}
return true;
}
//end product exclusion
Я попытался переместить петли, и он все еще всегда возвращает истину. Я повторил массив products и id там и выполнил запрос sql, жестко кодирующий идентификатор купона, и он также отлично работает.