/** * Get promotion dynamic properties * * @param array $promotion_id promotion ID * @param array $promotion promotion condition * @param array $condition condition * @param array $cart cart * @param array $auth auth information * @return mixed */ function fn_promotion_get_dynamic($promotion_id, $promotion, $condition, &$cart, &$auth = NULL) { if ($condition == 'number_of_usages') { $usages = db_get_field("SELECT number_of_usages FROM ?:promotions WHERE promotion_id = ?i", $promotion_id); return (int) $usages + 1; } elseif ($condition == 'once_per_customer') { if (empty($cart['user_data'])) { return 'Y'; } // This is checkbox with values (Y/N), so we need to return appropriate values return fn_promotion_check_existence($promotion_id, $cart) ? 'N' : 'Y'; } }
/** * Get promotion dynamic properties * * @param array $promotion_id promotion ID * @param array $promotion promotion condition * @param array $condition condition * @param array $cart cart * @param array $auth auth information * @return mixed */ function fn_promotion_get_dynamic($promotion_id, $promotion, $condition, &$cart, &$auth = NULL) { if ($condition == 'number_of_usages') { $usages = db_get_field("SELECT number_of_usages FROM ?:promotions WHERE promotion_id = ?i", $promotion_id); return intval($usages) + 1; } elseif ($condition == 'once_per_customer') { $exists = fn_promotion_check_existence($promotion_id, $cart); if (empty($cart['user_data'])) { return 'Y'; } $promotion_data = fn_get_promotion_data($promotion_id); $coupon_exist = false; if (!empty($promotion_data['conditions']['conditions'])) { foreach ($promotion_data['conditions']['conditions'] as $val) { if ($val['condition'] == 'coupon_code') { $coupon_exist = fn_promotion_validate_coupon($val, $cart); if (!empty($coupon_exist) && $exists) { fn_set_notification('W', __('warning'), __('text_can_be_used_once'), "K", 'error_coupon_already_used'); $_SESSION['promotion_notices']['promotion']['messages'][] = 'coupon_already_used'; } break; } } } if ($exists) { return 'N'; } return 'Y'; // this is checkbox with values (Y/N), so we need to return appropriate values } }