Skip to content
37 changes: 26 additions & 11 deletions class-wc-facebookcommerce.php
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ class WC_Facebookcommerce extends WooCommerce\Facebook\Framework\Plugin {
private $sync_background_handler;

/** @var WooCommerce\Facebook\ProductSets\Sync product sets sync handler */
private $legacy_product_sets_sync_handler;

/** @var WooCommerce\Facebook\ProductSets\ProductSetSync product sets sync handler */
private $product_sets_sync_handler;

/** @var WooCommerce\Facebook\Handlers\Connection connection handler */
Expand Down Expand Up @@ -199,17 +202,18 @@ public function init() {

$this->heartbeat = new Heartbeat( WC()->queue() );
$this->heartbeat->init();
$this->feed_manager = new WooCommerce\Facebook\Feed\FeedManager();
$this->checkout = new WooCommerce\Facebook\Checkout();
$this->product_feed = new WooCommerce\Facebook\Products\Feed();
$this->products_stock_handler = new WooCommerce\Facebook\Products\Stock();
$this->products_sync_handler = new WooCommerce\Facebook\Products\Sync();
$this->sync_background_handler = new WooCommerce\Facebook\Products\Sync\Background();
$this->configuration_detection = new WooCommerce\Facebook\Feed\FeedConfigurationDetection();
$this->product_sets_sync_handler = new WooCommerce\Facebook\ProductSets\Sync();
$this->commerce_handler = new WooCommerce\Facebook\Commerce();
$this->fb_categories = new WooCommerce\Facebook\Products\FBCategories();
$this->external_version_update = new WooCommerce\Facebook\ExternalVersionUpdate\Update();
$this->feed_manager = new WooCommerce\Facebook\Feed\FeedManager();
$this->checkout = new WooCommerce\Facebook\Checkout();
$this->product_feed = new WooCommerce\Facebook\Products\Feed();
$this->products_stock_handler = new WooCommerce\Facebook\Products\Stock();
$this->products_sync_handler = new WooCommerce\Facebook\Products\Sync();
$this->sync_background_handler = new WooCommerce\Facebook\Products\Sync\Background();
$this->configuration_detection = new WooCommerce\Facebook\Feed\FeedConfigurationDetection();
$this->legacy_product_sets_sync_handler = new WooCommerce\Facebook\ProductSets\Sync();
$this->product_sets_sync_handler = new WooCommerce\Facebook\ProductSets\ProductSetSync();
$this->commerce_handler = new WooCommerce\Facebook\Commerce();
$this->fb_categories = new WooCommerce\Facebook\Products\FBCategories();
$this->external_version_update = new WooCommerce\Facebook\ExternalVersionUpdate\Update();

if ( wp_doing_ajax() ) {
$this->ajax = new WooCommerce\Facebook\AJAX();
Expand Down Expand Up @@ -617,6 +621,17 @@ public function get_products_sync_handler() {
return $this->products_sync_handler;
}

/**
* Gets the products sync handler.
*
* @since 3.4.9
*
* @return WooCommerce\Facebook\ProductSets\ProductSetSync
*/
public function get_product_sets_sync_handler() {
return $this->product_sets_sync_handler;
}


/**
* Gets the products sync background handler.
Expand Down
13 changes: 13 additions & 0 deletions includes/API.php
Original file line number Diff line number Diff line change
Expand Up @@ -516,6 +516,19 @@ public function delete_product_set_item( string $product_set_id, bool $allow_liv
return $this->perform_request( $request );
}

/**
* @param string $product_catalog_id
* @param array $data
* @return API\Response|API\ProductCatalog\ProductSets\Read\Response
* @throws ApiException
* @throws API\Exceptions\Request_Limit_Reached
*/
public function read_product_set_item( string $product_catalog_id, string $retailer_id ): API\ProductCatalog\ProductSets\Read\Response {
$request = new API\ProductCatalog\ProductSets\Read\Request( $product_catalog_id, $retailer_id );
$this->set_response_handler( API\ProductCatalog\ProductSets\Read\Response::class );
return $this->perform_request( $request );
}

/**
* @param string $product_catalog_id
* @return API\Response|API\ProductCatalog\ProductFeeds\ReadAll\Response
Expand Down
28 changes: 28 additions & 0 deletions includes/API/ProductCatalog/ProductSets/Read/Request.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

declare(strict_types=1);

namespace WooCommerce\Facebook\API\ProductCatalog\ProductSets\Read;

use WooCommerce\Facebook\API\Request as ApiRequest;

defined( 'ABSPATH' ) || exit;

/**
* Request object for Product Catalog > Product Sets > Get Graph Api.
*
* @link https://developers.facebook.com/docs/marketing-api/reference/product-catalog/product_sets/
*/
class Request extends ApiRequest {

/**
* @param string $product_catalog_id Facebook Product Catalog ID.
* @param string $retailer_id Facebook Product Set Retailer ID.
*/
public function __construct( string $product_catalog_id, string $retailer_id ) {
parent::__construct( "/{$product_catalog_id}/product_sets", 'GET' );
parent::set_params(
array( 'retailer_id' => $retailer_id )
);
}
}
29 changes: 29 additions & 0 deletions includes/API/ProductCatalog/ProductSets/Read/Response.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php
declare( strict_types=1 );

namespace WooCommerce\Facebook\API\ProductCatalog\ProductSets\Read;

use WooCommerce\Facebook\API\Response as ApiResponse;

defined( 'ABSPATH' ) || exit;

/**
* Response object for Product Catalog > Product Groups > Get Graph Api.
*
* @link https://developers.facebook.com/docs/marketing-api/reference/product-catalog/product_sets/
* @property-read string id Facebook Product Set ID.
*
* @since 3.4.9
*/
class Response extends ApiResponse {

/**
* Returns the fb product set ID.
*
* @return ?string
* @since 3.4.9
*/
public function get_product_set_id(): ?string {
return $this->data[0]['id'] ?? null;
}
}
1 change: 1 addition & 0 deletions includes/Handlers/Connection.php
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,7 @@ public function handle_connect() {
else {
facebook_for_woocommerce()->log( 'Initial full product sync disabled by filter hook `facebook_for_woocommerce_allow_full_batch_api_sync`', 'facebook_for_woocommerce_connect' );
}
facebook_for_woocommerce()->get_product_sets_sync_handler()->sync_all_product_sets();
update_option( 'wc_facebook_has_connected_fbe_2', 'yes' );
update_option( 'wc_facebook_has_authorized_pages_read_engagement', 'yes' );
// redirect to the Commerce onboarding if directed to do so
Expand Down
12 changes: 11 additions & 1 deletion includes/Lifecycle.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ public function __construct( Framework\Plugin $plugin ) {
'2.0.4',
'2.4.0',
'2.5.0',
'3.2.0'
'3.2.0',
'3.4.9'
);
}

Expand Down Expand Up @@ -336,4 +337,13 @@ protected function upgrade_to_3_2_0() {
delete_option( self::SETTING_MESSENGER_COLOR_HEX );
}

/**
* Trigger sync of all WooCommerce categories
*
* @since 3.4.9
*/
protected function upgrade_to_3_4_9() {
facebook_for_woocommerce()->get_product_sets_sync_handler()->sync_all_product_sets();
}

}
Loading