/** * Extract cart content from the customer's profile. * $type : C - cart, W - wishlist * * @param array $cart * @param integer $user_id * @param string $type * * @return void */ function fn_extract_cart_content(&$cart, $user_id, $type = 'C', $user_type = 'R') { $auth =& $_SESSION['auth']; $old_session_id = ''; // Restore cart content if (!empty($user_id)) { $item_types = fn_get_cart_content_item_types('X'); $condition = db_quote("user_id = ?i AND type = ?s AND user_type = ?s AND item_type IN (?a)", $user_id, $type, $user_type, $item_types); fn_set_hook('pre_extract_cart', $cart, $condition, $item_types); $_prods = db_get_hash_array("SELECT * FROM ?:user_session_products WHERE " . $condition, 'item_id'); if (!empty($_prods) && is_array($_prods)) { $cart['products'] = empty($cart['products']) ? array() : $cart['products']; foreach ($_prods as $_item_id => $_prod) { $old_session_id = $_prod['session_id']; $_prod_extra = unserialize($_prod['extra']); unset($_prod['extra']); $cart['products'][$_item_id] = empty($cart['products'][$_item_id]) ? fn_array_merge($_prod, $_prod_extra, true) : $cart['products'][$_item_id]; } } } fn_set_hook('extract_cart', $cart, $user_id, $type, $user_type); if ($type == 'C') { $cart['change_cart_products'] = true; fn_calculate_cart_content($cart, $auth, 'S', false, 'I', false); } }
* (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. * ****************************************************************************/ use Tygh\Registry; if (!defined('BOOTSTRAP')) { die('Access denied'); } if ($mode == 'cart_list') { $item_types = fn_get_cart_content_item_types(); if (empty($_REQUEST['user_id'])) { $carts_list = Tygh::$app['view']->getTemplateVars('carts_list'); if (!empty($carts_list)) { $all_wishlist_products = array(); if (fn_allowed_for('ULTIMATE')) { foreach ($carts_list as $key => $cart_data) { $all_wishlist_products[$key] = db_get_array("SELECT COUNT(item_id) as count" . " FROM ?:user_session_products" . " WHERE user_id = ?i AND company_id = ?i AND type = 'W'" . " GROUP BY user_id, company_id", $cart_data['user_id'], $cart_data['company_id']); $carts_list[$key]['wishlist_products'] = !empty($all_wishlist_products[$key][0]['count']) ? $all_wishlist_products[$key][0]['count'] : 0; $carts_list[$key]['user_data'] = empty($carts_list[$key]['user_data']) ? fn_get_user_info($cart_data['user_id'], true) : $carts_list[$key]['user_data']; } } else { foreach ($carts_list as $key => $cart_data) { $all_wishlist_products[$key] = db_get_array("SELECT COUNT(item_id) as count" . " FROM ?:user_session_products" . " WHERE user_id = ?i AND type = 'W'" . " GROUP BY user_id", $cart_data['user_id']); $carts_list[$key]['wishlist_products'] = !empty($all_wishlist_products[$key][0]['count']) ? $all_wishlist_products[$key][0]['count'] : 0; $carts_list[$key]['user_data'] = empty($carts_list[$key]['user_data']) ? fn_get_user_info($cart_data['user_id'], true) : $carts_list[$key]['user_data'];
/** * Gets products in a particular abandoned or live cart * * @param int $user_id User ID * @param array $params Params * @return array */ function fn_get_cart_products($user_id, $params = array()) { $fields = array('p.item_id', 'p.item_type', 'p.product_id', 'p.amount', 'p.price', 'p.extra', 'd.product'); $conditions = array(db_quote("p.user_id = ?i", $user_id), db_quote("p.type = 'C'"), db_quote("p.item_type IN (?a)", fn_get_cart_content_item_types())); if (fn_allowed_for('ULTIMATE') && !empty($params['c_company_id'])) { $conditions[] = db_quote("p.company_id = ?i", $params['c_company_id']); } /** * Gets products in a particular abandoned or live cart * * @param int $user_id User ID * @param array $params Params * @param array $fields SQL fields to be selected in an SQL-query * @param string $conditions String containing SQL-query condition possibly prepended with a logical operator (AND or OR) */ fn_set_hook('get_cart_products', $user_id, $params, $fields, $conditions); $cart_products = db_get_array("SELECT " . implode(', ', $fields) . " FROM ?:user_session_products p" . " LEFT JOIN ?:product_descriptions d ON p.product_id = d.product_id AND d.lang_code = ?s" . " WHERE " . implode(' AND ', $conditions), DESCR_SL); foreach ($cart_products as $key => $product) { $cart_products[$key]['extra'] = unserialize($product['extra']); } /** * Actions after getting products in a particular abandoned or live cart * * @param int $user_id User ID * @param array $params Params * @param array $cart_products Products list in a abandoned or live cart * @param array $fields SQL fields to be selected in an SQL-query * @param string $conditions String containing SQL-query condition possibly prepended with a logical operator (AND or OR) */ fn_set_hook('get_cart_products_post', $user_id, $params, $cart_products, $fields, $conditions); return $cart_products; }