Official Facebook Pixel - Version 2.2.0

Version Description

Download this release

Release Info

Developer Facebook
Plugin Icon Official Facebook Pixel
Version 2.2.0
Comparing to
See all releases

Code changes from version 2.1.0 to 2.2.0

Files changed (200) hide show
  1. changelog.txt +9 -3
  2. composer.json +1 -1
  3. composer.lock +195 -117
  4. core/FacebookPluginConfig.php +2 -2
  5. core/FacebookServerSideEvent.php +3 -2
  6. core/FacebookWordpressSettingsPage.php +4 -4
  7. core/ServerEventFactory.php +24 -0
  8. facebook-for-wordpress.php +1 -1
  9. integration/FacebookWordpressCalderaForm.php +8 -4
  10. integration/FacebookWordpressEasyDigitalDownloads.php +137 -31
  11. integration/FacebookWordpressFormidableForm.php +46 -10
  12. integration/FacebookWordpressGravityForms.php +53 -4
  13. integration/FacebookWordpressMailchimpForWp.php +29 -0
  14. integration/FacebookWordpressNinjaForms.php +61 -7
  15. integration/FacebookWordpressWPForms.php +55 -2
  16. integration/FacebookWordpressWooCommerce.php +23 -9
  17. languages/official-facebook-pixel-ar_AR.po +1 -1
  18. languages/official-facebook-pixel-cs_CZ.po +1 -1
  19. languages/official-facebook-pixel-da_DK.po +1 -1
  20. languages/official-facebook-pixel-de_DE.po +1 -1
  21. languages/official-facebook-pixel-en_GB.po +1 -1
  22. languages/official-facebook-pixel-es_ES.po +1 -1
  23. languages/official-facebook-pixel-es_LA.po +1 -1
  24. languages/official-facebook-pixel-fi_FI.po +1 -1
  25. languages/official-facebook-pixel-fr_CA.po +1 -1
  26. languages/official-facebook-pixel-fr_FR.po +1 -1
  27. languages/official-facebook-pixel-he_IL.po +1 -1
  28. languages/official-facebook-pixel-it_IT.po +1 -1
  29. languages/official-facebook-pixel-ja_JP.po +1 -1
  30. languages/official-facebook-pixel-ko_KR.po +1 -1
  31. languages/official-facebook-pixel-nb_NO.po +1 -1
  32. languages/official-facebook-pixel-nl_NL.po +1 -1
  33. languages/official-facebook-pixel-pl_PL.po +1 -1
  34. languages/official-facebook-pixel-pt_BR.po +1 -1
  35. languages/official-facebook-pixel-pt_PT.po +1 -1
  36. languages/official-facebook-pixel-ru_RU.po +1 -1
  37. languages/official-facebook-pixel-sv_SE.po +1 -1
  38. languages/official-facebook-pixel-th_TH.po +1 -1
  39. languages/official-facebook-pixel-tr_TR.po +1 -1
  40. languages/official-facebook-pixel-vi_VN.po +1 -1
  41. languages/official-facebook-pixel-zh_CN.po +1 -1
  42. languages/official-facebook-pixel-zh_TW.po +1 -1
  43. readme.txt +12 -6
  44. vendor/autoload.php +1 -1
  45. vendor/composer/autoload_real.php +4 -4
  46. vendor/composer/autoload_static.php +4 -4
  47. vendor/composer/installed.json +6 -6
  48. vendor/facebook/php-business-sdk/CHANGELOG.md +9 -1
  49. vendor/facebook/php-business-sdk/examples/AdAccountAdCreativesPost2CreateAdCreativeLinkAd.php +48 -0
  50. vendor/facebook/php-business-sdk/examples/AdAccountAdCreativesPost2CreateCarouselCallToActionAppInstall.php +48 -0
  51. vendor/facebook/php-business-sdk/examples/AdAccountAdCreativesPost2CreateLinkAdCallToActionAppInstall.php +48 -0
  52. vendor/facebook/php-business-sdk/examples/AdAccountAdCreativesPost2CreateLinkAdImageCrop.php +48 -0
  53. vendor/facebook/php-business-sdk/examples/AdAccountAdCreativesPost2CreateMAIDPA.php +49 -0
  54. vendor/facebook/php-business-sdk/examples/AdAccountAdCreativesPost2CreateVideoLeadAd.php +47 -0
  55. vendor/facebook/php-business-sdk/examples/AdAccountAdCreativesPost2CreateVideoPageLikeAd.php +48 -0
  56. vendor/facebook/php-business-sdk/examples/AdAccountAdCreativesPostCreateAdCreativeCustomizationCanvasDV.php +48 -0
  57. vendor/facebook/php-business-sdk/examples/AdAccountAdCreativesPostCreateAdCreativeCustomizationCanvasImage.php +48 -0
  58. vendor/facebook/php-business-sdk/examples/AdAccountAdCreativesPostCreateAdCreativeCustomizationCanvasVideo.php +48 -0
  59. vendor/facebook/php-business-sdk/examples/AdAccountCampaignsPostConversions.php +1 -1
  60. vendor/facebook/php-business-sdk/examples/AdAccountCampaignsPostEventResponses.php +1 -1
  61. vendor/facebook/php-business-sdk/examples/AdAccountCampaignsPostLeadGen.php +1 -1
  62. vendor/facebook/php-business-sdk/examples/AdAccountCampaignsPostLinkClicks.php +1 -1
  63. vendor/facebook/php-business-sdk/examples/AdAccountCampaignsPostLocalAwareness.php +1 -1
  64. vendor/facebook/php-business-sdk/examples/AdAccountCampaignsPostMAIA.php +1 -1
  65. vendor/facebook/php-business-sdk/examples/AdAccountCampaignsPostMAIDPA.php +1 -1
  66. vendor/facebook/php-business-sdk/examples/AdAccountCampaignsPostOfferClaims.php +1 -1
  67. vendor/facebook/php-business-sdk/examples/AdAccountCampaignsPostPageLikes.php +1 -1
  68. vendor/facebook/php-business-sdk/examples/AdAccountCampaignsPostPostEngagement.php +1 -1
  69. vendor/facebook/php-business-sdk/examples/AdAccountCampaignsPostStoreCampaign.php +1 -1
  70. vendor/facebook/php-business-sdk/examples/AdAccountCampaignsPostVideoViews.php +1 -1
  71. vendor/facebook/php-business-sdk/src/FacebookAds/ApiConfig.php +2 -2
  72. vendor/facebook/php-business-sdk/src/FacebookAds/Http/Exception/RequestException.php +4 -0
  73. vendor/facebook/php-business-sdk/src/FacebookAds/Http/SimpleRequest.php +74 -0
  74. vendor/facebook/php-business-sdk/src/FacebookAds/Object/AdAccount.php +6 -12
  75. vendor/facebook/php-business-sdk/src/FacebookAds/Object/AdCreative.php +0 -24
  76. vendor/facebook/php-business-sdk/src/FacebookAds/Object/{CustomAudiencePrefillState.php → AdCreativeAdDisclaimer.php} +4 -4
  77. vendor/facebook/php-business-sdk/src/FacebookAds/Object/AdPlacePageSet.php +0 -24
  78. vendor/facebook/php-business-sdk/src/FacebookAds/Object/AdReportRun.php +0 -48
  79. vendor/facebook/php-business-sdk/src/FacebookAds/Object/AdSet.php +4 -2
  80. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Album.php +49 -0
  81. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Application.php +0 -42
  82. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Business.php +71 -16
  83. vendor/facebook/php-business-sdk/src/FacebookAds/Object/{VideoGameShow.php → BusinessAgreement.php} +13 -12
  84. vendor/facebook/php-business-sdk/src/FacebookAds/Object/BusinessOwnedObjectOnBehalfOfRequest.php +0 -23
  85. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Campaign.php +5 -5
  86. vendor/facebook/php-business-sdk/src/FacebookAds/Object/{RequestHistory.php → CatalogItemAppLinks.php} +4 -6
  87. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Comment.php +23 -0
  88. vendor/facebook/php-business-sdk/src/FacebookAds/Object/CommerceMerchantSettings.php +332 -0
  89. vendor/facebook/php-business-sdk/src/FacebookAds/Object/CommerceMerchantSettingsSetupStatus.php +57 -0
  90. vendor/facebook/php-business-sdk/src/FacebookAds/Object/CommerceOrder.php +397 -0
  91. vendor/facebook/php-business-sdk/src/FacebookAds/Object/{BusinessPixelTOS.php → CommerceOrderTransactionDetail.php} +9 -16
  92. vendor/facebook/php-business-sdk/src/FacebookAds/Object/CommercePayout.php +57 -0
  93. vendor/facebook/php-business-sdk/src/FacebookAds/Object/CustomAudience.php +0 -23
  94. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/AdAccountActivityFields.php +3 -7
  95. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/AdAccountCreationRequestFields.php +0 -2
  96. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/AdAssetFeedSpecFields.php +2 -0
  97. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/AdCampaignActivityFields.php +2 -2
  98. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/{CustomAudiencePrefillStateFields.php → AdCreativeAdDisclaimerFields.php} +7 -7
  99. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/AdCreativeVideoDataFields.php +2 -0
  100. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/AdCustomizationRuleSpecFields.php +4 -0
  101. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/AdFields.php +0 -2
  102. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/AdSetFields.php +2 -0
  103. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/AdgroupActivityFields.php +4 -4
  104. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/AdgroupPlacementSpecificReviewFeedbackFields.php +2 -0
  105. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/AdsInsightsFields.php +10 -0
  106. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/AutomotiveModelFields.php +2 -0
  107. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/{BusinessPixelTOSFields.php → BusinessAgreementFields.php} +3 -3
  108. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/CampaignFields.php +2 -0
  109. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/{InstagramCommentFields.php → CatalogItemAppLinksFields.php} +17 -15
  110. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/CatalogItemAppealStatusFields.php +1 -1
  111. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/CommerceMerchantSettingsFields.php +87 -0
  112. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/{RequestHistoryFields.php → CommerceMerchantSettingsSetupStatusFields.php} +11 -15
  113. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/CommerceOrderFields.php +69 -0
  114. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/CommerceOrderTransactionDetailFields.php +63 -0
  115. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/{VideoGameShowFields.php → CommercePayoutFields.php} +11 -11
  116. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/DestinationFields.php +2 -0
  117. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/FlightFields.php +2 -0
  118. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/HomeListingFields.php +2 -0
  119. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/HotelFields.php +2 -2
  120. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/HotelRoomFields.php +2 -0
  121. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/IGUserFields.php +4 -0
  122. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/MessengerProfileFields.php +0 -2
  123. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/OpenGraphObjectFields.php +0 -87
  124. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/PageFields.php +2 -0
  125. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/PagePostFields.php +18 -0
  126. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/PostFields.php +18 -0
  127. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/ProductCatalogFields.php +4 -2
  128. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/ProductFeedUploadDiagnosticsReportFields.php +49 -0
  129. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/ProductItemFields.php +2 -0
  130. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/VehicleFields.php +2 -2
  131. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Fields/VehicleOfferFields.php +2 -0
  132. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Group.php +0 -54
  133. vendor/facebook/php-business-sdk/src/FacebookAds/Object/InstagramComment.php +0 -177
  134. vendor/facebook/php-business-sdk/src/FacebookAds/Object/LifeEvent.php +0 -23
  135. vendor/facebook/php-business-sdk/src/FacebookAds/Object/OfflineConversionDataSet.php +0 -24
  136. vendor/facebook/php-business-sdk/src/FacebookAds/Object/OpenGraphContext.php +0 -69
  137. vendor/facebook/php-business-sdk/src/FacebookAds/Object/OpenGraphObject.php +0 -139
  138. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Page.php +157 -139
  139. vendor/facebook/php-business-sdk/src/FacebookAds/Object/PartnerStudy.php +0 -23
  140. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Post.php +7 -0
  141. vendor/facebook/php-business-sdk/src/FacebookAds/Object/ProductCatalog.php +24 -0
  142. vendor/facebook/php-business-sdk/src/FacebookAds/Object/ProductFeedUploadDiagnosticsReport.php +57 -0
  143. vendor/facebook/php-business-sdk/src/FacebookAds/Object/PublisherBlockList.php +0 -24
  144. vendor/facebook/php-business-sdk/src/FacebookAds/Object/RTBDynamicPost.php +0 -23
  145. vendor/facebook/php-business-sdk/src/FacebookAds/Object/ServerSide/AdsPixelSettings.php +201 -0
  146. vendor/facebook/php-business-sdk/src/FacebookAds/Object/ServerSide/Content.php +85 -1
  147. vendor/facebook/php-business-sdk/src/FacebookAds/Object/ServerSide/Event.php +86 -6
  148. vendor/facebook/php-business-sdk/src/FacebookAds/Object/ServerSide/UserData.php +30 -5
  149. vendor/facebook/php-business-sdk/src/FacebookAds/Object/ServerSide/Util.php +81 -0
  150. vendor/facebook/php-business-sdk/src/FacebookAds/Object/StoreCatalogSettings.php +23 -0
  151. vendor/facebook/php-business-sdk/src/FacebookAds/Object/URL.php +1 -1
  152. vendor/facebook/php-business-sdk/src/FacebookAds/Object/User.php +0 -145
  153. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdAccountContentTypeValues.php +1 -0
  154. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdAccountTargetingUnifiedObjectiveValues.php +1 -0
  155. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdAccountTargetingUnifiedWhitelistedTypesValues.php +2 -0
  156. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdActivityEventTypeValues.php +1 -0
  157. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdAssetFeedSpecCallToActionTypesValues.php +5 -0
  158. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdCreativeCallToActionTypeValues.php +5 -0
  159. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdCreativeLinkDataCallToActionTypeValues.php +5 -0
  160. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdNetworkAnalyticsSyncQueryResultBreakdownsValues.php +1 -0
  161. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdPreviewAdFormatValues.php +2 -0
  162. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdSetMultiOptimizationGoalWeightValues.php +44 -0
  163. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdVideoContainerTypeValues.php +2 -0
  164. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdVideoValidationAdPlacementsValues.php +1 -0
  165. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/AdsInsightsActionAttributionWindowsValues.php +1 -0
  166. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/BusinessAgreementRequestStatusValues.php +45 -0
  167. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/BusinessAssetGroupPageTasksValues.php +0 -4
  168. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/BusinessImageValidationAdPlacementsValues.php +1 -0
  169. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/BusinessPagePermittedTasksValues.php +0 -4
  170. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/BusinessRoleRequestRoleValues.php +1 -0
  171. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/BusinessUserRoleValues.php +1 -0
  172. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/CPASParentCatalogSettingsAttributionWindowsValues.php +1 -0
  173. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/CampaignObjectiveValues.php +1 -0
  174. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/{RequestHistoryHttpMethodValues.php → CampaignSpecialAdCategoriesValues.php} +6 -5
  175. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/{VideoGameShowActionValues.php → CommerceMerchantSettingsMerchantStatusValues.php} +4 -4
  176. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/CommerceOrderFiltersValues.php +46 -0
  177. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/CommerceOrderReasonCodeValues.php +50 -0
  178. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/CommerceOrderStateValues.php +44 -0
  179. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/CustomAudienceContentTypeValues.php +1 -0
  180. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/CustomConversionCustomEventTypeValues.php +1 -0
  181. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/GroupGroupTypeValues.php +1 -0
  182. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/GroupPurposeValues.php +1 -0
  183. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/PageCallToActionAndroidDestinationTypeValues.php +2 -0
  184. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/PageCallToActionIphoneDestinationTypeValues.php +2 -0
  185. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/PageCallToActionTypeValues.php +4 -0
  186. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/PageCallToActionWebDestinationTypeValues.php +1 -0
  187. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/PagePermittedTasksValues.php +0 -4
  188. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/PageSubscribedFieldsValues.php +4 -0
  189. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/PageTasksValues.php +0 -4
  190. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/ProductCatalogVerticalValues.php +2 -0
  191. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/ProductFeedFeedTypeValues.php +1 -0
  192. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/ProfileTypeValues.php +1 -0
  193. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/StreamingReactionReactionTypeValues.php +1 -0
  194. vendor/facebook/php-business-sdk/src/FacebookAds/Object/Values/SystemUserRoleValues.php +1 -0
  195. vendor/facebook/php-business-sdk/src/FacebookAds/Object/WhatsAppBusinessAccount.php +23 -0
  196. vendor/facebook/php-business-sdk/test/FacebookAdsTest/Http/Exception/RequestExceptionTest.php +14 -0
  197. vendor/facebook/php-business-sdk/test/FacebookAdsTest/Object/ServerSide/ContentTest.php +78 -0
  198. vendor/facebook/php-business-sdk/test/FacebookAdsTest/Object/ServerSide/ServerSideEventTest.php +86 -0
  199. vendor/facebook/php-business-sdk/test/FacebookAdsTest/Object/ServerSide/ServerSideUtilTest.php +102 -0
  200. vendor/facebook/php-business-sdk/test/phpunit.xml +1 -1
