Facebook for WooCommerce - Version 2.6.20

Version Description

  • 2022-08-09 =
  • Fix - Ensure product is deleted from FB when moved to trash.
  • Fix - Price not updating when the sale price is removed.
Download this release

Release Info

Developer automattic
Plugin Icon Facebook for WooCommerce
Version 2.6.20
Comparing to
See all releases

Code changes from version 2.6.19 to 2.6.20

changelog.txt CHANGED
@@ -1,5 +1,9 @@
1
  *** Facebook for WooCommerce Changelog ***
2
 
 
 
 
 
3
  = 2.6.19 - 2022-07-27 =
4
  * Add - `wc_facebook_string_apply_shortcodes` filter to check whether to apply shortcodes on a string before syncing.
5
  * Tweak - Use the Heartbeat system to refresh the local business configuration data with the latest from Facebook.
1
  *** Facebook for WooCommerce Changelog ***
2
 
3
+ 2022-08-09 - version 2.6.20
4
+ * Fix - Ensure product is deleted from FB when moved to trash.
5
+ * Fix - Price not updating when the sale price is removed.
6
+
7
  = 2.6.19 - 2022-07-27 =
8
  * Add - `wc_facebook_string_apply_shortcodes` filter to check whether to apply shortcodes on a string before syncing.
9
  * Tweak - Use the Heartbeat system to refresh the local business configuration data with the latest from Facebook.
facebook-commerce.php CHANGED
@@ -360,6 +360,9 @@ class WC_Facebookcommerce_Integration extends WC_Integration {
360
 
361
  add_action( 'before_delete_post', array( $this, 'on_product_delete' ) );
362
 
 
 
 
363
  add_action( 'add_meta_boxes', 'SkyVerge\WooCommerce\Facebook\Admin\Product_Sync_Meta_Box::register', 10, 1 );
364
 
365
  add_action(
@@ -420,6 +423,8 @@ class WC_Facebookcommerce_Integration extends WC_Integration {
420
  3
421
  );
422
 
 
 
423
  // Product Set hooks.
424
  add_action( 'fb_wc_product_set_sync', array( $this, 'create_or_update_product_set_item' ), 99, 2 );
425
  add_action( 'fb_wc_product_set_delete', array( $this, 'delete_product_set_item' ), 99 );
@@ -1001,12 +1006,14 @@ class WC_Facebookcommerce_Integration extends WC_Integration {
1001
  }
1002
 
1003
  /**
1004
- * bail if not enabled for sync, except if explicitly deleting from the metabox
 
 
1005
  *
1006
  * @see ajax_delete_fb_product()
1007
  */
1008
  if ( ( ! wp_doing_ajax() || ! isset( $_POST['action'] ) || 'ajax_delete_fb_product' !== $_POST['action'] )
1009
- && ! Products::published_product_should_be_synced( $product ) ) {
1010
 
1011
  return;
1012
  }
@@ -1062,6 +1069,7 @@ class WC_Facebookcommerce_Integration extends WC_Integration {
1062
  // clear out both item and group IDs
1063
  delete_post_meta( $product_id, self::FB_PRODUCT_ITEM_ID );
1064
  delete_post_meta( $product_id, self::FB_PRODUCT_GROUP_ID );
 
1065
  }
1066
 
1067
 
@@ -1084,8 +1092,6 @@ class WC_Facebookcommerce_Integration extends WC_Integration {
1084
  return;
1085
  }
1086
 
1087
- $visibility = $new_status === 'publish' ? self::FB_SHOP_PRODUCT_VISIBLE : self::FB_SHOP_PRODUCT_HIDDEN;
1088
-
1089
  $product = wc_get_product( $post->ID );
1090
 
1091
  // bail if we couldn't retrieve a valid product object or the product isn't enabled for sync
@@ -1094,17 +1100,50 @@ class WC_Facebookcommerce_Integration extends WC_Integration {
1094
  // variations before it gets called with the variable product. As a result, Products::product_should_be_synced()
1095
  // always returns false for the variable product (since all children are in the trash at that point).
1096
  // This causes update_fb_visibility() to be called on simple products and product variations only.
1097
- if ( ! $product instanceof \WC_Product || ! Products::published_product_should_be_synced( $product ) ) {
 
 
 
 
 
 
1098
  return;
1099
  }
1100
 
 
 
1101
  if ( $visibility === self::FB_SHOP_PRODUCT_VISIBLE ) {
1102
  // - new status is 'publish' regardless of old status, sync to Facebook
1103
  $this->on_product_publish( $product->get_id() );
1104
  } else {
1105
  $this->update_fb_visibility( $product, $visibility );
1106
  }
 
1107
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1108
  }
1109
 
1110
 
360
 
361
  add_action( 'before_delete_post', array( $this, 'on_product_delete' ) );
362
 
363
+ // Ensure product is deleted from FB when moved to trash.
364
+ add_action( 'wp_trash_post', array( $this, 'on_product_delete' ) );
365
+
366
  add_action( 'add_meta_boxes', 'SkyVerge\WooCommerce\Facebook\Admin\Product_Sync_Meta_Box::register', 10, 1 );
367
 
368
  add_action(
423
  3
424
  );
425
 
426
+ add_action( 'untrashed_post', array( $this, 'fb_restore_untrashed_variable_product' ) );
427
+
428
  // Product Set hooks.
429
  add_action( 'fb_wc_product_set_sync', array( $this, 'create_or_update_product_set_item' ), 99, 2 );
430
  add_action( 'fb_wc_product_set_delete', array( $this, 'delete_product_set_item' ), 99 );
1006
  }
1007
 
1008
  /**
1009
+ * Bail if not enabled for sync, except if explicitly deleting from the metabox or when deleting the
1010
+ * parent product ( Products::published_product_should_be_synced( $product ) will fail for the parent product
1011
+ * when deleting a variable product. This causes the fb_group_id to remain on the DB. )
1012
  *
1013
  * @see ajax_delete_fb_product()
1014
  */
1015
  if ( ( ! wp_doing_ajax() || ! isset( $_POST['action'] ) || 'ajax_delete_fb_product' !== $_POST['action'] )
1016
+ && ! Products::published_product_should_be_synced( $product ) && ! $product->is_type( 'variable' ) ) {
1017
 
1018
  return;
1019
  }
1069
  // clear out both item and group IDs
1070
  delete_post_meta( $product_id, self::FB_PRODUCT_ITEM_ID );
1071
  delete_post_meta( $product_id, self::FB_PRODUCT_GROUP_ID );
1072
+
1073
  }
