![]() Server : Apache/2.4.52 (Ubuntu) System : Linux webserver 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64 User : www-data ( 33) PHP Version : 8.1.2-1ubuntu2.21 Disable Function : NONE Directory : /var/www/theprintave/wp-content/plugins/dokan-lite/includes/Order/ |
<?php use WeDevs\Dokan\Cache; /** * Dokan get seller amount from order total * * @param int $order_id * * @deprecated 3.8.0 * * @return float|array|WP_Error */ function dokan_get_seller_amount_from_order( $order_id, $get_array = false ) { wc_deprecated_function( 'dokan_get_seller_amount_from_order', '3.8.0', 'dokan()->commission->get_earning_by_order()' ); $order = wc_get_order( $order_id ); if ( ! $order ) { return $order; } $seller_id = dokan_get_seller_id_by_order( $order_id ); $net_amount = dokan()->commission->get_earning_by_order( $order, 'seller' ); if ( $get_array ) { $shipping_recipient = apply_filters( 'dokan_shipping_fee_recipient', dokan_get_option( 'shipping_fee_recipient', 'dokan_selling', 'seller' ), $order_id ); $tax_recipient = apply_filters( 'dokan_tax_fee_recipient', dokan_get_option( 'tax_fee_recipient', 'dokan_selling', 'seller' ), $order_id ); $order_shipping = $order->get_shipping_total(); $order_tax = $order->get_total_tax(); $amount = [ 'net_amount' => $net_amount, 'shipping' => 0, 'tax' => 0, ]; if ( 'seller' === $shipping_recipient ) { $amount['shipping'] = $order_shipping; } if ( 'seller' === $tax_recipient ) { $amount['tax'] = $order_tax; } return apply_filters( 'dokan_get_seller_amount_from_order_array', $amount, $order, $seller_id ); } return apply_filters( 'dokan_get_seller_amount_from_order', $net_amount, $order, $seller_id ); } /** * Get all the orders from a specific seller * * @since 3.6.3 Rewritten whole method * * @param int $seller_id * @param array $args * * @deprecated 3.8.0 since this is an alias only. * * @return WP_Error|int[]|WC_Order[] */ function dokan_get_seller_orders( $seller_id, $args ) { wc_deprecated_function( 'dokan_get_seller_orders', '3.8.0', 'dokan()->order->all()' ); $args['seller_id'] = $seller_id; if ( ! empty( $args['offset'] ) ) { // backward compatibility // max( $args['limit'], 1 ) to prevent division by zero if anyone gives $args['limit'] = 0 $args['paged'] = $args['offset'] / max( $args['limit'], 1 ) + 1; unset( $args['offset'] ); } return dokan()->order->all( $args ); } /** * Get all the orders from a specific date range * * @param string $start_date * @param string $end_date * @param int|false $seller_id * @param string $status * * @deprecated 3.8.0 * * @return WP_Error|WC_Order[] */ function dokan_get_seller_orders_by_date( $start_date, $end_date, $seller_id = false, $status = 'all' ) { wc_deprecated_function( 'dokan_get_seller_orders_by_date', '3.8.0', 'dokan()->order->all()' ); // format start and end date $start_date = dokan_current_datetime()->modify( $start_date ); $end_date = dokan_current_datetime()->modify( $end_date ); $query_args = [ 'seller_id' => $seller_id, 'date' => [ 'from' => $start_date ? $start_date->format( 'Y-m-d' ) : dokan_current_datetime()->format( 'Y-m-d' ), 'to' => $end_date ? $end_date->format( 'Y-m-d' ) : dokan_current_datetime()->format( 'Y-m-d' ), ], 'status' => $status, 'return' => 'objects', ]; return dokan()->order->all( $query_args ); } /** * Get the orders total from a specific seller * * @param array $args * * @deprecated 3.8.0 * * @return int */ function dokan_get_seller_orders_number( $args = [] ) { wc_deprecated_function( 'dokan_get_seller_orders_number', '3.8.0', 'dokan()->order->all()' ); $args['return'] = 'count'; return dokan()->order->all( $args ); } /** * Get seller withdraw by date range * * @param string $start_date * @param string $end_date * @param int|false $seller_id * * @return object */ function dokan_get_seller_withdraw_by_date( $start_date, $end_date, $seller_id = false ) { global $wpdb; $seller_id = ! $seller_id ? dokan_get_current_user_id() : intval( $seller_id ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching return $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}dokan_withdraw WHERE user_id = %d AND DATE( date ) >= %s AND DATE( date ) <= %s AND status = %d ORDER BY date ASC", [ $seller_id, $start_date, $end_date, 1 ] ) ); } /** * Check if order is belonged to given seller * * @param int $seller_id * @param int $order_id * * @return bool */ function dokan_is_seller_has_order( $seller_id, $order_id ) { return dokan()->order->is_seller_has_order( $seller_id, $order_id ); } /** * Count orders for a seller * * @since 3.8.0 moved the functionality of this function to Order Manager class * * @param int $seller_id * * @return array */ function dokan_count_orders( $seller_id ) { return dokan()->order->count_orders( $seller_id ); } /** * Delete an order row from sync table when an order is deleted from WooCommerce * * @param int $order_id * * @deprecated 3.8.0 * * @return void */ function dokan_delete_sync_order( $order_id ) { wc_deprecated_function( 'dokan_delete_sync_order', '3.8.0', 'dokan()->order->delete_seller_order()' ); dokan()->order->delete_seller_order( $order_id ); } /** * Delete an order row from sync table to not insert duplicate * * @since 2.4.11 * * @param int $order_id * @param int $seller_id * * @deprecated 3.8.0 * * @return void */ function dokan_delete_sync_duplicate_order( $order_id, $seller_id ) { wc_deprecated_function( 'dokan_delete_sync_duplicate_order', '3.8.0', 'dokan()->order->delete_seller_order()' ); dokan()->order->delete_seller_order( $order_id, $seller_id ); } /** * Insert an order in sync table once an order is created * * @param int $order_id * * @return void */ function dokan_sync_insert_order( $order_id ) { global $wpdb; if ( is_a( $order_id, 'WC_Order' ) ) { $order = $order_id; $order_id = $order->get_id(); } else { $order = wc_get_order( $order_id ); } if ( ! $order || $order instanceof WC_Subscription ) { return; } if ( dokan()->order->is_order_already_synced( $order ) ) { return; } if ( (int) $order->get_meta( 'has_sub_order', true ) === 1 ) { return; } $seller_id = dokan_get_seller_id_by_order( $order->get_id() ); $order_total = $order->get_total(); $order_status = 'wc-' . $order->get_status(); if ( dokan_is_admin_coupon_applied( $order, $seller_id ) ) { $net_amount = dokan()->commission->get_earning_by_order( $order, 'seller' ); } else { $net_amount = dokan()->commission->get_earning_by_order( $order ); } $net_amount = apply_filters( 'dokan_order_net_amount', $net_amount, $order ); $threshold_day = dokan_get_withdraw_threshold( $seller_id ); dokan()->order->delete_seller_order( $order_id, $seller_id ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery $wpdb->insert( $wpdb->prefix . 'dokan_orders', [ 'order_id' => $order_id, 'seller_id' => $seller_id, 'order_total' => $order_total, 'net_amount' => $net_amount, 'order_status' => $order_status, ], [ '%d', '%d', '%f', '%f', '%s', ] ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery $wpdb->insert( $wpdb->prefix . 'dokan_vendor_balance', [ 'vendor_id' => $seller_id, 'trn_id' => $order_id, 'trn_type' => 'dokan_orders', 'perticulars' => 'New order', 'debit' => $net_amount, 'credit' => 0, 'status' => $order_status, 'trn_date' => dokan_current_datetime()->format( 'Y-m-d H:i:s' ), 'balance_date' => dokan_current_datetime()->modify( "+ $threshold_day days" )->format( 'Y-m-d H:i:s' ), ], [ '%d', '%d', '%s', '%s', '%f', '%f', '%s', '%s', '%s', ] ); } /** * Get a seller ID based on WooCommerce order. * * If Order has suborder, this method will return 0 * * @since 3.2.11 rewritten entire function * * @param int|WC_Abstract_Order $order * * @return int | 0 on failure */ function dokan_get_seller_id_by_order( $order ) { global $wpdb; $order_id = $order; if ( ! is_numeric( $order ) ) { $order_id = $order->get_id(); } $cache_key = 'get_seller_id_by_order_' . $order_id; $seller_id = Cache::get( $cache_key ); $items = []; if ( false === $seller_id ) { // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching $seller_id = (int) $wpdb->get_var( $wpdb->prepare( "SELECT seller_id FROM {$wpdb->prefix}dokan_orders WHERE order_id = %d LIMIT 1", $order_id ) ); // store in cache if ( ! empty( $seller_id ) ) { Cache::set( $cache_key, $seller_id ); } } if ( ! empty( $seller_id ) ) { return apply_filters( 'dokan_get_seller_id_by_order', (int) $seller_id, $items ); } // get order instance $order = is_numeric( $order ) ? wc_get_order( $order_id ) : $order; if ( ! $order ) { return apply_filters( 'dokan_get_seller_id_by_order', 0, $items ); } // if order has suborder, return 0 if ( $order->get_meta( 'has_sub_order' ) ) { return apply_filters( 'dokan_get_seller_id_by_order', 0, $items ); } // check order meta to get vendor id $seller_id = absint( $order->get_meta( '_dokan_vendor_id' ) ); if ( $seller_id ) { return apply_filters( 'dokan_get_seller_id_by_order', $seller_id, $items ); } // finally get vendor id from line items $items = $order->get_items( 'line_item' ); if ( ! $items ) { return apply_filters( 'dokan_get_seller_id_by_order', 0, $items ); } foreach ( $items as $item ) { $product_id = $item->get_product_id(); $seller_id = absint( get_post_field( 'post_author', $product_id ) ); if ( $seller_id ) { return apply_filters( 'dokan_get_seller_id_by_order', $seller_id, $items ); } } return apply_filters( 'dokan_get_seller_id_by_order', 0, $items ); } /** * Get bootstrap label class based on order status * * @param string $status * * @return string */ function dokan_get_order_status_class( $status ) { $order_status_class = ''; switch ( $status ) { case 'completed': case 'wc-completed': $order_status_class = 'success'; break; case 'pending': case 'wc-pending': case 'failed': case 'wc-failed': $order_status_class = 'danger'; break; case 'on-hold': case 'wc-on-hold': $order_status_class = 'warning'; break; case 'processing': case 'wc-processing': $order_status_class = 'info'; break; case 'refunded': case 'wc-refunded': case 'cancelled': case 'wc-cancelled': case 'checkout-draft': $order_status_class = 'default'; break; } return apply_filters( 'dokan_get_order_status_class', $order_status_class, $status ); } /** * Get translated string of order status * * @param string $status * * @return string */ function dokan_get_order_status_translated( $status ) { $translated_order_status = ''; switch ( $status ) { case 'completed': case 'wc-completed': $translated_order_status = __( 'Completed', 'dokan-lite' ); break; case 'pending': case 'wc-pending': $translated_order_status = __( 'Pending Payment', 'dokan-lite' ); break; case 'on-hold': case 'wc-on-hold': $translated_order_status = __( 'On-hold', 'dokan-lite' ); break; case 'processing': case 'wc-processing': $translated_order_status = __( 'Processing', 'dokan-lite' ); break; case 'refunded': case 'wc-refunded': $translated_order_status = __( 'Refunded', 'dokan-lite' ); break; case 'cancelled': case 'wc-cancelled': $translated_order_status = __( 'Cancelled', 'dokan-lite' ); break; case 'failed': case 'wc-failed': $translated_order_status = __( 'Failed', 'dokan-lite' ); break; case 'checkout-draft': $translated_order_status = __( 'Draft', 'dokan-lite' ); break; } return apply_filters( 'dokan_get_order_status_translated', $translated_order_status, $status ); } /** * Get product items list from order seperated by given glue * * @since 1.4 * * @param WC_Order $order * @param string $glue * * @return string list of products */ function dokan_get_product_list_by_order( $order, $glue = ',' ) { $product_names = []; foreach ( $order->get_items( 'line_item' ) as $line_item ) { $product_names[] = $line_item['name']; } return implode( $glue, $product_names ); } /** * Get if an order is a sub order or not * * @since 2.4.11 * * @param int|WC_Abstract_Order $order * * @return boolean */ function dokan_is_sub_order( $order ) { if ( is_numeric( $order ) ) { $order = wc_get_order( $order ); } return ! ( ! $order || $order->get_parent_id() === 0 ); } /** * Get total number of orders in Dokan order table * * @since 2.4.3 * * @deprecated 3.8.0 * * @return int Order_count */ function dokan_total_orders() { wc_deprecated_function( 'dokan_total_orders', '3.8.0', 'dokan()->order->all()' ); global $wpdb; // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching $order_count = $wpdb->get_var( 'SELECT COUNT(id) FROM ' . $wpdb->prefix . 'dokan_orders ' ); return (int) $order_count; } /** * Return array of sellers with items * * @since 2.4.4 * @since 2.9.11 Param can be an instance of WC_Order * * @param WC_Order|int $order * * @return array $sellers_with_items */ function dokan_get_sellers_by( $order ) { if ( ! $order instanceof WC_Order ) { $order = dokan()->order->get( $order ); } $sellers = []; if ( ! $order ) { return $sellers; } $order_items = $order->get_items(); foreach ( $order_items as $item ) { $seller_id = get_post_field( 'post_author', $item['product_id'] ); //New filter hook to modify the seller id at run time. $seller_id = apply_filters( 'dokan_get_sellers_by', $seller_id, $item ); if ( ! empty( $seller_id ) ) { $sellers[ $seller_id ][] = $item; } } return $sellers; } /** * Return unique array of seller_ids from an order * * @since 2.4.9 * * @param int $order_id * * @return array $seller_ids */ function dokan_get_seller_ids_by( $order_id ) { $sellers = dokan_get_sellers_by( $order_id ); return array_unique( array_keys( $sellers ) ); } /** * Get suborder ids by parent order id * * @param int $parent_order_id * * @return int[]|null */ function dokan_get_suborder_ids_by( $parent_order_id ) { $sub_orders = wc_get_orders( [ 'type' => 'shop_order', 'parent' => $parent_order_id, 'return' => 'ids', 'limit' => -1, ] ); if ( empty( $sub_orders ) ) { return null; } return $sub_orders; } /** * Return admin commission from an order * * @since 2.4.12 * * @param WC_Order $order * @param string $context accepted values are seller and admin * * @deprecated 2.9.21 * * @return float */ function dokan_get_admin_commission_by( $order, $context ) { wc_deprecated_function( 'dokan_get_admin_commission_by', '2.9.21', 'dokan()->commission->get_earning_by_order( $order, $context )' ); $context = 'seller' === $context ? $context : 'admin'; return dokan()->commission->get_earning_by_order( $order, $context ); } /** * Get Customer Order IDs by Seller * * @since 2.6.6 * * @param int $customer_id * @param int $seller_id * * @deprecated 3.8.0 * * @return array|null on failure */ function dokan_get_customer_orders_by_seller( $customer_id, $seller_id ) { wc_deprecated_function( 'dokan_get_customer_orders_by_seller', '3.8.0', 'dokan()->order->get_customer_order_ids_by_seller()' ); return dokan()->order->get_customer_order_ids_by_seller( $customer_id, $seller_id ); } /** * Header rows for CSV order export * * @since 2.8.6 * * @return array */ function dokan_order_csv_headers() { return apply_filters( 'dokan_csv_export_headers', [ 'order_id' => __( 'Order No', 'dokan-lite' ), 'order_items' => __( 'Order Items', 'dokan-lite' ), 'order_shipping' => __( 'Shipping method', 'dokan-lite' ), 'order_shipping_cost' => __( 'Shipping Cost', 'dokan-lite' ), 'order_payment_method' => __( 'Payment method', 'dokan-lite' ), 'order_total' => __( 'Order Total', 'dokan-lite' ), 'earnings' => __( 'Earnings', 'dokan-lite' ), 'order_status' => __( 'Order Status', 'dokan-lite' ), 'order_date' => __( 'Order Date', 'dokan-lite' ), 'billing_company' => __( 'Billing Company', 'dokan-lite' ), 'billing_first_name' => __( 'Billing First Name', 'dokan-lite' ), 'billing_last_name' => __( 'Billing Last Name', 'dokan-lite' ), 'billing_full_name' => __( 'Billing Full Name', 'dokan-lite' ), 'billing_email' => __( 'Billing Email', 'dokan-lite' ), 'billing_phone' => __( 'Billing Phone', 'dokan-lite' ), 'billing_address_1' => __( 'Billing Address 1', 'dokan-lite' ), 'billing_address_2' => __( 'Billing Address 2', 'dokan-lite' ), 'billing_city' => __( 'Billing City', 'dokan-lite' ), 'billing_state' => __( 'Billing State', 'dokan-lite' ), 'billing_postcode' => __( 'Billing Postcode', 'dokan-lite' ), 'billing_country' => __( 'Billing Country', 'dokan-lite' ), 'shipping_company' => __( 'Shipping Company', 'dokan-lite' ), 'shipping_first_name' => __( 'Shipping First Name', 'dokan-lite' ), 'shipping_last_name' => __( 'Shipping Last Name', 'dokan-lite' ), 'shipping_full_name' => __( 'Shipping Full Name', 'dokan-lite' ), 'shipping_address_1' => __( 'Shipping Address 1', 'dokan-lite' ), 'shipping_address_2' => __( 'Shipping Address 2', 'dokan-lite' ), 'shipping_city' => __( 'Shipping City', 'dokan-lite' ), 'shipping_state' => __( 'Shipping State', 'dokan-lite' ), 'shipping_postcode' => __( 'Shipping Postcode', 'dokan-lite' ), 'shipping_country' => __( 'Shipping Country', 'dokan-lite' ), 'customer_ip' => __( 'Customer IP', 'dokan-lite' ), 'customer_note' => __( 'Customer Note', 'dokan-lite' ), ] ); } /** * Export orders to a CSV file * * @since 2.8.6 * * @param array $orders * @param string $file A file name to write to * * @return void */ function dokan_order_csv_export( $orders, $file = null ) { $headers = dokan_order_csv_headers(); $statuses = wc_get_order_statuses(); $resource = ( $file === null ) ? 'php://output' : $file; $output = fopen( $resource, 'w' ); // phpcs:ignore fputcsv( $output, $headers ); foreach ( $orders as $the_order ) { $line = []; $the_order = wc_get_order( $the_order ); if ( ! $the_order ) { continue; } foreach ( $headers as $row_key => $label ) { switch ( $row_key ) { case 'order_id': $line[ $row_key ] = $the_order->get_id(); break; case 'order_items': $line[ $row_key ] = dokan_get_product_list_by_order( $the_order, '; ' ); break; case 'order_shipping': $line[ $row_key ] = $the_order->get_shipping_method(); break; case 'order_shipping_cost': $line[ $row_key ] = $the_order->get_shipping_total(); break; case 'order_payment_method': $line[ $row_key ] = $the_order->get_payment_method_title(); break; case 'order_total': $line[ $row_key ] = $the_order->get_total(); break; case 'earnings': $line[ $row_key ] = dokan()->commission->get_earning_by_order( $the_order ); break; case 'order_status': $line[ $row_key ] = $statuses[ 'wc-' . $the_order->get_status() ]; break; case 'order_date': $line[ $row_key ] = dokan_get_date_created( $the_order ); break; // billing details case 'billing_company': $line[ $row_key ] = $the_order->get_billing_company(); break; case 'billing_first_name': $line[ $row_key ] = $the_order->get_billing_first_name(); break; case 'billing_last_name': $line[ $row_key ] = $the_order->get_billing_last_name(); break; case 'billing_full_name': $line[ $row_key ] = $the_order->get_formatted_billing_full_name(); break; case 'billing_email': $line[ $row_key ] = $the_order->get_billing_email(); break; case 'billing_phone': $line[ $row_key ] = $the_order->get_billing_phone(); break; case 'billing_address_1': $line[ $row_key ] = $the_order->get_billing_address_1(); break; case 'billing_address_2': $line[ $row_key ] = $the_order->get_billing_address_2(); break; case 'billing_city': $line[ $row_key ] = $the_order->get_billing_city(); break; case 'billing_state': $line[ $row_key ] = $the_order->get_billing_state(); break; case 'billing_postcode': $line[ $row_key ] = $the_order->get_billing_postcode(); break; case 'billing_country': $line[ $row_key ] = $the_order->get_billing_country(); break; // shipping details case 'shipping_company': $line[ $row_key ] = $the_order->get_shipping_company(); break; case 'shipping_first_name': $line[ $row_key ] = $the_order->get_shipping_first_name(); break; case 'shipping_last_name': $line[ $row_key ] = $the_order->get_shipping_last_name(); break; case 'shipping_full_name': $line[ $row_key ] = $the_order->get_formatted_shipping_full_name(); break; case 'shipping_address_1': $line[ $row_key ] = $the_order->get_shipping_address_1(); break; case 'shipping_address_2': $line[ $row_key ] = $the_order->get_shipping_address_2(); break; case 'shipping_city': $line[ $row_key ] = $the_order->get_shipping_city(); break; case 'shipping_state': $line[ $row_key ] = $the_order->get_shipping_state(); break; case 'shipping_postcode': $line[ $row_key ] = $the_order->get_shipping_postcode(); break; case 'shipping_country': $line[ $row_key ] = $the_order->get_shipping_country(); break; // custom details case 'customer_ip': $line[ $row_key ] = $the_order->get_customer_ip_address(); break; case 'customer_note': $line[ $row_key ] = $the_order->get_customer_note(); break; default: $line[ $row_key ] = ''; break; } } $line = apply_filters( 'dokan_csv_export_lines', $line, $the_order ); fputcsv( $output, $line ); } fclose( $output ); // phpcs:ignore } /** * Dokan get seller id by order id * * @param int $order_id * * @deprecated 3.8.0 * * @return int */ function dokan_get_seller_id_by_order_id( $order_id ) { wc_deprecated_function( 'dokan_get_seller_id_by_order_id', '2.9.10', 'dokan_get_seller_id_by_order' ); return dokan_get_seller_id_by_order( $order_id ); } /** * Check if an order with same id is exists in database * * @param int $order_id * * @deprecated 3.8.0 * * @return boolean */ function dokan_is_order_already_exists( $order_id ) { wc_deprecated_function( 'dokan_is_order_already_exists', '3.8.0', 'dokan()->order->is_order_already_synced()' ); return dokan()->order->is_order_already_synced( $order_id ); } /** * Customer has order from current seller * * @since 2.8.6 * @since 3.8.0 moved this function from includes/functions.php * * @param int $customer_id * @param int|null $seller_id * * @return bool */ function dokan_customer_has_order_from_this_seller( $customer_id, $seller_id = null ) { $seller_id = ! empty( $seller_id ) ? $seller_id : dokan_get_current_user_id(); $args = [ 'seller_id' => $seller_id, 'customer_id' => $customer_id, 'return' => 'count', ]; $count = dokan()->order->all( $args ); return $count > 0; } /** * Get total sales amount of a seller * * @since 3.8.0 moved from includes/functions.php * * @param int $seller_id * * @return float */ function dokan_author_total_sales( $seller_id ) { $vendor = dokan()->vendor->get( $seller_id ); if ( $vendor->id === 0 ) { return 0; } return $vendor->get_total_sales(); } if ( ! function_exists( 'dokan_get_seller_earnings_by_order' ) ) { /** * Get Seller's net Earnings from a order * * @since 2.5.2 * @since 3.8.0 moved from includes/functions.php * * @param WC_ORDER $order * @param int $seller_id * * @deprecated 3.8.0 * * @return int $earned */ function dokan_get_seller_earnings_by_order( $order, $seller_id ) { wc_deprecated_function( 'dokan_get_seller_earnings_by_order', '3.8.0', 'dokan()->commission->get_earning_by_order( $order, \'seller\' )' ); $earned = dokan()->commission->get_earning_by_order( $order, 'seller' ); return apply_filters( 'dokan_get_seller_earnings_by_order', $earned, $order, $seller_id ); } } /** * Dokan get vendor order details by order ID * * @since 3.2.11 rewritten entire function * @since 3.8.0 Moved this function from includes/functions.php * * @param int $order_id * @param int|null $vendor_id will remove this parameter in future * * @return array will return empty array in case order has suborders */ function dokan_get_vendor_order_details( $order_id, $vendor_id = null ) { $order = wc_get_order( $order_id ); $order_info = []; if ( ! $order || $order->get_meta( 'has_sub_order' ) ) { return apply_filters( 'dokan_get_vendor_order_details', $order_info, $order_id, $vendor_id ); } foreach ( $order->get_items( 'line_item' ) as $item ) { $info = [ 'product' => $item['name'], 'quantity' => $item['quantity'], 'total' => $item['total'], ]; array_push( $order_info, $info ); } return apply_filters( 'dokan_get_vendor_order_details', $order_info, $order_id, $vendor_id ); } /** * Updates bulk orders status by orders ids. * * @since 3.7.10 * @since 3.8.0 Moved this method from includes/functions.php file * * @param array $postdata * * @return void */ function dokan_apply_bulk_order_status_change( $postdata ) { if ( ! isset( $postdata['status'] ) || ! isset( $postdata['bulk_orders'] ) ) { return; } $status = sanitize_text_field( wp_unslash( $postdata['status'] ) ); $orders = array_map( 'absint', $postdata['bulk_orders'] ); // -1 means bluk action option value $excluded_status = [ '-1', 'cancelled', 'refunded' ]; if ( in_array( $status, $excluded_status, true ) ) { return; } foreach ( $orders as $order_id ) { $order = wc_get_order( $order_id ); if ( ! $order instanceof \WC_Order ) { continue; } if ( in_array( $order->get_status(), $excluded_status, true ) || $order->get_status() === $status ) { continue; } $order->update_status( $status ); } }