示例#1
0
文件: func.php 项目: askzap/ultimate
function fn_wishlist_sucess_user_login($udata, $auth)
{
    if (AREA == 'C') {
        if ($cu_id = fn_get_session_data('cu_id')) {
            fn_clear_cart($cart);
            fn_save_cart_content($cart, $cu_id, 'W', 'U');
        }
    }
}
示例#2
0
/**
 * Update steps data handler
 *
 * @param  array $cart   Cart
 * @param  array $auth   Auth
 * @param  array $params Params
 * @return array
 */
function fn_checkout_update_steps(&$cart, &$auth, $params)
{
    $redirect_params = array();
    $user_data = !empty($params['user_data']) ? $params['user_data'] : array();
    unset($user_data['user_type']);
    if (!empty($auth['user_id'])) {
        if (isset($user_data['profile_id'])) {
            if (empty($user_data['profile_id'])) {
                $user_data['profile_type'] = 'S';
            }
            $profile_id = $user_data['profile_id'];
        } elseif (!empty($cart['profile_id'])) {
            $profile_id = $cart['profile_id'];
        } else {
            $profile_id = db_get_field("SELECT profile_id FROM ?:user_profiles WHERE user_id = ?i AND profile_type = 'P'", $auth['user_id']);
        }
        $user_data['user_id'] = $auth['user_id'];
        $current_user_data = fn_get_user_info($auth['user_id'], true, $profile_id);
        if ($profile_id != NULL) {
            $cart['profile_id'] = $profile_id;
        }
        $errors = false;
        // Update contact information
        if (($params['update_step'] == 'step_one' || $params['update_step'] == 'step_two') && !empty($user_data['email'])) {
            // Check email
            $email_exists = fn_is_user_exists($auth['user_id'], $user_data);
            if (!empty($email_exists)) {
                fn_set_notification('E', __('error'), __('error_user_exists'));
                $redirect_params['edit_step'] = $params['update_step'];
                $errors = true;
                $params['next_step'] = $params['update_step'];
            }
        }
        // Update billing/shipping information
        if ($params['update_step'] == 'step_two' || $params['update_step'] == 'step_one' && !$errors) {
            if (!empty($user_data)) {
                $user_data = fn_array_merge($current_user_data, $user_data);
                $user_data['user_type'] = !empty($current_user_data['user_type']) ? $current_user_data['user_type'] : AREA;
                $user_data = fn_fill_contact_info_from_address($user_data);
            }
            $user_data = fn_array_merge($current_user_data, $user_data);
            if (empty($params['ship_to_another'])) {
                $profile_fields = fn_get_profile_fields('O');
                fn_fill_address($user_data, $profile_fields);
            }
            // Check if we need to send notification with new email to customer
            $email = db_get_field('SELECT email FROM ?:users WHERE user_id = ?i', $auth['user_id']);
            $send_notification = false;
            if (isset($user_data['email']) && $user_data['email'] != $email) {
                $send_notification = true;
            }
            list($user_id, $profile_id) = fn_update_user($auth['user_id'], $user_data, $auth, !empty($params['ship_to_another']), $send_notification, false);
            $cart['profile_id'] = $profile_id;
        }
        // Add/Update additional fields
        if (!empty($user_data['fields'])) {
            fn_store_profile_fields($user_data, array('U' => $auth['user_id'], 'P' => $profile_id), 'UP');
            // FIXME
        }
    } elseif (Registry::get('settings.Checkout.disable_anonymous_checkout') != 'Y') {
        if (empty($auth['user_id']) && !empty($user_data['email'])) {
            $email_exists = fn_is_user_exists(0, $user_data);
            if (!empty($email_exists)) {
                fn_set_notification('E', __('error'), __('error_user_exists'));
                fn_save_post_data('user_data');
                if (!empty($params['guest_checkout'])) {
                    $redirect_params['edit_step'] = $params['step_two'];
                    $redirect_params['guest_checkout'] = 1;
                }
                return $redirect_params;
            }
        }
        if (isset($user_data['fields'])) {
            $fields = fn_array_merge(isset($cart['user_data']['fields']) ? $cart['user_data']['fields'] : array(), $user_data['fields']);
        }
        if ($params['update_step'] == 'step_two' && !empty($user_data)) {
            $user_data = fn_fill_contact_info_from_address($user_data);
        }
        $cart['user_data'] = fn_array_merge($cart['user_data'], $user_data);
        // Fill shipping info with billing if needed
        if (empty($params['ship_to_another']) && $params['update_step'] == 'step_two') {
            $profile_fields = fn_get_profile_fields('O');
            fn_fill_address($cart['user_data'], $profile_fields);
        }
        if (!empty($cart['user_data']['b_vat_id']) && !empty($cart['user_data']['b_country'])) {
            if (fn_check_vat_id($user_data['b_vat_id'], $cart['user_data']['b_country'])) {
                fn_set_notification('N', __('notice'), __('vat_id_number_is_valid'));
            } else {
                fn_set_notification('E', __('error'), __('vat_id_number_is_not_valid'));
                $cart['user_data']['b_vat_id'] = '';
                return $redirect_params;
            }
        } elseif (isset($user_data['b_vat_id'])) {
            $user_data['b_vat_id'] = '';
        }
    }
    if (!empty($params['next_step'])) {
        $redirect_params['edit_step'] = $params['next_step'];
    }
    if (!empty($params['shipping_ids'])) {
        fn_checkout_update_shipping($cart, $params['shipping_ids']);
    }
    if (!empty($params['payment_id'])) {
        $cart['payment_id'] = (int) $params['payment_id'];
        if (!empty($params['payment_info'])) {
            $cart['extra_payment_info'] = $params['payment_info'];
            if (!empty($cart['extra_payment_info']['card_number'])) {
                $cart['extra_payment_info']['secure_card_number'] = preg_replace('/^(.+?)([0-9]{4})$/i', '***-$2', $cart['extra_payment_info']['card_number']);
            }
        } else {
            unset($cart['extra_payment_info']);
        }
        fn_update_payment_surcharge($cart, $auth);
        fn_save_cart_content($cart, $auth['user_id']);
    }
    if (!empty($params['customer_notes'])) {
        $cart['notes'] = $params['customer_notes'];
    }
    // Recalculate the cart
    $cart['recalculate'] = true;
    if (!empty($params['next_step']) && ($params['next_step'] == 'step_three' || $params['next_step'] == 'step_four')) {
        $cart['calculate_shipping'] = true;
    }
    $shipping_calculation_type = Registry::get('settings.General.estimate_shipping_cost') == 'Y' || !empty($completed_steps['step_two']) ? 'A' : 'S';
    list($cart_products, $product_groups) = fn_calculate_cart_content($cart, $auth, $shipping_calculation_type, true, 'F');
    $shipping_hash = fn_get_shipping_hash($cart['product_groups']);
    if (!empty($_SESSION['shipping_hash']) && $_SESSION['shipping_hash'] != $shipping_hash && $params['next_step'] == 'step_four' && $cart['shipping_required']) {
        if (!empty($cart['chosen_shipping'])) {
            fn_set_notification('W', __('important'), __('text_shipping_rates_changed'));
        }
        $cart['chosen_shipping'] = array();
        $redirect_params['edit_step'] = 'step_three';
        return $redirect_params;
    }
    return $redirect_params;
}
示例#3
0
function fn_reorder($order_id, &$cart, &$auth)
{
    $order_info = fn_get_order_info($order_id, false, false, false, true);
    unset($_SESSION['shipping_hash']);
    unset($_SESSION['edit_step']);
    fn_set_hook('reorder', $order_info, $cart, $auth);
    foreach ($order_info['products'] as $k => $item) {
        // refresh company id
        $company_id = db_get_field("SELECT company_id FROM ?:products WHERE product_id = ?i", $item['product_id']);
        $order_info['products'][$k]['company_id'] = $company_id;
        unset($order_info['products'][$k]['extra']['ekey_info']);
        $order_info['products'][$k]['product_options'] = empty($order_info['products'][$k]['extra']['product_options']) ? array() : $order_info['products'][$k]['extra']['product_options'];
        $order_info['products'][$k]['main_pair'] = fn_get_cart_product_icon($item['product_id'], $order_info['products'][$k]);
    }
    if (!empty($cart) && !empty($cart['products'])) {
        $cart['products'] = fn_array_merge($cart['products'], $order_info['products']);
    } else {
        $cart['products'] = $order_info['products'];
    }
    foreach ($cart['products'] as $k => $v) {
        $_is_edp = db_get_field("SELECT is_edp FROM ?:products WHERE product_id = ?i", $v['product_id']);
        if ($amount = fn_check_amount_in_stock($v['product_id'], $v['amount'], $v['product_options'], $k, $_is_edp, 0, $cart)) {
            $cart['products'][$k]['amount'] = $amount;
            // Change the path of custom files
            if (!empty($v['extra']['custom_files'])) {
                foreach ($v['extra']['custom_files'] as $option_id => $_data) {
                    if (!empty($_data)) {
                        foreach ($_data as $file_id => $file) {
                            $cart['products'][$k]['extra']['custom_files'][$option_id][$file_id]['path'] = 'sess_data/' . fn_basename($file['path']);
                        }
                    }
                }
            }
        } else {
            unset($cart['products'][$k]);
        }
    }
    // Restore custom files for editing
    $dir_path = 'order_data/' . $order_id;
    if (Storage::instance('custom_files')->isExist($dir_path)) {
        Storage::instance('custom_files')->copy($dir_path, 'sess_data');
    }
    // Redirect customer to step three after reordering
    $cart['payment_updated'] = true;
    fn_save_cart_content($cart, $auth['user_id']);
    unset($cart['product_groups']);
}
示例#4
0
                        $msg = Registry::get('view')->fetch('addons/wishlist/views/wishlist/components/product_notification.tpl');
                        fn_set_notification('I', $title, $msg, 'I');
                    } else {
                        if ($product_ids) {
                            fn_set_notification('W', __('notice'), __('product_in_wishlist'));
                        }
                    }
                    
                    $product_ids = fn_add_product_to_wishlist($_REQUEST['product_data'], $wishlist, $auth);
                    fn_save_cart_content($wishlist, $auth['user_id'], 'W'); */
        //delete the cart product
        fn_delete_cart_product($cart, $_REQUEST['ls_cart_combination_hash']);
        if (fn_cart_is_empty($cart) == true) {
            fn_clear_cart($cart);
        }
        fn_save_cart_content($cart, $_SESSION['settings']['cu_id']['value']);
        $cart['recalculate'] = true;
        fn_calculate_cart_content($cart, $auth, 'A', true, 'F', true);
    } else {
        //   echo 'bad request';
    }
    exit;
} elseif ($mode == 'ls_generate_wishlist_markup') {
    $base_url = fn_ls_get_base_url();
    //changed parameters correction
    $_REQUEST['ls_productId'] = reset(array_keys($_REQUEST['product_data']));
    $_REQUEST['current_url'] = $_REQUEST["redirect_url"];
    $_REQUEST['ls_cart_combination_hash'] = $_REQUEST['ls_product_combination_hash'];
    //get thumbnail path
    //  $image_relative_path = fn_get_image_pairs($_REQUEST['ls_productId'], 'product', 'M', true, true, CART_LANGUAGE);
    //  $image_relative_path=$image_relative_path['detailed']['relative_path'];
示例#5
0
if ($mode == 'recover_password') {
    // Cleanup expired keys
    db_query("DELETE FROM ?:ekeys WHERE ttl > 0 AND ttl < ?i", TIME);
    // FIXME: should be moved to another place
    if (!empty($_REQUEST['ekey'])) {
        $u_id = db_get_field("SELECT object_id FROM ?:ekeys WHERE ekey = ?s AND object_type = 'U' AND ttl > ?i", $_REQUEST['ekey'], TIME);
        if (!empty($u_id)) {
            $udata = db_get_row("SELECT user_id, user_type, tax_exempt, last_login, password_change_timestamp FROM ?:users WHERE user_id = ?i AND status = 'A'", $u_id);
            // Delete this key
            db_query("DELETE FROM ?:ekeys WHERE ekey = ?s", $_REQUEST['ekey']);
            if (!empty($udata)) {
                $auth = fn_fill_auth($udata, isset($auth['order_ids']) ? $auth['order_ids'] : array());
                if (AREA == 'C') {
                    if ($cu_id = fn_get_cookie('cu_id')) {
                        fn_clear_cart($cart);
                        fn_save_cart_content($cart, $cu_id, 'C', 'U');
                        fn_delete_cookies('cu_id');
                    }
                    fn_init_user_session_data($_SESSION, $udata['user_id']);
                }
                fn_set_notification('N', fn_get_lang_var('notice'), fn_get_lang_var('text_change_password'));
                return array(CONTROLLER_STATUS_OK, "profiles.update");
            } else {
                fn_set_notification('E', fn_get_lang_var('error'), fn_get_lang_var('error_account_disabled'));
                return array(CONTROLLER_STATUS_OK, $index_script);
            }
        } else {
            fn_set_notification('E', fn_get_lang_var('error'), fn_get_lang_var('text_ekey_not_valid'));
            return array(CONTROLLER_STATUS_OK, "auth.recover_password");
        }
    }
 public static function apiPlaceOrder($data, &$response, $lang_code = CART_LANGUAGE)
 {
     $cart =& $_SESSION['cart'];
     $auth =& $_SESSION['auth'];
     $orderMethods = new OrderMethods();
     if (empty($cart)) {
         $response->addError('ERROR_ACCESS_DENIED', __('access_denied', $lang_code));
         $response->returnResponse();
     }
     if (!empty($data['user'])) {
         fn_twg_api_set_cart_user_data($data['user'], $response, $lang_code);
     }
     if (empty($auth['user_id']) && empty($cart['user_data'])) {
         $response->addError('ERROR_ACCESS_DENIED', __('access_denied', $lang_code));
         $response->returnResponse();
     }
     if (empty($data['payment_info']) && !empty($cart['extra_payment_info'])) {
         $data['payment_info'] = $cart['extra_payment_info'];
     }
     if (!empty($data['payment_info'])) {
         $cart['payment_id'] = (int) $data['payment_info']['payment_id'];
         unset($data['payment_info']['payment_id']);
         if (!empty($data['payment_info'])) {
             $cart['payment_info'] = $data['payment_info'];
         }
         unset($cart['payment_updated']);
         fn_update_payment_surcharge($cart, $auth);
         fn_save_cart_content($cart, $auth['user_id']);
     }
     unset($cart['payment_info']['secure_card_number']);
     // Remove previous failed order
     if (!empty($cart['failed_order_id']) || !empty($cart['processed_order_id'])) {
         $_order_ids = !empty($cart['failed_order_id']) ? $cart['failed_order_id'] : $cart['processed_order_id'];
         foreach ($_order_ids as $_order_id) {
             fn_delete_order($_order_id);
         }
         $cart['rewrite_order_id'] = $_order_ids;
         unset($cart['failed_order_id'], $cart['processed_order_id']);
     }
     if (!empty($data['shippings'])) {
         if (!fn_checkout_update_shipping($cart, $data['shippings'])) {
             unset($cart['shipping']);
         }
     }
     list(, $_SESSION['shipping_rates']) = fn_calculate_cart_content($cart, $auth, 'E');
     if (empty($cart['shipping']) && $cart['shipping_failed']) {
         $response->addError('ERROR_WRONG_CHECKOUT_DATA', __('wrong_shipping_info', $lang_code));
         $response->returnResponse();
     }
     if (empty($cart['payment_info']) && !isset($cart['payment_id'])) {
         $response->addError('ERROR_WRONG_CHECKOUT_DATA', __('wrong_payment_info', $lang_code));
         $response->returnResponse();
     }
     if (!empty($data['notes'])) {
         $cart['notes'] = $data['notes'];
     }
     $cart['details'] = __('twgadmin_order_via_twigmo');
     list($order_id, $process_payment) = fn_place_order($cart, $auth);
     if (empty($order_id)) {
         return false;
     }
     if ($process_payment == true) {
         $payment_info = !empty($cart['payment_info']) ? $cart['payment_info'] : array();
         fn_twg_start_payment($order_id, array(), $payment_info);
     }
     $orderMethods->orderPlacementRoutines($order_id);
     return $order_id;
 }
示例#7
0
文件: func.php 项目: arpad9/bygmarket
function fn_twg_api_add_product_to_cart($products, &$cart)
{
    $products_data = array();
    foreach ($products as $product) {
        $cid = fn_generate_cart_id($product['product_id'], $product);
        if (!empty($products_data[$cid])) {
            $products_data[$cid]['amount'] += $product['amount'];
        }
        // Get product options images
        $product['combination_hash'] = $cid;
        if (!empty($product['combination_hash']) && !empty($product['product_options'])) {
            $image = fn_get_image_pairs($product['combination_hash'], 'product_option', 'M', true, true, CART_LANGUAGE);
            if (!empty($image)) {
                $product['main_pair'] = $image;
            }
        }
        $products_data[$cid] = $product;
    }
    $auth =& $_SESSION['auth'];
    // actions copied from the checkout.php 'add' action
    $ids = fn_add_product_to_cart($products_data, $cart, $auth);
    fn_save_cart_content($cart, $auth['user_id']);
    $cart['change_cart_products'] = true;
    fn_calculate_cart_content($cart, $auth, 'S', true, 'F', true);
    return $ids;
}
示例#8
0
if (!defined('BOOTSTRAP')) {
    die('Access denied');
}
/**
 * Act on behalf functionality
 */
if (!empty($_REQUEST['skey'])) {
    $session_data = fn_get_storage_data('session_' . $_REQUEST['skey'] . '_data');
    fn_set_storage_data('session_' . $_REQUEST['skey'] . '_data', '');
    if (!empty($session_data)) {
        Tygh::$app['session']->start();
        Tygh::$app['session']->fromArray(unserialize($session_data));
        Tygh::$app['session']->save(Tygh::$app['session']->getID(), Tygh::$app['session']->toArray());
        if (!fn_cart_is_empty(Tygh::$app['session']['cart'])) {
            fn_calculate_cart_content(Tygh::$app['session']['cart'], Tygh::$app['session']['auth'], 'S', true, 'F', true);
            fn_save_cart_content(Tygh::$app['session']['cart'], Tygh::$app['session']['auth']['user_id']);
        }
    }
    return array(CONTROLLER_STATUS_REDIRECT, fn_query_remove(REAL_URL, 'skey'));
}
// UK Cookies Law
if (Registry::get('settings.Security.uk_cookies_law') == 'Y') {
    if (!empty($_REQUEST['cookies_accepted']) && $_REQUEST['cookies_accepted'] == 'Y') {
        Tygh::$app['session']['cookies_accepted'] = true;
    }
    if (!defined('AJAX_REQUEST') && empty(Tygh::$app['session']['cookies_accepted'])) {
        $url = fn_link_attach(Registry::get('config.current_url'), 'cookies_accepted=Y');
        $url = str_replace('&', '&amp;', $url);
        $text = __('uk_cookies_law', array('[url]' => $url));
        fn_delete_notification('uk_cookies_law');
        fn_set_notification('W', __('warning'), $text, 'K', 'uk_cookies_law');
示例#9
0
use Tygh\Development;
use Tygh\Registry;
use Tygh\Session;
use Tygh\BlockManager\Location;
use Tygh\BlockManager\Layout;
if (!defined('BOOTSTRAP')) {
    die('Access denied');
}
if (!empty($_REQUEST['skey'])) {
    $session_data = fn_get_storage_data('session_' . $_REQUEST['skey'] . '_data');
    fn_set_storage_data('session_' . $_REQUEST['skey'] . '_data', '');
    if (!empty($session_data)) {
        $_SESSION = unserialize($session_data);
        Session::save(Session::getId(), $_SESSION);
        fn_calculate_cart_content($_SESSION['cart'], $_SESSION['auth'], 'S', true, 'F', true);
        fn_save_cart_content($_SESSION['cart'], $_SESSION['auth']['user_id']);
    }
    return array(CONTROLLER_STATUS_REDIRECT, fn_query_remove(REAL_URL, 'skey'));
}
// UK Cookies Law
if (Registry::get('settings.Security.uk_cookies_law') == 'Y') {
    if (!empty($_REQUEST['cookies_accepted']) && $_REQUEST['cookies_accepted'] == 'Y') {
        $_SESSION['cookies_accepted'] = true;
    }
    if (!defined('AJAX_REQUEST') && empty($_SESSION['cookies_accepted'])) {
        $url = fn_link_attach(Registry::get('config.current_url'), 'cookies_accepted=Y');
        $text = __('uk_cookies_law', array('[url]' => $url));
        fn_delete_notification('uk_cookies_law');
        fn_set_notification('W', __('warning'), $text, 'K', 'uk_cookies_law');
    } else {
        fn_delete_notification('uk_cookies_law');
示例#10
0
<?php

/***************************************************************************
*                                                                          *
*   (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev    *
*                                                                          *
* This  is  commercial  software,  only  users  who have purchased a valid *
* license  and  accept  to the terms of the  License Agreement can install *
* and use this program.                                                    *
*                                                                          *
****************************************************************************
* PLEASE READ THE FULL TEXT  OF THE SOFTWARE  LICENSE   AGREEMENT  IN  THE *
* "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE.            *
****************************************************************************/
if (!defined('BOOTSTRAP')) {
    die('Access denied');
}
if ($mode == 'logout') {
    fn_save_cart_content(Tygh::$app['session']['wishlist'], $auth['user_id'], 'W');
    unset(Tygh::$app['session']['wishlist']);
}
示例#11
0
<?php

/***************************************************************************
*                                                                          *
*   (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev    *
*                                                                          *
* This  is  commercial  software,  only  users  who have purchased a valid *
* license  and  accept  to the terms of the  License Agreement can install *
* and use this program.                                                    *
*                                                                          *
****************************************************************************
* PLEASE READ THE FULL TEXT  OF THE SOFTWARE  LICENSE   AGREEMENT  IN  THE *
* "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE.            *
****************************************************************************/
if (!defined('BOOTSTRAP')) {
    die('Access denied');
}
if ($mode == 'logout') {
    fn_save_cart_content($_SESSION['wishlist'], $auth['user_id'], 'W');
    unset($_SESSION['wishlist']);
}
示例#12
0
function fn_order_placement_routines($order_id, $force_notification = array(), $clear_cart = true, $action = '')
{
    $order_info = fn_get_order_info($order_id, true);
    if (!empty($_SESSION['cart']['placement_action'])) {
        if (empty($action)) {
            $action = $_SESSION['cart']['placement_action'];
        }
        unset($_SESSION['cart']['placement_action']);
    }
    if (AREA == 'C' && !empty($order_info['user_id'])) {
        $__fake = '';
        fn_save_cart_content($__fake, $order_info['user_id']);
    }
    $edp_data = fn_generate_ekeys_for_edp(array(), $order_info);
    fn_order_notification($order_info, $edp_data, $force_notification);
    $_error = false;
    if ($action == 'save') {
        fn_set_notification('N', fn_get_lang_var('congratulations'), fn_get_lang_var('text_order_saved_successfully'));
    } else {
        if ($order_info['status'] == STATUS_PARENT_ORDER) {
            $child_orders = db_get_hash_single_array("SELECT order_id, status FROM ?:orders WHERE parent_order_id = ?i", array('order_id', 'status'), $order_id);
            $status = reset($child_orders);
            $child_orders = array_keys($child_orders);
        } else {
            $status = $order_info['status'];
        }
        if (substr_count('OP', $status) > 0) {
            if ($action == 'repay') {
                fn_set_notification('N', fn_get_lang_var('congratulations'), fn_get_lang_var('text_order_repayed_successfully'));
            } else {
                fn_set_notification('N', fn_get_lang_var('order_placed'), fn_get_lang_var('text_order_placed_successfully'));
            }
        } elseif ($status == 'B') {
            fn_set_notification('N', fn_get_lang_var('order_placed'), fn_get_lang_var('text_order_backordered'));
        } else {
            if (AREA == 'A' || $action == 'repay') {
                if ($status != 'I') {
                    fn_set_notification('E', fn_get_lang_var('order_placed'), fn_get_lang_var('text_order_placed_error'));
                }
            } else {
                $_error = true;
                if (!empty($child_orders)) {
                    array_unshift($child_orders, $order_id);
                } else {
                    $child_orders = array();
                    $child_orders[] = $order_id;
                }
                $_SESSION['cart'][$status == 'N' ? 'processed_order_id' : 'failed_order_id'] = $child_orders;
            }
            if ($status == 'N' || $action == 'repay' && $status == 'I') {
                fn_set_notification('N', fn_get_lang_var('cancelled'), fn_get_lang_var('text_transaction_cancelled'));
            }
        }
    }
    // Empty cart
    if ($clear_cart == true && $_error == false) {
        $_SESSION['cart'] = array('user_data' => !empty($_SESSION['cart']['user_data']) ? $_SESSION['cart']['user_data'] : array(), 'profile_id' => !empty($_SESSION['cart']['profile_id']) ? $_SESSION['cart']['profile_id'] : 0, 'user_id' => !empty($_SESSION['cart']['user_id']) ? $_SESSION['cart']['user_id'] : 0);
        db_query('DELETE FROM ?:user_session_products WHERE session_id = ?s AND type = ?s', Session::get_id(), 'C');
    }
    fn_set_hook('order_placement_routines', $order_id, $force_notification, $order_info);
    $prefix = Registry::get('settings.General.secure_auth') == 'Y' && AREA == 'C' ? Registry::get('config.https_location') . '/' : '';
    if (AREA == 'A' || $action == 'repay') {
        fn_redirect($prefix . INDEX_SCRIPT . "?dispatch=orders.details&order_id={$order_id}", true);
    } else {
        fn_redirect($prefix . INDEX_SCRIPT . "?dispatch=checkout." . ($_error == true ? Registry::get('settings.General.one_page_checkout') == 'Y' ? "checkout" : "summary" : "complete&order_id={$order_id}"), true);
    }
}
示例#13
0
/**
 * Init user
 *
 * @return boolean always true
 */
function fn_init_user($area = AREA)
{
    $user_info = array();
    if (!empty(Tygh::$app['session']['auth']['user_id'])) {
        $user_info = fn_get_user_short_info(Tygh::$app['session']['auth']['user_id']);
        if (empty($user_info)) {
            // user does not exist in the database, but exists in session
            Tygh::$app['session']['auth'] = array();
        } else {
            Tygh::$app['session']['auth']['usergroup_ids'] = fn_define_usergroups(array('user_id' => Tygh::$app['session']['auth']['user_id'], 'user_type' => $user_info['user_type']));
        }
    }
    $first_init = false;
    if (empty(Tygh::$app['session']['auth'])) {
        $udata = array();
        $user_id = fn_get_session_data($area . '_user_id');
        if ($area == 'A' && defined('CONSOLE')) {
            $user_id = 1;
        }
        if ($user_id) {
            fn_define('LOGGED_VIA_COOKIE', true);
        }
        fn_login_user($user_id);
        if (!defined('NO_SESSION')) {
            Tygh::$app['session']['cart'] = isset(Tygh::$app['session']['cart']) ? Tygh::$app['session']['cart'] : array();
        }
        if (defined('LOGGED_VIA_COOKIE') && !empty(Tygh::$app['session']['auth']['user_id']) || ($cu_id = fn_get_session_data('cu_id'))) {
            $first_init = true;
            if (!empty($cu_id)) {
                fn_define('COOKIE_CART', true);
            }
            // Cleanup cached shipping rates
            unset(Tygh::$app['session']['shipping_rates']);
            $_utype = empty(Tygh::$app['session']['auth']['user_id']) ? 'U' : 'R';
            $_uid = empty(Tygh::$app['session']['auth']['user_id']) ? $cu_id : Tygh::$app['session']['auth']['user_id'];
            fn_extract_cart_content(Tygh::$app['session']['cart'], $_uid, 'C', $_utype);
            fn_save_cart_content(Tygh::$app['session']['cart'], $_uid, 'C', $_utype);
            if (!empty(Tygh::$app['session']['auth']['user_id'])) {
                Tygh::$app['session']['cart']['user_data'] = fn_get_user_info(Tygh::$app['session']['auth']['user_id']);
                $user_info = fn_get_user_short_info(Tygh::$app['session']['auth']['user_id']);
            }
        }
    }
    if (fn_is_expired_storage_data('cart_products_next_check', SECONDS_IN_HOUR * 12)) {
        db_query("DELETE FROM ?:user_session_products WHERE user_type = 'U' AND timestamp < ?i", TIME - SECONDS_IN_DAY * 30);
    }
    if (!fn_allowed_for('ULTIMATE:FREE')) {
        // If administrative account has usergroup, it means the access restrictions are in action
        if ($area == 'A' && !empty(Tygh::$app['session']['auth']['usergroup_ids'])) {
            fn_define('RESTRICTED_ADMIN', true);
        }
    }
    if (!empty($user_info) && $user_info['user_type'] == 'A' && (empty($user_info['company_id']) || fn_allowed_for('ULTIMATE') && $user_info['company_id'] == Registry::get('runtime.company_id'))) {
        $customization_mode = fn_array_combine(explode(',', Registry::get('settings.customization_mode')), true);
        if (!empty($customization_mode)) {
            Registry::set('runtime.customization_mode', $customization_mode);
            if ($area == 'A' || Embedded::isEnabled()) {
                Registry::set('runtime.customization_mode.live_editor', false);
            }
        }
    }
    fn_set_hook('user_init', Tygh::$app['session']['auth'], $user_info, $first_init);
    Registry::set('user_info', $user_info);
    return array(INIT_STATUS_OK);
}
示例#14
0
function fn_reorder($order_id, &$cart, &$auth)
{
    $order_info = fn_get_order_info($order_id, false, false, false, true);
    fn_set_hook('reorder', $order_info, $cart, $auth);
    foreach ($order_info['items'] as $k => $item) {
        // refresh company id
        $company_id = db_get_field("SELECT company_id FROM ?:products WHERE product_id = ?i", $item['product_id']);
        $order_info['items'][$k]['company_id'] = $company_id;
        unset($order_info['items'][$k]['extra']['ekey_info']);
        $order_info['items'][$k]['product_options'] = empty($order_info['items'][$k]['extra']['product_options']) ? array() : $order_info['items'][$k]['extra']['product_options'];
    }
    if (!empty($cart) && !empty($cart['products'])) {
        $cart['products'] = fn_array_merge($cart['products'], $order_info['items']);
    } else {
        $cart['products'] = $order_info['items'];
    }
    foreach ($cart['products'] as $k => $v) {
        $_is_edp = db_get_field("SELECT is_edp FROM ?:products WHERE product_id = ?i", $v['product_id']);
        if ($amount = fn_check_amount_in_stock($v['product_id'], $v['amount'], $v['product_options'], $k, $_is_edp, 0, $cart)) {
            $cart['products'][$k]['amount'] = $amount;
        } else {
            unset($cart['products'][$k]);
        }
    }
    // Restore custom files for editing
    $dir_path = DIR_CUSTOM_FILES . 'order_data/' . $order_id;
    if (is_dir($dir_path)) {
        fn_mkdir(DIR_CUSTOM_FILES . 'sess_data');
        fn_copy($dir_path, DIR_CUSTOM_FILES . 'sess_data');
    }
    // Redirect customer to step three after reordering
    $cart['payment_updated'] = true;
    fn_save_cart_content($cart, $auth['user_id']);
}
                $gift_cert['gift_cert_id'] = $gift_cert_wishlist_id;
                Registry::get('view')->assign('gift_cert', $gift_cert);
                $msg = Registry::get('view')->fetch('addons/wishlist/views/wishlist/components/product_notification.tpl');
                fn_set_notification('I', __('text_gift_cert_added_to_wishlist'), $msg, 'I');
            }
        }
        return array(CONTROLLER_STATUS_REDIRECT, 'wishlist.view');
    }
    if ($mode == 'update') {
        if (!empty($_REQUEST['gift_cert_data']) && !empty($_REQUEST['gift_cert_id']) && $_REQUEST['type'] == 'W') {
            fn_delete_wishlist_gift_certificate($wishlist, $_REQUEST['gift_cert_id']);
            list($gift_cert_id, $gift_cert) = fn_add_gift_certificate_to_wishlist($wishlist, $_REQUEST['gift_cert_data']);
            if (!empty($gift_cert_id)) {
                $wishlist['gift_certificates'][$gift_cert_id] = $gift_cert;
            }
            fn_save_cart_content($wishlist, $auth['user_id'], $_REQUEST['type']);
            return array(CONTROLLER_STATUS_REDIRECT, 'wishlist.view');
        }
    }
    if ($mode == 'wishlist_delete') {
        if (isset($_REQUEST['gift_cert_wishlist_id'])) {
            fn_delete_cart_gift_certificate($_SESSION['wishlist'], $_REQUEST['gift_cert_wishlist_id']);
        }
        return array(CONTROLLER_STATUS_REDIRECT, 'wishlist.view');
    }
}
if ($mode == 'update') {
    if (!empty($_REQUEST['gift_cert_wishlist_id'])) {
        $gift_cert_data = fn_get_gift_certificate_info($_REQUEST['gift_cert_wishlist_id'], 'W');
        if (!empty($gift_cert_data['extra']['exclude_from_calculate'])) {
            return array(CONTROLLER_STATUS_NO_PAGE);
示例#16
0
/**
 * Init user
 *
 * @return boolean always true
 */
function fn_init_user()
{
    if (!empty($_SESSION['auth']['user_id'])) {
        $user_info = fn_get_user_short_info($_SESSION['auth']['user_id']);
        if (empty($user_info)) {
            // user does not exist in the database, but exists in session
            $_SESSION['auth'] = array();
        } else {
            $_SESSION['auth']['usergroup_ids'] = fn_define_usergroups(array('user_id' => $_SESSION['auth']['user_id'], 'user_type' => $user_info['user_type']));
        }
    }
    $first_init = false;
    if (empty($_SESSION['auth'])) {
        $udata = array();
        if (fn_get_cookie(AREA_NAME . '_user_id')) {
            $udata = db_get_row("SELECT user_id, user_type, tax_exempt, last_login FROM ?:users WHERE user_id = ?i AND password = ?s", fn_get_cookie(AREA_NAME . '_user_id'), fn_get_cookie(AREA_NAME . '_password'));
            fn_define('LOGGED_VIA_COOKIE', true);
        }
        $_SESSION['auth'] = fn_fill_auth($udata, isset($_SESSION['auth']['order_ids']) ? $_SESSION['auth']['order_ids'] : array());
        if (!defined('NO_SESSION')) {
            $_SESSION['cart'] = isset($_SESSION['cart']) ? $_SESSION['cart'] : array();
        }
        if (defined('LOGGED_VIA_COOKIE') && !empty($_SESSION['auth']['user_id']) || ($cu_id = fn_get_cookie('cu_id'))) {
            $first_init = true;
            if (!empty($cu_id)) {
                fn_define('COOKIE_CART', true);
            }
            // Cleanup cached shipping rates
            unset($_SESSION['shipping_rates']);
            $_utype = empty($_SESSION['auth']['user_id']) ? 'U' : 'R';
            $_uid = empty($_SESSION['auth']['user_id']) ? $cu_id : $_SESSION['auth']['user_id'];
            fn_extract_cart_content($_SESSION['cart'], $_uid, 'C', $_utype);
            fn_save_cart_content($_SESSION['cart'], $_uid, 'C', $_utype);
            if (!empty($_SESSION['auth']['user_id'])) {
                $_SESSION['cart']['user_data'] = fn_get_user_info($_SESSION['auth']['user_id']);
            }
        }
    }
    if (TIME > Registry::get('settings.cart_products_next_check')) {
        fn_define('CART_PRODUCTS_CHECK_PERIOD', SECONDS_IN_HOUR * 12);
        fn_define('CART_PRODUCTS_DELETE_TIME', TIME - SECONDS_IN_DAY * 30);
        db_query("DELETE FROM ?:user_session_products WHERE user_type = 'U' AND timestamp < ?i", CART_PRODUCTS_DELETE_TIME);
        db_query("UPDATE ?:settings SET value = ?s WHERE option_name = 'cart_products_next_check'", TIME + CART_PRODUCTS_CHECK_PERIOD);
    }
    // If administrative account has usergroup, it means the access restrictions are in action
    if (AREA == 'A' && !empty($_SESSION['auth']['usergroup_ids'])) {
        fn_define('RESTRICTED_ADMIN', true);
    }
    if (!empty($user_info) && $user_info['user_type'] == 'A') {
        if (Registry::get('settings.translation_mode') == 'Y') {
            fn_define('TRANSLATION_MODE', true);
        }
        if (Registry::get('settings.customization_mode') == 'Y') {
            if (AREA != 'A') {
                fn_define('PARSE_ALL', true);
            }
            fn_define('CUSTOMIZATION_MODE', true);
        }
    }
    fn_set_hook('user_init', $_SESSION['auth'], $user_info, $first_init);
    Registry::set('user_info', $user_info);
    Registry::get('view')->assign('auth', $_SESSION['auth']);
    Registry::get('view')->assign('user_info', $user_info);
    return true;
}
示例#17
0
function fn_order_placement_routines($action = '', $order_id = 0, $force_notification = array(), $clear_cart = true, $area = AREA)
{
    if (Embedded::isLeft() && !Embedded::isEnabled()) {
        Embedded::enable();
    }
    if ($action == 'checkout_redirect') {
        if ($area == 'A') {
            fn_redirect("order_management.edit?order_id=" . reset($_SESSION['cart']['processed_order_id']));
        } else {
            fn_redirect('checkout.' . (Registry::get('settings.General.checkout_style') != 'multi_page' ? 'checkout' : 'summary'));
        }
    } elseif (in_array($action, array('save', 'repay', 'route')) && !empty($order_id)) {
        $order_info = fn_get_order_info($order_id, true);
        $display_notification = true;
        fn_set_hook('placement_routines', $order_id, $order_info, $force_notification, $clear_cart, $action, $display_notification);
        if (!empty($_SESSION['cart']['placement_action'])) {
            if (empty($action)) {
                $action = $_SESSION['cart']['placement_action'];
            }
            unset($_SESSION['cart']['placement_action']);
        }
        if ($area == 'C' && !empty($order_info['user_id'])) {
            $__fake = '';
            fn_save_cart_content($__fake, $order_info['user_id']);
        }
        $edp_data = fn_generate_ekeys_for_edp(array(), $order_info);
        fn_order_notification($order_info, $edp_data, $force_notification);
        $_error = false;
        if ($action == 'save') {
            if ($display_notification) {
                fn_set_notification('N', __('congratulations'), __('text_order_saved_successfully'));
            }
        } else {
            if ($order_info['status'] == STATUS_PARENT_ORDER) {
                $child_orders = db_get_hash_single_array("SELECT order_id, status FROM ?:orders WHERE parent_order_id = ?i", array('order_id', 'status'), $order_id);
                $status = reset($child_orders);
                $child_orders = array_keys($child_orders);
            } else {
                $status = $order_info['status'];
            }
            if (in_array($status, fn_get_order_paid_statuses())) {
                if ($action == 'repay') {
                    fn_set_notification('N', __('congratulations'), __('text_order_repayed_successfully'));
                } else {
                    fn_set_notification('N', __('order_placed'), __('text_order_placed_successfully'));
                }
            } elseif ($status == STATUS_BACKORDERED_ORDER) {
                fn_set_notification('W', __('important'), __('text_order_backordered'));
            } else {
                if ($area == 'A' || $action == 'repay') {
                    if ($status != STATUS_CANCELED_ORDER) {
                        $_payment_info = db_get_field("SELECT data FROM ?:order_data WHERE order_id = ?i AND type = 'P'", $order_id);
                        if (!empty($_payment_info)) {
                            $_payment_info = unserialize(fn_decrypt_text($_payment_info));
                            $_msg = !empty($_payment_info['reason_text']) ? $_payment_info['reason_text'] : '';
                            $_msg .= empty($_msg) ? __('text_order_placed_error') : '';
                            fn_set_notification('E', '', $_msg);
                        }
                    }
                } else {
                    $_error = true;
                    if (!empty($child_orders)) {
                        array_unshift($child_orders, $order_id);
                    } else {
                        $child_orders = array();
                        $child_orders[] = $order_id;
                    }
                    $_SESSION['cart'][$status == STATUS_INCOMPLETED_ORDER ? 'processed_order_id' : 'failed_order_id'] = $child_orders;
                }
                if ($status == STATUS_INCOMPLETED_ORDER || $action == 'repay' && $status == STATUS_CANCELED_ORDER) {
                    fn_set_notification('W', __('important'), __('text_transaction_cancelled'));
                }
            }
        }
        // Empty cart
        if ($clear_cart == true && $_error == false) {
            $_SESSION['cart'] = array('user_data' => !empty($_SESSION['cart']['user_data']) ? $_SESSION['cart']['user_data'] : array(), 'profile_id' => !empty($_SESSION['cart']['profile_id']) ? $_SESSION['cart']['profile_id'] : 0, 'user_id' => !empty($_SESSION['cart']['user_id']) ? $_SESSION['cart']['user_id'] : 0);
            $_SESSION['shipping_rates'] = array();
            unset($_SESSION['shipping_hash']);
            db_query('DELETE FROM ?:user_session_products WHERE session_id = ?s AND type = ?s', Session::getId(), 'C');
        }
        fn_set_hook('order_placement_routines', $order_id, $force_notification, $order_info, $_error);
        if ($area == 'A') {
            fn_redirect("orders.details?order_id={$order_id}");
        } else {
            fn_redirect('checkout.' . ($_error == true ? Registry::get('settings.General.checkout_style') != 'multi_page' ? 'checkout' : 'summary' : "complete?order_id={$order_id}"));
        }
    } elseif ($action == 'index_redirect') {
        fn_redirect(fn_url('', 'C', 'http'));
    } else {
        fn_redirect(fn_url($action, 'C', 'http'));
    }
}
示例#18
0
} elseif ($mode == 'show_boxes_products') {
    if ($_REQUEST['product_ids']) {
        $params['item_ids'] = $_REQUEST['product_ids'];
        $params['p_status'] = array("A", "H");
        list($products, $search) = fn_get_products($params, 100, CART_LANGUAGE);
    }
    Registry::get('view')->assign('products', $products);
} elseif ($mode == 'ls_wishlist_update') {
    //update number of favorite products through ajax
    $result = $_SESSION['wishlist'];
    $wishlistest3 = count($result['products']);
    echo $wishlistest3;
    exit;
} elseif ($mode == 'delete_footer' && !empty($_REQUEST['cart_id'])) {
    fn_delete_wishlist_product($wishlist, $_REQUEST['cart_id']);
    fn_save_cart_content($wishlist, $auth['user_id'], 'W');
    exit;
} elseif ($mode == 'view_details_compact') {
    if ($_REQUEST['variant_id']) {
        $fieldsOptionsVariantsLinksToProducts = "d.product_id AS linked_product_id";
        $conditionOptionsVariantsLinksToProducts = db_quote(' (?:product_options.product_id = ?i OR (?:product_options.product_id=0 AND n.product_id = ?i))', $_REQUEST['product_id'], $_REQUEST['product_id']);
        $conditionOptionsVariantsLinksToProducts .= db_quote(' AND d.option_variant_id =?i', $_REQUEST['variant_id']);
        $joinOptionsVariantsLinksToProducts = db_quote(' LEFT JOIN ?:product_global_option_links n ON ?:product_options.option_id = n.option_id ');
        $joinOptionsVariantsLinksToProducts .= db_quote(' JOIN ?:product_option_variants c ON ?:product_options.option_id = c.option_id');
        $joinOptionsVariantsLinksToProducts .= db_quote(' JOIN ?:product_option_variants_link d ON c.variant_id = d.option_variant_id');
        $optsVariantsLinksToProducts = db_get_field("SELECT " . $fieldsOptionsVariantsLinksToProducts . " FROM ?:product_options " . $joinOptionsVariantsLinksToProducts . " WHERE " . $conditionOptionsVariantsLinksToProducts . " GROUP BY c.variant_id, ?:product_options.option_id" . " LIMIT 1");
        $productIds = array($optsVariantsLinksToProducts);
    } else {
        $productIds = array($_REQUEST['product_id']);
    }
    $productDataToView = fn_get_product_data_for_compare($productIds);
示例#19
0
/**
 * @param array $auth
 */
function fn_user_logout($auth)
{
    // Regenerate session_id for security reasons
    fn_save_cart_content(Tygh::$app['session']['cart'], $auth['user_id']);
    Tygh::$app['session']->regenerateID();
    fn_init_user();
    $auth = Tygh::$app['session']['auth'];
    if (!empty($auth['user_id'])) {
        fn_log_user_logout($auth);
    }
    unset(Tygh::$app['session']['auth']);
    fn_clear_cart(Tygh::$app['session']['cart'], false, true);
    fn_delete_session_data(AREA . '_user_id', AREA . '_password');
    unset(Tygh::$app['session']['product_notifications']);
    fn_login_user();
    // need to fill Tygh::$app['session']['auth'] array for anonymous user
    /**
     * Allows to perform any actions after user logout.
     *
     * @param array $auth Auth data from session
     */
    fn_set_hook('user_logout_after', $auth);
}
    fn_delete_cart_product($cart, $_REQUEST['cart_id']);
    return array(CONTROLLER_STATUS_REDIRECT, "order_management.{$_suffix}");
} elseif ($mode == 'get_custom_file' && isset($_REQUEST['cart_id']) && isset($_REQUEST['option_id']) && isset($_REQUEST['file'])) {
    if (isset($cart['products'][$_REQUEST['cart_id']]['extra']['custom_files'][$_REQUEST['option_id']][$_REQUEST['file']])) {
        $file = $cart['products'][$_REQUEST['cart_id']]['extra']['custom_files'][$_REQUEST['option_id']][$_REQUEST['file']];
        Storage::instance('custom_files')->get($file['path'], $file['name']);
    }
} elseif ($mode == 'delete_file' && isset($_REQUEST['cart_id'])) {
    if (isset($cart['products'][$_REQUEST['cart_id']]['extra']['custom_files'][$_REQUEST['option_id']][$_REQUEST['file']])) {
        // Delete saved custom file
        $file = $cart['products'][$_REQUEST['cart_id']]['extra']['custom_files'][$_REQUEST['option_id']][$_REQUEST['file']];
        Storage::instance('custom_files')->delete($file['path']);
        Storage::instance('custom_files')->delete($file['path'] . '_thumb');
        unset($cart['products'][$_REQUEST['cart_id']]['extra']['custom_files'][$_REQUEST['option_id']][$_REQUEST['file']]);
    }
    fn_save_cart_content($cart, $customer_auth['user_id']);
    return array(CONTROLLER_STATUS_REDIRECT, "order_management.{$_suffix}");
} elseif ($mode == 'update_payment') {
    //
    // Update payment method
    //
    $cart['payment_id'] = !empty($_REQUEST['payment_id']) ? $_REQUEST['payment_id'] : 0;
    return array(CONTROLLER_STATUS_REDIRECT, "order_management.{$_suffix}");
} elseif ($mode == 'update_shipping' && isset($_REQUEST['shipping_id'])) {
    //
    // Update shipping method
    //
    $supplier_id = !empty($_REQUEST['supplier_id']) ? $_REQUEST['supplier_id'] : 0;
    fn_checkout_update_shipping($cart, array($supplier_id => $_REQUEST['shipping_id']));
    return array(CONTROLLER_STATUS_REDIRECT, "order_management.{$_suffix}");
}
示例#21
0
/**
 * @param array $auth
 */
function fn_user_logout($auth)
{
    // Regenerate session_id for security reasons
    fn_save_cart_content($_SESSION['cart'], $auth['user_id']);
    Session::regenerateId();
    fn_init_user();
    $auth = $_SESSION['auth'];
    if (!empty($auth['user_id'])) {
        fn_log_user_logout($auth);
    }
    unset($_SESSION['auth']);
    fn_clear_cart($_SESSION['cart'], false, true);
    fn_delete_session_data(AREA . '_user_id', AREA . '_password');
    unset($_SESSION['product_notifications']);
    fn_login_user();
    // need to fill $_SESSION['auth'] array for anonymous user
}
示例#22
0
        $product['extra']['product_options'] = empty($product['product_options']) ? array() : $product['product_options'];
        $cart['products'][$_REQUEST['cart_id']] = $product;
    }
    fn_save_cart_content($cart, $auth['user_id']);
    $cart['recalculate'] = true;
    if (defined('AJAX_REQUEST')) {
        fn_set_notification('N', __('notice'), __('text_product_file_has_been_deleted'));
        if (Registry::get('runtime.action') == 'from_status') {
            fn_calculate_cart_content($cart, $auth, 'S', true, 'F', true);
        }
    }
    return array(CONTROLLER_STATUS_REDIRECT, 'checkout.' . $_REQUEST['redirect_mode']);
    //Clear cart
} elseif ($mode == 'clear') {
    fn_clear_cart($cart);
    fn_save_cart_content($cart, $auth['user_id']);
    return array(CONTROLLER_STATUS_REDIRECT, 'checkout.cart');
    //Purge undeliverable products
} elseif ($mode == 'purge_undeliverable') {
    fn_purge_undeliverable_products($cart);
    fn_set_notification('N', __('notice'), __('notice_undeliverable_products_removed'));
    return array(CONTROLLER_STATUS_REDIRECT, 'checkout.checkout');
} elseif ($mode == 'complete') {
    if (!empty($_REQUEST['order_id'])) {
        if (empty($auth['user_id'])) {
            if (empty($auth['order_ids'])) {
                return array(CONTROLLER_STATUS_REDIRECT, 'auth.login_form?return_url=' . urlencode(Registry::get('config.current_url')));
            } else {
                $allowed_id = in_array($_REQUEST['order_id'], $auth['order_ids']);
            }
        } else {
示例#23
0
function fn_reorder($order_id, &$cart, &$auth)
{
    $order_info = fn_get_order_info($order_id, false, false, false, true);
    unset(Tygh::$app['session']['shipping_hash']);
    unset(Tygh::$app['session']['edit_step']);
    fn_set_hook('reorder', $order_info, $cart, $auth);
    foreach ($order_info['products'] as $k => $item) {
        // refresh company id
        $company_id = db_get_field("SELECT company_id FROM ?:products WHERE product_id = ?i", $item['product_id']);
        $order_info['products'][$k]['company_id'] = $company_id;
        unset($order_info['products'][$k]['extra']['ekey_info']);
        unset($order_info['products'][$k]['extra']['promotions']);
        unset($order_info['products'][$k]['promotions']);
        $order_info['products'][$k]['product_options'] = empty($order_info['products'][$k]['extra']['product_options']) ? array() : $order_info['products'][$k]['extra']['product_options'];
        $order_info['products'][$k]['main_pair'] = fn_get_cart_product_icon($item['product_id'], $order_info['products'][$k]);
    }
    if (!empty($cart) && !empty($cart['products'])) {
        $cart['products'] = fn_array_merge($cart['products'], $order_info['products']);
    } else {
        $cart['products'] = $order_info['products'];
    }
    foreach ($cart['products'] as $k => $v) {
        $_is_edp = db_get_field("SELECT is_edp FROM ?:products WHERE product_id = ?i", $v['product_id']);
        if ($amount = fn_check_amount_in_stock($v['product_id'], $v['amount'], $v['product_options'], $k, $_is_edp, 0, $cart)) {
            $cart['products'][$k]['amount'] = $amount;
            // Check if the product price with options modifiers equals to zero
            $price = fn_get_product_price($v['product_id'], $amount, $auth);
            $zero_price_action = db_get_field("SELECT zero_price_action FROM ?:products WHERE product_id = ?i", $v['product_id']);
            if (!floatval($price) && $zero_price_action == 'A') {
                if (isset($v['custom_user_price'])) {
                    $price = $v['custom_user_price'];
                }
            }
            $price = fn_apply_options_modifiers($v['product_options'], $price, 'P', array(), array('product_data' => $v));
            if (!floatval($price)) {
                $data['price'] = isset($data['price']) ? fn_parse_price($data['price']) : 0;
                if (AREA == 'C' && ($zero_price_action == 'R' || $zero_price_action == 'A' && floatval($data['price']) < 0)) {
                    if ($zero_price_action == 'A') {
                        fn_set_notification('E', __('error'), __('incorrect_price_warning'));
                    } else {
                        fn_set_notification('W', __('warning'), __('warning_zero_price_restricted_product', array('[product]' => $v['product'])));
                    }
                    unset($cart['products'][$k]);
                    continue;
                }
            }
            // Change the path of custom files
            if (!empty($v['extra']['custom_files'])) {
                foreach ($v['extra']['custom_files'] as $option_id => $_data) {
                    if (!empty($_data)) {
                        foreach ($_data as $file_id => $file) {
                            $cart['products'][$k]['extra']['custom_files'][$option_id][$file_id]['path'] = 'sess_data/' . fn_basename($file['path']);
                        }
                    }
                }
            }
        } else {
            unset($cart['products'][$k]);
        }
    }
    // Restore custom files for editing
    $dir_path = 'order_data/' . $order_id;
    if (Storage::instance('custom_files')->isExist($dir_path)) {
        Storage::instance('custom_files')->copy($dir_path, 'sess_data');
    }
    // Redirect customer to step three after reordering
    $cart['payment_updated'] = true;
    fn_save_cart_content($cart, $auth['user_id']);
    unset($cart['product_groups']);
}
示例#24
0
 public static function orderPlacementRoutines($order_id, $force_notification = array(), $clear_cart = true, $action = '')
 {
     // don't show notifications
     // only clear cart
     $order_info = fn_get_order_info($order_id, true);
     $display_notification = true;
     fn_set_hook('placement_routines', $order_id, $order_info, $force_notification, $clear_cart, $action, $display_notification);
     if (!empty($_SESSION['cart']['placement_action'])) {
         if (empty($action)) {
             $action = $_SESSION['cart']['placement_action'];
         }
         unset($_SESSION['cart']['placement_action']);
     }
     if (AREA == 'C' && !empty($order_info['user_id'])) {
         $__fake = '';
         fn_save_cart_content($__fake, $order_info['user_id']);
     }
     $edp_data = fn_generate_ekeys_for_edp(array(), $order_info);
     fn_order_notification($order_info, $edp_data, $force_notification);
     // Empty cart
     if ($clear_cart == true && substr_count('OPT', $order_info['status']) > 0) {
         $_SESSION['cart'] = array('user_data' => !empty($_SESSION['cart']['user_data']) ? $_SESSION['cart']['user_data'] : array(), 'profile_id' => !empty($_SESSION['cart']['profile_id']) ? $_SESSION['cart']['profile_id'] : 0, 'user_id' => !empty($_SESSION['cart']['user_id']) ? $_SESSION['cart']['user_id'] : 0);
         db_query('DELETE FROM ?:user_session_products WHERE session_id = ?s AND type = ?s', Session::getId(), 'C');
     }
     $is_twg_hook = true;
     $_error = false;
     fn_set_hook('order_placement_routines', $order_id, $force_notification, $order_info, $_error, $is_twg_hook);
 }
示例#25
0
                $view->assign('cart_amount', $_SESSION['cart']['amount']);
                $view->assign('cart_subtotal', $_SESSION['cart']['subtotal']);
                fn_set_notification('N', fn_get_lang_var('notice'), fn_get_lang_var('text_gift_cert_added_to_cart'));
                $view->display('views/checkout/components/cart_status.tpl');
                exit;
            }
        }
    }
    if ($mode == 'update') {
        if (!empty($_REQUEST['gift_cert_data']) && !empty($_REQUEST['gift_cert_id']) && $_REQUEST['type'] == 'C') {
            fn_delete_cart_gift_certificate($_SESSION['cart'], $_REQUEST['gift_cert_id']);
            list($gift_cert_id, $gift_cert) = fn_add_gift_certificate_to_cart($_REQUEST['gift_cert_data'], $auth);
            if (!empty($gift_cert_id)) {
                $_SESSION['cart']['gift_certificates'][$gift_cert_id] = $gift_cert;
            }
            fn_save_cart_content($_SESSION['cart'], $auth['user_id'], $_REQUEST['type']);
        }
    }
    if ($mode == 'preview') {
        if (!empty($_REQUEST['gift_cert_data'])) {
            fn_correct_gift_certificate($_REQUEST['gift_cert_data']);
            fn_show_postal_card($_REQUEST['gift_cert_data']);
            exit;
        }
    }
    return array(CONTROLLER_STATUS_OK, "checkout.cart");
}
if ($mode == 'verify') {
    fn_add_breadcrumb(fn_get_lang_var('gift_certificate_verification'));
    $verify_id = db_get_field("SELECT gift_cert_id FROM ?:gift_certificates WHERE gift_cert_code = ?s", $_REQUEST['verify_code']);
    if (!empty($verify_id)) {