Plugin Directory

Changeset 3222736


Ignore:
Timestamp:
01/15/2025 09:50:20 AM (15 months ago)
Author:
api2cartdev
Message:

Updated to 3.0.4

Location:
api2cart-bridge-connector/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • api2cart-bridge-connector/trunk/api2cart-bridge-connector.php

    r3197357 r3222736  
    55Author: API2Cart
    66Author URI: https://api2cart.com/
    7 Version: 3.0.3
     7Version: 3.0.4
    88*/
    99
  • api2cart-bridge-connector/trunk/bridge2cart/bridge.php

    r3197357 r3222736  
    11341134
    11351135        return true;
     1136    }
     1137
     1138    /**
     1139     * TriggerEvents Batch
     1140     *
     1141     * @inheritDoc
     1142     * @return array
     1143     */
     1144    public function triggerEventsBatch( array $a2cData ) {
     1145        $response = array(
     1146            'error_code' => self::ERROR_CODE_SUCCESS,
     1147            'error'      => null,
     1148            'result'     => [],
     1149        );
     1150
     1151        $reportError = function ( $e ) {
     1152            return [
     1153                'message'    => $e->getMessage(),
     1154                'error_code' => $e->getCode(),
     1155            ];
     1156        };
     1157
     1158        if ( function_exists( 'switch_to_blog' ) ) {
     1159            switch_to_blog( $a2cData['store_id'] );
     1160        }
     1161
     1162        foreach ( $a2cData['data'] as $key => $item ) {
     1163            $response['result'][$key]['id'] = null;
     1164
     1165            try {
     1166                foreach ( $item['events'] as $event ) {
     1167                    if ( 'update' === $event['event'] ) {
     1168                        switch ( $event['entity_type'] ) {
     1169                            case 'product':
     1170                                $product = WC()->product_factory->get_product( $event['entity_id'] );
     1171                                if ( in_array( 'stock_status', $event['updated_meta'], true ) ) {
     1172                                    do_action( 'woocommerce_product_set_stock_status', $product->get_id(), $product->get_stock_status(), $product );
     1173                                }
     1174
     1175                                if ( in_array( 'stock_quantity', $event['updated_meta'], true ) ) {
     1176                                    do_action( 'woocommerce_product_set_stock', $product );
     1177                                }
     1178
     1179                                do_action( 'woocommerce_product_object_updated_props', $product, $event['updated_meta'] );
     1180                                break;
     1181                            case 'variant':
     1182                                $product = WC()->product_factory->get_product( $event['entity_id'] );
     1183                                if ( in_array( 'stock_status', $event['updated_meta'], true ) ) {
     1184                                    do_action( 'woocommerce_variation_set_stock_status', $event['entity_id'], $product->get_stock_status(), $product );
     1185                                }
     1186
     1187                                if ( in_array( 'stock_quantity', $event['updated_meta'], true ) ) {
     1188                                    do_action( 'woocommerce_variation_set_stock', $product );
     1189                                }
     1190
     1191                                do_action( 'woocommerce_product_object_updated_props', $product, $event['updated_meta'] );
     1192                                break;
     1193                            case 'order':
     1194                                $entity = WC()->order_factory->get_order( $event['entity_id'] );
     1195
     1196                                do_action( 'woocommerce_order_status_' . $event['status']['to'], $entity->get_id(), $entity );
     1197
     1198                                if ( isset( $event['status']['from'] ) ) {
     1199                                    do_action( 'woocommerce_order_status_' . $event['status']['from'] . '_to_' . $event['status']['to'], $entity->get_id(), $entity );
     1200                                    do_action( 'woocommerce_order_status_changed', $entity->get_id(), $event['status']['from'], $event['status']['to'], $entity );
     1201                                }
     1202
     1203                                break;
     1204                            case 'shipment':
     1205                                $entity = WC()->order_factory->get_order( $event['entity_id'] );
     1206                                $data   = unserialize( $item['metaData'], [ 'allowed_classes' => [ 'stdClass' ] ] );
     1207                                $action = 'add';
     1208
     1209                                if ( isset( $event['action'] ) ) {
     1210                                    $action = $event['action'];
     1211                                }
     1212
     1213                                $existingData = $entity->get_meta( '_wc_shipment_tracking_items' );
     1214
     1215                                if ( empty( $data ) ) {
     1216                                    $entity->delete_meta_data( '_wc_shipment_tracking_items' );
     1217                                } else {
     1218                                    if ( $action === 'update' ) {
     1219                                        $newData = $data;
     1220                                    } else {
     1221                                        if ( !empty( $existingData ) && is_array( $existingData ) ) {
     1222                                            $existingData[] = $data[0];
     1223                                            $newData        = $existingData;
     1224                                        } else {
     1225                                            $newData = $data;
     1226                                        }
     1227                                    }
     1228
     1229                                    $entity->update_meta_data( '_wc_shipment_tracking_items', $newData );
     1230
     1231                                    if ( $action === 'add' ) {
     1232                                        $trackingProvider = '';
     1233                                        $trackingNumber   = '';
     1234
     1235                                        if ( !empty( $data[0]['tracking_provider'] ) ) {
     1236                                            $trackingProvider = $data[0]['tracking_provider'];
     1237                                        } elseif ( !empty( $data[0]['custom_tracking_provider'] ) ) {
     1238                                            $trackingProvider = $data[0]['custom_tracking_provider'];
     1239                                        }
     1240
     1241                                        if ( isset( $data[0]['tracking_number'] ) ) {
     1242                                            $trackingNumber = $data[0]['tracking_number'];
     1243                                        }
     1244
     1245                                        if ( $trackingProvider && $trackingNumber ) {
     1246                                            /* translators: %1$s: replace with Shipping Provider %2$s: replace with tracking number */
     1247                                            $note = sprintf(
     1248                                                __( 'Order was shipped with %1$s and tracking number is: %2$s', 'bridge-connector-wdr' ),
     1249                                                $trackingProvider,
     1250                                                $trackingNumber
     1251                                            );
     1252
     1253                                            $entity->add_order_note( $note );
     1254                                        }
     1255                                    }
     1256                                }
     1257
     1258                                $entity->save_meta_data();
     1259                                do_action( 'update_order_status_after_adding_tracking', $event['status'], $entity );
     1260                        }
     1261                    } elseif ( 'delete' === $event['event'] ) {
     1262                        switch ( $event['entity_type'] ) {
     1263                            case 'shipment':
     1264                                $entity = WC()->order_factory->get_order( $event['entity_id'] );
     1265
     1266                                foreach ( $event['tracking_info'] as $trackingInfo ) {
     1267                                    $trackingProvider = $trackingInfo['tracking_provider'];
     1268                                    $trackingNumber   = $trackingInfo['tracking_number'];
     1269
     1270                                    // translators: %1$s is the tracking provider, %2$s is the tracking number
     1271                                    $note = sprintf(
     1272                                        esc_html__( 'Tracking info was deleted for tracking provider %1$s with tracking number %2$s', 'bridge-connector-wdr' ),
     1273                                        $trackingProvider,
     1274                                        $trackingNumber
     1275                                    );
     1276                                    // Add the note
     1277                                    $entity->add_order_note( $note );
     1278                                }
     1279                        }
     1280                    }
     1281                }
     1282            } catch ( Exception $e ) {
     1283                $response['result'][$key]['errors'][] = $reportError( $e );
     1284            } catch ( Throwable $e ) {
     1285                $response['result'][$key]['errors'][] = $reportError( $e );
     1286            }
     1287        }
     1288
     1289        return $response;
    11361290    }
    11371291
     
    48805034if ( ! defined( 'ABSPATH' ) ) exit;
    48815035
    4882 define( 'A2CBC_BRIDGE_VERSION', '168' );
     5036define( 'A2CBC_BRIDGE_VERSION', '170' );
    48835037define( 'A2CBC_BRIDGE_CHECK_REQUEST_KEY_LINK', 'http://app.api2cart.com/request/key/check' );
    48845038define( 'A2CBC_BRIDGE_DIRECTORY_NAME', basename( getcwd() ) );
  • api2cart-bridge-connector/trunk/readme.txt

    r3197357 r3222736  
    9191= 3.0.2 =* Added support for the "Discount Rules for WooCommerce" plugin.
    9292= 3.0.3 =* Updated bridge to 168 version.
     93= 3.0.4 =* Updated bridge to 170 version.
Note: See TracChangeset for help on using the changeset viewer.