b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / a / home / dev2.destoffenstraat.com / app / code / Swissup / Firecheckout / Plugin / Block /
Filename/home/a/home/dev2.destoffenstraat.com/app/code/Swissup/Firecheckout/Plugin/Block/Onepage.php
Size3.95 kb
Permissionrwxrwxrwx
Ownerroot : root
Create time21-Aug-2025 12:26
Last modified06-Jun-2022 12:57
Last accessed23-Aug-2025 04:58
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php

namespace Swissup\Firecheckout\Plugin\Block;

class Onepage
{
/**
* @var \Magento\Customer\Model\Session
*/
private $customerSession;

/**
* @var \Magento\Checkout\Model\Session
*/
private $checkoutSession;

/**
* @var \Swissup\Firecheckout\Helper\Data
*/
private $helper;

/**
* @var \Magento\Framework\Serialize\Serializer\JsonHexTag
*/
private $serializer;

/**
* @param \Magento\Customer\Model\Session $customerSession
* @param \Magento\Checkout\Model\Session $checkoutSession
* @param \Swissup\Firecheckout\Helper\Data $helper
*/
public function __construct(
\Magento\Customer\Model\Session $customerSession,
\Magento\Checkout\Model\Session $checkoutSession,
\Swissup\Firecheckout\Helper\Data $helper
) {
$this->customerSession = $customerSession;
$this->checkoutSession = $checkoutSession;
$this->helper = $helper;

// magento 2.3.1 and higher
if (class_exists(\Magento\Framework\Serialize\Serializer\JsonHexTag::class)) {
$this->serializer = \Magento\Framework\App\ObjectManager::getInstance()
->get(\Magento\Framework\Serialize\Serializer\JsonHexTag::class);
}
}

/**
* @param \Magento\Checkout\Block\Onepage $subject
* @param string $jsLayout
* @return string
*/
public function afterGetJsLayout(
\Magento\Checkout\Block\Onepage $subject,
$jsLayout
) {
if (!$this->helper->isOnFirecheckoutPage() ||
!$this->helper->isEmailOnSeparateStep() ||
$this->customerSession->isLoggedIn() ||
$this->checkoutSession->getQuote()->getIsVirtual()
) {
return $jsLayout;
}

$jsLayout = $this->unserialize($jsLayout);

$emailStep = [
'component' => 'Swissup_Firecheckout/js/view/email-step',
'sortOrder' => 0,
'children' => [
'customer-email' => [],
// 'before-form' => [],
],
];

foreach ($emailStep['children'] as $key => $values) {
$config = $jsLayout['components']['checkout']
['children']['steps']
['children']['shipping-step']['children']['shippingAddress']
['children'][$key] ?? [];

if ($config) {
$emailStep['children'][$key] = array_replace($config, $values);
} else {
unset($emailStep['children'][$key]);
}

unset($jsLayout['components']['checkout']
['children']['steps']
['children']['shipping-step']['children']['shippingAddress']
['children'][$key]);
}

$jsLayout['components']['checkout']['children']['steps']['children']['email-step'] = $emailStep;

// Magento_InventoryInStorePickup integration
if (isset($jsLayout['components']['checkout']['children']['steps']['children']
['store-pickup']['children']['store-selector']['children']['customer-email'])
) {
$jsLayout['components']['checkout']['children']['steps']['children']
['store-pickup']['children']['store-selector']['children']
['customer-email']['config']['links']['email'] =
'checkout.steps.email-step.customer-email:email';
}

return $this->serialize($jsLayout);
}

/**
* @param array $data
* @return string
*/
private function serialize($data)
{
if ($this->serializer) {
return $this->serializer->serialize($data);
}
return json_encode($data, JSON_HEX_TAG);
}

/**
* @param string $string
* @return array
*/
private function unserialize($string)
{
if ($this->serializer) {
return $this->serializer->unserialize($string);
}
return json_decode($string, true);
}
}