ReportConcurrentUsersToNewRelic.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\NewRelicReporting\Model\Observer;
  7. use Magento\Framework\Event\Observer;
  8. use Magento\Framework\Event\ObserverInterface;
  9. use Magento\NewRelicReporting\Model\Config;
  10. use Magento\NewRelicReporting\Model\NewRelicWrapper;
  11. /**
  12. * Class ReportConcurrentUsersToNewRelic
  13. */
  14. class ReportConcurrentUsersToNewRelic implements ObserverInterface
  15. {
  16. /**
  17. * @var Config
  18. */
  19. protected $config;
  20. /**
  21. * @var \Magento\Customer\Model\Session
  22. */
  23. protected $customerSession;
  24. /**
  25. * @var \Magento\Customer\Api\CustomerRepositoryInterface
  26. */
  27. protected $customerRepository;
  28. /**
  29. * @var \Magento\Store\Model\StoreManagerInterface
  30. */
  31. protected $storeManager;
  32. /**
  33. * @var NewRelicWrapper
  34. */
  35. protected $newRelicWrapper;
  36. /**
  37. * @param Config $config
  38. * @param \Magento\Customer\Model\Session $customerSession
  39. * @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository
  40. * @param \Magento\Store\Model\StoreManagerInterface $storeManager
  41. * @param NewRelicWrapper $newRelicWrapper
  42. */
  43. public function __construct(
  44. Config $config,
  45. \Magento\Customer\Model\Session $customerSession,
  46. \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository,
  47. \Magento\Store\Model\StoreManagerInterface $storeManager,
  48. NewRelicWrapper $newRelicWrapper
  49. ) {
  50. $this->config = $config;
  51. $this->customerSession = $customerSession;
  52. $this->customerRepository = $customerRepository;
  53. $this->storeManager = $storeManager;
  54. $this->newRelicWrapper = $newRelicWrapper;
  55. }
  56. /**
  57. * Adds New Relic custom parameters per request for store, website, and logged in user if applicable
  58. *
  59. * @param Observer $observer
  60. * @return void
  61. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  62. */
  63. public function execute(Observer $observer)
  64. {
  65. if ($this->config->isNewRelicEnabled()) {
  66. $this->newRelicWrapper->addCustomParameter(Config::STORE, $this->storeManager->getStore()->getName());
  67. $this->newRelicWrapper->addCustomParameter(Config::WEBSITE, $this->storeManager->getWebsite()->getName());
  68. if ($this->customerSession->isLoggedIn()) {
  69. $customer = $this->customerRepository->getById($this->customerSession->getCustomerId());
  70. $this->newRelicWrapper->addCustomParameter(Config::CUSTOMER_ID, $customer->getId());
  71. $this->newRelicWrapper->addCustomParameter(
  72. Config::CUSTOMER_NAME,
  73. $customer->getFirstname() . ' ' . $customer->getLastname()
  74. );
  75. }
  76. }
  77. }
  78. }