Skip to content

Commit 57fb2cc

Browse files
authored
Add user data to all server events (#756)
* Add user data to all server events * Fix tests
1 parent c0a6bd0 commit 57fb2cc

File tree

3 files changed

+43
-14
lines changed

3 files changed

+43
-14
lines changed

app/code/Meta/Conversion/Helper/AAMFieldsExtractorHelper.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -192,14 +192,15 @@ private function normalizeMatchingFields(array $userDataArray): array
192192
* Set user data
193193
*
194194
* @param Event $event
195-
* @param array $userDataArray
196-
* @return mixed
195+
* @param array|null $userDataArray
196+
* @param Customer|null $customer
197+
* @return Event
197198
* @SuppressWarnings(PHPMD)
198199
* Unable to refactor because UserData object from Facebook SDK does not have generic setter function
199200
*/
200-
public function setUserData($event, $userDataArray = null)
201+
public function setUserData($event, $userDataArray = null, $customer = null)
201202
{
202-
$userDataArray = $this->getNormalizedUserData(null, $userDataArray);
203+
$userDataArray = $this->getNormalizedUserData($customer, $userDataArray);
203204

204205
if (empty($userDataArray)) {
205206
return $event;

app/code/Meta/Conversion/Helper/ServerSideHelper.php

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,68 +20,90 @@
2020

2121
namespace Meta\Conversion\Helper;
2222

23+
use Magento\Customer\Model\Customer;
24+
use Magento\Customer\Model\Session as CustomerSession;
2325
use Magento\Store\Model\ScopeInterface;
2426
use Meta\BusinessExtension\Helper\FBEHelper;
2527
use Meta\BusinessExtension\Model\System\Config as SystemConfig;
2628
use FacebookAds\Api;
2729
use FacebookAds\Object\ServerSide\EventRequestAsync;
2830
use GuzzleHttp\Exception\RequestException;
29-
use FacebookAds\Object\ServerSide\Event;
3031

3132
/**
3233
* Helper to fire ServerSide Event.
34+
*
35+
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
3336
*/
3437
class ServerSideHelper
3538
{
3639
/**
3740
* @var FBEHelper
3841
*/
39-
private $fbeHelper;
42+
private FBEHelper $fbeHelper;
4043

4144
/**
4245
* @var AAMFieldsExtractorHelper
4346
*/
44-
private $aamFieldsExtractorHelper;
47+
private AAMFieldsExtractorHelper $aamFieldsExtractorHelper;
4548

4649
/**
4750
* @var array
4851
*/
49-
private $trackedEvents = [];
52+
private array $trackedEvents = [];
5053

5154
/**
5255
* @var SystemConfig
5356
*/
54-
private $systemConfig;
57+
private SystemConfig $systemConfig;
58+
59+
/**
60+
* @var CustomerSession
61+
*/
62+
private CustomerSession $customerSession;
5563

5664
/**
5765
* Constructor
5866
*
5967
* @param FBEHelper $fbeHelper
6068
* @param AAMFieldsExtractorHelper $aamFieldsExtractorHelper
6169
* @param SystemConfig $systemConfig
70+
* @param CustomerSession $customerSession
6271
*/
6372
public function __construct(
6473
FBEHelper $fbeHelper,
6574
AAMFieldsExtractorHelper $aamFieldsExtractorHelper,
66-
SystemConfig $systemConfig
75+
SystemConfig $systemConfig,
76+
CustomerSession $customerSession
6777
) {
6878
$this->fbeHelper = $fbeHelper;
6979
$this->aamFieldsExtractorHelper = $aamFieldsExtractorHelper;
7080
$this->systemConfig = $systemConfig;
81+
$this->customerSession = $customerSession;
82+
}
83+
84+
/**
85+
* Get logged in customer
86+
*
87+
* @return Customer|null
88+
*/
89+
public function getCustomer(): ?Customer
90+
{
91+
return $this->customerSession->isLoggedIn() ? $this->customerSession->getCustomer() : null;
7192
}
7293

7394
/**
7495
* Send event
7596
*
7697
* @param Event $event
7798
* @param array $userDataArray
99+
* @return void
78100
*/
79101
public function sendEvent($event, $userDataArray = null)
80102
{
81103
try {
82104
Api::init(null, null, $this->systemConfig->getAccessToken());
83105

84-
$event = $this->aamFieldsExtractorHelper->setUserData($event, $userDataArray);
106+
$event = $this->aamFieldsExtractorHelper->setUserData($event, $userDataArray, $this->getCustomer());
85107

86108
$this->trackedEvents[] = $event;
87109

app/code/Meta/Conversion/Test/Unit/Helper/ServerSideHelperTest.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
namespace Meta\Conversion\Test\Unit\Helper;
2222

23-
use Magento\Store\Model\StoreManagerInterface;
23+
use Magento\Customer\Model\Session as CustomerSession;
2424
use Magento\Framework\App\Request\Http;
2525
use Meta\Conversion\Helper\AAMFieldsExtractorHelper;
2626
use Meta\BusinessExtension\Helper\FBEHelper;
@@ -52,6 +52,11 @@ class ServerSideHelperTest extends TestCase
5252
*/
5353
private $systemConfig;
5454

55+
/**
56+
* @var MockObject
57+
*/
58+
private $customerSession;
59+
5560
/**
5661
* Used to reset or change values after running a test
5762
*
@@ -69,14 +74,15 @@ public function tearDown(): void
6974
public function setUp(): void
7075
{
7176
$this->fbeHelper = $this->createMock(FBEHelper::class);
72-
$this->aamFieldsExtractorHelper =
73-
$this->createMock(AAMFieldsExtractorHelper::class);
77+
$this->aamFieldsExtractorHelper = $this->createMock(AAMFieldsExtractorHelper::class);
7478
$this->systemConfig = $this->createMock(SystemConfig::class);
7579
$this->systemConfig->method('getAccessToken')->willReturn('abc');
80+
$this->customerSession = $this->createMock(CustomerSession::class);
7681
$this->serverSideHelper = new ServerSideHelper(
7782
$this->fbeHelper,
7883
$this->aamFieldsExtractorHelper,
7984
$this->systemConfig,
85+
$this->customerSession
8086
);
8187
}
8288

0 commit comments

Comments
 (0)