/** * Get shipping info * * @param int $shipping_id Shipping ID * @param string $lang_code Language code * @return array Shipping info */ function fn_get_shipping_info($shipping_id, $lang_code = CART_LANGUAGE) { $fields = array('?:shippings.*', '?:shipping_descriptions.shipping', '?:shipping_descriptions.delivery_time'); $join = db_quote(" LEFT JOIN ?:shipping_descriptions ON ?:shipping_descriptions.shipping_id = ?:shippings.shipping_id AND ?:shipping_descriptions.lang_code = ?s", $lang_code); $conditions = ""; fn_set_hook('get_shipping_info', $shipping_id, $fields, $join, $conditions); $shipping = array(); if (!empty($shipping_id)) { $shipping = db_get_row("SELECT ?p FROM ?:shippings ?p WHERE ?:shippings.shipping_id = ?i ?p", implode(', ', $fields), $join, $shipping_id, $conditions); } if (!empty($shipping)) { $shipping['tax_ids'] = empty($shipping['tax_ids']) ? array() : fn_explode(',', $shipping['tax_ids']); $shipping['icon'] = fn_get_image_pairs($shipping['shipping_id'], 'shipping', 'M', true, true, $lang_code); if (!empty($shipping['service_params'])) { $shipping['service_params'] = unserialize($shipping['service_params']); } $destinations = array(); if ($shipping['rate_calculation'] == 'M') { $destinations = fn_get_destinations(); foreach ($destinations as $k => $v) { if (!empty($shipping['localization'])) { // check available destinations, but skip default destination $_s = fn_explode(',', $shipping['localization']); $_l = fn_explode(',', $v['localization']); if (!array_intersect($_s, $_l)) { continue; } } $destinations[$k] = array_merge($destinations[$k], fn_get_shipping_rate($shipping_id, $v['destination_id'])); } } else { $destinations[0] = db_get_row("SELECT rate_id, rate_value, destination_id FROM ?:shipping_rates WHERE shipping_id = ?i AND destination_id = 0", $shipping_id); $destinations[0] = array_merge($destinations[0], fn_get_shipping_rate($shipping_id, 0)); } $shipping['rates'] = $destinations; } return $shipping; }
/** * Get shipping info * * @param int $shipping_id Shipping ID * @param string $lang_code Language code * @return array Shipping info */ function fn_get_shipping_info($shipping_id, $lang_code = CART_LANGUAGE) { $fields = array('?:shippings.*', '?:shipping_descriptions.shipping', '?:shipping_descriptions.delivery_time'); $join = db_quote(" LEFT JOIN ?:shipping_descriptions ON ?:shipping_descriptions.shipping_id = ?:shippings.shipping_id AND ?:shipping_descriptions.lang_code = ?s", $lang_code); $conditions = ""; /** * Change SQL parameters for shipping info select * * @param int $shipping_id Shipping ID * @param string $fields List of fields for retrieving * @param string $join String with the complete JOIN information (JOIN type, tables and fields) for an SQL-query * @param string $conditions Condition for selecting product data * @param string $lang_code Lang code */ fn_set_hook('get_shipping_info', $shipping_id, $fields, $join, $conditions, $lang_code); $shipping = array(); if (!empty($shipping_id)) { $shipping = db_get_row("SELECT ?p FROM ?:shippings ?p WHERE ?:shippings.shipping_id = ?i ?p", implode(', ', $fields), $join, $shipping_id, $conditions); } if (!empty($shipping)) { $shipping['tax_ids'] = empty($shipping['tax_ids']) ? array() : fn_explode(',', $shipping['tax_ids']); $shipping['icon'] = fn_get_image_pairs($shipping['shipping_id'], 'shipping', 'M', true, true, $lang_code); if (!empty($shipping['service_params'])) { $shipping['service_params'] = unserialize($shipping['service_params']); } $destinations = array(); if ($shipping['rate_calculation'] == 'M') { $destinations = fn_get_destinations(); foreach ($destinations as $k => $v) { if (!empty($shipping['localization'])) { // check available destinations, but skip default destination $_s = fn_explode(',', $shipping['localization']); $_l = fn_explode(',', $v['localization']); if (!array_intersect($_s, $_l)) { continue; } } $destinations[$k] = array_merge($destinations[$k], fn_get_shipping_rate($shipping_id, $v['destination_id'])); } } else { $destinations[0] = db_get_row("SELECT rate_id, rate_value, destination_id FROM ?:shipping_rates WHERE shipping_id = ?i AND destination_id = 0", $shipping_id); $destinations[0] = array_merge($destinations[0], fn_get_shipping_rate($shipping_id, 0)); } $shipping['rates'] = $destinations; } /** * Particularize shipping information * * @param int $shipping_id Shipping ID * @param string $lang_code Lang code * @param string $shipping Shipping data */ fn_set_hook('get_shipping_info_post', $shipping_id, $lang_code, $shipping); return $shipping; }