1074
 
1075
 
1092
  return;
1093
  }
1094
 
 
 
1095
  $product = wc_get_product( $post->ID );
1096
 
1097
  // bail if we couldn't retrieve a valid product object or the product isn't enabled for sync
1100
  // variations before it gets called with the variable product. As a result, Products::product_should_be_synced()
1101
  // always returns false for the variable product (since all children are in the trash at that point).
1102
  // This causes update_fb_visibility() to be called on simple products and product variations only.
1103
+ if ( ! $product instanceof \WC_Product || ( ! Products::published_product_should_be_synced( $product ) ) ) {
1104
+ return;
1105
+ }
1106
+
1107
+ // Exclude variants. Product variables visibility is handled separately.
1108
+ // @See fb_restore_untrashed_variable_product.
1109
+ if ( $product->is_type( 'variant' ) ) {
1110
  return;
1111
  }
1112
 
1113
+ $visibility = $product->is_visible() ? self::FB_SHOP_PRODUCT_VISIBLE : self::FB_SHOP_PRODUCT_HIDDEN;
1114
+
1115
  if ( $visibility === self::FB_SHOP_PRODUCT_VISIBLE ) {
1116
  // - new status is 'publish' regardless of old status, sync to Facebook
1117
  $this->on_product_publish( $product->get_id() );
1118
  } else {
1119
  $this->update_fb_visibility( $product, $visibility );
1120
  }
1121
+ }
1122
 
1123
+ /**
1124
+ * Re-publish restored variable product.
1125
+ *
1126
+ * @internal
1127
+ *
1128
+ * @param int $post_id
1129
+ */
1130
+ public function fb_restore_untrashed_variable_product ( $post_id ) {
1131
+ $product = wc_get_product( $post_id );
1132
+
1133
+ if ( ! $product instanceof \WC_Product ) {
1134
+ return;
1135
+ }
1136
+
1137
+ if ( ! $product->is_type( 'variable' ) ) {
1138
+ return;
1139
+ }
1140
+
1141
+ $visibility = $product->is_visible() ? self::FB_SHOP_PRODUCT_VISIBLE : self::FB_SHOP_PRODUCT_HIDDEN;
1142
+
1143
+ if ( $visibility === self::FB_SHOP_PRODUCT_VISIBLE ) {
1144
+ // - new status is 'publish' regardless of old status, sync to Facebook
1145
+ $this->on_product_publish( $product->get_id() );
1146
+ }
1147
  }