changelog.txt CHANGED
@@ -1,17 +1,23 @@
1
  *** Facebook for WordPress Changelog ***
 
 
 
 
 
 
2
  2020-06-18 version 2.1.0
3
- * Support for WooCommerce through the Server-Side API
4
 
5
  2020-04-23 version 2.0.2
6
  * Support for WordPress 5.4
7
  * Fixing an Illegal string offset error with WP Forms
8
- * Fixing the event source url for Server-Side API events
9
 
10
  2020-03-23 version 2.0.1
11
  * Fixing an Undefined index error
12
 
13
  2020-03-09 version 2.0.0
14
- * Added support for Server-Side API
15
 
16
  2019-12-02 version 1.8.0
17
  * Support for WordPress 5.3
1
  *** Facebook for WordPress Changelog ***
2
+ 2020-08-14 version 2.2.0
3
+ * Support for WordPress 5.5
4
+ * Improved Conversions API event quality
5
+ * Sending AddToCart and ViewContent events from Easy Digitial Downloads
6
+ * New filter added before the Conversions API event is sent
7
+
8
  2020-06-18 version 2.1.0
9
+ * Support for WooCommerce through the Conversions API
10
 
11
  2020-04-23 version 2.0.2
12
  * Support for WordPress 5.4
13
  * Fixing an Illegal string offset error with WP Forms
14
+ * Fixing the event source url for Conversions API events
15
 
16
  2020-03-23 version 2.0.1
17
  * Fixing an Undefined index error
18
 
19
  2020-03-09 version 2.0.0
20
+ * Added support for Conversions API
21
 
22
  2019-12-02 version 1.8.0
23
  * Support for WordPress 5.3
composer.json CHANGED
@@ -9,7 +9,7 @@
9
  },
10
  "license": "GPL",
11
  "require": {
12
- "facebook/php-business-sdk": "6.0.4",
13
  "techcrunch/wp-async-task": "dev-master"
14
  },
15
  "autoload": {
9
  },
10
  "license": "GPL",
11
  "require": {
12
+ "facebook/php-business-sdk": "7.0.3",
13
  "techcrunch/wp-async-task": "dev-master"
14
  },
15
  "autoload": {
composer.lock CHANGED
@@ -4,20 +4,20 @@
4
  "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
  "This file is @generated automatically"
6
  ],
