Exemplo n.º 1
0
     $status = fn_checkout_place_order($cart, $auth, $_REQUEST);
     if ($status == PLACE_ORDER_STATUS_TO_CART) {
         return array(CONTROLLER_STATUS_REDIRECT, 'checkout.cart');
     } elseif ($status == PLACE_ORDER_STATUS_DENIED) {
         return array(CONTROLLER_STATUS_DENIED);
     }
 }
 if ($mode == 'update_steps') {
     $redirect_params = fn_checkout_update_steps($cart, $auth, $_REQUEST);
     return array(CONTROLLER_STATUS_REDIRECT, 'checkout.checkout?' . http_build_query($redirect_params));
 }
 if ($mode == 'create_profile') {
     if (!empty($_REQUEST['order_id']) && !empty($auth['order_ids']) && in_array($_REQUEST['order_id'], $auth['order_ids'])) {
         $order_info = fn_get_order_info($_REQUEST['order_id']);
         $user_data = $_REQUEST['user_data'];
         fn_fill_user_fields($user_data);
         foreach ($user_data as $k => $v) {
             if (isset($order_info[$k])) {
                 $user_data[$k] = $order_info[$k];
             }
         }
         if ($res = fn_update_user(0, $user_data, $auth, true, true)) {
             list($user_id) = $res;
             fn_login_user($user_id);
             return array(CONTROLLER_STATUS_REDIRECT, 'profiles.success_add');
         } else {
             return array(CONTROLLER_STATUS_REDIRECT, 'checkout.complete?order_id=' . $_REQUEST['order_id']);
         }
     } else {
         return array(CONTROLLER_STATUS_DENIED);
     }
Exemplo n.º 2
0
/**
 * Check if the promotion is already used by customer.
 *
 * @param int $promotion_id
 * @param array $cart
 * @return int|bool
 */
function fn_promotion_check_existence($promotion_id, &$cart)
{
    static $statuses = null;
    if (is_null($statuses)) {
        $order_statuses = fn_get_statuses(STATUSES_ORDER, array(), true);
        foreach ($order_statuses as $status) {
            if ($status['params']['inventory'] == 'D') {
                // decreasing (positive) status
                $statuses[] = $status['status'];
            }
        }
    }
    if (!$statuses) {
        return false;
    }
    $udata = $cart['user_data'];
    fn_fill_user_fields($udata);
    if (defined('ORDER_MANAGEMENT') && !empty($cart['order_id'])) {
        $order_management_condition = db_quote(' order_id != ?i AND ', $cart['order_id']);
    } else {
        $order_management_condition = '';
    }
    $exists = db_get_field("SELECT ((firstname = ?s) + (lastname = ?s) + (b_city = ?s) + (b_state = ?s) + (b_country = ?s) + (b_zipcode = ?s) + (email = ?s) * 6) as r FROM ?:orders WHERE ?p FIND_IN_SET(?i, promotion_ids) AND status IN (?a) HAVING r >= ?i LIMIT 1", $udata['firstname'], $udata['lastname'], $udata['b_city'], $udata['b_state'], $udata['b_country'], $udata['b_zipcode'], $udata['email'], $order_management_condition, $promotion_id, $statuses, PROMOTION_MIN_MATCHES);
    return $exists;
}
Exemplo n.º 3
0
function fn_add_user_data_descriptions(&$user_data, $lang_code = CART_LANGUAGE)
{
    fn_fill_user_fields($user_data);
    // Replace country and state values with their descriptions
    if (!empty($user_data['b_country'])) {
        $user_data['b_country_descr'] = fn_get_country_name($user_data['b_country'], $lang_code);
    }
    if (!empty($user_data['s_country'])) {
        $user_data['s_country_descr'] = fn_get_country_name($user_data['s_country'], $lang_code);
    }
    if (!empty($user_data['b_state'])) {
        $user_data['b_state_descr'] = fn_get_state_name($user_data['b_state'], $user_data['b_country'], $lang_code);
        if (empty($user_data['b_state_descr'])) {
            $user_data['b_state_descr'] = $user_data['b_state'];
        }
    }
    if (!empty($user_data['s_state'])) {
        $user_data['s_state_descr'] = fn_get_state_name($user_data['s_state'], $user_data['s_country'], $lang_code);
        if (empty($user_data['s_state_descr'])) {
            $user_data['s_state_descr'] = $user_data['s_state'];
        }
    }
}
Exemplo n.º 4
0
/**
 * 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') {
        fn_define('PROMOTION_MIN_MATCHES', 5);
        $order_statuses = fn_get_statuses(STATUSES_ORDER, false, true);
        $_statuses = array();
        foreach ($order_statuses as $v) {
            if ($v['inventory'] == 'D') {
                // decreasing (positive) status
                $_statuses[] = $v['status'];
            }
        }
        if (empty($cart['user_data'])) {
            return 'Y';
        }
        $udata = $cart['user_data'];
        fn_fill_user_fields($udata);
        $exists = db_get_field("SELECT ((firstname = ?s) + (lastname = ?s) + (b_city = ?s) + (b_state = ?s) + (b_country = ?s) + (b_zipcode = ?s) + (email = ?s) * 6) as r FROM ?:orders WHERE FIND_IN_SET(promotion_ids, ?i) AND status IN (?a) HAVING r >= ?i LIMIT 1", $udata['firstname'], $udata['lastname'], $udata['b_city'], $udata['b_state'], $udata['b_country'], $udata['b_zipcode'], $udata['email'], $promotion_id, $_statuses, PROMOTION_MIN_MATCHES);
        $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) && !empty($exists)) {
                        fn_set_notification('E', fn_get_lang_var('error'), fn_get_lang_var('text_can_be_used_once'), false, 'error_coupon_already_used');
                    }
                    break;
                }
            }
        }
        if (!empty($exists)) {
            return 'N';
        }
        return 'Y';
        // this is checkbox with values (Y/N), so we need to return appropriate values
    }
}
Exemplo n.º 5
0
function fn_add_user_data_descriptions(&$user_data, $lang_code = CART_LANGUAGE)
{
    fn_fill_user_fields($user_data);
    // Replace titles ids with their descriptions
    $_titles = fn_get_static_data_section('T', false);
    $titles = array();
    foreach ($_titles as $val) {
        $titles[$val['param']] = $val;
    }
    if (!empty($user_data['title'])) {
        $user_data['title_descr'] = !empty($titles[$user_data['title']]['descr']) ? $titles[$user_data['title']]['descr'] : $user_data['title'];
    }
    if (!empty($user_data['b_title'])) {
        $user_data['b_title_descr'] = !empty($titles[$user_data['b_title']]['descr']) ? $titles[$user_data['b_title']]['descr'] : $user_data['b_title'];
    }
    if (!empty($user_data['s_title'])) {
        $user_data['s_title_descr'] = !empty($titles[$user_data['s_title']]['descr']) ? $titles[$user_data['s_title']]['descr'] : $user_data['s_title'];
    }
    // Replace country and state values with their descriptions
    if (!empty($user_data['b_country'])) {
        $user_data['b_country_descr'] = fn_get_country_name($user_data['b_country'], $lang_code);
    }
    if (!empty($user_data['s_country'])) {
        $user_data['s_country_descr'] = fn_get_country_name($user_data['s_country'], $lang_code);
    }
    if (!empty($user_data['b_state'])) {
        $user_data['b_state_descr'] = fn_get_state_name($user_data['b_state'], $user_data['b_country'], $lang_code);
        if (empty($user_data['b_state_descr'])) {
            $user_data['b_state_descr'] = $user_data['b_state'];
        }
    }
    if (!empty($user_data['s_state'])) {
        $user_data['s_state_descr'] = fn_get_state_name($user_data['s_state'], $user_data['s_country'], $lang_code);
        if (empty($user_data['s_state_descr'])) {
            $user_data['s_state_descr'] = $user_data['s_state'];
        }
    }
}