TotalsCollectorList.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Quote\Model\Quote;
  7. use Magento\Quote\Model\Quote\Address\Total\Collector;
  8. use Magento\Quote\Model\Quote\Address\Total\CollectorFactory;
  9. use Magento\Quote\Model\Quote\Address\Total\CollectorInterface;
  10. class TotalsCollectorList
  11. {
  12. /**
  13. * Total models collector
  14. *
  15. * @var \Magento\Quote\Model\Quote\Address\Total\Collector
  16. */
  17. protected $totalCollector;
  18. /**
  19. * @var \Magento\Quote\Model\Quote\Address\Total\CollectorFactory
  20. */
  21. protected $totalCollectorFactory;
  22. /**
  23. * Prefix of model events
  24. *
  25. * @var string
  26. */
  27. protected $_eventPrefix = 'sales_quote_address';
  28. /**
  29. * Name of event object
  30. *
  31. * @var string
  32. */
  33. protected $_eventObject = 'quote_address';
  34. /**
  35. * Application Event Dispatcher
  36. *
  37. * @var \Magento\Framework\Event\ManagerInterface
  38. */
  39. protected $eventManager;
  40. /**
  41. * @var \Magento\Store\Model\StoreManagerInterface
  42. */
  43. protected $storeManager;
  44. /**
  45. * @var \Magento\Quote\Model\Quote\Address\TotalFactory
  46. */
  47. protected $totalFactory;
  48. /**
  49. * @param Collector $totalCollector
  50. * @param CollectorFactory $totalCollectorFactory
  51. * @param \Magento\Framework\Event\ManagerInterface $eventManager
  52. * @param \Magento\Store\Model\StoreManagerInterface $storeManager
  53. * @param Address\TotalFactory $totalFactory
  54. */
  55. public function __construct(
  56. Collector $totalCollector,
  57. CollectorFactory $totalCollectorFactory,
  58. \Magento\Framework\Event\ManagerInterface $eventManager,
  59. \Magento\Store\Model\StoreManagerInterface $storeManager,
  60. \Magento\Quote\Model\Quote\Address\TotalFactory $totalFactory
  61. ) {
  62. $this->totalCollector = $totalCollector;
  63. $this->totalCollectorFactory = $totalCollectorFactory;
  64. $this->eventManager = $eventManager;
  65. $this->storeManager = $storeManager;
  66. $this->totalFactory = $totalFactory;
  67. }
  68. /**
  69. * @param int $storeId
  70. * @return Collector
  71. */
  72. private function getTotalCollector($storeId)
  73. {
  74. if ($this->totalCollector === null) {
  75. $store = $this->storeManager->getStore($storeId);
  76. $this->totalCollector = $this->totalCollectorFactory->create(
  77. ['store' => $store]
  78. );
  79. }
  80. return $this->totalCollector;
  81. }
  82. /**
  83. * @param int $storeId
  84. * @return \Magento\Quote\Model\Quote\Address\Total\AbstractTotal[]
  85. */
  86. public function getCollectors($storeId)
  87. {
  88. return $this->getTotalCollector($storeId)->getCollectors();
  89. }
  90. }