7
- "content-hash": "7377f41bb6d7412df023388bf4be179f",
8
  "packages": [
9
  {
10
  "name": "facebook/php-business-sdk",
11
- "version": "6.0.4",
12
  "source": {
13
  "type": "git",
14
  "url": "https://github.com/facebook/facebook-php-business-sdk.git",
15
- "reference": "c7bf72b1f5ca8f3fd6120544cb2541546204bf83"
16
  },
17
  "dist": {
18
  "type": "zip",
19
- "url": "https://api.github.com/repos/facebook/facebook-php-business-sdk/zipball/c7bf72b1f5ca8f3fd6120544cb2541546204bf83",
20
- "reference": "c7bf72b1f5ca8f3fd6120544cb2541546204bf83",
21
  "shasum": ""
22
  },
23
  "require-dev": {
@@ -41,7 +41,7 @@
41
  "page",
42
  "sdk"
43
  ],
44
- "time": "2020-04-08T04:52:23+00:00"
45
  },
46
  {
47
  "name": "techcrunch/wp-async-task",
@@ -183,20 +183,20 @@
183
  },
184
  {
185
  "name": "doctrine/instantiator",
186
- "version": "1.3.0",
187
  "source": {
188
  "type": "git",
189
  "url": "https://github.com/doctrine/instantiator.git",
190
- "reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
191
  },
192
  "dist": {
193
  "type": "zip",
194
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
195
- "reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
196
  "shasum": ""
197
  },
198
  "require": {
199
- "php": "^7.1"
200
  },
201
  "require-dev": {
202
  "doctrine/coding-standard": "^6.0",
@@ -235,24 +235,24 @@
235
  "constructor",
236
  "instantiate"
237
  ],
238
- "time": "2019-10-21T16:45:58+00:00"
239
  },
240
  {
241
  "name": "hamcrest/hamcrest-php",
242
- "version": "v2.0.0",
243
  "source": {
244
  "type": "git",
245
  "url": "https://github.com/hamcrest/hamcrest-php.git",
246
- "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad"
247
  },
248
  "dist": {
249
  "type": "zip",
250
- "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad",
251
- "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad",
252
  "shasum": ""
253
  },
254
  "require": {
255
- "php": "^5.3|^7.0"
256
  },
257
  "replace": {
258
  "cordoval/hamcrest-php": "*",
@@ -260,14 +260,13 @@
260
  "kodova/hamcrest-php": "*"
261
  },
262
  "require-dev": {
263
- "phpunit/php-file-iterator": "1.3.3",
264
- "phpunit/phpunit": "~4.0",
265
- "satooshi/php-coveralls": "^1.0"
266
  },
267
  "type": "library",
268
  "extra": {
269
  "branch-alias": {
270
- "dev-master": "2.0-dev"
271
  }
272
  },
273
  "autoload": {
@@ -277,13 +276,13 @@
277
  },
278
  "notification-url": "https://packagist.org/downloads/",
279
  "license": [
280
- "BSD"
281
  ],
282
  "description": "This is the PHP port of Hamcrest Matchers",
283
  "keywords": [
284
  "test"
285
  ],
286
- "time": "2016-01-20T08:20:44+00:00"
287
  },
288
  {
289
  "name": "mehr-als-nix/parallel",
@@ -323,25 +322,25 @@
323
  },
324
  {
325
  "name": "mockery/mockery",
326
- "version": "1.3.1",
327
  "source": {
328
  "type": "git",
329
  "url": "https://github.com/mockery/mockery.git",
330
- "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be"
331
  },
332
  "dist": {
333
  "type": "zip",
334
- "url": "https://api.github.com/repos/mockery/mockery/zipball/f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be",
335
- "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be",
336
  "shasum": ""
337
  },
338
  "require": {
339
- "hamcrest/hamcrest-php": "~2.0",
340
  "lib-pcre": ">=7.0",
341
  "php": ">=5.6.0"
342
  },
343
  "require-dev": {
344
- "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0"
345
  },
346
  "type": "library",
347
  "extra": {
@@ -384,24 +383,24 @@
384
  "test double",
385
  "testing"
386
  ],
387
- "time": "2019-12-26T09:49:15+00:00"
388
  },
389
  {
390
  "name": "myclabs/deep-copy",
391
- "version": "1.9.5",
392
  "source": {
393
  "type": "git",
394
  "url": "https://github.com/myclabs/DeepCopy.git",
395
- "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef"
396
  },
397
  "dist": {
398
  "type": "zip",
399
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef",
400
- "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef",
401
  "shasum": ""
402
  },
403
  "require": {
404
- "php": "^7.1"
405
  },
406
  "replace": {
407
  "myclabs/deep-copy": "self.version"
@@ -432,7 +431,7 @@
432
  "object",
433
  "object graph"
434
  ],
435
- "time": "2020-01-17T21:11:47+00:00"
436
  },
437
  {
438
  "name": "phar-io/manifest",
@@ -635,28 +634,25 @@
635
  },
636
  {
637
  "name": "phpdocumentor/reflection-common",
638
- "version": "2.0.0",
639
  "source": {
640
  "type": "git",
641
  "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
642
- "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
643
  },
644
  "dist": {
645
  "type": "zip",
646
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
647
- "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
648
  "shasum": ""
649
  },
650
  "require": {
651
- "php": ">=7.1"
652
- },
653
- "require-dev": {
654
- "phpunit/phpunit": "~6"
655
  },
656
  "type": "library",
657
  "extra": {
658
  "branch-alias": {
659
- "dev-master": "2.x-dev"
660
  }
661
  },
662
  "autoload": {
@@ -683,32 +679,31 @@
683
  "reflection",
684
  "static analysis"
685
  ],
686
- "time": "2018-08-07T13:53:10+00:00"
687
  },
688
  {
689
  "name": "phpdocumentor/reflection-docblock",
690
- "version": "5.1.0",
691
  "source": {
692
  "type": "git",
693
  "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
694
- "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e"
695
  },
696
  "dist": {
697
  "type": "zip",
698
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
699
- "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
700
  "shasum": ""
701
  },
702
  "require": {
703
- "ext-filter": "^7.1",
704
- "php": "^7.2",
705
- "phpdocumentor/reflection-common": "^2.0",
706
- "phpdocumentor/type-resolver": "^1.0",
707
- "webmozart/assert": "^1"
708
  },
709
  "require-dev": {
710
- "doctrine/instantiator": "^1",
711
- "mockery/mockery": "^1"
712
  },
713
  "type": "library",
714
  "extra": {
@@ -736,34 +731,33 @@
736
  }
737
  ],
738
  "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
739
- "time": "2020-02-22T12:28:44+00:00"
740
  },
741
  {
742
  "name": "phpdocumentor/type-resolver",
743
- "version": "1.1.0",
744
  "source": {
745
  "type": "git",
746
  "url": "https://github.com/phpDocumentor/TypeResolver.git",
747
- "reference": "7462d5f123dfc080dfdf26897032a6513644fc95"
748
  },
749
  "dist": {
750
  "type": "zip",
751
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95",
752
- "reference": "7462d5f123dfc080dfdf26897032a6513644fc95",
753
  "shasum": ""
754
  },
755
  "require": {
756
- "php": "^7.2",
757
  "phpdocumentor/reflection-common": "^2.0"
758
  },
759
  "require-dev": {
760
- "ext-tokenizer": "^7.2",
761
- "mockery/mockery": "~1"
762
  },
763
  "type": "library",
764
  "extra": {
765
  "branch-alias": {
766
- "dev-master": "1.x-dev"
767
  }
768
  },
769
  "autoload": {
@@ -782,7 +776,7 @@
782
  }
783
  ],
784
  "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
785
- "time": "2020-02-18T18:59:58+00:00"
786
  },
787
  {
788
  "name": "phpspec/prophecy",
@@ -1850,22 +1844,23 @@
1850
  },
1851
  {
1852
  "name": "symfony/console",
1853
- "version": "v4.4.7",
1854
  "source": {
1855
  "type": "git",
1856
  "url": "https://github.com/symfony/console.git",
1857
- "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7"
1858
  },
1859
  "dist": {
1860
  "type": "zip",
1861
- "url": "https://api.github.com/repos/symfony/console/zipball/10bb3ee3c97308869d53b3e3d03f6ac23ff985f7",
1862
- "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7",
1863
  "shasum": ""
1864
  },
1865
  "require": {
1866
- "php": "^7.1.3",
1867
  "symfony/polyfill-mbstring": "~1.0",
1868
  "symfony/polyfill-php73": "^1.8",
 
1869
  "symfony/service-contracts": "^1.1|^2"
1870
  },
1871
  "conflict": {
@@ -1922,20 +1917,20 @@
1922
  ],
1923
  "description": "Symfony Console Component",
1924
  "homepage": "https://symfony.com",
1925
- "time": "2020-03-30T11:41:10+00:00"
1926
  },
