Plugin Directory

Changeset 3046841


Ignore:
Timestamp:
03/07/2024 09:51:35 AM (2 years ago)
Author:
shoppingfeed
Message:

Update to version 6.5.0 from GitHub

Location:
shopping-feed
Files:
20 edited
1 copied

Legend:

Unmodified
Added
Removed
  • shopping-feed/tags/6.5.0/readme.txt

    r3032069 r3046841  
    22Contributors: ShoppingFeed, BeAPI
    33Tags: shoppingfeed, marketplace, woocommerce, woocommerce shoppingfeed, create woocommerce products shoppingfeed, products feed, generate shoppingfeed, amazon, Jet, Walmart, many marketplace, import orders
    4 Stable tag: 6.4.0
    5 Version: 6.4.0
     4Stable tag: 6.5.0
     5Version: 6.5.0
    66Requires PHP: 7.3
    77Requires at least: 5.7
     
    1414
    1515== Changelog ==
     16* 6.5.0
     17  * Misc : HPOS compatibility.
     18  * Orders : Update the filters used for retrieving orders from ShoppingFeed.
     19  * Orders : Rework the checks when importing orders from ShoppingFeed.
    1620* 6.4.0
    1721  * Misc : Prefix Guzzle library and related dependencies to avoid conflicts.
  • shopping-feed/tags/6.5.0/shoppingfeed.php

    r3032069 r3046841  
    88 * Text Domain:          shopping-feed
    99 * Domain Path:          /languages
    10  * Version:              6.4.0
     10 * Version:              6.5.0
    1111 * Requires at least:    5.7
    1212 * Requires PHP:         7.3
     
    2727}
    2828
    29 define( 'SF_VERSION', '6.4.0' );
     29define( 'SF_VERSION', '6.5.0' );
    3030define( 'SF_DB_VERSION_SLUG', 'SF_DB_VERSION' );
    3131define( 'SF_DB_VERSION', '1.0.0' );
     
    5858
    5959\add_action( 'plugins_loaded', __NAMESPACE__ . '\\init', 100 );
     60
     61// Declare the plugin compatibility with High Performance Order Storage
     62\add_action(
     63    'before_woocommerce_init',
     64    function() {
     65        if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
     66            \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
     67        }
     68    }
     69);
  • shopping-feed/tags/6.5.0/src/Addons/Plugins/PhWoocommerceShipmentTrackingProPlugin/PhWoocommerceShipmentTrackingProPlugin.php

    r2748452 r3046841  
    8282     * @return array
    8383     */
    84     private function get_tracking_data( $wc_order ) {
    85         $tracking_data = get_post_meta( $wc_order->get_id(), 'wf_wc_shipment_result', true );
     84    private function get_tracking_data( \WC_Order $wc_order ) {
     85        $tracking_data = $wc_order->get_meta( 'wf_wc_shipment_result', true );
    8686        if ( ! is_array( $tracking_data ) || ! isset( $tracking_data['tracking_info'] ) ) {
    8787            return array();
  • shopping-feed/tags/6.5.0/src/Admin/Metabox.php

    r2670662 r3046841  
    88use ShoppingFeed\ShoppingFeedWC\Orders\Order;
    99use ShoppingFeed\ShoppingFeedWC\Query\Query;
    10 use WP_Post;
    1110
    1211/**
     
    2423
    2524    /**
    26      * Register a custom metabox to display metadata for the current order.
     25     * Register a custom metabox to display ShoppingFeed metadata for the current order.
    2726     *
    28      * This metabox is only register if the current order has been creayed by ShoppingFeed.
     27     * This metabox is only register if the current order has been created by ShoppingFeed.
    2928     */
    3029    public function register_sf_metabox() {
    31         global $post;
     30        global $theorder, $post;
     31
    3232        $screen = get_current_screen();
    33         if ( is_null( $screen ) || 'shop_order' !== $screen->post_type ) {
     33        if ( null === $screen || 'shop_order' !== $screen->post_type ) {
    3434            return;
    3535        }
    3636
    37         $order = wc_get_order( $post );
    38         if ( false === $order ) {
    39             return;
     37        $order = false;
     38        if ( $theorder instanceof \WC_Order ) {
     39            $order = $theorder;
     40        } elseif ( $post ) {
     41            $order = wc_get_order( $post->ID );
    4042        }
    4143
    42         if ( ! Order::is_sf_order( $order ) ) {
     44        if ( ! $order || ! Order::is_sf_order( $order ) ) {
    4345            return;
    4446        }
     
    4850            __( 'ShoppingFeed details', 'shopping-feed' ),
    4951            array( $this, 'render' ),
    50             'shop_order',
     52            $screen,
    5153            'side'
    5254        );
     
    5658     * Render the metabox content.
    5759     *
    58      * @param WP_Post $post
     60     * @param \WP_Post|\WC_Order $post_or_order_object
     61     *
     62     * @author Stéphane Gillot
    5963     */
    60     public function render( $post ) {
    61         $order = wc_get_order( $post );
     64    public function render( $post_or_order_object ) {
     65        $order = ( $post_or_order_object instanceof \WP_Post ) ? wc_get_order( $post_or_order_object->ID ) : $post_or_order_object;
    6266        if ( false === $order ) {
    6367            return;
     
    7781                    <span><?php esc_html_e( 'MarketPlace', 'shopping-feed' ); ?>:</span> <?php echo esc_html( $channel_name ); ?>
    7882                </li>
    79             <?php
    80             do_action( 'sf_show_metas', $order );
    81             ?>
     83                <?php
     84                do_action( 'sf_show_metas', $order );
     85                ?>
    8286            </ul>
    8387            <?php
  • shopping-feed/tags/6.5.0/src/Orders/Order.php

    r3032069 r3046841  
    66defined( 'ABSPATH' ) || exit;
    77
     8use Automattic\WooCommerce\Utilities\OrderUtil;
    89use ShoppingFeed\ShoppingFeedWC\Addons\Marketplace;
    910use ShoppingFeed\ShoppingFeedWC\Dependencies\ShoppingFeed\Sdk\Api\Order\OrderResource;
     
    8687
    8788        //Addresses
    88         $wc_order->set_address( $this->shipping_address, 'shipping' );
    89         $wc_order->set_address( $this->billing_address );
     89        $wc_order->set_shipping_address( $this->shipping_address );
     90        $wc_order->set_billing_address( $this->billing_address );
    9091
    9192        //Note
     
    237238     */
    238239    public static function exists( $sf_order ) {
    239         return ! empty( wc_get_orders( array( Query::WC_META_SF_REFERENCE => $sf_order->getReference() ) ) );
     240        $args = [ Query::WC_META_SF_REFERENCE => $sf_order->getReference() ];
     241        if ( class_exists( OrderUtil::class ) && OrderUtil::custom_orders_table_usage_is_enabled() ) {
     242            $args = [
     243                'meta_query' => [
     244                    [
     245                        'key'   => Query::WC_META_SF_REFERENCE,
     246                        'value' => $sf_order->getReference(),
     247                    ],
     248                ],
     249            ];
     250        }
     251
     252        return ! empty( wc_get_orders( $args ) );
    240253    }
    241254
  • shopping-feed/tags/6.5.0/src/Orders/Orders.php

    r3032069 r3046841  
    7171        }
    7272
    73         $order_api                 = $shop->getOrderApi();
    74         $filters                   = array();
    75         $filters['acknowledgment'] = 'unacknowledged';
     73        $order_api = $shop->getOrderApi();
     74        $filters   = array(
     75            'acknowledgment' => 'unacknowledged',
     76            'status'         => ShoppingFeedHelper::sf_order_statuses_to_import(),
     77            'since'          => gmdate( 'c', strtotime( '14 days ago' ) ),
     78        );
    7679
    77         $filters['status'] = ShoppingFeedHelper::sf_order_statuses_to_import();
     80        $orders_options               = ShoppingFeedHelper::get_sf_orders_options();
     81        $include_fulfilled_by_channel = (bool) ( $orders_options['import_order_fulfilled_by_marketplace'] ?? false );
    7882
    7983        foreach ( $order_api->getAll( $filters ) as $sf_order ) {
     
    8286                    sprintf(
    8387                        /* translators: 1: Order reference. 2: Order id. */
    84                         __( 'Order already imported %1$1s (%2$2s)', 'shopping-feed' ),
     88                        __( 'Order already imported %1$s (%2$s)', 'shopping-feed' ),
    8589                        $sf_order->getReference(),
    8690                        $sf_order->getId()
     
    9397            }
    9498
    95             if ( ! $this->can_import_order( $sf_order ) ) {
     99            $import_order_check = $this->can_import_order( $sf_order, $include_fulfilled_by_channel );
     100            if ( is_wp_error( $import_order_check ) ) {
     101                /** @psalm-suppress PossiblyInvalidMethodCall */
    96102                ShoppingFeedHelper::get_logger()->notice(
    97103                    sprintf(
    98                         /* translators: 1: Order reference. 2: Order id. */
    99                         __( 'Order fulfilled by channel %1$1s (%2$2s)', 'shopping-feed' ),
     104                        /* translators: 1: Order reference, 2: Order id, 3: error message. */
     105                        __( 'Order %1$s (%2$s) can\'t be imported : %3$s', 'shopping-feed' ),
    100106                        $sf_order->getReference(),
    101                         $sf_order->getId()
     107                        $sf_order->getId(),
     108                        $import_order_check->get_error_message()
    102109                    ),
    103110                    array(
     
    121128     *
    122129     * @param OrderResource $sf_order
     130     * @param bool $import_orders_fufilled_by_channel
    123131     *
    124      * @return bool
     132     * @return bool|\WP_Error true if the order can be imported or WP_Error with
     133     *                        the reason the order can't be imported otherwise.
    125134     */
    126     public function can_import_order( $sf_order ) {
    127         // Allow user for force imports for orders fulfilled by the marketplaces.
    128         $orders_options = ShoppingFeedHelper::get_sf_orders_options();
    129         if ( isset( $orders_options['import_order_fulfilled_by_marketplace'] ) && true === (bool) $orders_options['import_order_fulfilled_by_marketplace'] ) {
     135    public function can_import_order( $sf_order, $import_orders_fufilled_by_channel = false ) {
     136        $sf_order_data = $sf_order->toArray();
     137        $status = $sf_order_data['status'] ?? '';
     138        $anonymized = (bool) ( $sf_order_data['anonymized'] ?? false );
     139
     140        // Always skip anonymized orders.
     141        if ( $anonymized ) {
     142            return new \WP_Error(
     143                'shoppingfeed_order_import_anonymized_order',
     144                __( 'Order data has been anonymized.', 'shopping-feed' )
     145            );
     146        }
     147
     148        $fulfilled_by_marketplace = $this->is_fulfilled_by_marketplace( $sf_order );
     149
     150        // If the order is fulfilled by the merchant
     151        if ( ! $fulfilled_by_marketplace ) {
     152            // Only import orders with the `waiting_shipment` status.
     153            if ( 'waiting_shipment' !== $status ) {
     154                return new \WP_Error(
     155                    'shoppingfeed_order_import_fulfilledby_store_incompatible_status',
     156                    sprintf(
     157                        /* translators: the order status */
     158                        __( 'Order fulfilled by store with status "%s" will not be imported.', 'shopping-feed' ),
     159                        $status
     160                    )
     161                );
     162            }
     163
    130164            return true;
    131165        }
    132166
    133         return false === $this->is_fulfilled_by_marketplace( $sf_order );
     167        // Only imports orders fulfilled by channel if the flag is true.
     168        if ( ! $import_orders_fufilled_by_channel ) {
     169            return new \WP_Error(
     170                'shoppingfeed_order_import_skip_fulfilledby_marketplace_orders',
     171                __( 'Order if fulfilled by channel and will not be imported.', 'shopping-feed' )
     172            );
     173        }
     174
     175        return true;
    134176    }
    135177}
  • shopping-feed/tags/6.5.0/vendor/autoload.php

    r3032069 r3046841  
    55require_once __DIR__ . '/composer/autoload_real.php';
    66
    7 return ComposerAutoloaderInitc2cdf4a183c6afa546d559f3114241e2::getLoader();
     7return ComposerAutoloaderInit843d602e5ba88bb852407d6ae830daa3::getLoader();
  • shopping-feed/tags/6.5.0/vendor/composer/autoload_real.php

    r3032069 r3046841  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInitc2cdf4a183c6afa546d559f3114241e2
     5class ComposerAutoloaderInit843d602e5ba88bb852407d6ae830daa3
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInitc2cdf4a183c6afa546d559f3114241e2', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit843d602e5ba88bb852407d6ae830daa3', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
    29         spl_autoload_unregister(array('ComposerAutoloaderInitc2cdf4a183c6afa546d559f3114241e2', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit843d602e5ba88bb852407d6ae830daa3', 'loadClassLoader'));
    3030
    3131        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
     
    3333            require __DIR__ . '/autoload_static.php';
    3434
    35             call_user_func(\Composer\Autoload\ComposerStaticInitc2cdf4a183c6afa546d559f3114241e2::getInitializer($loader));
     35            call_user_func(\Composer\Autoload\ComposerStaticInit843d602e5ba88bb852407d6ae830daa3::getInitializer($loader));
    3636        } else {
    3737            $map = require __DIR__ . '/autoload_namespaces.php';
     
    5454
    5555        if ($useStaticLoader) {
    56             $includeFiles = Composer\Autoload\ComposerStaticInitc2cdf4a183c6afa546d559f3114241e2::$files;
     56            $includeFiles = Composer\Autoload\ComposerStaticInit843d602e5ba88bb852407d6ae830daa3::$files;
    5757        } else {
    5858            $includeFiles = require __DIR__ . '/autoload_files.php';
    5959        }
    6060        foreach ($includeFiles as $fileIdentifier => $file) {
    61             composerRequirec2cdf4a183c6afa546d559f3114241e2($fileIdentifier, $file);
     61            composerRequire843d602e5ba88bb852407d6ae830daa3($fileIdentifier, $file);
    6262        }
    6363
     
    7171 * @return void
    7272 */
    73 function composerRequirec2cdf4a183c6afa546d559f3114241e2($fileIdentifier, $file)
     73function composerRequire843d602e5ba88bb852407d6ae830daa3($fileIdentifier, $file)
    7474{
    7575    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
  • shopping-feed/tags/6.5.0/vendor/composer/autoload_static.php

    r3032069 r3046841  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInitc2cdf4a183c6afa546d559f3114241e2
     7class ComposerStaticInit843d602e5ba88bb852407d6ae830daa3
    88{
    99    public static $files = array (
     
    367367    {
    368368        return \Closure::bind(function () use ($loader) {
    369             $loader->prefixLengthsPsr4 = ComposerStaticInitc2cdf4a183c6afa546d559f3114241e2::$prefixLengthsPsr4;
    370             $loader->prefixDirsPsr4 = ComposerStaticInitc2cdf4a183c6afa546d559f3114241e2::$prefixDirsPsr4;
    371             $loader->classMap = ComposerStaticInitc2cdf4a183c6afa546d559f3114241e2::$classMap;
     369            $loader->prefixLengthsPsr4 = ComposerStaticInit843d602e5ba88bb852407d6ae830daa3::$prefixLengthsPsr4;
     370            $loader->prefixDirsPsr4 = ComposerStaticInit843d602e5ba88bb852407d6ae830daa3::$prefixDirsPsr4;
     371            $loader->classMap = ComposerStaticInit843d602e5ba88bb852407d6ae830daa3::$classMap;
    372372
    373373        }, null, ClassLoader::class);
  • shopping-feed/tags/6.5.0/vendor/composer/installed.php

    r3032069 r3046841  
    66        'install_path' => __DIR__ . '/../../',
    77        'aliases' => array(),
    8         'reference' => '9c6a94ac05210aeae8eb3b694d0b7ba05fc72fbb',
     8        'reference' => 'fdaa5f2e9131eeaa2fa2912dc9f8e9d489733690',
    99        'name' => 'shoppingfeed/shoppingfeed-for-woocommerce',
    1010        'dev' => false,
     
    3535            'install_path' => __DIR__ . '/../../',
    3636            'aliases' => array(),
    37             'reference' => '9c6a94ac05210aeae8eb3b694d0b7ba05fc72fbb',
     37            'reference' => 'fdaa5f2e9131eeaa2fa2912dc9f8e9d489733690',
    3838            'dev_requirement' => false,
    3939        ),
  • shopping-feed/trunk/readme.txt

    r3032069 r3046841  
    22Contributors: ShoppingFeed, BeAPI
    33Tags: shoppingfeed, marketplace, woocommerce, woocommerce shoppingfeed, create woocommerce products shoppingfeed, products feed, generate shoppingfeed, amazon, Jet, Walmart, many marketplace, import orders
    4 Stable tag: 6.4.0
    5 Version: 6.4.0
     4Stable tag: 6.5.0
     5Version: 6.5.0
    66Requires PHP: 7.3
    77Requires at least: 5.7
     
    1414
    1515== Changelog ==
     16* 6.5.0
     17  * Misc : HPOS compatibility.
     18  * Orders : Update the filters used for retrieving orders from ShoppingFeed.
     19  * Orders : Rework the checks when importing orders from ShoppingFeed.
    1620* 6.4.0
    1721  * Misc : Prefix Guzzle library and related dependencies to avoid conflicts.
  • shopping-feed/trunk/shoppingfeed.php

    r3032069 r3046841  
    88 * Text Domain:          shopping-feed
    99 * Domain Path:          /languages
    10  * Version:              6.4.0
     10 * Version:              6.5.0
    1111 * Requires at least:    5.7
    1212 * Requires PHP:         7.3
     
    2727}
    2828
    29 define( 'SF_VERSION', '6.4.0' );
     29define( 'SF_VERSION', '6.5.0' );
    3030define( 'SF_DB_VERSION_SLUG', 'SF_DB_VERSION' );
    3131define( 'SF_DB_VERSION', '1.0.0' );
     
    5858
    5959\add_action( 'plugins_loaded', __NAMESPACE__ . '\\init', 100 );
     60
     61// Declare the plugin compatibility with High Performance Order Storage
     62\add_action(
     63    'before_woocommerce_init',
     64    function() {
     65        if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) {
     66            \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
     67        }
     68    }
     69);
  • shopping-feed/trunk/src/Addons/Plugins/PhWoocommerceShipmentTrackingProPlugin/PhWoocommerceShipmentTrackingProPlugin.php

    r2748452 r3046841  
    8282     * @return array
    8383     */
    84     private function get_tracking_data( $wc_order ) {
    85         $tracking_data = get_post_meta( $wc_order->get_id(), 'wf_wc_shipment_result', true );
     84    private function get_tracking_data( \WC_Order $wc_order ) {
     85        $tracking_data = $wc_order->get_meta( 'wf_wc_shipment_result', true );
    8686        if ( ! is_array( $tracking_data ) || ! isset( $tracking_data['tracking_info'] ) ) {
    8787            return array();
  • shopping-feed/trunk/src/Admin/Metabox.php

    r2670662 r3046841  
    88use ShoppingFeed\ShoppingFeedWC\Orders\Order;
    99use ShoppingFeed\ShoppingFeedWC\Query\Query;
    10 use WP_Post;
    1110
    1211/**
     
    2423
    2524    /**
    26      * Register a custom metabox to display metadata for the current order.
     25     * Register a custom metabox to display ShoppingFeed metadata for the current order.
    2726     *
    28      * This metabox is only register if the current order has been creayed by ShoppingFeed.
     27     * This metabox is only register if the current order has been created by ShoppingFeed.
    2928     */
    3029    public function register_sf_metabox() {
    31         global $post;
     30        global $theorder, $post;
     31
    3232        $screen = get_current_screen();
    33         if ( is_null( $screen ) || 'shop_order' !== $screen->post_type ) {
     33        if ( null === $screen || 'shop_order' !== $screen->post_type ) {
    3434            return;
    3535        }
    3636
    37         $order = wc_get_order( $post );
    38         if ( false === $order ) {
    39             return;
     37        $order = false;
     38        if ( $theorder instanceof \WC_Order ) {
     39            $order = $theorder;
     40        } elseif ( $post ) {
     41            $order = wc_get_order( $post->ID );
    4042        }
    4143
    42         if ( ! Order::is_sf_order( $order ) ) {
     44        if ( ! $order || ! Order::is_sf_order( $order ) ) {
    4345            return;
    4446        }
     
    4850            __( 'ShoppingFeed details', 'shopping-feed' ),
    4951            array( $this, 'render' ),
    50             'shop_order',
     52            $screen,
    5153            'side'
    5254        );
     
    5658     * Render the metabox content.
    5759     *
    58      * @param WP_Post $post
     60     * @param \WP_Post|\WC_Order $post_or_order_object
     61     *
     62     * @author Stéphane Gillot
    5963     */
    60     public function render( $post ) {
    61         $order = wc_get_order( $post );
     64    public function render( $post_or_order_object ) {
     65        $order = ( $post_or_order_object instanceof \WP_Post ) ? wc_get_order( $post_or_order_object->ID ) : $post_or_order_object;
    6266        if ( false === $order ) {
    6367            return;
     
    7781                    <span><?php esc_html_e( 'MarketPlace', 'shopping-feed' ); ?>:</span> <?php echo esc_html( $channel_name ); ?>
    7882                </li>
    79             <?php
    80             do_action( 'sf_show_metas', $order );
    81             ?>
     83                <?php
     84                do_action( 'sf_show_metas', $order );
     85                ?>
    8286            </ul>
    8387            <?php
  • shopping-feed/trunk/src/Orders/Order.php

    r3032069 r3046841  
    66defined( 'ABSPATH' ) || exit;
    77
     8use Automattic\WooCommerce\Utilities\OrderUtil;
    89use ShoppingFeed\ShoppingFeedWC\Addons\Marketplace;
    910use ShoppingFeed\ShoppingFeedWC\Dependencies\ShoppingFeed\Sdk\Api\Order\OrderResource;
     
    8687
    8788        //Addresses
    88         $wc_order->set_address( $this->shipping_address, 'shipping' );
    89         $wc_order->set_address( $this->billing_address );
     89        $wc_order->set_shipping_address( $this->shipping_address );
     90        $wc_order->set_billing_address( $this->billing_address );
    9091
    9192        //Note
     
    237238     */
    238239    public static function exists( $sf_order ) {
    239         return ! empty( wc_get_orders( array( Query::WC_META_SF_REFERENCE => $sf_order->getReference() ) ) );
     240        $args = [ Query::WC_META_SF_REFERENCE => $sf_order->getReference() ];
     241        if ( class_exists( OrderUtil::class ) && OrderUtil::custom_orders_table_usage_is_enabled() ) {
     242            $args = [
     243                'meta_query' => [
     244                    [
     245                        'key'   => Query::WC_META_SF_REFERENCE,
     246                        'value' => $sf_order->getReference(),
     247                    ],
     248                ],
     249            ];
     250        }
     251
     252        return ! empty( wc_get_orders( $args ) );
    240253    }
    241254
  • shopping-feed/trunk/src/Orders/Orders.php

    r3032069 r3046841  
    7171        }
    7272
    73         $order_api                 = $shop->getOrderApi();
    74         $filters                   = array();
    75         $filters['acknowledgment'] = 'unacknowledged';
     73        $order_api = $shop->getOrderApi();
     74        $filters   = array(
     75            'acknowledgment' => 'unacknowledged',
     76            'status'         => ShoppingFeedHelper::sf_order_statuses_to_import(),
     77            'since'          => gmdate( 'c', strtotime( '14 days ago' ) ),
     78        );
    7679
    77         $filters['status'] = ShoppingFeedHelper::sf_order_statuses_to_import();
     80        $orders_options               = ShoppingFeedHelper::get_sf_orders_options();
     81        $include_fulfilled_by_channel = (bool) ( $orders_options['import_order_fulfilled_by_marketplace'] ?? false );
    7882
    7983        foreach ( $order_api->getAll( $filters ) as $sf_order ) {
     
    8286                    sprintf(
    8387                        /* translators: 1: Order reference. 2: Order id. */
    84                         __( 'Order already imported %1$1s (%2$2s)', 'shopping-feed' ),
     88                        __( 'Order already imported %1$s (%2$s)', 'shopping-feed' ),
    8589                        $sf_order->getReference(),
    8690                        $sf_order->getId()
     
    9397            }
    9498
    95             if ( ! $this->can_import_order( $sf_order ) ) {
     99            $import_order_check = $this->can_import_order( $sf_order, $include_fulfilled_by_channel );
     100            if ( is_wp_error( $import_order_check ) ) {
     101                /** @psalm-suppress PossiblyInvalidMethodCall */
    96102                ShoppingFeedHelper::get_logger()->notice(
    97103                    sprintf(
    98                         /* translators: 1: Order reference. 2: Order id. */
    99                         __( 'Order fulfilled by channel %1$1s (%2$2s)', 'shopping-feed' ),
     104                        /* translators: 1: Order reference, 2: Order id, 3: error message. */
     105                        __( 'Order %1$s (%2$s) can\'t be imported : %3$s', 'shopping-feed' ),
    100106                        $sf_order->getReference(),
    101                         $sf_order->getId()
     107                        $sf_order->getId(),
     108                        $import_order_check->get_error_message()
    102109                    ),
    103110                    array(
     
    121128     *
    122129     * @param OrderResource $sf_order
     130     * @param bool $import_orders_fufilled_by_channel
    123131     *
    124      * @return bool
     132     * @return bool|\WP_Error true if the order can be imported or WP_Error with
     133     *                        the reason the order can't be imported otherwise.
    125134     */
    126     public function can_import_order( $sf_order ) {
    127         // Allow user for force imports for orders fulfilled by the marketplaces.
    128         $orders_options = ShoppingFeedHelper::get_sf_orders_options();
    129         if ( isset( $orders_options['import_order_fulfilled_by_marketplace'] ) && true === (bool) $orders_options['import_order_fulfilled_by_marketplace'] ) {
     135    public function can_import_order( $sf_order, $import_orders_fufilled_by_channel = false ) {
     136        $sf_order_data = $sf_order->toArray();
     137        $status = $sf_order_data['status'] ?? '';
     138        $anonymized = (bool) ( $sf_order_data['anonymized'] ?? false );
     139
     140        // Always skip anonymized orders.
     141        if ( $anonymized ) {
     142            return new \WP_Error(
     143                'shoppingfeed_order_import_anonymized_order',
     144                __( 'Order data has been anonymized.', 'shopping-feed' )
     145            );
     146        }
     147
     148        $fulfilled_by_marketplace = $this->is_fulfilled_by_marketplace( $sf_order );
     149
     150        // If the order is fulfilled by the merchant
     151        if ( ! $fulfilled_by_marketplace ) {
     152            // Only import orders with the `waiting_shipment` status.
     153            if ( 'waiting_shipment' !== $status ) {
     154                return new \WP_Error(
     155                    'shoppingfeed_order_import_fulfilledby_store_incompatible_status',
     156                    sprintf(
     157                        /* translators: the order status */
     158                        __( 'Order fulfilled by store with status "%s" will not be imported.', 'shopping-feed' ),
     159                        $status
     160                    )
     161                );
     162            }
     163
    130164            return true;
    131165        }
    132166
    133         return false === $this->is_fulfilled_by_marketplace( $sf_order );
     167        // Only imports orders fulfilled by channel if the flag is true.
     168        if ( ! $import_orders_fufilled_by_channel ) {
     169            return new \WP_Error(
     170                'shoppingfeed_order_import_skip_fulfilledby_marketplace_orders',
     171                __( 'Order if fulfilled by channel and will not be imported.', 'shopping-feed' )
     172            );
     173        }
     174
     175        return true;
    134176    }
    135177}
  • shopping-feed/trunk/vendor/autoload.php

    r3032069 r3046841  
    55require_once __DIR__ . '/composer/autoload_real.php';
    66
    7 return ComposerAutoloaderInitc2cdf4a183c6afa546d559f3114241e2::getLoader();
     7return ComposerAutoloaderInit843d602e5ba88bb852407d6ae830daa3::getLoader();
  • shopping-feed/trunk/vendor/composer/autoload_real.php

    r3032069 r3046841  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInitc2cdf4a183c6afa546d559f3114241e2
     5class ComposerAutoloaderInit843d602e5ba88bb852407d6ae830daa3
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInitc2cdf4a183c6afa546d559f3114241e2', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit843d602e5ba88bb852407d6ae830daa3', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
    29         spl_autoload_unregister(array('ComposerAutoloaderInitc2cdf4a183c6afa546d559f3114241e2', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit843d602e5ba88bb852407d6ae830daa3', 'loadClassLoader'));
    3030
    3131        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
     
    3333            require __DIR__ . '/autoload_static.php';
    3434
    35             call_user_func(\Composer\Autoload\ComposerStaticInitc2cdf4a183c6afa546d559f3114241e2::getInitializer($loader));
     35            call_user_func(\Composer\Autoload\ComposerStaticInit843d602e5ba88bb852407d6ae830daa3::getInitializer($loader));
    3636        } else {
    3737            $map = require __DIR__ . '/autoload_namespaces.php';
     
    5454
    5555        if ($useStaticLoader) {
    56             $includeFiles = Composer\Autoload\ComposerStaticInitc2cdf4a183c6afa546d559f3114241e2::$files;
     56            $includeFiles = Composer\Autoload\ComposerStaticInit843d602e5ba88bb852407d6ae830daa3::$files;
    5757        } else {
    5858            $includeFiles = require __DIR__ . '/autoload_files.php';
    5959        }
    6060        foreach ($includeFiles as $fileIdentifier => $file) {
    61             composerRequirec2cdf4a183c6afa546d559f3114241e2($fileIdentifier, $file);
     61            composerRequire843d602e5ba88bb852407d6ae830daa3($fileIdentifier, $file);
    6262        }
    6363
     
    7171 * @return void
    7272 */
    73 function composerRequirec2cdf4a183c6afa546d559f3114241e2($fileIdentifier, $file)
     73function composerRequire843d602e5ba88bb852407d6ae830daa3($fileIdentifier, $file)
    7474{
    7575    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
  • shopping-feed/trunk/vendor/composer/autoload_static.php

    r3032069 r3046841  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInitc2cdf4a183c6afa546d559f3114241e2
     7class ComposerStaticInit843d602e5ba88bb852407d6ae830daa3
    88{
    99    public static $files = array (
     
    367367    {
    368368        return \Closure::bind(function () use ($loader) {
    369             $loader->prefixLengthsPsr4 = ComposerStaticInitc2cdf4a183c6afa546d559f3114241e2::$prefixLengthsPsr4;
    370             $loader->prefixDirsPsr4 = ComposerStaticInitc2cdf4a183c6afa546d559f3114241e2::$prefixDirsPsr4;
    371             $loader->classMap = ComposerStaticInitc2cdf4a183c6afa546d559f3114241e2::$classMap;
     369            $loader->prefixLengthsPsr4 = ComposerStaticInit843d602e5ba88bb852407d6ae830daa3::$prefixLengthsPsr4;
     370            $loader->prefixDirsPsr4 = ComposerStaticInit843d602e5ba88bb852407d6ae830daa3::$prefixDirsPsr4;
     371            $loader->classMap = ComposerStaticInit843d602e5ba88bb852407d6ae830daa3::$classMap;
    372372
    373373        }, null, ClassLoader::class);
  • shopping-feed/trunk/vendor/composer/installed.php

    r3032069 r3046841  
    66        'install_path' => __DIR__ . '/../../',
    77        'aliases' => array(),
    8         'reference' => '9c6a94ac05210aeae8eb3b694d0b7ba05fc72fbb',
     8        'reference' => 'fdaa5f2e9131eeaa2fa2912dc9f8e9d489733690',
    99        'name' => 'shoppingfeed/shoppingfeed-for-woocommerce',
    1010        'dev' => false,
     
    3535            'install_path' => __DIR__ . '/../../',
    3636            'aliases' => array(),
    37             'reference' => '9c6a94ac05210aeae8eb3b694d0b7ba05fc72fbb',
     37            'reference' => 'fdaa5f2e9131eeaa2fa2912dc9f8e9d489733690',
    3838            'dev_requirement' => false,
    3939        ),
Note: See TracChangeset for help on using the changeset viewer.