function mod_calculate_shipping_cost($products_id, $products_price) { // set globals global $xtPrice, $total_weight, $shipping_weight, $shipping_quoted, $shipping_num_boxes, $em_shipping_countries; // init shipping content array $shipping_content = array(); foreach ($em_shipping_countries as $country) { // init order class for dummy order $order = new order(); //Data for shipping cost $default_data_query_raw = "SELECT countries_id,\n\t\t\t\t\t\t\t\t\t\tcountries_name,\n\t\t\t\t\t\t\t\t\t\tcountries_iso_code_2,\n\t\t\t\t\t\t\t\t\t\tcountries_iso_code_3,\n\t\t\t\t\t\t\t\t\t\taddress_format_id\n\t\t\t\t\t\t\t\t FROM " . TABLE_COUNTRIES . "\n\t\t\t\t\t\t\t\t WHERE countries_iso_code_2 = '" . strtoupper(trim($country)) . "'"; $default_data_query = xtc_db_query($default_data_query_raw); $default_data = xtc_db_fetch_array($default_data_query); $default_data['entry_postcode'] = '10000'; $default_data['zone_name'] = ''; $default_data['zone_id'] = ''; // set customer data $order->customer = array('postcode' => $default_data['entry_postcode'], 'state' => $default_data['zone_name'], 'zone_id' => $default_data['zone_id'], 'format_id' => $default_data['address_format_id'], 'country' => array('id' => $default_data['countries_id'], 'title' => $default_data['countries_name'], 'iso_code_2' => $default_data['countries_iso_code_2'], 'iso_code_3' => $default_data['countries_iso_code_3'])); // set delivery data $order->delivery = array('postcode' => $default_data['entry_postcode'], 'state' => $default_data['zone_name'], 'zone_id' => $default_data['zone_id'], 'format_id' => $default_data['address_format_id'], 'country' => array('id' => $default_data['countries_id'], 'title' => $default_data['countries_name'], 'iso_code_2' => $default_data['countries_iso_code_2'], 'iso_code_3' => $default_data['countries_iso_code_3'])); $GLOBALS['order'] = $order; // set session for calculation shipping costs $_SESSION['delivery_zone'] = $order->delivery['country']['iso_code_2']; // init shipping class $shipping = new shipping(); // init shipping modules $quotes = $shipping->quote(); $free_shipping = false; if (defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING') && MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') { switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) { case 'national': if ($order->delivery['country']['id'] == STORE_COUNTRY) { $pass = true; } break; case 'international': if ($order->delivery['country']['id'] != STORE_COUNTRY) { $pass = true; } break; case 'both': $pass = true; break; default: $pass = false; break; } if ($pass == true && $products_price >= $xtPrice->xtcFormat(MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER, false, 0, true)) { $free_shipping = true; } } $has_freeamount = false; $free_shipping_freeamount = false; foreach ($quotes as $quote) { if ($quote['id'] == 'freeamount') { $has_freeamount = true; if (isset($quote['methods'])) { $free_shipping_freeamount = true; break; } } } if ($free_shipping == true) { $shipping_content[] = array('country' => $order->delivery['country']['iso_code_2'], 'service' => mod_convert_string(FREE_SHIPPING_TITLE), 'price' => floatval(0)); } elseif ($free_shipping_freeamount) { $shipping_content[] = array('country' => $order->delivery['country']['iso_code_2'], 'service' => mod_convert_string($quote['module']), 'price' => floatval(0)); } else { foreach ($quotes as $quote) { if ($quote['id'] != 'freeamount') { $quote['methods'][0]['cost'] = $xtPrice->xtcCalculateCurr($quote['methods'][0]['cost']); $value = isset($quote['tax']) && $quote['tax'] > 0 ? $xtPrice->xtcAddTax($quote['methods'][0]['cost'], $quote['tax']) : (!empty($quote['methods'][0]['cost']) ? $quote['methods'][0]['cost'] : '0'); $value = $xtPrice->xtcFormat($value, false); $shipping_content[] = array('country' => $order->delivery['country']['iso_code_2'], 'service' => mod_convert_string($quote['module'] . (!empty($quote['methods'][0]['title']) ? ' - ' . $quote['methods'][0]['title'] : '')), 'price' => floatval($value)); } } } // unset used variables and objects unset($quotes); unset($shipping); unset($order); unset($_SESSION['delivery_zone']); unset($_SESSION['shipping']); } // return cheapest Shipping module return $shipping_content; }
chdir('../../'); require_once 'includes/application_top.php'; // include easymarketing api header require_once DIR_FS_CATALOG . 'api/easymarketing/includes/header.php'; // include easymarketing functions require_once 'includes/functions.php'; $parent_id = isset($_GET['parent_id']) ? (int) $_GET['parent_id'] : NULL; $oLanguage = new language($_GET['lang']); // process request if (isset($parent_id)) { // init array $categories_array = array(); // sql query for categories $categories_query_raw = "SELECT c.categories_id,\n cd.categories_name\n FROM " . TABLE_CATEGORIES . " c\n JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd\n ON (c.categories_id = cd.categories_id\n AND cd.language_id = '" . $oLanguage->language['id'] . "')\n WHERE c.categories_status = '1'\n AND c.categories_id = '" . xtc_db_prepare_input($parent_id) . "'"; // make sql query $categories_query_result = xtc_db_query($categories_query_raw); // check for result if (xtc_db_num_rows($categories_query_result) > 0) { while ($categories = xtc_db_fetch_array($categories_query_result)) { // build categories array $categories_array = array('id' => $categories['categories_id'], 'name' => mod_convert_string($categories['categories_name']), 'url' => xtc_href_link(FILENAME_DEFAULT, xtc_category_link($categories['categories_id'], $categories['categories_name']), 'NONSSL', false), 'children' => mod_get_sub_categories($categories['categories_id'])); } } elseif ($parent_id == '0') { // build categories array $categories_array = array('id' => $parent_id, 'name' => mod_convert_string(STORE_NAME), 'url' => xtc_href_link(FILENAME_DEFAULT, '', 'NONSSL', false), 'children' => mod_get_sub_categories($parent_id)); } // output categories mod_stream_response($categories_array); } else { mod_stream_invalid_request(); }
foreach ($mappings as $key => $data) { foreach ($data['values'] as $value) { if (isset($product_details[$value])) { $products_mapping[$key] = $product_details[$value]; break 1; } } } if (empty($products_mapping['name'])) { $products_mapping['name'] = $products['products_name']; } if (empty($products_mapping['description'])) { $products_mapping['description'] = mod_get_description(array('products_description' => $products['products_description'], 'products_short_description' => $products['products_short_description'])); } // build products array $products_array[] = array('id' => $products['products_id'], 'name' => mod_convert_string($products_mapping['name']), 'categories' => mod_get_categories_array($products['products_id']), 'google_category' => mod_get_google_category($products['products_id']), 'condition' => mod_get_condition($condition), 'availability' => mod_get_availability($products_item_codes['google_export_availability_id'], $products['products_quantity']), 'currency' => DEFAULT_CURRENCY, 'price' => $products_price['plain'], 'rrp' => $products_rrp['plain'], 'discount_absolute' => $discount_absolute > 0 ? $discount_absolute : 0, 'discount_percentage' => $discount_percentage > 0 ? $discount_percentage : 0, 'url' => xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($products['products_id'], $products['products_name']), 'NONSSL', false), 'image_url' => !empty($products['products_image']) ? HTTP_SERVER . DIR_WS_CATALOG . DIR_WS_POPUP_IMAGES . $products['products_image'] : 'null', 'shipping' => mod_calculate_shipping_cost($products['products_id'], $products_price), 'description' => mod_convert_string($products_mapping['description']), 'age_group' => mod_get_age_group($products_item_codes['age_group']), 'gender' => mod_get_gender($products_item_codes['gender']), 'gtin' => $products['products_ean'] != '' ? $products['products_ean'] : 'null', 'adult' => $products['products_fsk18'] == '1' ? true : false, 'mpn' => mod_convert_string($products_item_codes['code_mpn']), 'brand' => mod_convert_string($products_item_codes['brand_name'])); } } } // init response array $response = array(); // normal products if (isset($offset)) { $response['offset'] = $offset; } // new products if (isset($newer_than)) { $response['time'] = $newer_than; $response['newer_than'] = $limit; } // add products