1927
  {
1928
  "name": "symfony/polyfill-ctype",
1929
- "version": "v1.15.0",
1930
  "source": {
1931
  "type": "git",
1932
  "url": "https://github.com/symfony/polyfill-ctype.git",
1933
- "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14"
1934
  },
1935
  "dist": {
1936
  "type": "zip",
1937
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/4719fa9c18b0464d399f1a63bf624b42b6fa8d14",
1938
- "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14",
1939
  "shasum": ""
1940
  },
1941
  "require": {
@@ -1947,7 +1942,11 @@
1947
  "type": "library",
1948
  "extra": {
1949
  "branch-alias": {
1950
- "dev-master": "1.15-dev"
 
 
 
 
1951
  }
1952
  },
1953
  "autoload": {
@@ -1980,20 +1979,20 @@
1980
  "polyfill",
1981
  "portable"
1982
  ],
1983
- "time": "2020-02-27T09:26:54+00:00"
1984
  },
1985
  {
1986
  "name": "symfony/polyfill-mbstring",
1987
- "version": "v1.15.0",
1988
  "source": {
1989
  "type": "git",
1990
  "url": "https://github.com/symfony/polyfill-mbstring.git",
1991
- "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac"
1992
  },
1993
  "dist": {
1994
  "type": "zip",
1995
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/81ffd3a9c6d707be22e3012b827de1c9775fc5ac",
1996
- "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac",
1997
  "shasum": ""
1998
  },
1999
  "require": {
@@ -2005,7 +2004,11 @@
2005
  "type": "library",
2006
  "extra": {
2007
  "branch-alias": {
2008
- "dev-master": "1.15-dev"
 
 
 
 
2009
  }
2010
  },
2011
  "autoload": {
@@ -2039,20 +2042,20 @@
2039
  "portable",
2040
  "shim"
2041
  ],
2042
- "time": "2020-03-09T19:04:49+00:00"
2043
  },
2044
  {
2045
  "name": "symfony/polyfill-php73",
2046
- "version": "v1.15.0",
2047
  "source": {
2048
  "type": "git",
2049
  "url": "https://github.com/symfony/polyfill-php73.git",
2050
- "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7"
2051
  },
2052
  "dist": {
2053
  "type": "zip",
2054
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7",
2055
- "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7",
2056
  "shasum": ""
2057
  },
2058
  "require": {
@@ -2061,7 +2064,11 @@
2061
  "type": "library",
2062
  "extra": {
2063
  "branch-alias": {
2064
- "dev-master": "1.15-dev"
 
 
 
 
2065
  }
2066
  },
2067
  "autoload": {
@@ -2097,24 +2104,90 @@
2097
  "portable",
2098
  "shim"
2099
  ],
2100
- "time": "2020-02-27T09:26:54+00:00"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2101
  },
2102
  {
2103
  "name": "symfony/service-contracts",
2104
- "version": "v2.0.1",
2105
  "source": {
2106
  "type": "git",
2107
  "url": "https://github.com/symfony/service-contracts.git",
2108
- "reference": "144c5e51266b281231e947b51223ba14acf1a749"
2109
  },
2110
  "dist": {
2111
  "type": "zip",
2112
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749",
2113
- "reference": "144c5e51266b281231e947b51223ba14acf1a749",
2114
  "shasum": ""
2115
  },
2116
  "require": {
2117
- "php": "^7.2.5",
2118
  "psr/container": "^1.0"
2119
  },
2120
  "suggest": {
@@ -2123,7 +2196,11 @@
2123
  "type": "library",
2124
  "extra": {
2125
  "branch-alias": {
2126
- "dev-master": "2.0-dev"
 
 
 
 
2127
  }
2128
  },
2129
  "autoload": {
@@ -2155,24 +2232,24 @@
2155
  "interoperability",
2156
  "standards"
2157
  ],
2158
- "time": "2019-11-18T17:27:11+00:00"
2159
  },
2160
  {
2161
  "name": "symfony/yaml",
2162
- "version": "v4.4.7",
2163
  "source": {
2164
  "type": "git",
2165
  "url": "https://github.com/symfony/yaml.git",
2166
- "reference": "ef166890d821518106da3560086bfcbeb4fadfec"
2167
  },
2168
  "dist": {
2169
  "type": "zip",
2170
- "url": "https://api.github.com/repos/symfony/yaml/zipball/ef166890d821518106da3560086bfcbeb4fadfec",
2171
- "reference": "ef166890d821518106da3560086bfcbeb4fadfec",
2172
  "shasum": ""
2173
  },
2174
  "require": {
2175
- "php": "^7.1.3",
2176
  "symfony/polyfill-ctype": "~1.8"
2177
  },
2178
  "conflict": {
@@ -2214,27 +2291,27 @@
2214
  ],
2215
  "description": "Symfony Yaml Component",
2216
  "homepage": "https://symfony.com",
2217
- "time": "2020-03-30T11:41:10+00:00"
2218
  },
2219
  {
2220
  "name": "theseer/tokenizer",
2221
- "version": "1.1.3",
2222
  "source": {
2223
  "type": "git",
2224
  "url": "https://github.com/theseer/tokenizer.git",
2225
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
2226
  },
2227
  "dist": {
2228
  "type": "zip",
2229
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
2230
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
2231
  "shasum": ""
2232
  },
2233
  "require": {
2234
  "ext-dom": "*",
2235
  "ext-tokenizer": "*",
2236
  "ext-xmlwriter": "*",
2237
- "php": "^7.0"
2238
  },
2239
  "type": "library",
2240
  "autoload": {
@@ -2254,28 +2331,29 @@
2254
  }
2255
  ],
2256
  "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
2257
- "time": "2019-06-13T22:48:21+00:00"
2258
  },
2259
  {
2260
  "name": "webmozart/assert",
2261
- "version": "1.7.0",
2262
  "source": {
2263
  "type": "git",
2264
  "url": "https://github.com/webmozart/assert.git",
2265
- "reference": "aed98a490f9a8f78468232db345ab9cf606cf598"
2266
  },
2267
  "dist": {
2268
  "type": "zip",
2269
- "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598",
2270
- "reference": "aed98a490f9a8f78468232db345ab9cf606cf598",
2271
  "shasum": ""
2272
  },
2273
  "require": {
2274
- "php": "^5.3.3 || ^7.0",
2275
  "symfony/polyfill-ctype": "^1.8"
2276
  },
2277
  "conflict": {
2278
- "vimeo/psalm": "<3.6.0"
 
2279
  },
2280
  "require-dev": {
2281
  "phpunit/phpunit": "^4.8.36 || ^7.5.13"
@@ -2302,7 +2380,7 @@
2302
  "check",
2303
  "validate"
2304
  ],
2305
- "time": "2020-02-14T12:15:55+00:00"
2306
  }
2307
  ],
2308
  "aliases": [],
4
  "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
  "This file is @generated automatically"
6
  ],
7
+ "content-hash": "8525d272beb712ed341e2acd76074577",
8
  "packages": [
9
  {
10
  "name": "facebook/php-business-sdk",
11
+ "version": "7.0.3",
12
  "source": {
13
  "type": "git",
14
  "url": "https://github.com/facebook/facebook-php-business-sdk.git",
15
+ "reference": "ddbd867b0ee296f83a4d5a1a4aae5c82fa5a5eaa"
16
  },
17
  "dist": {
18
  "type": "zip",
19
+ "url": "https://api.github.com/repos/facebook/facebook-php-business-sdk/zipball/ddbd867b0ee296f83a4d5a1a4aae5c82fa5a5eaa",
20
+ "reference": "ddbd867b0ee296f83a4d5a1a4aae5c82fa5a5eaa",
21
  "shasum": ""
22
  },
23
  "require-dev": {
41
  "page",
42
  "sdk"
43
  ],
44
+ "time": "2020-07-20T17:04:42+00:00"
45
  },
46
  {
47
  "name": "techcrunch/wp-async-task",
183
  },
184
  {
185
  "name": "doctrine/instantiator",
186
+ "version": "1.3.1",
187
  "source": {
188
  "type": "git",
189
  "url": "https://github.com/doctrine/instantiator.git",
190
+ "reference": "f350df0268e904597e3bd9c4685c53e0e333feea"
191
  },
192
  "dist": {
193
  "type": "zip",
194
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea",
195
+ "reference": "f350df0268e904597e3bd9c4685c53e0e333feea",
196
  "shasum": ""
197
  },
198
  "require": {
199
+ "php": "^7.1 || ^8.0"
200
  },
201
  "require-dev": {
202
  "doctrine/coding-standard": "^6.0",
235
  "constructor",
236
  "instantiate"
237
  ],
238
+ "time": "2020-05-29T17:27:14+00:00"
239
  },
240
  {
241
  "name": "hamcrest/hamcrest-php",
242
+ "version": "v2.0.1",
243
  "source": {
244
  "type": "git",
245
  "url": "https://github.com/hamcrest/hamcrest-php.git",
246
+ "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
247
  },
248
  "dist": {
249
  "type": "zip",
250
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
251
+ "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
252
  "shasum": ""
253
  },
254
  "require": {
255
+ "php": "^5.3|^7.0|^8.0"
256
  },
257
  "replace": {
258
  "cordoval/hamcrest-php": "*",
260
  "kodova/hamcrest-php": "*"
261
  },
262
  "require-dev": {
263
+ "phpunit/php-file-iterator": "^1.4 || ^2.0",
264
+ "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
 
265
  },
266
  "type": "library",
267
  "extra": {
268
  "branch-alias": {
269
+ "dev-master": "2.1-dev"
270
  }
271
  },
272
  "autoload": {
276
  },
277
  "notification-url": "https://packagist.org/downloads/",
278
  "license": [
279
+ "BSD-3-Clause"
280
  ],
281
  "description": "This is the PHP port of Hamcrest Matchers",
282
  "keywords": [
283
  "test"
284
  ],
285
+ "time": "2020-07-09T08:09:16+00:00"
286
  },
287
  {
288
  "name": "mehr-als-nix/parallel",
322
  },
323
  {
324
  "name": "mockery/mockery",
325
+ "version": "1.3.2",
326
  "source": {
327
  "type": "git",
328
  "url": "https://github.com/mockery/mockery.git",
329
+ "reference": "9b6f117dd7d36dc3858d8d8ddf9b3d584fcae283"
330
  },
331
  "dist": {
332
  "type": "zip",
333
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/9b6f117dd7d36dc3858d8d8ddf9b3d584fcae283",
334
+ "reference": "9b6f117dd7d36dc3858d8d8ddf9b3d584fcae283",
335
  "shasum": ""
336
  },
337
  "require": {
338
+ "hamcrest/hamcrest-php": "^2.0.1",
339
  "lib-pcre": ">=7.0",
340
  "php": ">=5.6.0"
341
  },
342
  "require-dev": {
343
+ "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0|~9.0"
344
  },
345
  "type": "library",
346
  "extra": {
383
  "test double",
384
  "testing"
385
  ],
386
+ "time": "2020-07-09T08:23:05+00:00"
387
  },
388
  {
389
  "name": "myclabs/deep-copy",
390
+ "version": "1.10.1",
391
  "source": {
392
  "type": "git",
393
  "url": "https://github.com/myclabs/DeepCopy.git",
394
+ "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5"
395
  },
396
  "dist": {
397
  "type": "zip",
398
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
399
+ "reference": "969b211f9a51aa1f6c01d1d2aef56d3bd91598e5",
400
  "shasum": ""
401
  },
402
  "require": {
403
+ "php": "^7.1 || ^8.0"
404
  },
405
  "replace": {
406
  "myclabs/deep-copy": "self.version"
431
  "object",
432
  "object graph"
433
  ],
434
+ "time": "2020-06-29T13:22:24+00:00"
435
  },
436
  {
437
  "name": "phar-io/manifest",
634
  },
635
  {
636
  "name": "phpdocumentor/reflection-common",
637
+ "version": "2.2.0",
638
  "source": {
639
  "type": "git",
640
  "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
641
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
642
  },
643
  "dist": {
644
  "type": "zip",
645
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
646
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
647
  "shasum": ""
648
  },
649
  "require": {
650
+ "php": "^7.2 || ^8.0"
 
 
 
651
  },
652
  "type": "library",
653
  "extra": {
654
  "branch-alias": {
655
+ "dev-2.x": "2.x-dev"
656
  }
657
  },
658
  "autoload": {
679
  "reflection",
680
  "static analysis"
681
  ],
682
+ "time": "2020-06-27T09:03:43+00:00"
683
  },
684
  {
685
  "name": "phpdocumentor/reflection-docblock",
686
+ "version": "5.2.0",
687
  "source": {
688
  "type": "git",
689
  "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
690
+ "reference": "3170448f5769fe19f456173d833734e0ff1b84df"
691
  },
692
  "dist": {
693
  "type": "zip",
694
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/3170448f5769fe19f456173d833734e0ff1b84df",
695
+ "reference": "3170448f5769fe19f456173d833734e0ff1b84df",
696
  "shasum": ""
697
  },
698
  "require": {
699
+ "ext-filter": "*",
700
+ "php": "^7.2 || ^8.0",
701
+ "phpdocumentor/reflection-common": "^2.2",
702
+ "phpdocumentor/type-resolver": "^1.3",
703
+ "webmozart/assert": "^1.9.1"
704
  },
705
  "require-dev": {
706
+ "mockery/mockery": "~1.3.2"
 
707
  },
708
  "type": "library",
709
  "extra": {
731
  }
732
  ],
733
  "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
734
+ "time": "2020-07-20T20:05:34+00:00"
735
  },
736
  {
737
  "name": "phpdocumentor/type-resolver",
738
+ "version": "1.3.0",
739
  "source": {
740
  "type": "git",
741
  "url": "https://github.com/phpDocumentor/TypeResolver.git",
742
+ "reference": "e878a14a65245fbe78f8080eba03b47c3b705651"
743
  },
744
  "dist": {
745
  "type": "zip",
746
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651",
747
+ "reference": "e878a14a65245fbe78f8080eba03b47c3b705651",
748
  "shasum": ""
749
  },
750
  "require": {
751
+ "php": "^7.2 || ^8.0",
752
  "phpdocumentor/reflection-common": "^2.0"
753
  },
754
  "require-dev": {
755
+ "ext-tokenizer": "*"
 
756
  },
757
  "type": "library",
758
  "extra": {
759
  "branch-alias": {
760
+ "dev-1.x": "1.x-dev"
761
  }
762
  },
763
  "autoload": {
776
  }
777
  ],
778
  "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
779
+ "time": "2020-06-27T10:12:23+00:00"
780
  },
781
  {
782
  "name": "phpspec/prophecy",
1844
  },
