Skip to content

Commit ea7ad81

Browse files
committed
Update the generateInit method on FbqGenerator class to make it more flexible
1 parent 96a4b64 commit ea7ad81

File tree

3 files changed

+46
-12
lines changed

3 files changed

+46
-12
lines changed

src/Generator/FbqGenerator.php

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,38 @@
44

55
namespace Setono\MetaConversionsApi\Generator;
66

7+
use Psr\Log\LoggerAwareInterface;
8+
use Psr\Log\LoggerInterface;
9+
use Psr\Log\NullLogger;
710
use Setono\MetaConversionsApi\Event\Event;
811
use Setono\MetaConversionsApi\Event\Parameters;
912

10-
final class FbqGenerator implements FbqGeneratorInterface
13+
final class FbqGenerator implements FbqGeneratorInterface, LoggerAwareInterface
1114
{
12-
public function generateInit(Event $event, bool $includePageView = true, bool $includeScriptTag = false): string
15+
private LoggerInterface $logger;
16+
17+
public function __construct()
1318
{
14-
$json = json_encode($event->userData->getPayload(Parameters::PAYLOAD_CONTEXT_BROWSER), \JSON_THROW_ON_ERROR);
19+
$this->logger = new NullLogger();
20+
}
21+
22+
public function generateInit(
23+
array $pixels,
24+
array $userData,
25+
bool $includePageView = true,
26+
bool $includeScriptTag = true
27+
): string {
28+
try {
29+
$json = json_encode($userData, \JSON_THROW_ON_ERROR);
30+
} catch (\JsonException $e) {
31+
$this->logger->error($e->getMessage());
32+
33+
return '';
34+
}
1535

1636
$str = '';
1737

18-
foreach ($event->pixels as $pixel) {
38+
foreach ($pixels as $pixel) {
1939
$str .= sprintf("fbq('init', '%s', %s);", $pixel->id, $json);
2040
}
2141

@@ -30,7 +50,7 @@ public function generateInit(Event $event, bool $includePageView = true, bool $i
3050
return $str;
3151
}
3252

33-
public function generateTrack(Event $event, bool $includeScriptTag = false): string
53+
public function generateTrack(Event $event, bool $includeScriptTag = true): string
3454
{
3555
$str = sprintf(
3656
"fbq('%s', '%s', %s, {eventID: '%s'});",
@@ -46,4 +66,9 @@ public function generateTrack(Event $event, bool $includeScriptTag = false): str
4666

4767
return $str;
4868
}
69+
70+
public function setLogger(LoggerInterface $logger): void
71+
{
72+
$this->logger = $logger;
73+
}
4974
}

src/Generator/FbqGeneratorInterface.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,24 @@
55
namespace Setono\MetaConversionsApi\Generator;
66

77
use Setono\MetaConversionsApi\Event\Event;
8+
use Setono\MetaConversionsApi\Pixel\Pixel;
89

910
interface FbqGeneratorInterface
1011
{
1112
/**
12-
* Will generate the fbq() init call based on the given event and for each pixel ids defined in the event
13+
* Will generate the fbq() init call based on the given pixels. By default, this also includes the page view event
14+
*
15+
* @param list<Pixel> $pixels
1316
*/
14-
public function generateInit(Event $event, bool $includePageView = true, bool $includeScriptTag = false): string;
17+
public function generateInit(
18+
array $pixels,
19+
array $userData,
20+
bool $includePageView = true,
21+
bool $includeScriptTag = true
22+
): string;
1523

1624
/**
1725
* Will generate the fbq() tracking call based on the given event and for each pixel ids defined in the event
1826
*/
19-
public function generateTrack(Event $event, bool $includeScriptTag = false): string;
27+
public function generateTrack(Event $event, bool $includeScriptTag = true): string;
2028
}

tests/Generator/FbqGeneratorTest.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use PHPUnit\Framework\TestCase;
88
use Setono\MetaConversionsApi\Event\Event;
9+
use Setono\MetaConversionsApi\Event\Parameters;
910
use Setono\MetaConversionsApi\Pixel\Pixel;
1011

1112
final class FbqGeneratorTest extends TestCase
@@ -27,12 +28,12 @@ public function it_generates_init(): void
2728
self::assertSame(<<<EXPECTED
2829
fbq('init', '111', {"db":["cccd631dbe89ae6c982a960f248fabab8a4ae7f899853a3ea5bceef8ca1d6585"]});fbq('init', '222', {"db":["cccd631dbe89ae6c982a960f248fabab8a4ae7f899853a3ea5bceef8ca1d6585"]});fbq('track', 'PageView');
2930
EXPECTED
30-
, $generator->generateInit($event));
31+
, $generator->generateInit($event->pixels, $event->userData->getPayload(Parameters::PAYLOAD_CONTEXT_BROWSER), true, false));
3132

3233
self::assertSame(<<<EXPECTED
3334
<script>fbq('init', '111', {"db":["cccd631dbe89ae6c982a960f248fabab8a4ae7f899853a3ea5bceef8ca1d6585"]});fbq('init', '222', {"db":["cccd631dbe89ae6c982a960f248fabab8a4ae7f899853a3ea5bceef8ca1d6585"]});fbq('track', 'PageView');</script>
3435
EXPECTED
35-
, $generator->generateInit($event, true, true));
36+
, $generator->generateInit($event->pixels, $event->userData->getPayload(Parameters::PAYLOAD_CONTEXT_BROWSER)));
3637
}
3738

3839
/**
@@ -50,11 +51,11 @@ public function it_generates_track(): void
5051
self::assertSame(<<<EXPECTED
5152
fbq('track', 'Purchase', {"content_ids":["PROD_1","PROD_2"],"value":110.51}, {eventID: 'event_id'});
5253
EXPECTED
53-
, $generator->generateTrack($event));
54+
, $generator->generateTrack($event, false));
5455

5556
self::assertSame(<<<EXPECTED
5657
<script>fbq('track', 'Purchase', {"content_ids":["PROD_1","PROD_2"],"value":110.51}, {eventID: 'event_id'});</script>
5758
EXPECTED
58-
, $generator->generateTrack($event, true));
59+
, $generator->generateTrack($event));
5960
}
6061
}

0 commit comments

Comments
 (0)