1148
 
1149
 
facebook-for-woocommerce.php CHANGED
@@ -11,7 +11,7 @@
11
  * Description: Grow your business on Facebook! Use this official plugin to help sell more of your products using Facebook. After completing the setup, you'll be ready to create ads that promote your products and you can also create a shop section on your Page where customers can browse your products on Facebook.
12
  * Author: Facebook
13
  * Author URI: https://www.facebook.com/
14
- * Version: 2.6.19
15
  * Text Domain: facebook-for-woocommerce
16
  * Tested up to: 6.0
17
  * WC requires at least: 3.5.0
@@ -33,7 +33,7 @@ class WC_Facebook_Loader {
33
  /**
34
  * @var string the plugin version. This must be in the main plugin file to be automatically bumped by Woorelease.
35
  */
36
- const PLUGIN_VERSION = '2.6.19'; // WRCS: DEFINED_VERSION.
37
 
38
  // Minimum PHP version required by this plugin.
39
  const MINIMUM_PHP_VERSION = '7.0.0';
11
  * Description: Grow your business on Facebook! Use this official plugin to help sell more of your products using Facebook. After completing the setup, you'll be ready to create ads that promote your products and you can also create a shop section on your Page where customers can browse your products on Facebook.
12
  * Author: Facebook
13
  * Author URI: https://www.facebook.com/
14
+ * Version: 2.6.20
15
  * Text Domain: facebook-for-woocommerce
16
  * Tested up to: 6.0
17
  * WC requires at least: 3.5.0
33
  /**
34
  * @var string the plugin version. This must be in the main plugin file to be automatically bumped by Woorelease.
35
  */
36
+ const PLUGIN_VERSION = '2.6.20'; // WRCS: DEFINED_VERSION.
37
 
38
  // Minimum PHP version required by this plugin.
39
  const MINIMUM_PHP_VERSION = '7.0.0';
i18n/languages/facebook-for-woocommerce.pot CHANGED
@@ -2,10 +2,10 @@
2
  # This file is distributed under the same license as the Facebook for WooCommerce package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Facebook for WooCommerce 2.6.19\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://woocommerce.com/my-account/marketplace-ticket-form/\n"
8
- "POT-Creation-Date: 2022-07-27 18:34:56+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
@@ -111,45 +111,45 @@ msgstr ""
111
  msgid "Facebook Commerce and Dynamic Ads (Pixel) Extension"
112
  msgstr ""
113
 
114
- #: facebook-commerce.php:1433
115
  msgid "Nothing to update for product group for %1$s"
116
  msgstr ""
117
 
118
- #: facebook-commerce.php:1846
119
  #. translators: Placeholders %1$s - original error message from Facebook API
120
  msgid "There was an issue connecting to the Facebook API: %1$s"
121
  msgstr ""
122
 
123
- #: facebook-commerce.php:2171
124
  msgid "Your connection has expired."
125
  msgstr ""
126
 
127
- #: facebook-commerce.php:2171
128
  msgid ""
129
  "Please click Manage connection > Advanced Options > Update Token to refresh "
130
  "your connection to Facebook."
131
  msgstr ""
132
 
133
- #: facebook-commerce.php:2178
134
  #. translators: Placeholders %s - error message
135
  msgid "There was an error trying to sync the products to Facebook. %s"
136
  msgstr ""
137
 
138
- #: facebook-commerce.php:2201
139
  msgid "Product sync is disabled."
140
  msgstr ""
141
 
142
- #: facebook-commerce.php:2208
143
  msgid "The plugin is not configured or the Catalog ID is missing."
144
  msgstr ""
145
 
146
- #: facebook-commerce.php:2231
147
  msgid ""
148
  "A product sync is in progress. Please wait until the sync finishes before "
149
  "starting a new one."
150
  msgstr ""
151
 
152
- #: facebook-commerce.php:2243
153
  msgid ""
154
  "We've detected that your Facebook Product Catalog is no longer valid. This "
155
  "may happen if it was deleted, but could also be a temporary error. If the "
@@ -157,29 +157,29 @@ msgid ""
157
  "and setup the plugin again."
158
  msgstr ""
159
 
160
- #: facebook-commerce.php:2772
161
  msgid "Hi! We're here to answer any questions you may have."
162
  msgstr ""
163
 
164
- #: facebook-commerce.php:3162
165
  msgid "Facebook for WooCommerce error:"
166
  msgstr ""
167
 
168
- #: facebook-commerce.php:3244
169
  msgid ""
170
  "There was an error trying to retrieve information about the Facebook page: "
171
  "%s"
172
  msgstr ""
173
 
174
- #: facebook-commerce.php:3295
175
  msgid "Get started with Messenger Customer Chat"
176
  msgstr ""
177
 
178
- #: facebook-commerce.php:3296
179
  msgid "Get started with Instagram Shopping"
180
  msgstr ""
181
 
182
- #: facebook-commerce.php:3531
183
  #. translators: Placeholders %1$s - original error message from Facebook API
184
  msgid "There was an issue connecting to the Facebook API: %s"
185
  msgstr ""
2
  # This file is distributed under the same license as the Facebook for WooCommerce package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Facebook for WooCommerce 2.6.20\n"
6
  "Report-Msgid-Bugs-To: "
7
  "https://woocommerce.com/my-account/marketplace-ticket-form/\n"
8
+ "POT-Creation-Date: 2022-08-09 07:32:02+00:00\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=utf-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
111
  msgid "Facebook Commerce and Dynamic Ads (Pixel) Extension"
112
  msgstr ""
113
 
114
+ #: facebook-commerce.php:1472
115
  msgid "Nothing to update for product group for %1$s"
116
  msgstr ""
117
 
118
+ #: facebook-commerce.php:1885
119
  #. translators: Placeholders %1$s - original error message from Facebook API
120
  msgid "There was an issue connecting to the Facebook API: %1$s"
121
  msgstr ""
122
 
123
+ #: facebook-commerce.php:2210
124
  msgid "Your connection has expired."
125
  msgstr ""
126
 
127
+ #: facebook-commerce.php:2210
128
  msgid ""
129
  "Please click Manage connection > Advanced Options > Update Token to refresh "
130
  "your connection to Facebook."
131
  msgstr ""
132
 
133
+ #: facebook-commerce.php:2217
134
  #. translators: Placeholders %s - error message
135
  msgid "There was an error trying to sync the products to Facebook. %s"
136
  msgstr ""
137
 
138
+ #: facebook-commerce.php:2240
139
  msgid "Product sync is disabled."
140
  msgstr ""
141
 
142
+ #: facebook-commerce.php:2247
143
  msgid "The plugin is not configured or the Catalog ID is missing."
144
  msgstr ""
145
 
146
+ #: facebook-commerce.php:2270
147
  msgid ""
148
  "A product sync is in progress. Please wait until the sync finishes before "
149
  "starting a new one."
150
  msgstr ""
151
 
152
+ #: facebook-commerce.php:2282
153
  msgid ""
154
  "We've detected that your Facebook Product Catalog is no longer valid. This "
155
  "may happen if it was deleted, but could also be a temporary error. If the "
157
  "and setup the plugin again."
158
  msgstr ""
159
 
160
+ #: facebook-commerce.php:2811
161
  msgid "Hi! We're here to answer any questions you may have."
162
  msgstr ""
163
 
164
+ #: facebook-commerce.php:3201
165
  msgid "Facebook for WooCommerce error:"
166
  msgstr ""
167
 
168
+ #: facebook-commerce.php:3283
169
  msgid ""
170
  "There was an error trying to retrieve information about the Facebook page: "
171
  "%s"
172
  msgstr ""
173
 
174
+ #: facebook-commerce.php:3334
175
  msgid "Get started with Messenger Customer Chat"
176
  msgstr ""
177
 
178
+ #: facebook-commerce.php:3335
179
  msgid "Get started with Instagram Shopping"
180
  msgstr ""
181
 
182
+ #: facebook-commerce.php:3570
183
  #. translators: Placeholders %1$s - original error message from Facebook API
184
  msgid "There was an issue connecting to the Facebook API: %s"
185
  msgstr ""
includes/fbproduct.php CHANGED
@@ -363,33 +363,33 @@ if ( ! class_exists( 'WC_Facebook_Product' ) ) :
363
  public function add_sale_price( $product_data, $for_items_batch = false ) {
364
 
365
  $sale_price = $this->woo_product->get_sale_price();
366
-
367
- // check if sale exist
368
- if ( ! is_numeric( $sale_price ) ) {
369
- return $product_data;
370
- }
371
-
372
- $sale_price =
373
- intval( round( $this->get_price_plus_tax( $sale_price ) * 100 ) );
374
 
375
  $sale_start =
376
- ( $date = $this->woo_product->get_date_on_sale_from() )
377
- ? date_i18n( WC_DateTime::ATOM, $date->getOffsetTimestamp() )
378
- : self::MIN_DATE_1 . self::MIN_TIME;
379
 
380
  $sale_end =
381
- ( $date = $this->woo_product->get_date_on_sale_to() )
382
- ? date_i18n( WC_DateTime::ATOM, $date->getOffsetTimestamp() )
383
- : self::MAX_DATE . self::MAX_TIME;
 
 
 
 
 
 
 
384
 
385
  // check if sale is expired and sale time range is valid
386
  if ( $for_items_batch ) {
387
- $product_data['sale_price_effective_date'] = $sale_start . '/' . $sale_end;
388
- $product_data['sale_price'] = self::format_price_for_fb_items_batch( $sale_price );
389
  } else {
390
  $product_data['sale_price_start_date'] = $sale_start;
391
  $product_data['sale_price_end_date'] = $sale_end;
392
- $product_data['sale_price'] = $sale_price;
393
  }
394
 
395
  return $product_data;
363
  public function add_sale_price( $product_data, $for_items_batch = false ) {
364
 
365
  $sale_price = $this->woo_product->get_sale_price();
366
+ $sale_price_effective_date = '';
 
 
 
 
 
 
 
367
 
368
  $sale_start =
369
+ ( $date = $this->woo_product->get_date_on_sale_from() )
370
+ ? date_i18n( WC_DateTime::ATOM, $date->getOffsetTimestamp() )
371
+ : self::MIN_DATE_1 . self::MIN_TIME;
372
 
373
  $sale_end =
374
+ ( $date = $this->woo_product->get_date_on_sale_to() )
375
+ ? date_i18n( WC_DateTime::ATOM, $date->getOffsetTimestamp() )
376
+ : self::MAX_DATE . self::MAX_TIME;
377
+
378
+ // check if sale exist
379
+ if ( is_numeric( $sale_price ) && $sale_price > 0 ) {
380
+ $sale_price_effective_date = $sale_start . '/' . $sale_end;
381
+ $sale_price =
382
+ intval( round( $this->get_price_plus_tax( $sale_price ) * 100 ) );
383
+ }
384
 
385
  // check if sale is expired and sale time range is valid
386
  if ( $for_items_batch ) {
387
+ $product_data['sale_price_effective_date'] = $sale_price_effective_date;
388
+ $product_data['sale_price'] = is_numeric( $sale_price ) ? self::format_price_for_fb_items_batch( $sale_price ) : "";
389
  } else {
390
  $product_data['sale_price_start_date'] = $sale_start;
391
  $product_data['sale_price_end_date'] = $sale_end;
392
+ $product_data['sale_price'] = is_numeric( $sale_price ) ? $sale_price : 0;
393
  }
394
 
395
  return $product_data;
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: facebook, automattic, woothemes
3
  Tags: facebook, shop, catalog, advertise, pixel, product
4
  Requires at least: 4.4
5
  Tested up to: 5.9
6
- Stable tag: 2.6.19
7
  Requires PHP: 5.6 or greater
8
  MySQL: 5.6 or greater
9
  License: GPLv2 or later
@@ -39,6 +39,10 @@ When opening a bug on GitHub, please give us as many details as possible.
39
 
40
  == Changelog ==
41
 
 
 
 
 
42
  = 2.6.19 - 2022-07-27 =
43
  * Add - `wc_facebook_string_apply_shortcodes` filter to check whether to apply shortcodes on a string before syncing.
44
  * Tweak - Use the Heartbeat system to refresh the local business configuration data with the latest from Facebook.
3
  Tags: facebook, shop, catalog, advertise, pixel, product
4
  Requires at least: 4.4
5
  Tested up to: 5.9
6
+ Stable tag: 2.6.20
7
  Requires PHP: 5.6 or greater
8
  MySQL: 5.6 or greater
9
  License: GPLv2 or later
39
 
40
  == Changelog ==
41
 
42
+ = 2.6.20 - 2022-08-09 =
43
+ * Fix - Ensure product is deleted from FB when moved to trash.
44
+ * Fix - Price not updating when the sale price is removed.
45
+
46
  = 2.6.19 - 2022-07-27 =
47
  * Add - `wc_facebook_string_apply_shortcodes` filter to check whether to apply shortcodes on a string before syncing.
48
  * Tweak - Use the Heartbeat system to refresh the local business configuration data with the latest from Facebook.
vendor/autoload.php CHANGED
@@ -2,11 +2,6 @@
2
 
3
  // autoload.php @generated by Composer
4
 
5
- if (PHP_VERSION_ID < 50600) {
6
- echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
7
- exit(1);
8
- }
9
-
10
  require_once __DIR__ . '/composer/autoload_real.php';
11
 
12
- return ComposerAutoloaderInitb61cc2979e1430e0106218eb648efcfa::getLoader();
2
 
3
  // autoload.php @generated by Composer
4
 
 
 
 
 
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit1517540bf9067c79d56f0c7f9de23319::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -149,7 +149,7 @@ class ClassLoader
149
 
150
  /**
151
  * @return string[] Array of classname => path
152
- * @psalm-return array<string, string>
153
  */
154
  public function getClassMap()
155
  {
149
 
150
  /**
151
  * @return string[] Array of classname => path
152
+ * @psalm-var array<string, string>
153
  */
154
  public function getClassMap()
155
  {
vendor/composer/InstalledVersions.php CHANGED
@@ -21,26 +21,11 @@ use Composer\Semver\VersionParser;
21
  * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
  *
23
  * To require its presence, you can require `composer-runtime-api ^2.0`
24
- *
25
- * @final
26
  */
27
  class InstalledVersions
28
  {
29
- /**
30
- * @var mixed[]|null
31
- * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
32
- */
33
  private static $installed;
34
-
35
- /**
36
- * @var bool|null
37
- */
38
  private static $canGetVendors;
39
-
40
- /**
41
- * @var array[]
42
- * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
43
- */
44
  private static $installedByVendor = array();
45
 
46
  /**
@@ -243,7 +228,7 @@ class InstalledVersions
243
 
244
  /**
245
  * @return array
246
- * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
247
  */
248
  public static function getRootPackage()
249
  {
@@ -257,7 +242,7 @@ class InstalledVersions
257
  *
258
  * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
259
  * @return array[]
260
- * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
261
  */
262
  public static function getRawData()
263
  {
@@ -280,7 +265,7 @@ class InstalledVersions
280
  * Returns the raw data of all installed.php which are currently loaded for custom implementations
281
  *
282
  * @return array[]
283
- * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
284
  */
285
  public static function getAllRawData()
286
  {
@@ -303,7 +288,7 @@ class InstalledVersions
303
  * @param array[] $data A vendor/composer/installed.php data set
304
  * @return void
305
  *
306
- * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
307
  */
308
  public static function reload($data)
309
  {
@@ -313,7 +298,7 @@ class InstalledVersions
313
 
314
  /**
315
  * @return array[]
316
- * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
317
  */
318
  private static function getInstalled()
319
  {
21
  * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
22
  *
23
  * To require its presence, you can require `composer-runtime-api ^2.0`
 
 
24
  */
25
  class InstalledVersions
26
  {
 
 
 
 
27
  private static $installed;
 
 
 
 
28
  private static $canGetVendors;
 
 
 
 
 
29
  private static $installedByVendor = array();
30
 
31
  /**
228
 
229
  /**
230
  * @return array
231
+ * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
232
  */
233
  public static function getRootPackage()
234
  {
242
  *
243
  * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
244
  * @return array[]
245
+ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
246
  */
247
  public static function getRawData()
248
  {
265
  * Returns the raw data of all installed.php which are currently loaded for custom implementations
266
  *
267
  * @return array[]
268
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
269
  */
270
  public static function getAllRawData()
271
  {
288
  * @param array[] $data A vendor/composer/installed.php data set
289
  * @return void
290
  *
291
+ * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
292
  */
293
  public static function reload($data)
294
  {
298
 
299
  /**
300
  * @return array[]
301
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
302
  */
303
  private static function getInstalled()
304
  {
vendor/composer/autoload_classmap.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_classmap.php @generated by Composer
4
 
5
- $vendorDir = dirname(__DIR__);
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
2
 
3
  // autoload_classmap.php @generated by Composer
4
 
5
+ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
vendor/composer/autoload_namespaces.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_namespaces.php @generated by Composer
4
 
5
- $vendorDir = dirname(__DIR__);
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
2
 
3
  // autoload_namespaces.php @generated by Composer
4
 
5
+ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
vendor/composer/autoload_psr4.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_psr4.php @generated by Composer
4
 
5
- $vendorDir = dirname(__DIR__);
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
2
 
3
  // autoload_psr4.php @generated by Composer
4
 
5
+ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitb61cc2979e1430e0106218eb648efcfa
6
  {
7
  private static $loader;
8
 
@@ -24,12 +24,31 @@ class ComposerAutoloaderInitb61cc2979e1430e0106218eb648efcfa
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
- spl_autoload_register(array('ComposerAutoloaderInitb61cc2979e1430e0106218eb648efcfa', 'loadClassLoader'), true, true);
28
- self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
29
- spl_autoload_unregister(array('ComposerAutoloaderInitb61cc2979e1430e0106218eb648efcfa', 'loadClassLoader'));
30
-
31
- require __DIR__ . '/autoload_static.php';
32
- call_user_func(\Composer\Autoload\ComposerStaticInitb61cc2979e1430e0106218eb648efcfa::getInitializer($loader));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
  $loader->register(true);
35
 
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit1517540bf9067c79d56f0c7f9de23319
6
  {
7
  private static $loader;
8
 
24
 
25
  require __DIR__ . '/platform_check.php';
26
 
27
+ spl_autoload_register(array('ComposerAutoloaderInit1517540bf9067c79d56f0c7f9de23319', 'loadClassLoader'), true, true);
28
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
+ spl_autoload_unregister(array('ComposerAutoloaderInit1517540bf9067c79d56f0c7f9de23319', 'loadClassLoader'));
30
+
31
+ $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
+ if ($useStaticLoader) {
33
+ require __DIR__ . '/autoload_static.php';
34
+
35
+ call_user_func(\Composer\Autoload\ComposerStaticInit1517540bf9067c79d56f0c7f9de23319::getInitializer($loader));
36
+ } else {
37
+ $map = require __DIR__ . '/autoload_namespaces.php';
38
+ foreach ($map as $namespace => $path) {
39
+ $loader->set($namespace, $path);
40
+ }
41
+
42
+ $map = require __DIR__ . '/autoload_psr4.php';
43
+ foreach ($map as $namespace => $path) {
44
+ $loader->setPsr4($namespace, $path);
45
+ }
46
+
47
+ $classMap = require __DIR__ . '/autoload_classmap.php';
48
+ if ($classMap) {
49
+ $loader->addClassMap($classMap);
50
+ }
51
+ }
52
 
53
  $loader->register(true);
54
 
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInitb61cc2979e1430e0106218eb648efcfa
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'S' =>
@@ -43,9 +43,9 @@ class ComposerStaticInitb61cc2979e1430e0106218eb648efcfa
43
  public static function getInitializer(ClassLoader $loader)
44
  {
45
  return \Closure::bind(function () use ($loader) {
46
- $loader->prefixLengthsPsr4 = ComposerStaticInitb61cc2979e1430e0106218eb648efcfa::$prefixLengthsPsr4;
47
- $loader->prefixDirsPsr4 = ComposerStaticInitb61cc2979e1430e0106218eb648efcfa::$prefixDirsPsr4;
48
- $loader->classMap = ComposerStaticInitb61cc2979e1430e0106218eb648efcfa::$classMap;
49
 
50
  }, null, ClassLoader::class);
51
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit1517540bf9067c79d56f0c7f9de23319
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'S' =>
43
  public static function getInitializer(ClassLoader $loader)
44
  {
45
  return \Closure::bind(function () use ($loader) {
46
+ $loader->prefixLengthsPsr4 = ComposerStaticInit1517540bf9067c79d56f0c7f9de23319::$prefixLengthsPsr4;
47
+ $loader->prefixDirsPsr4 = ComposerStaticInit1517540bf9067c79d56f0c7f9de23319::$prefixDirsPsr4;
48
+ $loader->classMap = ComposerStaticInit1517540bf9067c79d56f0c7f9de23319::$classMap;
49
 
50
  }, null, ClassLoader::class);
51
  }
vendor/composer/installed.php CHANGED
@@ -1,31 +1,31 @@
1
  <?php return array(
2
  'root' => array(
3
- 'name' => 'facebookincubator/facebook-for-woocommerce',
4
- 'pretty_version' => 'dev-develop',
5
- 'version' => 'dev-develop',
6
- 'reference' => 'b80497ece7cedf3cef90665fbdbb4763cbcfa9f0',
7
  'type' => 'wordpress-plugin',
8
  'install_path' => __DIR__ . '/../../',
9
  'aliases' => array(),
 
 
10
  'dev' => false,
11
  ),
12
  'versions' => array(
13
  'composer/installers' => array(
14
  'pretty_version' => 'v1.12.0',
15
  'version' => '1.12.0.0',
16
- 'reference' => 'd20a64ed3c94748397ff5973488761b22f6d3f19',
17
  'type' => 'composer-plugin',
18
  'install_path' => __DIR__ . '/./installers',
19
  'aliases' => array(),
 
20
  'dev_requirement' => false,
21
  ),
22
  'facebookincubator/facebook-for-woocommerce' => array(
23
- 'pretty_version' => 'dev-develop',
24
- 'version' => 'dev-develop',
25
- 'reference' => 'b80497ece7cedf3cef90665fbdbb4763cbcfa9f0',
26
  'type' => 'wordpress-plugin',
27
  'install_path' => __DIR__ . '/../../',
28
  'aliases' => array(),
 
29
  'dev_requirement' => false,
30
  ),
31
  'roundcube/plugin-installer' => array(
@@ -43,19 +43,19 @@
43
  'skyverge/wc-plugin-framework' => array(
44
  'pretty_version' => '5.10.0',
45
  'version' => '5.10.0.0',
46
- 'reference' => 'e230d7c40286854e49c0cafeec3398cbf2427a64',
47
  'type' => 'library',
48
  'install_path' => __DIR__ . '/../skyverge/wc-plugin-framework',
49
  'aliases' => array(),
 
50
  'dev_requirement' => false,
51
  ),
52
  'woocommerce/action-scheduler-job-framework' => array(
53
  'pretty_version' => '2.0.0',
54
  'version' => '2.0.0.0',
55
- 'reference' => 'b0b21b9cc87e476ba7f8817050b39274ea7d6732',
56
  'type' => 'library',
57
  'install_path' => __DIR__ . '/../woocommerce/action-scheduler-job-framework',
58
  'aliases' => array(),
 
59
  'dev_requirement' => false,
60
  ),
61
  ),
1
  <?php return array(
2
  'root' => array(
3
+ 'pretty_version' => 'dev-release/2.6.20',
4
+ 'version' => 'dev-release/2.6.20',
 
 
5
  'type' => 'wordpress-plugin',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
+ 'reference' => 'e04ab485da38910010771c873a37ca939e2ed346',
9
+ 'name' => 'facebookincubator/facebook-for-woocommerce',
10
  'dev' => false,
11
  ),
12
  'versions' => array(
13
  'composer/installers' => array(
14
  'pretty_version' => 'v1.12.0',
15
  'version' => '1.12.0.0',
 
16
  'type' => 'composer-plugin',
17
  'install_path' => __DIR__ . '/./installers',
18
  'aliases' => array(),
19
+ 'reference' => 'd20a64ed3c94748397ff5973488761b22f6d3f19',
20
  'dev_requirement' => false,
21
  ),
22
  'facebookincubator/facebook-for-woocommerce' => array(
23
+ 'pretty_version' => 'dev-release/2.6.20',
24
+ 'version' => 'dev-release/2.6.20',
 
25
  'type' => 'wordpress-plugin',
26
  'install_path' => __DIR__ . '/../../',
27
  'aliases' => array(),
28
+ 'reference' => 'e04ab485da38910010771c873a37ca939e2ed346',
29
  'dev_requirement' => false,
30
  ),
31
  'roundcube/plugin-installer' => array(
43
  'skyverge/wc-plugin-framework' => array(
44
  'pretty_version' => '5.10.0',
45
  'version' => '5.10.0.0',
 
46
  'type' => 'library',
47
  'install_path' => __DIR__ . '/../skyverge/wc-plugin-framework',
48
  'aliases' => array(),
49
+ 'reference' => 'e230d7c40286854e49c0cafeec3398cbf2427a64',
50
  'dev_requirement' => false,
51
  ),
52
  'woocommerce/action-scheduler-job-framework' => array(
53
  'pretty_version' => '2.0.0',
54
  'version' => '2.0.0.0',
 
55
  'type' => 'library',
56
  'install_path' => __DIR__ . '/../woocommerce/action-scheduler-job-framework',
57
  'aliases' => array(),
58
+ 'reference' => 'b0b21b9cc87e476ba7f8817050b39274ea7d6732',
59
  'dev_requirement' => false,
60
  ),
61
  ),