1845
  {
1846
  "name": "symfony/console",
1847
+ "version": "v4.4.11",
1848
  "source": {
1849
  "type": "git",
1850
  "url": "https://github.com/symfony/console.git",
1851
+ "reference": "55d07021da933dd0d633ffdab6f45d5b230c7e02"
1852
  },
1853
  "dist": {
1854
  "type": "zip",
1855
+ "url": "https://api.github.com/repos/symfony/console/zipball/55d07021da933dd0d633ffdab6f45d5b230c7e02",
1856
+ "reference": "55d07021da933dd0d633ffdab6f45d5b230c7e02",
1857
  "shasum": ""
1858
  },
1859
  "require": {
1860
+ "php": ">=7.1.3",
1861
  "symfony/polyfill-mbstring": "~1.0",
1862
  "symfony/polyfill-php73": "^1.8",
1863
+ "symfony/polyfill-php80": "^1.15",
1864
  "symfony/service-contracts": "^1.1|^2"
1865
  },
1866
  "conflict": {
1917
  ],
1918
  "description": "Symfony Console Component",
1919
  "homepage": "https://symfony.com",
1920
+ "time": "2020-07-06T13:18:39+00:00"
1921
  },
1922
  {
1923
  "name": "symfony/polyfill-ctype",
1924
+ "version": "v1.18.0",
1925
  "source": {
1926
  "type": "git",
1927
  "url": "https://github.com/symfony/polyfill-ctype.git",
1928
+ "reference": "1c302646f6efc070cd46856e600e5e0684d6b454"
1929
  },
1930
  "dist": {
1931
  "type": "zip",
1932
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454",
1933
+ "reference": "1c302646f6efc070cd46856e600e5e0684d6b454",
1934
  "shasum": ""
1935
  },
1936
  "require": {
1942
  "type": "library",
1943
  "extra": {
1944
  "branch-alias": {
1945
+ "dev-master": "1.18-dev"
1946
+ },
1947
+ "thanks": {
1948
+ "name": "symfony/polyfill",
1949
+ "url": "https://github.com/symfony/polyfill"
1950
  }
1951
  },
1952
  "autoload": {
1979
  "polyfill",
1980
  "portable"
1981
  ],
1982
+ "time": "2020-07-14T12:35:20+00:00"
1983
  },
1984
  {
1985
  "name": "symfony/polyfill-mbstring",
1986
+ "version": "v1.18.0",
1987
  "source": {
1988
  "type": "git",
1989
  "url": "https://github.com/symfony/polyfill-mbstring.git",
1990
+ "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a"
1991
  },
1992
  "dist": {
1993
  "type": "zip",
1994
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a",
1995
+ "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a",
1996
  "shasum": ""
1997
  },
1998
  "require": {
2004
  "type": "library",
2005
  "extra": {
2006
  "branch-alias": {
2007
+ "dev-master": "1.18-dev"
2008
+ },
2009
+ "thanks": {
2010
+ "name": "symfony/polyfill",
2011
+ "url": "https://github.com/symfony/polyfill"
2012
  }
2013
  },
2014
  "autoload": {
2042
  "portable",
2043
  "shim"
2044
  ],
2045
+ "time": "2020-07-14T12:35:20+00:00"
2046
  },
2047
  {
2048
  "name": "symfony/polyfill-php73",
2049
+ "version": "v1.18.0",
2050
  "source": {
2051
  "type": "git",
2052
  "url": "https://github.com/symfony/polyfill-php73.git",
2053
+ "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca"
2054
  },
2055
  "dist": {
2056
  "type": "zip",
2057
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
2058
+ "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca",
2059
  "shasum": ""
2060
  },
2061
  "require": {
2064
  "type": "library",
2065
  "extra": {
2066
  "branch-alias": {
2067
+ "dev-master": "1.18-dev"
2068
+ },
2069
+ "thanks": {
2070
+ "name": "symfony/polyfill",
2071
+ "url": "https://github.com/symfony/polyfill"
2072
  }
2073
  },
2074
  "autoload": {
2104
  "portable",
2105
  "shim"
2106
  ],
2107
+ "time": "2020-07-14T12:35:20+00:00"
2108
+ },
2109
+ {
2110
+ "name": "symfony/polyfill-php80",
2111
+ "version": "v1.18.0",
2112
+ "source": {
2113
+ "type": "git",
2114
+ "url": "https://github.com/symfony/polyfill-php80.git",
2115
+ "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981"
2116
+ },
2117
+ "dist": {
2118
+ "type": "zip",
2119
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981",
2120
+ "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981",
2121
+ "shasum": ""
2122
+ },
2123
+ "require": {
2124
+ "php": ">=7.0.8"
2125
+ },
2126
+ "type": "library",
2127
+ "extra": {
2128
+ "branch-alias": {
2129
+ "dev-master": "1.18-dev"
2130
+ },
2131
+ "thanks": {
2132
+ "name": "symfony/polyfill",
2133
+ "url": "https://github.com/symfony/polyfill"
2134
+ }
2135
+ },
2136
+ "autoload": {
2137
+ "psr-4": {
2138
+ "Symfony\\Polyfill\\Php80\\": ""
2139
+ },
2140
+ "files": [
2141
+ "bootstrap.php"
2142
+ ],
2143
+ "classmap": [
2144
+ "Resources/stubs"
2145
+ ]
2146
+ },
2147
+ "notification-url": "https://packagist.org/downloads/",
2148
+ "license": [
2149
+ "MIT"
2150
+ ],
2151
+ "authors": [
2152
+ {
2153
+ "name": "Ion Bazan",
2154
+ "email": "ion.bazan@gmail.com"
2155
+ },
2156
+ {
2157
+ "name": "Nicolas Grekas",
2158
+ "email": "p@tchwork.com"
2159
+ },
2160
+ {
2161
+ "name": "Symfony Community",
2162
+ "homepage": "https://symfony.com/contributors"
2163
+ }
2164
+ ],
2165
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
2166
+ "homepage": "https://symfony.com",
2167
+ "keywords": [
2168
+ "compatibility",
2169
+ "polyfill",
2170
+ "portable",
2171
+ "shim"
2172
+ ],
2173
+ "time": "2020-07-14T12:35:20+00:00"
2174
  },
2175
  {
2176
  "name": "symfony/service-contracts",
2177
+ "version": "v2.1.3",
2178
  "source": {
2179
  "type": "git",
2180
  "url": "https://github.com/symfony/service-contracts.git",
2181
+ "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442"
2182
  },
2183
  "dist": {
2184
  "type": "zip",
2185
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/58c7475e5457c5492c26cc740cc0ad7464be9442",
2186
+ "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442",
2187
  "shasum": ""
2188
  },
2189
  "require": {
2190
+ "php": ">=7.2.5",
2191
  "psr/container": "^1.0"
2192
  },
2193
  "suggest": {
2196
  "type": "library",
2197
  "extra": {
2198
  "branch-alias": {
2199
+ "dev-master": "2.1-dev"
2200
+ },
2201
+ "thanks": {
2202
+ "name": "symfony/contracts",
2203
+ "url": "https://github.com/symfony/contracts"
2204
  }
2205
  },
2206
  "autoload": {
2232
  "interoperability",
2233
  "standards"
2234
  ],
2235
+ "time": "2020-07-06T13:23:11+00:00"
2236
  },
2237
  {
2238
  "name": "symfony/yaml",
2239
+ "version": "v4.4.11",
2240
  "source": {
2241
  "type": "git",
2242
  "url": "https://github.com/symfony/yaml.git",
2243
+ "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a"
2244
  },
2245
  "dist": {
2246
  "type": "zip",
2247
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a",
2248
+ "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a",
2249
  "shasum": ""
2250
  },
2251
  "require": {
2252
+ "php": ">=7.1.3",
2253
  "symfony/polyfill-ctype": "~1.8"
2254
  },
2255
  "conflict": {
2291
  ],
2292
  "description": "Symfony Yaml Component",
2293
  "homepage": "https://symfony.com",
2294
+ "time": "2020-05-20T08:37:50+00:00"
2295
  },
2296
  {
2297
  "name": "theseer/tokenizer",
2298
+ "version": "1.2.0",
2299
  "source": {
2300
  "type": "git",
2301
  "url": "https://github.com/theseer/tokenizer.git",
2302
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a"
2303
  },
2304
  "dist": {
2305
  "type": "zip",
2306
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
2307
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a",
2308
  "shasum": ""
2309
  },
2310
  "require": {
2311
  "ext-dom": "*",
2312
  "ext-tokenizer": "*",
2313
  "ext-xmlwriter": "*",
2314
+ "php": "^7.2 || ^8.0"
2315
  },
2316
  "type": "library",
2317
  "autoload": {
2331
  }
2332
  ],
2333
  "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
2334
+ "time": "2020-07-12T23:59:07+00:00"
2335
  },
2336
  {
2337
  "name": "webmozart/assert",
2338
+ "version": "1.9.1",
2339
  "source": {
2340
  "type": "git",
2341
  "url": "https://github.com/webmozart/assert.git",
2342
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
2343
  },
2344
  "dist": {
2345
  "type": "zip",
2346
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
2347
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
2348
  "shasum": ""
2349
  },
2350
  "require": {
2351
+ "php": "^5.3.3 || ^7.0 || ^8.0",
2352
  "symfony/polyfill-ctype": "^1.8"
2353
  },
2354
  "conflict": {
2355
+ "phpstan/phpstan": "<0.12.20",
2356
+ "vimeo/psalm": "<3.9.1"
2357
  },
2358
  "require-dev": {
2359
  "phpunit/phpunit": "^4.8.36 || ^7.5.13"
2380
  "check",
2381
  "validate"
2382
  ],
2383
+ "time": "2020-07-08T17:02:28+00:00"
2384
  }
2385
  ],
2386
  "aliases": [],
core/FacebookPluginConfig.php CHANGED
@@ -20,7 +20,7 @@ namespace FacebookPixelPlugin\Core;
20
  defined('ABSPATH') or die('Direct access not allowed');
21
 
22
  class FacebookPluginConfig {
23
- const PLUGIN_VERSION = '2.1.0';
24
  const SOURCE = 'wordpress';
25
  const TEXT_DOMAIN = 'official-facebook-pixel';
26
 
@@ -34,7 +34,7 @@ class FacebookPluginConfig {
34
  const ADMIN_OPTION_GROUP = 'facebook_option_group';
35
  const ADMIN_PAGE_TITLE = 'Facebook Pixel Settings';
36
  const ADMIN_PRIVACY_URL = 'https://developers.facebook.com/docs/privacy/';
37
- const ADMIN_S2S_URL = 'https://developers.facebook.com/docs/marketing-api/facebook-pixel/server-side-api';
38
  const ADMIN_SECTION_ID = 'facebook_settings_section';
39
 
40
  const DEFAULT_PIXEL_ID = null;
20
  defined('ABSPATH') or die('Direct access not allowed');
21
 
22
  class FacebookPluginConfig {
23
+ const PLUGIN_VERSION = '2.2.0';
24
  const SOURCE = 'wordpress';
25
  const TEXT_DOMAIN = 'official-facebook-pixel';
26
 
34
  const ADMIN_OPTION_GROUP = 'facebook_option_group';
35
  const ADMIN_PAGE_TITLE = 'Facebook Pixel Settings';
36
  const ADMIN_PRIVACY_URL = 'https://developers.facebook.com/docs/privacy/';
37
+ const ADMIN_S2S_URL = 'https://developers.facebook.com/docs/marketing-api/conversions-api';
38
  const ADMIN_SECTION_ID = 'facebook_settings_section';
39
 
40
  const DEFAULT_PIXEL_ID = null;
core/FacebookServerSideEvent.php CHANGED
@@ -49,6 +49,7 @@ class FacebookServerSideEvent {
49
  }
50
 
51
  public static function send($events) {
 
52
  if (empty($events)) {
53
  return;
54
  }
@@ -60,8 +61,8 @@ class FacebookServerSideEvent {
60
  $api = Api::init(null, null, $access_token);
61
 
62
  $request = (new EventRequest($pixel_id))
63
- ->setEvents($events)
64
- ->setPartnerAgent($agent);
65
 
66
  $response = $request->execute();
67
  }
49
  }
50
 
51
  public static function send($events) {
52
+ $events = apply_filters('before_conversions_api_event_sent', $events);
53
  if (empty($events)) {
54
  return;
55
  }
61
  $api = Api::init(null, null, $access_token);
62
 
63
  $request = (new EventRequest($pixel_id))
64
+ ->setEvents($events)
65
+ ->setPartnerAgent($agent);
66
 
67
  $response = $request->execute();
68
  }
core/FacebookWordpressSettingsPage.php CHANGED
@@ -90,7 +90,7 @@ class FacebookWordpressSettingsPage {
90
  FacebookPluginConfig::ADMIN_SECTION_ID);
91
  add_settings_field(
92
  FacebookPluginConfig::USE_S2S_KEY,
93
- 'Use Server-Side API?',
94
  array($this, 'useS2SFormField'),
95
  FacebookPluginConfig::ADMIN_MENU_SLUG,
96
  FacebookPluginConfig::ADMIN_SECTION_ID);
@@ -210,7 +210,7 @@ class FacebookWordpressSettingsPage {
210
  $link = sprintf(
211
  wp_kses(
212
  __(
213
- 'An access token is required to use the server-side API.<br>
214
  <a href="%s" target="_blank"> Generate Access Token</a>',
215
  FacebookPluginConfig::TEXT_DOMAIN),
216
  array('a' => array('href' => array(), 'target' => array()))),
@@ -238,7 +238,7 @@ class FacebookWordpressSettingsPage {
238
  ',
239
  esc_html__(
240
  'Also send events directly from your web server to Facebook through the
241
- server-side API. This can help you capture more events.',
242
  FacebookPluginConfig::TEXT_DOMAIN),
243
  $link);
244
  }
@@ -311,7 +311,7 @@ class FacebookWordpressSettingsPage {
311
 
312
  public function serverSideApiNotEnabledNotice() {
313
  $this->setNotice(
314
- __('The Facebook Pixel plugin now includes support for the Server-Side
315
  API, which lets you send events directly from your page\'s website.
316
  Click <a href="%s">here</a> to configure the plugin.',
317
  FacebookPluginConfig::TEXT_DOMAIN),
90
  FacebookPluginConfig::ADMIN_SECTION_ID);
91
  add_settings_field(
92
  FacebookPluginConfig::USE_S2S_KEY,
93
+ 'Use Conversions API?',
94
  array($this, 'useS2SFormField'),
95
  FacebookPluginConfig::ADMIN_MENU_SLUG,
96
  FacebookPluginConfig::ADMIN_SECTION_ID);
210
  $link = sprintf(
211
  wp_kses(
212
  __(
213
+ 'An access token is required to use the Conversions API.<br>
214
  <a href="%s" target="_blank"> Generate Access Token</a>',
215
  FacebookPluginConfig::TEXT_DOMAIN),
216
  array('a' => array('href' => array(), 'target' => array()))),
238
  ',
239
  esc_html__(
240
  'Also send events directly from your web server to Facebook through the
241
+ Conversions API. This can help you capture more events.',
242
  FacebookPluginConfig::TEXT_DOMAIN),
243
  $link);
244
  }
311
 
312
  public function serverSideApiNotEnabledNotice() {
313
  $this->setNotice(
314
+ __('The Facebook Pixel plugin now includes support for the Conversions
315
  API, which lets you send events directly from your page\'s website.
316
  Click <a href="%s">here</a> to configure the plugin.',
317
  FacebookPluginConfig::TEXT_DOMAIN),
core/ServerEventFactory.php CHANGED
@@ -163,6 +163,26 @@ class ServerEventFactory {
163
  if (!empty($data['phone'])) {
164
  $user_data->setPhone($data['phone']);
165
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
  }
167
 
168
  $custom_data = $event->getCustomData();
@@ -191,6 +211,10 @@ class ServerEventFactory {
191
  if (!empty($data['num_items'])) {
192
  $custom_data->setNumItems($data['num_items']);
193
  }
 
 
 
 
194
  } catch (\Exception $e) {
195
  // Need to log
196
  }
163
  if (!empty($data['phone'])) {
164
  $user_data->setPhone($data['phone']);
165
  }
166
+
167
+ if(!empty($data['state'])){
168
+ $user_data->setState($data['state']);
169
+ }
170
+
171
+ if(!empty($data['country'])){
172
+ $user_data->setCountryCode($data['country']);
173
+ }
174
+
175
+ if(!empty($data['city'])){
176
+ $user_data->setCity($data['city']);
177
+ }
178
+
179
+ if(!empty($data['zip'])){
180
+ $user_data->setZipCode($data['zip']);
181
+ }
182
+
183
+ if(!empty($data['gender'])){
184
+ $user_data->setGender($data['gender']);
185
+ }
186
  }
187
 
188
  $custom_data = $event->getCustomData();
211
  if (!empty($data['num_items'])) {
212
  $custom_data->setNumItems($data['num_items']);
213
  }
214
+
215
+ if (!empty($data['content_name'])) {
216
+ $custom_data->setContentName($data['content_name']);
217
+ }
218
  } catch (\Exception $e) {
219
  // Need to log
220
  }
facebook-for-wordpress.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: <strong><em>***ATTENTION: After upgrade the plugin may be deactivated due to a known issue, to workaround please refresh this page and activate plugin.***</em></strong> The Facebook pixel is an analytics tool that helps you measure the effectiveness of your advertising. You can use the Facebook pixel to understand the actions people are taking on your website and reach audiences you care about.
6
  * Author: Facebook
7
  * Author URI: https://www.facebook.com/
8
- * Version: 2.1.0
9
  * Text Domain: official-facebook-pixel
10
  */
11
 
5
  * Description: <strong><em>***ATTENTION: After upgrade the plugin may be deactivated due to a known issue, to workaround please refresh this page and activate plugin.***</em></strong> The Facebook pixel is an analytics tool that helps you measure the effectiveness of your advertising. You can use the Facebook pixel to understand the actions people are taking on your website and reach audiences you care about.
6
  * Author: Facebook
7
  * Author URI: https://www.facebook.com/
8
+ * Version: 2.2.0
9
  * Text Domain: official-facebook-pixel
10
  */
11
 
integration/FacebookWordpressCalderaForm.php CHANGED
@@ -57,8 +57,8 @@ class FacebookWordpressCalderaForm extends FacebookWordpressIntegrationBase {
57
  <!-- Facebook Pixel Event Code -->
58
  %s
59
  <!-- End Facebook Pixel Event Code -->
60
- ",
61
- $code);
62
 
63
  $out['html'] .= $code;
64
  return $out;
@@ -68,12 +68,12 @@ class FacebookWordpressCalderaForm extends FacebookWordpressIntegrationBase {
68
  if (empty($form)) {
69
  return array();
70
  }
71
-
72
  return array(
73
  'email' => self::getEmail($form),
74
  'first_name' => self::getFirstName($form),
75
  'last_name' => self::getLastName($form),
76
- 'phone' => self::getPhone($form)
 
77
  );
78
  }
79
 
@@ -89,6 +89,10 @@ class FacebookWordpressCalderaForm extends FacebookWordpressIntegrationBase {
89
  return self::getFieldValue($form, 'slug', 'last_name');
90
  }
91
 
 
 
 
 
92
  private static function getPhone($form) {
93
  // Extract phone number from the better version first, fallback to the basic
94
  // version if it's null
57
  <!-- Facebook Pixel Event Code -->
58
  %s
59
  <!-- End Facebook Pixel Event Code -->
60
+ ",
61
+ $code);
62
 
63
  $out['html'] .= $code;
64
  return $out;
68
  if (empty($form)) {
69
  return array();
70
  }
 
71
  return array(
72
  'email' => self::getEmail($form),
73
  'first_name' => self::getFirstName($form),
74
  'last_name' => self::getLastName($form),
75
+ 'phone' => self::getPhone($form),
76
+ 'state' => self::getState($form)
77
  );
78
  }
79
 
89
  return self::getFieldValue($form, 'slug', 'last_name');
90
  }
91
 
92
+ private static function getState($form){
93
+ return self::getFieldValue($form, 'type', 'states');
94
+ }
95
+
96
  private static function getPhone($form) {
97
  // Extract phone number from the better version first, fallback to the basic
98
  // version if it's null
integration/FacebookWordpressEasyDigitalDownloads.php CHANGED
@@ -24,6 +24,8 @@ use FacebookPixelPlugin\Core\FacebookPluginUtils;
24
  use FacebookPixelPlugin\Core\ServerEventFactory;
25
  use FacebookPixelPlugin\Core\FacebookServerSideEvent;
26
  use FacebookPixelPlugin\Core\PixelRenderer;
 
 
27
 
28
  class FacebookWordpressEasyDigitalDownloads extends FacebookWordpressIntegrationBase {
29
  const PLUGIN_FILE = 'easy-digital-downloads/easy-digital-downloads.php';
@@ -40,6 +42,7 @@ jQuery(document).ready(function ($) {
40
  var form = _this.parents('form').last();
41
  var value = 0;
42
  var variable_price = _this.data('variable-price');
 
43
  if( variable_price == 'yes' ) {
44
  form.find('.edd_price_option_' + download + ':checked', form).each(function(index) {
45
  value = $(this).data('price');
@@ -57,17 +60,46 @@ jQuery(document).ready(function ($) {
57
  '%s': '%s',
58
  'value': value
59
  };
60
- %s
 
 
 
 
 
 
61
  });
62
  });
63
  ";
64
 
65
  public static function injectPixelCode() {
66
- // AddToCart
67
- self::addPixelFireForHook(array(
68
- 'hook_name' => 'edd_after_download_content',
69
- 'classname' => __CLASS__,
70
- 'inject_function' => 'injectAddToCartEvent'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
72
  // InitiateCheckout
73
  self::addPixelFireForHook(array(
@@ -82,23 +114,59 @@ jQuery(document).ready(function ($) {
82
  10, 2);
83
 
84
  // ViewContent
85
- self::addPixelFireForHook(array(
86
- 'hook_name' => 'edd_after_download_content',
87
- 'classname' => __CLASS__,
88
- 'inject_function' => 'injectViewContentEvent'));
 
 
 
 
 
 
 
 
 
 
 
89
  }
90
 
91
- public static function injectAddToCartEvent($download_id) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  if (FacebookPluginUtils::isAdmin()) {
93
  return;
94
  }
95
 
96
- $pixel_code = FacebookPixel::getPixelAddToCartCode('param', self::TRACKING_NAME, false);
97
  $listener_code = sprintf(
98
  self::$addToCartJS,
99
  FacebookPixel::FB_INTEGRATION_TRACKING_KEY,
100
- self::TRACKING_NAME,
101
- $pixel_code);
102
 
103
  printf("
104
  <!-- Facebook Pixel Event Code -->
@@ -169,25 +237,16 @@ jQuery(document).ready(function ($) {
169
  return;
170
  }
171
 
172
- $currency = edd_get_currency();
173
- if (get_post_meta($download_id, '_variable_pricing', true)) { // variable price
174
- $prices = get_post_meta($download_id, 'edd_variable_prices', true);
175
- $price = array_shift($prices);
176
- $value = $price['amount'];
177
- } else {
178
- $value = get_post_meta($download_id, 'edd_price', true);
179
- }
180
- if (!$value) {
181
- $value = 0;
182
- }
183
- $param = array(
184
- 'content_ids' => array($download_id),
185
- 'content_type' => 'product',
186
- 'currency' => $currency,
187
- 'value' => $value,
188
  );
189
- $code = FacebookPixel::getPixelViewContentCode($param, self::TRACKING_NAME);
190
 
 
 
 
191
  printf("
192
  <!-- Facebook Pixel Event Code -->
193
  %s
@@ -230,4 +289,51 @@ jQuery(document).ready(function ($) {
230
 
231
  return $event_data;
232
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
233
  }
24
  use FacebookPixelPlugin\Core\ServerEventFactory;
25
  use FacebookPixelPlugin\Core\FacebookServerSideEvent;
26
  use FacebookPixelPlugin\Core\PixelRenderer;
27
+ use FacebookPixelPlugin\Core\FacebookWordpressOptions;
28
+ use FacebookPixelPlugin\Core\EventIdGenerator;
29
 
30
  class FacebookWordpressEasyDigitalDownloads extends FacebookWordpressIntegrationBase {
31
  const PLUGIN_FILE = 'easy-digital-downloads/easy-digital-downloads.php';
42
  var form = _this.parents('form').last();
43
  var value = 0;
44
  var variable_price = _this.data('variable-price');
45
+ var event_id = form.find(\"input[name='facebook_event_id']\").val();
46
  if( variable_price == 'yes' ) {
47
  form.find('.edd_price_option_' + download + ':checked', form).each(function(index) {
48
  value = $(this).data('price');
60
  '%s': '%s',
61
  'value': value
62
  };
63
+
64
+ if(event_id){
65
+ fbq('track', 'AddToCart', param, {'eventID': event_id});
66
+ }
67
+ else{
68
+ fbq('track', 'AddToCart', param);
69
+ }
70
  });
71
  });
72
  ";
73
 
74
  public static function injectPixelCode() {
75
+ // AddToCart JS listener
76
+ add_action(
77
+ 'edd_after_download_content',
78
+ array(__CLASS__, 'injectAddToCartListener')
79
+ );
80
+ add_action(
81
+ 'edd_downloads_list_after',
82
+ array(__CLASS__, 'injectAddToCartListener')
83
+ );
84
+
85
+ //Hooks to AddToCart ajax requests
86
+ add_action(
87
+ 'wp_ajax_edd_add_to_cart',
88
+ array(__CLASS__, 'injectAddToCartEventAjax'),
89
+ 5
90
+ );
91
+
92
+ add_action(
93
+ 'wp_ajax_nopriv_edd_add_to_cart',
94
+ array(__CLASS__, 'injectAddToCartEventAjax'),
95
+ 5
96
+ );
97
+
98
+ //Injects a hidden field with event id to send it in AddToCart ajax request
99
+ add_action(
100
+ 'edd_purchase_link_top',
101
+ array(__CLASS__, 'injectAddToCartEventId')
102
+ );
103
 
104
  // InitiateCheckout
105
  self::addPixelFireForHook(array(
114
  10, 2);
115
 
116
  // ViewContent
117
+ add_action(
118
+ 'edd_after_download_content',
119
+ array(__CLASS__, 'injectViewContentEvent'),
120
+ 40, 1
121
+ );
122
+ }
123
+
124
+ public static function injectAddToCartEventId(){
125
+ if(FacebookPluginUtils::isAdmin()
126
+ || !FacebookWordpressOptions::getUseS2S()){
127
+ return;
128
+ }
129
+ $eventId = EventIdGenerator::guidv4();
130
+ printf("<input type=\"hidden\" name=\"facebook_event_id\" value=\"%s\">",
131
+ $eventId);
132
  }
133
 
134
+ public static function injectAddToCartEventAjax(){
135
+ if( isset($_POST['nonce']) && isset($_POST['download_id'])
136
+ && isset($_POST['post_data'])){
137
+ $download_id = absint( $_POST['download_id'] );
138
+ //Adding form validations
139
+ $nonce = sanitize_text_field( $_POST['nonce'] );
140
+ if( wp_verify_nonce($nonce, 'edd-add-to-cart-'.$download_id) === false ){
141
+ return;
142
+ }
143
+ //Getting form data
144
+ parse_str( $_POST['post_data'], $post_data );
145
+ if(isset($post_data['facebook_event_id'])){
146
+ //Starting CAPI event creation
147
+ $event_id = $post_data['facebook_event_id'];
148
+ $server_event = ServerEventFactory::safeCreateEvent(
149
+ 'AddToCart',
150
+ array(__CLASS__, 'createAddToCartEvent'),
151
+ array($download_id),
152
+ self::TRACKING_NAME
153
+ );
154
+ $server_event->setEventId($event_id);
155
+ FacebookServerSideEvent::getInstance()->track($server_event);
156
+ }
157
+ }
158
+ }
159
+
160
+ public static function injectAddToCartListener($download_id) {
161
  if (FacebookPluginUtils::isAdmin()) {
162
  return;
163
  }
164
 
 
165
  $listener_code = sprintf(
166
  self::$addToCartJS,
167
  FacebookPixel::FB_INTEGRATION_TRACKING_KEY,
168
+ self::TRACKING_NAME
169
+ );
170
 
171
  printf("
172
  <!-- Facebook Pixel Event Code -->
237
  return;
238
  }
239
 
240
+ $server_event = ServerEventFactory::safeCreateEvent(
241
+ 'ViewContent',
242
+ array(__CLASS__, 'createViewContentEvent'),
243
+ array($download_id),
244
+ self::TRACKING_NAME
 
 
 
 
 
 
 
 
 
 
 
245
  );
 
246
 
247
+ FacebookServerSideEvent::getInstance()->track($server_event);
248
+
249
+ $code = PixelRenderer::render(array($server_event), self::TRACKING_NAME);
250
  printf("
251
  <!-- Facebook Pixel Event Code -->
252
  %s
289
 
290
  return $event_data;
291
  }
292
+
293
+ public static function createViewContentEvent($download_id){
294
+ $event_data = FacebookPluginUtils::getLoggedInUserInfo();
295
+ $currency = EDDUtils::getCurrency();
296
+ $download = edd_get_download($download_id);
297
+ $title = $download ? $download->post_title : '';
298
+
299
+ if (get_post_meta($download_id, '_variable_pricing', true)) {
300
+ $prices = get_post_meta($download_id, 'edd_variable_prices', true);
301
+ $price = array_shift($prices);
302
+ $value = $price['amount'];
303
+ } else {
304
+ $value = get_post_meta($download_id, 'edd_price', true);
305
+ }
306
+ if (!$value) {
307
+ $value = 0;
308
+ }
309
+ $event_data['content_ids'] = [(string)$download_id];
310
+ $event_data['content_type'] = 'product';
311
+ $event_data['currency'] = $currency;
312
+ $event_data['value'] = floatval($value);
313
+ $event_data['content_name'] = $title;
314
+ return $event_data;
315
+ }
316
+
317
+ public static function createAddToCartEvent($download_id){
318
+ $event_data = FacebookPluginUtils::getLoggedInUserInfo();
319
+ $currency = EDDUtils::getCurrency();
320
+ $download = edd_get_download($download_id);
321
+ $title = $download ? $download->post_title : '';
322
+ if ( get_post_meta($download_id, '_variable_pricing', true) ) {
323
+ $prices = get_post_meta($download_id, 'edd_variable_prices', true);
324
+ $price = array_shift($prices);
325
+ $value = $price['amount'];
326
+ } else {
327
+ $value = get_post_meta($download_id, 'edd_price', true);
328
+ }
329
+ if (!$value) {
330
+ $value = 0;
331
+ }
332
+ $event_data['content_ids'] = [(string)$download_id];
333
+ $event_data['content_type'] = 'product';
334
+ $event_data['currency'] = $currency;
335
+ $event_data['value'] = $value;
336
+ $event_data['content_name'] = $title;
337
+ return $event_data;
338
+ }
339
  }
integration/FacebookWordpressFormidableForm.php CHANGED
@@ -88,25 +88,21 @@ class FacebookWordpressFormidableForm extends FacebookWordpressIntegrationBase {
88
 
89
  $field_values = $entry_values->get_field_values();
90
  if (!empty($field_values)) {
91
- return array(
92
  'email' => self::getEmail($field_values),
93
  'first_name' => self::getFirstName($field_values),
94
- 'last_name' => self::getLastName($field_values)
 
95
  );
 
 
96
  }
97
 
98
  return array();
99
  }
100
 
101
  private static function getEmail($field_values) {
102
- foreach ($field_values as $field_value) {
103
- $field = $field_value->get_field();
104
- if ($field->type == 'email') {
105
- return $field_value->get_saved_value();
106
- }
107
- }
108
-
109
- return null;
110
  }
111
 
112
  private static function getFirstName($field_values) {
@@ -117,6 +113,46 @@ class FacebookWordpressFormidableForm extends FacebookWordpressIntegrationBase {
117
  return self::getFieldValue($field_values, 'text', 'Last', 'Last');
118
  }
119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  private static function getFieldValue(
121
  $field_values,
122
  $type,
88
 
89
  $field_values = $entry_values->get_field_values();
90
  if (!empty($field_values)) {
91
+ $user_data = array(
92
  'email' => self::getEmail($field_values),
93
  'first_name' => self::getFirstName($field_values),
94
+ 'last_name' => self::getLastName($field_values),
95
+ 'phone' => self::getPhone($field_values)
96
  );
97
+ $address_data = self::getAddressInformation($field_values);
98
+ return array_merge($user_data, $address_data);
99
  }
100
 
101
  return array();
102
  }
103
 
104
  private static function getEmail($field_values) {
105
+ return self::getFieldValueByType($field_values, 'email');
 
 
 
 
 
 
 
106
  }
107
 
108
  private static function getFirstName($field_values) {
113
  return self::getFieldValue($field_values, 'text', 'Last', 'Last');
114
  }
115
 
116
+ private static function getPhone($field_values) {
117
+ return self::getFieldValueByType($field_values, 'phone');
118
+ }
119
+
120
+ private static function getAddressInformation($field_values){
121
+ $address_saved_value = self::getFieldValueByType($field_values, 'address');
122
+ $address_data = array();
123
+ if($address_saved_value){
124
+ if(array_key_exists('city', $address_saved_value)){
125
+ $address_data['city'] = $address_saved_value['city'];
126
+ }
127
+ if(array_key_exists('state', $address_saved_value)){
128
+ $address_data['state'] = $address_saved_value['state'];
129
+ }
130
+ // Validating ISO code
131
+ // In current version, country field saves the full name
132
+ if(
133
+ array_key_exists('country', $address_saved_value)
134
+ && strlen($address_saved_value['country']) == 2
135
+ ){
136
+ $address_data['country'] = $address_saved_value['country'];
137
+ }
138
+ if(array_key_exists('zip', $address_saved_value)){
139
+ $address_data['zip'] = $address_saved_value['zip'];
140
+ }
141
+ }
142
+ return $address_data;
143
+ }
144
+
145
+ private static function getFieldValueByType($field_values, $type){
146
+ foreach ($field_values as $field_value) {
147
+ $field = $field_value->get_field();
148
+ if ($field->type == $type) {
149
+ return $field_value->get_saved_value();
150
+ }
151
+ }
152
+
153
+ return null;
154
+ }
155
+
156
  private static function getFieldValue(
157
  $field_values,
158
  $type,
integration/FacebookWordpressGravityForms.php CHANGED
@@ -84,21 +84,70 @@ class FacebookWordpressGravityForms extends FacebookWordpressIntegrationBase {
84
  if (empty($form) || empty($entry)) {
85
  return array();
86
  }
87
-
88
- return array(
89
  'email' => self::getEmail($form, $entry),
90
  'first_name' => self::getFirstName($form, $entry),
91
- 'last_name' => self::getLastName($form, $entry)
 
92
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  }
94
 
95
  private static function getEmail($form, $entry) {
 
 
 
 
96
  if (empty($form['fields'])) {
97
  return null;
98
  }
99
 
100
  foreach ($form['fields'] as $field) {
101
- if ($field->type == 'email') {
102
  return $entry[$field->id];
103
  }
104
  }
84
  if (empty($form) || empty($entry)) {
85
  return array();
86
  }
87
+ $user_data = array(
 
88
  'email' => self::getEmail($form, $entry),
89
  'first_name' => self::getFirstName($form, $entry),
90
+ 'last_name' => self::getLastName($form, $entry),
91
+ 'phone' => self::getPhone($form, $entry)
92
  );
93
+ $address_data = self::getAddressData($form, $entry);
94
+ return array_merge($user_data, $address_data);
95
+ }
96
+
97
+ private static function getAddressData($form, $entry){
98
+ if (empty($form['fields'])) {
99
+ return array();
100
+ }
101
+
102
+ $address_data = array();
103
+
104
+ foreach ($form['fields'] as $field) {
105
+ if ($field->type == 'address') {
106
+ if($field->inputs){
107
+ foreach($field->inputs as $input){
108
+ if(
109
+ array_key_exists('label', $input)
110
+ && $input['label'] != null
111
+ ){
112
+ if($input['label'] == 'City'){
113
+ $address_data['city'] = $entry[$input['id']];
114
+ }
115
+ else if($input['label'] == 'State / Province'){
116
+ $address_data['state'] = $entry[$input['id']];
117
+ }
118
+ else if($input['label'] == 'ZIP / Postal Code'){
119
+ $address_data['zip'] = $entry[$input['id']];
120
+ }
121
+ else if($input['label'] == 'Country'){
122
+ if(strlen($entry[$input['id']]) == 2){
123
+ $address_data['country'] = $entry[$input['id']];
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
129
+ break;
130
+ }
131
+ }
132
+
133
+ return $address_data;
134
+ }
135
+
136
+ private static function getPhone($form, $entry) {
137
+ return self::getFieldByType($form, $entry, 'phone');
138
  }
139
 
140
  private static function getEmail($form, $entry) {
141
+ return self::getFieldByType($form, $entry, 'email');
142
+ }
143
+
144
+ private static function getFieldByType($form, $entry, $type){
145
  if (empty($form['fields'])) {
146
  return null;
147
  }
148
 
149
  foreach ($form['fields'] as $field) {
150
+ if ($field->type == $type) {
151
  return $entry[$field->id];
152
  }
153
  }
integration/FacebookWordpressMailchimpForWp.php CHANGED
@@ -73,6 +73,35 @@ class FacebookWordpressMailchimpForWp extends FacebookWordpressIntegrationBase {
73
  $event_data['last_name'] = $_POST['LNAME'];
74
  }
75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  return $event_data;
77
  }
78
  }
73
  $event_data['last_name'] = $_POST['LNAME'];
74
  }
75
 
76
+ if(!empty($_POST['PHONE'])){
77
+ $event_data['phone'] = $_POST['PHONE'];
78
+ }
79
+
80
+ if(!empty($_POST['ADDRESS'])){
81
+ $address_data = $_POST['ADDRESS'];
82
+
83
+ if(!empty($address_data['city'])){
84
+ $event_data['city'] = $address_data['city'];
85
+ }
86
+
87
+ if(!empty($address_data['state'])){
88
+ $event_data['state'] = $address_data['state'];
89
+ }
90
+
91
+ if(!empty($address_data['zip'])){
92
+ $event_data['zip'] = $address_data['zip'];
93
+ }
94
+
95
+ // You can edit the country field in the plugin editor
96
+ // and do not use ISO code
97
+ // Validating this case
98
+ if(
99
+ !empty($address_data['country'])
100
+ && strlen($address_data['country'])==2
101
+ ){
102
+ $event_data['country'] = $address_data['country'];
103
+ }
104
+ }
105
  return $event_data;
106
  }
107
  }
integration/FacebookWordpressNinjaForms.php CHANGED
@@ -85,12 +85,25 @@ class FacebookWordpressNinjaForms extends FacebookWordpressIntegrationBase {
85
  return array();
86
  }
87
 
 
88
  $name = self::getName($form_data);
89
- return array(
90
- 'email' => self::getEmail($form_data),
91
- 'first_name' => $name[0],
92
- 'last_name' => $name[1]
93
- );
 
 
 
 
 
 
 
 
 
 
 
 
94
  }
95
 
96
  private static function getEmail($form_data) {
@@ -98,7 +111,48 @@ class FacebookWordpressNinjaForms extends FacebookWordpressIntegrationBase {
98
  }
99
 
100
  private static function getName($form_data) {
101
- return ServerEventFactory::splitName(self::getField($form_data, 'name'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  }
103
 
104
  private static function getField($form_data, $key) {
@@ -107,7 +161,7 @@ class FacebookWordpressNinjaForms extends FacebookWordpressIntegrationBase {
107
  }
108
 
109
  foreach ($form_data['fields'] as $field) {
110
- if ($field['key'] == $key) {
111
  return $field['value'];
112
  }
113
  }
85
  return array();
86
  }
87
 
88
+ $event_data = array();
89
  $name = self::getName($form_data);
90
+ if( $name ){
91
+ $event_data['first_name'] = $name[0];
92
+ $event_data['last_name'] = $name[1];
93
+ }
94
+ else{
95
+ $event_data['first_name'] = self::getFirstName($form_data);
96
+ $event_data['last_name'] = self::getLastName($form_data);
97
+ }
98
+ $event_data['email'] = self::getEmail($form_data);
99
+ $event_data['phone'] = self::getPhone($form_data);
100
+ $event_data['city'] = self::getCity($form_data);
101
+ $event_data['zip'] = self::getZipCode($form_data);
102
+ $event_data['state'] = self::getState($form_data);
103
+ $event_data['country'] = self::getCountry($form_data);
104
+ $event_data['gender'] = self::getGender($form_data);
105
+
106
+ return $event_data;
107
  }
108
 
109
  private static function getEmail($form_data) {
111
  }
112
 
113
  private static function getName($form_data) {
114
+ $name = self::getField($form_data, 'name');
115
+ if($name){
116
+ return ServerEventFactory::splitName($name);
117
+ }
118
+ return null;
119
+ }
120
+
121
+ private static function getFirstName($form_data){
122
+ return self::getField($form_data, 'firstname');
123
+ }
124
+
125
+ private static function getLastName($form_data){
126
+ return self::getField($form_data, 'lastname');
127
+ }
128
+
129
+ private static function getPhone($form_data) {
130
+ return self::getField($form_data, 'phone');
131
+ }
132
+
133
+ private static function getCity($form_data) {
134
+ return self::getField($form_data, 'city');
135
+ }
136
+
137
+ private static function getZipCode($form_data) {
138
+ return self::getField($form_data, 'zip');
139
+ }
140
+
141
+ private static function getState($form_data) {
142
+ return self::getField($form_data, 'liststate');
143
+ }
144
+
145
+ private static function getCountry($form_data) {
146
+ return self::getField($form_data, 'listcountry');
147
+ }
148
+
149
+ private static function getGender($form_data) {
150
+ return self::getField($form_data, 'gender');
151
+ }
152
+
153
+ private static function hasPrefix($string, $prefix){
154
+ $len = strlen($prefix);
155
+ return substr($string, 0, $len) === $prefix;
156
  }
157
 
158
  private static function getField($form_data, $key) {
161
  }
162
 
163
  foreach ($form_data['fields'] as $field) {
164
+ if ( self::hasPrefix( $field['key'], $key) ) {
165
  return $field['value'];
166
  }
167
  }
integration/FacebookWordpressWPForms.php CHANGED
@@ -85,17 +85,59 @@ class FacebookWordpressWPForms extends FacebookWordpressIntegrationBase {
85
 
86
  $name = self::getName($entry, $form_data);
87
 
88
- return array(
89
  'email' => self::getEmail($entry, $form_data),
90
  'first_name' => !empty($name) ? $name[0] : null,
91
- 'last_name' => !empty($name) ? $name[1] : null
 
92
  );
 
 
 
 
 
 
 
 
 
 
 
93
  }
94
 
95
  private static function getEmail($entry, $form_data) {
96
  return self::getField($entry, $form_data, 'email');
97
  }
98