Skip to content

Commit d9da0e2

Browse files
author
David Verholen
committed
add vary data applicator mechanism with customer group example
1 parent 884284f commit d9da0e2

File tree

4 files changed

+80
-0
lines changed

4 files changed

+80
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Firegento\CacheWarmup\Model\VaryData\Applicator;
5+
6+
use Magento\Customer\Model\CustomerFactory;
7+
use Magento\Customer\Model\Session;
8+
9+
class CustomerGroupApplicator implements VaryDataApplicatorInterface
10+
{
11+
private const VARY_DATA_KEY = 'customer_group';
12+
13+
/**
14+
* @var Session
15+
*/
16+
private $customerSession;
17+
/**
18+
* @var CustomerFactory
19+
*/
20+
private $customerFactory;
21+
22+
public function __construct(Session $customerSession, CustomerFactory $customerFactory)
23+
{
24+
$this->customerSession = $customerSession;
25+
$this->customerFactory = $customerFactory;
26+
}
27+
28+
public function apply(array $varyData): void
29+
{
30+
$this->customerSession->clearStorage();
31+
$customerGroupId = $varyData[self::VARY_DATA_KEY];
32+
$customer = $this->customerFactory->create()->setGroupId($customerGroupId);
33+
$this->customerSession->setCustomerGroupId($customerGroupId);
34+
$this->customerSession->setCustomer($customer);
35+
}
36+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Firegento\CacheWarmup\Model\VaryData\Applicator;
5+
6+
interface VaryDataApplicatorInterface
7+
{
8+
public function apply(array $varyData): void;
9+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Firegento\CacheWarmup\Model\VaryData\Applicator;
5+
6+
class VaryDataApplicatorList
7+
{
8+
/**
9+
* @var VaryDataApplicatorInterface[]
10+
*/
11+
private $varyDataApplicators;
12+
13+
/**
14+
* VaryDataApplicatorList constructor.
15+
* @param VaryDataApplicatorInterface[] $varyDataApplicators
16+
*/
17+
public function __construct(array $varyDataApplicators = [])
18+
{
19+
$this->varyDataApplicators = $varyDataApplicators;
20+
}
21+
22+
public function applyAll(array $varyData): void
23+
{
24+
foreach ($this->varyDataApplicators as $varyDataApplicator) {
25+
$varyDataApplicator->apply($varyData);
26+
}
27+
}
28+
}

etc/frontend/di.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,11 @@
33
<type name="Magento\Framework\App\PageCache\Identifier">
44
<plugin name="saveVaryData" type="\Firegento\CacheWarmup\Plugin\CacheIdentifier\SaveVaryData"/>
55
</type>
6+
<type name="Firegento\CacheWarmup\Model\VaryData\Applicator\VaryDataApplicatorList">
7+
<arguments>
8+
<argument name="varyDataApplicators" xsi:type="array">
9+
<item name="customer_group" xsi:type="object">Firegento\CacheWarmup\Model\VaryData\Applicator\CustomerGroupApplicator</item>
10+
</argument>
11+
</arguments>
12+
</type>
613
</config>

0 commit comments

Comments
 (0)