Example #1
0
/**
 * 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;
}
Example #2
0
/**
 * 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;
}