Session.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Persistent\Helper;
  7. /**
  8. * Persistent Shopping Cart Data Helper
  9. *
  10. * @api
  11. * @since 100.0.2
  12. */
  13. class Session extends \Magento\Framework\App\Helper\AbstractHelper
  14. {
  15. /**
  16. * Instance of Session Model
  17. *
  18. * @var \Magento\Persistent\Model\Session
  19. */
  20. protected $_sessionModel;
  21. /**
  22. * Is "Remember Me" checked
  23. *
  24. * @var null|bool
  25. */
  26. protected $_isRememberMeChecked;
  27. /**
  28. * Persistent data
  29. *
  30. * @var \Magento\Persistent\Helper\Data
  31. */
  32. protected $_persistentData;
  33. /**
  34. * Persistent session factory
  35. *
  36. * @var \Magento\Persistent\Model\SessionFactory
  37. */
  38. protected $_sessionFactory;
  39. /**
  40. * Checkout session
  41. *
  42. * @var \Magento\Checkout\Model\Session
  43. */
  44. protected $_checkoutSession;
  45. /**
  46. * @param \Magento\Framework\App\Helper\Context $context
  47. * @param Data $persistentData
  48. * @param \Magento\Checkout\Model\Session $checkoutSession
  49. * @param \Magento\Persistent\Model\SessionFactory $sessionFactory
  50. */
  51. public function __construct(
  52. \Magento\Framework\App\Helper\Context $context,
  53. \Magento\Persistent\Helper\Data $persistentData,
  54. \Magento\Checkout\Model\Session $checkoutSession,
  55. \Magento\Persistent\Model\SessionFactory $sessionFactory
  56. ) {
  57. $this->_persistentData = $persistentData;
  58. $this->_checkoutSession = $checkoutSession;
  59. $this->_sessionFactory = $sessionFactory;
  60. parent::__construct(
  61. $context
  62. );
  63. }
  64. /**
  65. * Get Session model
  66. *
  67. * @return \Magento\Persistent\Model\Session
  68. */
  69. public function getSession()
  70. {
  71. if ($this->_sessionModel === null) {
  72. $this->_sessionModel = $this->_sessionFactory->create();
  73. $this->_sessionModel->loadByCookieKey();
  74. }
  75. return $this->_sessionModel;
  76. }
  77. /**
  78. * Force setting session model
  79. *
  80. * @param \Magento\Persistent\Model\Session $sessionModel
  81. * @return \Magento\Persistent\Model\Session
  82. * @codeCoverageIgnore
  83. */
  84. public function setSession($sessionModel)
  85. {
  86. $this->_sessionModel = $sessionModel;
  87. return $this->_sessionModel;
  88. }
  89. /**
  90. * Check whether persistent mode is running
  91. *
  92. * @return bool
  93. */
  94. public function isPersistent()
  95. {
  96. return $this->getSession()->getId() && $this->_persistentData->isEnabled();
  97. }
  98. /**
  99. * Check if "Remember Me" checked
  100. *
  101. * @return bool
  102. */
  103. public function isRememberMeChecked()
  104. {
  105. if ($this->_isRememberMeChecked === null) {
  106. //Try to get from checkout session
  107. $isRememberMeChecked = $this->_checkoutSession->getRememberMeChecked();
  108. if ($isRememberMeChecked !== null) {
  109. $this->_isRememberMeChecked = $isRememberMeChecked;
  110. $this->_checkoutSession->unsRememberMeChecked();
  111. return $isRememberMeChecked;
  112. }
  113. return $this->_persistentData->isEnabled()
  114. && $this->_persistentData->isRememberMeEnabled()
  115. && $this->_persistentData->isRememberMeCheckedDefault();
  116. }
  117. return (bool)$this->_isRememberMeChecked;
  118. }
  119. /**
  120. * Set "Remember Me" checked or not
  121. *
  122. * @param bool $checked
  123. * @return void
  124. * @codeCoverageIgnore
  125. */
  126. public function setRememberMeChecked($checked = true)
  127. {
  128. $this->_isRememberMeChecked = $checked;
  129. }
  130. }