Skip to content
Snippets Groups Projects
Commit 5d4a5223 authored by xenophyle's avatar xenophyle
Browse files

Issue #2962266 by xenophyle, montesajudy: track e-commerce performance not working

parent 08f43790
No related branches found
No related tags found
1 merge request!12Use Symfony session for both setting and getting session values
......@@ -6,8 +6,9 @@
function mailchimp_ecommerce_page_attachments(array &$attachments) {
$campaign_id = filter_input(INPUT_GET, 'mc_cid', FILTER_SANITIZE_SPECIAL_CHARS);
if (!empty($campaign_id)) {
$_SESSION['mc_cid'] = $campaign_id;
$_SESSION['mc_landing_site'] = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$session = \Drupal::request()->getSession();
$session->set('mc_cid', $campaign_id);
$session->set('mc_landing_site', (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
}
}
......
......@@ -10,6 +10,8 @@ services:
mailchimp_ecommerce.order_handler:
class: '\Drupal\mailchimp_ecommerce\OrderHandler'
factory: ['@class_resolver', 'getInstanceFromDefinition']
arguments: ['\Drupal\mailchimp_ecommerce\OrderHandler']
mailchimp_ecommerce.product_handler:
class: '\Drupal\mailchimp_ecommerce\ProductHandler'
......
......@@ -6,6 +6,7 @@ use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Messenger\MessengerInterface;
use Mailchimp\MailchimpEcommerce;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* Cart handler.
......@@ -33,17 +34,29 @@ class CartHandler implements CartHandlerInterface, ContainerInjectionInterface {
*/
protected $messenger;
public function __construct(MailchimpEcommerce $mc_ecommerce, MailchimpEcommerceHelper $helper, MessengerInterface $messenger) {
/**
* A request stack symfony instance.
*
* @var \Symfony\Component\HttpFoundation\RequestStack
*/
protected $requestStack;
public function __construct(MailchimpEcommerce $mc_ecommerce, MailchimpEcommerceHelper $helper, MessengerInterface $messenger, RequestStack $request_stack) {
$this->mcEcommerce = $mc_ecommerce;
$this->helper = $helper;
$this->messenger = $messenger;
$this->requestStack = $request_stack;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
\mailchimp_get_api_object('MailchimpEcommerce'),
$container->get('mailchimp_ecommerce.helper'),
$container->get('messenger')
$container->get('messenger'),
$container->get('request_stack')
);
}
......@@ -106,7 +119,8 @@ class CartHandler implements CartHandlerInterface, ContainerInjectionInterface {
$campaign_id = $this->helper->getCampaignId();
if (!empty($campaign_id)) {
$cart['campaign_id'] = $campaign_id;
$cart['landing_site'] = isset($_SESSION['mc_landing_site']) ? $_SESSION['mc_landing_site'] : '';
$session = $this->requestStack->getCurrentRequest()->getSession();
$cart['landing_site'] = $session->get('mc_landing_site', '');
}
try {
......
......@@ -4,11 +4,40 @@ namespace Drupal\mailchimp_ecommerce;
use Drupal\commerce_order\Entity\Order;
use Drupal\commerce_order\Entity\OrderItem;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* Order handler.
*/
class OrderHandler implements OrderHandlerInterface {
class OrderHandler implements OrderHandlerInterface, ContainerInjectionInterface {
/**
* A request stack symfony instance.
*
* @var \Symfony\Component\HttpFoundation\RequestStack
*/
protected $requestStack;
/**
* OrderHandler constructor.
*
* @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
* A request stack symfony instance.
*/
public function __construct(RequestStack $request_stack) {
$this->requestStack = $request_stack;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('request_stack')
);
}
/**
* @inheritdoc
......@@ -52,7 +81,8 @@ class OrderHandler implements OrderHandlerInterface {
$campaign_id = mailchimp_ecommerce_get_campaign_id();
if (!empty($campaign_id)) {
$order['campaign_id'] = $campaign_id;
$order['landing_site'] = isset($_SESSION['mc_landing_site']) ? $_SESSION['mc_landing_site'] : '';
$session = $this->requestStack->getCurrentRequest()->getSession();
$order['landing_site'] = $session->get('mc_landing_site', '');
}
/** @var \Mailchimp\MailchimpEcommerce $mc_ecommerce */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment