ReportConcurrentAdmins.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 ReportConcurrentAdmins
  12. */
  13. class ReportConcurrentAdmins implements ObserverInterface
  14. {
  15. /**
  16. * @var Config
  17. */
  18. protected $config;
  19. /**
  20. * @var \Magento\Backend\Model\Auth\Session
  21. */
  22. protected $backendAuthSession;
  23. /**
  24. * @var \Magento\NewRelicReporting\Model\UsersFactory
  25. */
  26. protected $usersFactory;
  27. /**
  28. * @var \Magento\Framework\Json\EncoderInterface
  29. */
  30. protected $jsonEncoder;
  31. /**
  32. * @param Config $config
  33. * @param \Magento\Backend\Model\Auth\Session $backendAuthSession
  34. * @param \Magento\NewRelicReporting\Model\UsersFactory $usersFactory
  35. * @param \Magento\Framework\Json\EncoderInterface $jsonEncoder
  36. */
  37. public function __construct(
  38. Config $config,
  39. \Magento\Backend\Model\Auth\Session $backendAuthSession,
  40. \Magento\NewRelicReporting\Model\UsersFactory $usersFactory,
  41. \Magento\Framework\Json\EncoderInterface $jsonEncoder
  42. ) {
  43. $this->config = $config;
  44. $this->backendAuthSession = $backendAuthSession;
  45. $this->usersFactory = $usersFactory;
  46. $this->jsonEncoder = $jsonEncoder;
  47. }
  48. /**
  49. * Reports concurrent admins to the database reporting_users table
  50. *
  51. * @param Observer $observer
  52. * @return void
  53. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  54. */
  55. public function execute(Observer $observer)
  56. {
  57. if ($this->config->isNewRelicEnabled()) {
  58. if ($this->backendAuthSession->isLoggedIn()) {
  59. $user = $this->backendAuthSession->getUser();
  60. $jsonData = [
  61. 'id' => $user->getId(),
  62. 'username' => $user->getUserName(),
  63. 'name' => $user->getFirstName() . ' ' . $user->getLastName(),
  64. ];
  65. $modelData = [
  66. 'type' => 'admin_activity',
  67. 'action' => $this->jsonEncoder->encode($jsonData),
  68. ];
  69. /** @var \Magento\NewRelicReporting\Model\Users $usersModel */
  70. $usersModel = $this->usersFactory->create();
  71. $usersModel->setData($modelData);
  72. $usersModel->save();
  73. }
  74. }
  75. }
  76. }