ReportConcurrentUsers.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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. /**
  11. * Class ReportConcurrentUsers
  12. */
  13. class ReportConcurrentUsers implements ObserverInterface
  14. {
  15. /**
  16. * @var Config
  17. */
  18. protected $config;
  19. /**
  20. * @var \Magento\Customer\Model\Session
  21. */
  22. protected $customerSession;
  23. /**
  24. * @var \Magento\Customer\Api\CustomerRepositoryInterface
  25. */
  26. protected $customerRepository;
  27. /**
  28. * @var \Magento\Store\Model\StoreManagerInterface
  29. */
  30. protected $storeManager;
  31. /**
  32. * @var \Magento\NewRelicReporting\Model\UsersFactory
  33. */
  34. protected $usersFactory;
  35. /**
  36. * @var \Magento\Framework\Json\EncoderInterface
  37. */
  38. protected $jsonEncoder;
  39. /**
  40. * @param Config $config
  41. * @param \Magento\Customer\Model\Session $customerSession
  42. * @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository
  43. * @param \Magento\Store\Model\StoreManagerInterface $storeManager
  44. * @param \Magento\NewRelicReporting\Model\UsersFactory $usersFactory
  45. * @param \Magento\Framework\Json\EncoderInterface $jsonEncoder
  46. */
  47. public function __construct(
  48. Config $config,
  49. \Magento\Customer\Model\Session $customerSession,
  50. \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository,
  51. \Magento\Store\Model\StoreManagerInterface $storeManager,
  52. \Magento\NewRelicReporting\Model\UsersFactory $usersFactory,
  53. \Magento\Framework\Json\EncoderInterface $jsonEncoder
  54. ) {
  55. $this->config = $config;
  56. $this->customerSession = $customerSession;
  57. $this->customerRepository = $customerRepository;
  58. $this->storeManager = $storeManager;
  59. $this->usersFactory = $usersFactory;
  60. $this->jsonEncoder = $jsonEncoder;
  61. }
  62. /**
  63. * Reports concurrent users to the database reporting_users table
  64. *
  65. * @param Observer $observer
  66. * @return void
  67. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  68. */
  69. public function execute(Observer $observer)
  70. {
  71. if ($this->config->isNewRelicEnabled()) {
  72. if ($this->customerSession->isLoggedIn()) {
  73. $customer = $this->customerRepository->getById($this->customerSession->getCustomerId());
  74. $jsonData = [
  75. 'id' => $customer->getId(),
  76. 'name' => $customer->getFirstname() . ' ' . $customer->getLastname(),
  77. 'store' => $this->storeManager->getStore()->getName(),
  78. 'website' => $this->storeManager->getWebsite()->getName(),
  79. ];
  80. $modelData = [
  81. 'type' => 'user_action',
  82. 'action' => $this->jsonEncoder->encode($jsonData),
  83. ];
  84. /** @var \Magento\NewRelicReporting\Model\Users $usersModel */
  85. $usersModel = $this->usersFactory->create();
  86. $usersModel->setData($modelData);
  87. $usersModel->save();
  88. }
  89. }
  90. }
  91. }