function fn_get_discussions($params, $items_per_page) { // Init filter $params = LastView::instance()->update('discussion', $params); // Set default values to input params $default_params = array('page' => 1, 'items_per_page' => $items_per_page); $params = array_merge($default_params, $params); // Define fields that should be retrieved $fields = array('?:discussion_posts.*', '?:discussion_messages.message', '?:discussion_rating.rating_value', '?:discussion.*'); // Define sort fields $sortings = array('object' => "?:discussion.object_type", 'name' => "?:discussion_posts.name", 'ip_address' => "?:discussion_posts.ip_address", 'timestamp' => "?:discussion_posts.timestamp", 'status' => "?:discussion_posts.status", 'date' => "?:orders.timestamp", 'total' => "?:orders.total"); $sorting = db_sort($params, $sortings, 'timestamp', 'desc'); $condition = $join = ''; if (isset($params['name']) && fn_string_not_empty($params['name'])) { $condition .= db_quote(" AND ?:discussion_posts.name LIKE ?l", "%" . trim($params['name']) . "%"); } if (isset($params['message']) && fn_string_not_empty($params['message'])) { $condition .= db_quote(" AND ?:discussion_messages.message LIKE ?l", "%" . trim($params['message']) . "%"); } if (!empty($params['type'])) { $condition .= db_quote(" AND ?:discussion.type = ?s", $params['type']); } if (!empty($params['status'])) { $condition .= db_quote(" AND ?:discussion_posts.status = ?s", $params['status']); } if (!empty($params['post_id'])) { $condition .= db_quote(" AND ?:discussion_posts.post_id = ?i", $params['post_id']); } if (isset($params['ip_address']) && fn_string_not_empty($params['ip_address'])) { $condition .= db_quote(" AND ?:discussion_posts.ip_address = ?s", fn_ip_to_db(trim($params['ip_address']))); } if (!empty($params['rating_value'])) { $condition .= db_quote(" AND ?:discussion_rating.rating_value = ?i", $params['rating_value']); } if (!empty($params['object_type'])) { $condition .= db_quote(" AND ?:discussion.object_type = ?s", $params['object_type']); } $condition .= fn_get_discussion_company_condition('?:discussion.company_id'); if (!empty($params['period']) && $params['period'] != 'A') { list($params['time_from'], $params['time_to']) = fn_create_periods($params); $condition .= db_quote(" AND (?:discussion_posts.timestamp >= ?i AND ?:discussion_posts.timestamp <= ?i)", $params['time_from'], $params['time_to']); } $join .= " INNER JOIN ?:discussion ON ?:discussion.thread_id = ?:discussion_posts.thread_id"; $join .= " INNER JOIN ?:discussion_messages ON ?:discussion_messages.post_id = ?:discussion_posts.post_id"; $join .= " INNER JOIN ?:discussion_rating ON ?:discussion_rating.post_id = ?:discussion_posts.post_id"; $limit = ''; if (!empty($params['items_per_page'])) { $params['total_items'] = db_get_field("SELECT COUNT(*) FROM ?:discussion_posts {$join} WHERE 1 {$condition}"); $limit = db_paginate($params['page'], $params['items_per_page'], $params['total_items']); } $posts = db_get_array("SELECT " . implode(',', $fields) . " FROM ?:discussion_posts {$join} WHERE 1 {$condition} {$sorting} {$limit}"); foreach ($posts as $k => $post) { if (isset($post['ip_address'])) { $posts[$k]['ip_address'] = fn_ip_from_db($post['ip_address']); } } return array($posts, $params); }
function fn_em_update_subscriber($subscriber_data, $subscriber_id = 0, $sync = true, $lang_code = CART_LANGUAGE) { $invalid_emails = array(); if (empty($subscriber_id)) { if (!empty($subscriber_data['email'])) { $company_condition = fn_em_get_company_condition(); if (db_get_field("SELECT email FROM ?:em_subscribers WHERE email = ?s ?p", $subscriber_data['email'], $company_condition) == '') { if (fn_validate_email($subscriber_data['email']) == false) { $invalid_emails[] = $subscriber_data['email']; } else { if (empty($subscriber_data['name'])) { $subscriber_data['name'] = ''; } if (empty($subscriber_data['timestamp'])) { $subscriber_data['timestamp'] = time(); } if (empty($subscriber_data['ip_address'])) { $ip = fn_get_ip(); $subscriber_data['ip_address'] = fn_ip_to_db($ip['host']); } if (empty($subscriber_data['unsubscribe_key'])) { $subscriber_data['unsubscribe_key'] = md5(uniqid()); } $subscriber_data['company_id'] = Registry::get('runtime.company_id'); $subscriber_data['lang_code'] = $lang_code; $subscriber_id = db_query("INSERT INTO ?:em_subscribers ?e", $subscriber_data); } } else { fn_set_notification('W', __('warning'), __('email_marketing.warning_email_exists', array('[email]' => $subscriber_data['email']))); } } } else { db_query("UPDATE ?:em_subscribers SET ?u WHERE subscriber_id = ?i", $subscriber_data, $subscriber_id); } if (!empty($invalid_emails)) { fn_set_notification('E', __('error'), __('error_invalid_emails', array('[emails]' => implode(', ', $invalid_emails)))); } elseif ($sync) { $subscriber_data = fn_em_get_subscriber_data('', $subscriber_id); $subscribed = EmailSync::instance()->subscribe(array('email' => $subscriber_data['email'], 'timestamp' => $subscriber_data['timestamp'], 'lang_code' => $subscriber_data['lang_code'], 'ip_address' => fn_ip_from_db($subscriber_data['ip_address']), 'name' => $subscriber_data['name'])); if ($subscribed == false) { fn_em_delete_subscribers(array($subscriber_id), false); $subscriber_id = false; } } return $subscriber_id; }
if ($entry['type'] == 'T' && empty($answer_text[$key])) { $error = true; break; } elseif ($entry['type'] == 'M' && (!isset($answer[$key]) || !is_array($answer[$key]))) { $error = true; break; } elseif ($entry['type'] == 'Q' && empty($answer[$key])) { $error = true; break; } } if ($error) { fn_set_notification('E', __('error'), __('required_not_answered')); return array(CONTROLLER_STATUS_REDIRECT); } $data = array('page_id' => $_REQUEST['page_id'], 'ip_address' => fn_ip_to_db($ip['host']), 'user_id' => empty($auth['user_id']) ? 0 : $auth['user_id'], 'time' => TIME, 'type' => 'E'); $vote_id = db_query('INSERT INTO ?:polls_votes ?e', $data); if ($vote_id) { $filled = 0; foreach ($poll['questions'] as $key => $entry) { if ($entry['type'] == 'T') { if (!empty($answer_text[$key])) { fn_polls_insert_answer($vote_id, $key, 0, !empty($answer_text[$key]) ? $answer_text[$key] : ''); $filled++; } } elseif ($entry['type'] == 'M' && isset($answer[$key]) && is_array($answer[$key])) { foreach ($answer[$key] as $answer_id => $rec) { if ($rec != 'Y') { continue; } fn_polls_insert_answer($vote_id, $key, $answer_id, !empty($answer_more[$key][$answer_id]) ? $answer_more[$key][$answer_id] : '');
function fn_save_cart_content(&$cart, $user_id, $type = 'C', $user_type = 'R') { if (empty($user_id)) { if (fn_get_session_data('cu_id')) { $user_id = fn_get_session_data('cu_id'); } else { $user_id = fn_crc32(uniqid(TIME)); fn_set_session_data('cu_id', $user_id, COOKIE_ALIVE_TIME); } $user_type = 'U'; } if (!empty($user_id)) { $condition = db_quote("user_id = ?i AND type = ?s AND user_type = ?s", $user_id, $type, $user_type); if (fn_allowed_for('ULTIMATE')) { $condition .= fn_get_company_condition('?:user_session_products.company_id'); } db_query("DELETE FROM ?:user_session_products WHERE " . $condition); if (!empty($cart['products']) && is_array($cart['products'])) { $_cart_prods = $cart['products']; foreach ($_cart_prods as $_item_id => $_prod) { $_cart_prods[$_item_id]['user_id'] = $user_id; $_cart_prods[$_item_id]['timestamp'] = TIME; $_cart_prods[$_item_id]['type'] = $type; $_cart_prods[$_item_id]['user_type'] = $user_type; $_cart_prods[$_item_id]['item_id'] = $_item_id; $_cart_prods[$_item_id]['item_type'] = 'P'; $_cart_prods[$_item_id]['extra'] = serialize($_prod); $_cart_prods[$_item_id]['amount'] = empty($_cart_prods[$_item_id]['amount']) ? 1 : $_cart_prods[$_item_id]['amount']; $_cart_prods[$_item_id]['session_id'] = Session::getId(); $ip = fn_get_ip(); $_cart_prods[$_item_id]['ip_address'] = fn_ip_to_db($ip['host']); if (fn_allowed_for('ULTIMATE')) { $_cart_prods[$_item_id]['company_id'] = Registry::get('runtime.company_id'); } if (!empty($_cart_prods[$_item_id])) { db_query('REPLACE INTO ?:user_session_products ?e', $_cart_prods[$_item_id]); } } } fn_set_hook('save_cart', $cart, $user_id, $type); } return true; }
if (fn_image_verification('discussion', $_REQUEST) == false) { fn_save_post_data('post_data'); return array(CONTROLLER_STATUS_REDIRECT, $_REQUEST['redirect_url'] . $suffix); } } $post_data = $_REQUEST['post_data']; if (!empty($post_data['thread_id'])) { $object = fn_discussion_get_object_by_thread($post_data['thread_id']); if (empty($object)) { fn_set_notification('E', __('error'), __('cant_find_thread')); return array(CONTROLLER_STATUS_REDIRECT, $_REQUEST['redirect_url'] . $suffix); } $object_name = $discussion_object_types[$object['object_type']]; $object_data = fn_get_discussion_object_data($object['object_id'], $object['object_type']); $ip = fn_get_ip(); $post_data['ip_address'] = fn_ip_to_db($ip['host']); $post_data['status'] = 'A'; // Check if post is permitted from this IP address if (AREA != 'A' && !empty($discussion_settings[$object_name . '_post_ip_check']) && $discussion_settings[$object_name . '_post_ip_check'] == 'Y') { $is_exists = db_get_field("SELECT COUNT(*) FROM ?:discussion_posts WHERE thread_id = ?i AND ip_address = ?s", $post_data['thread_id'], $post_data['ip_address']); if (!empty($is_exists)) { fn_set_notification('E', __('error'), __('error_already_posted')); return array(CONTROLLER_STATUS_REDIRECT, $_REQUEST['redirect_url'] . $suffix); } } // Check if post needs to be approved if (AREA != 'A' && !empty($discussion_settings[$object_name . '_post_approval'])) { if ($discussion_settings[$object_name . '_post_approval'] == 'any' || $discussion_settings[$object_name . '_post_approval'] == 'anonymous' && empty($auth['user_id'])) { fn_set_notification('W', __('text_thank_you_for_post'), __('text_post_pended')); $post_data['status'] = 'D'; }
/** * Get poll data * * @param int $page_id ID of the page, poll attached to * @param string $lang_code language code to get descriptions for * @return mixed array with poll data if exists, false otherwise */ function fn_get_poll_data($page_id, $lang_code = CART_LANGUAGE) { $poll = db_get_row("SELECT page_id, start_date, end_date, show_results FROM ?:polls WHERE page_id = ?i", $page_id); if (empty($poll)) { return false; } $descriptions = db_get_hash_single_array("SELECT type, description FROM ?:poll_descriptions WHERE object_id = ?i AND lang_code = ?s AND type IN ('H', 'F', 'R')", array('type', 'description'), $page_id, $lang_code); if (!empty($descriptions)) { $poll['header'] = $descriptions['H']; $poll['footer'] = $descriptions['F']; $poll['results'] = $descriptions['R']; } // Get questions and answers $poll['questions'] = db_get_hash_array("SELECT ?:poll_items.item_id, ?:poll_items.type, ?:poll_items.position, ?:poll_descriptions.description, ?:poll_items.required FROM ?:poll_items LEFT JOIN ?:poll_descriptions ON ?:poll_items.item_id = ?:poll_descriptions.object_id AND ?:poll_descriptions.type = 'I' AND ?:poll_descriptions.lang_code = ?s WHERE ?:poll_items.parent_id = ?i AND ?:poll_items.type IN ('Q','M', 'T') ORDER BY ?:poll_items.position", 'item_id', $lang_code, $page_id); $poll['has_required_questions'] = false; foreach ($poll['questions'] as $question_id => $entry) { $poll['questions'][$question_id]['answers'] = db_get_hash_array("SELECT ?:poll_items.item_id, ?:poll_items.type, ?:poll_items.position, ?:poll_descriptions.description FROM ?:poll_items LEFT JOIN ?:poll_descriptions ON ?:poll_items.item_id = ?:poll_descriptions.object_id AND ?:poll_descriptions.type = 'I' AND ?:poll_descriptions.lang_code = ?s WHERE ?:poll_items.parent_id = ?i AND ?:poll_items.type IN ('A', 'O') ORDER BY ?:poll_items.position", 'item_id', $lang_code, $question_id); if ($entry['required'] == 'Y') { $poll['has_required_questions'] = true; } // Check if answer has comments if ($entry['type'] == 'T') { $count = db_get_field("SELECT COUNT(item_id) FROM ?:polls_answers WHERE item_id = ?i AND answer_id = 0", $question_id); $poll['questions'][$question_id]['has_comments'] = $count ? true : false; } else { foreach ($poll['questions'][$question_id]['answers'] as $k => $rec) { if ($rec['type'] == 'O') { $count = db_get_field("SELECT count(item_id) FROM ?:polls_answers WHERE item_id = ?i AND answer_id = ?i AND comment != ''", $question_id, $k); $poll['questions'][$question_id]['answers'][$k]['has_comments'] = $count ? true : false; } else { $poll['questions'][$question_id]['answers'][$k]['has_comments'] = false; } } } } // Check if poll completed by the current user $ip = fn_get_ip(); $poll['completed'] = db_get_field("SELECT vote_id FROM ?:polls_votes WHERE page_id = ?i AND ip_address = ?s", $page_id, fn_ip_to_db($ip['host'])); if (!empty($poll['completed']) || AREA == 'A') { fn_polls_get_results($poll); } return $poll; }
public static function addIpv6Support($page_size = 50) { db_query("CREATE TABLE IF NOT EXISTS ?:ipv6_temp_orders (`order_id` mediumint(8) unsigned NOT NULL,`ip_address` varchar(40) DEFAULT NULL,PRIMARY KEY (`order_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8"); db_query("INSERT INTO ?:ipv6_temp_orders (SELECT order_id, ip_address FROM ?:orders)"); db_query("ALTER TABLE ?:orders CHANGE `ip_address` `ip_address` VARBINARY(40) NOT NULL DEFAULT ''"); db_query("ALTER TABLE ?:user_session_products CHANGE `ip_address` `ip_address` VARBINARY(40) NOT NULL DEFAULT ''"); $stop = false; $page = 0; while ($stop === false) { $page++; $limit_to = $page * $page_size; $limit_from = $limit_to - $page_size; $original_addresses = db_get_array("SELECT `order_id`, `ip_address` FROM ?:ipv6_temp_orders LIMIT ?i, ?i", $limit_from, $limit_to); if (sizeof($original_addresses) < $page_size) { $stop = true; } foreach ($original_addresses as $order_address) { $order_address['ip_address'] = fn_ip_to_db($order_address['ip_address']); db_query("UPDATE ?:orders SET ip_address = ?s WHERE order_id = ?i", $order_address['ip_address'], $order_address['order_id']); } } db_query("DROP TABLE ?:ipv6_temp_orders"); }
function fn_add_discussion_post($post_data, $send_notifications = true) { $auth =& Tygh::$app['session']['auth']; $discussion_settings = Registry::get('addons.discussion'); $discussion_object_types = fn_get_discussion_objects(); $object = fn_discussion_get_object($post_data); if (empty($object)) { fn_set_notification('E', __('error'), __('cant_find_thread')); return false; } $post_data['thread_id'] = $object['thread_id']; $object_data = fn_get_discussion_object_data($object['object_id'], $object['object_type']); $object_name = $discussion_object_types[$object['object_type']]; $ip = fn_get_ip(); $post_data['ip_address'] = fn_ip_to_db($ip['host']); $post_data['status'] = 'A'; // Check if post is permitted from this IP address if (AREA != 'A' && !empty($discussion_settings[$object_name . '_post_ip_check']) && $discussion_settings[$object_name . '_post_ip_check'] == 'Y') { $is_exists = db_get_field("SELECT COUNT(*) FROM ?:discussion_posts WHERE thread_id = ?i AND ip_address = ?s", $post_data['thread_id'], $post_data['ip_address']); if (!empty($is_exists)) { fn_set_notification('E', __('error'), __('error_already_posted')); return false; } } // Check if post needs to be approved if (AREA != 'A' && !empty($discussion_settings[$object_name . '_post_approval'])) { if ($discussion_settings[$object_name . '_post_approval'] == 'any' || $discussion_settings[$object_name . '_post_approval'] == 'anonymous' && empty($auth['user_id'])) { fn_set_notification('W', __('text_thank_you_for_post'), __('text_post_pended')); $post_data['status'] = 'D'; } } if (!empty($post_data['date'])) { $post_data['timestamp'] = fn_discussion_parse_datetime($post_data['date'] . ' ' . $post_data['time']); } else { $post_data['timestamp'] = TIME; } // Validate rating value if (!empty($post_data['rating_value']) && !in_array($post_data['rating_value'], array_keys(fn_get_discussion_ratings()))) { unset($post_data['rating_value']); } $post_data['user_id'] = $auth['user_id']; $post_data['post_id'] = db_query("INSERT INTO ?:discussion_posts ?e", $post_data); db_query("REPLACE INTO ?:discussion_messages ?e", $post_data); db_query("REPLACE INTO ?:discussion_rating ?e", $post_data); if ($send_notifications) { $fn_prepare_subject = function ($type, $lang_code) { return __('discussion_title_' . $type, '', $lang_code) . ' - ' . __($type, '', $lang_code); }; // For orders - set notification to admin and vendors or customer if ($object['object_type'] == 'O') { $order_info = db_get_row("SELECT email, company_id, lang_code FROM ?:orders WHERE order_id = ?i", $object['object_id']); if (AREA == 'C') { $lang_code = Registry::get('settings.Appearance.backend_default_language'); //Send to admin Mailer::sendMail(array('to' => 'default_company_orders_department', 'from' => array('email' => $order_info['email'], 'name' => $post_data['name']), 'data' => array('url' => fn_url("orders.details?order_id={$object['object_id']}", 'A', 'http', null, true), 'object_data' => $object_data, 'post_data' => $post_data, 'object_name' => $object_name, 'subject' => $fn_prepare_subject($discussion_object_types[$object['object_type']], $lang_code)), 'tpl' => 'addons/discussion/notification.tpl', 'company_id' => $order_info['company_id']), 'A', $lang_code); // Send to vendor if (!empty($order_info['company_id']) && !empty($discussion_settings[$object_name . '_notify_vendor']) && $discussion_settings[$object_name . '_notify_vendor'] == 'Y') { $lang_code = fn_get_company_language($order_info['company_id']); Mailer::sendMail(array('to' => 'company_orders_department', 'from' => array('email' => $order_info['email'], 'name' => $post_data['name']), 'data' => array('url' => fn_url("orders.details?order_id={$object['object_id']}", 'V', 'http', null, true), 'object_data' => $object_data, 'post_data' => $post_data, 'object_name' => $object_name, 'subject' => $fn_prepare_subject($discussion_object_types[$object['object_type']], $lang_code)), 'tpl' => 'addons/discussion/notification.tpl', 'company_id' => $order_info['company_id']), 'A', $lang_code); } } elseif (AREA == 'A') { $lang_code = $order_info['lang_code']; Mailer::sendMail(array('to' => $order_info['email'], 'from' => 'company_orders_department', 'data' => array('url' => fn_url("orders.details?order_id={$object['object_id']}", 'C', 'http', null, true), 'object_data' => $object_data, 'post_data' => $post_data, 'object_name' => $object_name, 'subject' => $fn_prepare_subject($discussion_object_types[$object['object_type']], $lang_code)), 'tpl' => 'addons/discussion/notification.tpl', 'company_id' => $order_info['company_id']), 'C', $lang_code); } } elseif (!empty($discussion_settings[$object_name . '_notification_email']) || !empty($discussion_settings[$object_name . '_notify_vendor']) && $discussion_settings[$object_name . '_notify_vendor'] == 'Y') { $company_id = 0; if (fn_allowed_for('MULTIVENDOR')) { if ($object_name == 'product') { $company_id = db_get_field("SELECT company_id FROM ?:products WHERE product_id = ?i", $object['object_id']); } elseif ($object_name == 'page') { $company_id = db_get_field("SELECT company_id FROM ?:pages WHERE page_id = ?i", $object['object_id']); } elseif ($object_name == 'company') { $company_id = $object['object_id']; } } $url = "discussion_manager.manage?object_type={$object['object_type']}&post_id={$post_data['post_id']}"; if (!empty($discussion_settings[$object_name . '_notification_email'])) { $lang_code = Registry::get('settings.Appearance.backend_default_language'); Mailer::sendMail(array('to' => $discussion_settings[$object_name . '_notification_email'], 'from' => 'company_site_administrator', 'data' => array('url' => fn_url($url, 'A', 'http', null, true), 'object_data' => $object_data, 'post_data' => $post_data, 'object_name' => $object_name, 'subject' => $fn_prepare_subject($discussion_object_types[$object['object_type']], $lang_code)), 'tpl' => 'addons/discussion/notification.tpl', 'company_id' => $company_id), 'A', $lang_code); } // Send to vendor if (!empty($company_id) && !empty($discussion_settings[$object_name . '_notify_vendor']) && $discussion_settings[$object_name . '_notify_vendor'] == 'Y') { $lang_code = fn_get_company_language($company_id); $url = ($object_name == 'company' ? 'companie' : $object_name) . "s.update?" . http_build_query(array($object_name . '_id' => $object['object_id'], 'selected_section' => 'discussion')); Mailer::sendMail(array('to' => 'company_site_administrator', 'from' => 'default_company_site_administrator', 'data' => array('url' => fn_url($url, 'V', 'http', null, true), 'object_data' => $object_data, 'post_data' => $post_data, 'object_name' => $object_name, 'subject' => $fn_prepare_subject($discussion_object_types[$object['object_type']], $lang_code)), 'tpl' => 'addons/discussion/notification.tpl', 'company_id' => $company_id), 'A', $lang_code); } } } return $post_data['post_id']; }
/** * Stores cart content in the customer's profile * * @param array $cart Cart contents * @param int $user_id User identifier * @param string $type Cart type * @param string $user_type User type * @return bool True */ function fn_save_cart_content(&$cart, $user_id, $type = 'C', $user_type = 'R') { /** * Actions before storing cart content in the customer's profile * * @param array $cart Cart contents * @param int $user_id User identifier * @param string $type Cart type * @param string $user_type User type */ fn_set_hook('save_cart_content_pre', $cart, $user_id, $type, $user_type); if (empty($user_id)) { if (fn_get_session_data('cu_id')) { $user_id = fn_get_session_data('cu_id'); } else { $user_id = fn_crc32(uniqid(TIME)); fn_set_session_data('cu_id', $user_id, COOKIE_ALIVE_TIME); } $user_type = 'U'; } if (!empty($user_id)) { $condition = fn_user_session_products_condition(array('user_id' => $user_id, 'type' => $type, 'user_type' => $user_type, 'get_session_user_id' => false)); db_query("DELETE FROM ?:user_session_products WHERE " . $condition); if (!empty($cart['products']) && is_array($cart['products'])) { $_cart_prods = $cart['products']; foreach ($_cart_prods as $_item_id => $_prod) { $_cart_prods[$_item_id]['user_id'] = $user_id; $_cart_prods[$_item_id]['timestamp'] = TIME; $_cart_prods[$_item_id]['type'] = $type; $_cart_prods[$_item_id]['user_type'] = $user_type; $_cart_prods[$_item_id]['item_id'] = $_item_id; $_cart_prods[$_item_id]['item_type'] = 'P'; $_cart_prods[$_item_id]['extra'] = serialize($_prod); $_cart_prods[$_item_id]['amount'] = empty($_cart_prods[$_item_id]['amount']) ? 1 : $_cart_prods[$_item_id]['amount']; $_cart_prods[$_item_id]['session_id'] = Tygh::$app['session']->getID(); $ip = fn_get_ip(); $_cart_prods[$_item_id]['ip_address'] = fn_ip_to_db($ip['host']); if (fn_allowed_for('ULTIMATE')) { $_cart_prods[$_item_id]['company_id'] = Registry::get('runtime.company_id'); } if (!empty($_cart_prods[$_item_id])) { db_query('REPLACE INTO ?:user_session_products ?e', $_cart_prods[$_item_id]); } } } /** * Deprecated: This hook will be removed in version 5.x.x.. Use save_cart_content_post instead. */ fn_set_hook('save_cart', $cart, $user_id, $type); /** * Actions after storing cart content in the customer's profile * * @param array $cart Cart contents * @param int $user_id User identifier * @param string $type Cart type * @param string $user_type User type */ fn_set_hook('save_cart_content_post', $cart, $user_id, $type, $user_type); } return true; }