Observer.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Persistent\Model;
  7. /**
  8. * Persistent Observer
  9. *
  10. * @SuppressWarnings(PHPMD.LongVariable)
  11. */
  12. class Observer
  13. {
  14. /**
  15. * Persistent session
  16. *
  17. * @var \Magento\Persistent\Helper\Session
  18. */
  19. protected $_persistentSession;
  20. /**
  21. * Layout model
  22. *
  23. * @var \Magento\Framework\View\LayoutInterface
  24. */
  25. protected $_layout;
  26. /**
  27. * Url model
  28. *
  29. * @var \Magento\Framework\UrlInterface
  30. */
  31. protected $_url;
  32. /**
  33. * @var \Magento\Framework\Escaper
  34. */
  35. protected $_escaper;
  36. /**
  37. * Customer view helper
  38. *
  39. * @var \Magento\Customer\Helper\View
  40. */
  41. protected $_customerViewHelper;
  42. /**
  43. * Customer repository
  44. *
  45. * @var \Magento\Customer\Api\CustomerRepositoryInterface
  46. */
  47. protected $customerRepository;
  48. /**
  49. * Constructor
  50. *
  51. * @param \Magento\Persistent\Helper\Session $persistentSession
  52. * @param \Magento\Framework\UrlInterface $url
  53. * @param \Magento\Framework\View\LayoutInterface $layout
  54. * @param \Magento\Framework\Escaper $escaper
  55. * @param \Magento\Customer\Helper\View $customerViewHelper
  56. * @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository
  57. */
  58. public function __construct(
  59. \Magento\Persistent\Helper\Session $persistentSession,
  60. \Magento\Framework\UrlInterface $url,
  61. \Magento\Framework\View\LayoutInterface $layout,
  62. \Magento\Framework\Escaper $escaper,
  63. \Magento\Customer\Helper\View $customerViewHelper,
  64. \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository
  65. ) {
  66. $this->_persistentSession = $persistentSession;
  67. $this->_url = $url;
  68. $this->_layout = $layout;
  69. $this->_escaper = $escaper;
  70. $this->_customerViewHelper = $customerViewHelper;
  71. $this->customerRepository = $customerRepository;
  72. }
  73. /**
  74. * Emulate 'welcome' block with persistent data
  75. *
  76. * @param \Magento\Framework\View\Element\AbstractBlock $block
  77. * @return $this
  78. */
  79. public function emulateWelcomeBlock($block)
  80. {
  81. $block->setWelcome('&nbsp;');
  82. return $this;
  83. }
  84. /**
  85. * Emulate 'account links' block with persistent data
  86. *
  87. * @return void
  88. */
  89. protected function _applyAccountLinksPersistentData()
  90. {
  91. if (!$this->_layout->getBlock('header.additional')) {
  92. $this->_layout->addBlock(\Magento\Persistent\Block\Header\Additional::class, 'header.additional');
  93. }
  94. }
  95. /**
  96. * Emulate 'top links' block with persistent data
  97. *
  98. * @param \Magento\Framework\View\Element\AbstractBlock $block
  99. * @return void
  100. */
  101. public function emulateTopLinks($block)
  102. {
  103. $this->_applyAccountLinksPersistentData();
  104. /** @var \Magento\Framework\View\Element\Html\Link[] $links */
  105. $links = $block->getLinks();
  106. $removeLink = $this->_url->getUrl('customer/account/login');
  107. foreach ($links as $link) {
  108. if ($link->getHref() == $removeLink) {
  109. $this->_layout->unsetChild($block->getNameInLayout(), $link->getNameInLayout());
  110. }
  111. }
  112. }
  113. }