if (!empty($params['status']) && $params['status'] == STATUS_INCOMPLETED_ORDER) { $params['include_incompleted'] = true; } if (fn_allowed_for('MULTIVENDOR')) { $params['company_name'] = true; } list($orders, $search, $totals) = fn_get_orders($params, Registry::get('settings.Appearance.admin_orders_per_page'), true); if (!empty($params['include_incompleted']) || !empty($search['include_incompleted'])) { Registry::get('view')->assign('incompleted_view', true); } if (!empty($_REQUEST['redirect_if_one']) && count($orders) == 1) { return array(CONTROLLER_STATUS_REDIRECT, 'orders.details?order_id=' . $orders[0]['order_id']); } $shippings = fn_get_shippings(true, CART_LANGUAGE); if (Registry::get('runtime.company_id')) { $company_shippings = fn_get_companies_shipping_ids(Registry::get('runtime.company_id')); if (fn_allowed_for('ULTIMATE')) { $company_shippings = db_get_fields('SELECT shipping_id FROM ?:shippings'); } foreach ($shippings as $shipping_id => $shipping) { if (!in_array($shipping_id, $company_shippings)) { unset($shippings[$shipping_id]); } } } $remove_cc = db_get_field("SELECT COUNT(*) FROM ?:status_data WHERE type = 'O' AND param = 'remove_cc_info' AND value = 'N'"); $remove_cc = $remove_cc > 0 ? true : false; Registry::get('view')->assign('remove_cc', $remove_cc); Registry::get('view')->assign('orders', $orders); Registry::get('view')->assign('search', $search); Registry::get('view')->assign('totals', $totals);
function fn_companies_prepare_google_shippings(&$shipping_methods) { // Find out the needed suppliers and the shipping available for them $needed_suppliers = array(); $needed_suppliers_empty = array(); $is_default_filled = false; foreach ($_SESSION['cart']['products'] as $k => $v) { if (!empty($v['company_id'])) { $s_id = $v['company_id']; if (empty($needed_suppliers[$s_id])) { $needed_suppliers[$s_id] = array(); $ship_suppliers = fn_get_companies_shipping_ids($s_id); foreach ($shipping_methods as $k => $v) { if (in_array($v['shipping_id'], $ship_suppliers)) { $needed_suppliers[$s_id][$v['shipping_id']] = $v['shipping']; } } if (empty($needed_suppliers[$s_id])) { $shipping_methods = array(); return true; } } } elseif (!$is_default_filled && empty($needed_suppliers_empty[0])) { $is_default_filled = true; $ship_suppliers = db_get_fields("SELECT shipping_id FROM ?:shippings WHERE company_id = '0'"); foreach ($shipping_methods as $k => $v) { if (in_array($v['shipping_id'], $ship_suppliers)) { $needed_suppliers_empty[0][$v['shipping_id']] = $v['shipping']; } } } } if (empty($needed_suppliers)) { return true; } else { $needed_suppliers = $needed_suppliers_empty + $needed_suppliers; } // Generate the available combiantions of all shippings for suppliers ksort($needed_suppliers, SORT_NUMERIC); $combination_count = 1; $j = 0; $supp_count = count($needed_suppliers); $curr_pos = array(); $curr_pos['ship_count'] = 1; foreach ($needed_suppliers as $s_id => $shippings) { $j++; $curr_count = count($shippings); $combination_count *= $curr_count; $shippings_count[$s_id] = $curr_count; $magic[$s_id] = 1; if ($j == $supp_count) { $curr_pos['supp_id'] = $s_id; } } $new = array(); for ($i = 0; $i < $combination_count; $i++) { if ($i > 0) { if (fn_companies_update_magic_hash($magic, $shippings_count, $curr_pos) === false) { break; } } fn_companies_add_combination($i, $new, $magic, $needed_suppliers); } // Form the list of shippings $_shipping_methods = array(); if (!empty($new)) { foreach ($new as $items) { $string = ''; $is_identical = true; $f_s_id = key($items); $f_shipping_id = current($items); foreach ($items as $k => $v) { if ($f_shipping_id != $v) { $is_identical = false; } $string .= $needed_suppliers[$k][$v] . ' + '; } if (!$is_identical) { $string = rtrim($string, ' + '); } else { $string = $needed_suppliers[$f_s_id][$f_shipping_id]; } if (array_key_exists(implode('_', $items), $_shipping_methods) == false) { $_shipping_methods[implode('_', $items)] = array('shipping' => $string, 'shipping_id' => implode('_', $items)); } } } $shipping_methods = $_shipping_methods; return true; }