function fn_twg_set_response_catalog(&$response, $params, $items_per_page = 0, $lang_code = CART_LANGUAGE) { // supported params: // id - category id // sort_by - products sort // sort_order - products sort order // page - products page number // items_per_page $params['category_id'] = !empty($params['category_id']) ? $params['category_id'] : 0; $params['page'] = empty($params['page']) ? 1 : $params['page']; $response->setData($params['category_id'], 'category_id'); if (!empty($params['category_id'])) { $category_data = db_get_row("SELECT category, description FROM ?:category_descriptions WHERE category_id = ?i AND lang_code = ?s", $params['category_id'], $lang_code); $response->setData($category_data['category'], 'category_name'); $response->setData($category_data['description'], 'description'); } if (empty($params['page']) || $params['page'] == 1) { $category_params = array('id' => !empty($params['category_id']) ? $params['category_id'] : 0, 'type' => 'one_level'); $categories = fn_twg_api_get_categories($category_params, $lang_code); if (!empty($categories['category'])) { $response->setData($categories['category'], 'subcategories'); } } if (!empty($params['category_id'])) { // set products $params['cid'] = $params['category_id']; list($products, $params) = fn_twg_api_get_products($params, $items_per_page, $lang_code); if (!empty($products['product'])) { $response->setData($products['product'], 'products'); } } $pagination_params = array('items_per_page' => !empty($items_per_page) ? $items_per_page : TWG_RESPONSE_ITEMS_LIMIT, 'page' => !empty($params['page']) ? $params['page'] : 1, 'total_items' => !empty($params['total_items']) ? $params['total_items'] : null); fn_twg_set_response_pagination($response, $pagination_params, true); }
/** * Return order/orders info after the order placing * @param int $order_id * @param array $response */ public static function returnPlacedOrders($order_id, &$response, $items_per_page, $lang_code) { $order = self::getOrderInfo($order_id); $_error = false; $status = db_get_field('SELECT status FROM ?:orders WHERE order_id=?i', $order_id); if ($status == STATUS_PARENT_ORDER) { $child_orders = db_get_hash_single_array("SELECT order_id, status FROM ?:orders WHERE parent_order_id = ?i", array('order_id', 'status'), $order_id); $status = reset($child_orders); $order['child_orders'] = array_keys($child_orders); } if (!in_array($status, fn_get_order_paid_statuses())) { $_error = true; if ($status != 'B') { if (!empty($child_orders)) { array_unshift($child_orders, $order_id); } else { $child_orders = array(); $child_orders[] = $order_id; } $order_id_field = $status == 'N' ? 'processed_order_id' : 'failed_order_id'; $_SESSION['cart'][$order_id_field] = $child_orders; $cart =& $_SESSION['cart']; if (!empty($cart['failed_order_id'])) { $_ids = !empty($cart['failed_order_id']) ? $cart['failed_order_id'] : $cart['processed_order_id']; $_order_id = reset($_ids); $_payment_info = db_get_field("SELECT data\n FROM ?:order_data\n WHERE order_id = ?i AND type = 'P'", $_order_id); if (!empty($_payment_info)) { $_payment_info = unserialize(fn_decrypt_text($_payment_info)); } $_msg = !empty($_payment_info['reason_text']) ? $_payment_info['reason_text'] : ''; $_msg .= empty($_msg) ? __('text_order_placed_error') : ''; $response->addError('ERROR_FAIL_POST_ORDER', $_msg); $cart['processed_order_id'] = $cart['failed_order_id']; unset($cart['failed_order_id']); } elseif (!fn_twg_set_internal_errors($response, 'ERROR_FAIL_POST_ORDER')) { $response->addError('ERROR_FAIL_POST_ORDER', __('fail_post_order', $lang_code)); } } else { if (!fn_twg_set_internal_errors($response, 'ERROR_ORDER_BACKORDERED')) { $response->addError('ERROR_ORDER_BACKORDERED', __('text_order_backordered', $lang_code)); } } $response->returnResponse(); } $auth =& $_SESSION['auth']; $user = fn_get_user_info($auth['user_id']); $profile_points = !empty($user['points']) ? $user['points'] : 0; if (empty($order['child_orders'])) { $response->setData(array('order' => $order, 'profile_points' => $profile_points)); } else { $params = array(); if (empty($auth['user_id'])) { $params['order_id'] = $auth['order_ids']; } else { $params['user_id'] = $auth['user_id']; } list($orders, , $totals) = fn_get_orders($params, $items_per_page, true); $response->setMeta(!empty($totals['gross_total']) ? $totals['gross_total'] : 0, 'gross_total'); $response->setMeta(!empty($totals['totally_paid']) ? $totals['totally_paid'] : 0, 'totally_paid'); $response->setMeta($order, 'order'); $response->setResponseList(TwigmoOrder::getOrdersAsApiList($orders, $lang_code)); $response->setData($profile_points, 'profile_points'); $pagination_params = array('items_per_page' => !empty($items_per_page) ? $items_per_page : TWG_RESPONSE_ITEMS_LIMIT, 'page' => !empty($_REQUEST['page']) ? $_REQUEST['page'] : 1); fn_twg_set_response_pagination($response, $pagination_params); } }
$response->setData(array('period' => $period_stats), 'periods'); // Get latest orders $search_params = array('sort_by' => 'date', 'sort_order' => 'desc'); list($orders) = fn_get_orders($search_params, $items_per_page, true); $orders = TwigmoOrder::getOrdersAsApiList($orders, $lang_code); $response->setData($orders, 'latest_orders'); $response->returnResponse('orders_statistics'); } else { if (!empty($search) && !empty($search['sort_by'])) { $sortings = array('sort_by' => $search['sort_by'], 'sort_order' => !empty($search['sort_order']) && $search['sort_order'] == 'desc' ? 'desc' : 'asc'); } $response->setResponseList(Api::getApiSchemaData($object, $condition, array(), $options, $sortings)); } $pagination_params = array('items_per_page' => !empty($items_per_page) ? $items_per_page : TWG_RESPONSE_ITEMS_LIMIT, 'page' => !empty($_REQUEST['page']) ? $_REQUEST['page'] : 1, 'total_items' => !empty($total_items) ? $total_items : 0); if ($is_paginate) { fn_twg_set_response_pagination($response, $pagination_params); } $response->returnResponse($object); } if ($_REQUEST['action'] == 'details') { if ($object == 'shipment_data') { $shippings = db_get_array("SELECT a.shipping_id,\n b.shipping\n FROM ?:shippings as a\n LEFT JOIN ?:shipping_descriptions as b\n ON a.shipping_id = b.shipping_id AND b.lang_code = ?s\n WHERE a.status = ?s\n ORDER BY a.position", DESCR_SL, 'A'); $carriers_data = fn_twg_get_carriers(); $carriers = array(); foreach ($carriers_data as $k => $v) { $carriers[] = array('carrier_id' => $k, 'carrier' => $v); } $result = array('shippings' => Api::getAsList('shippings', $shippings), 'carriers' => Api::getAsList('carriers', $carriers)); $response->setData($result); $response->returnResponse($object); }