Bestsellers.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace Dotdigitalgroup\Email\Block\Recommended;
  3. use Magento\Store\Model\Store;
  4. /**
  5. * Bestsellers block
  6. *
  7. * @api
  8. */
  9. class Bestsellers extends \Magento\Catalog\Block\Product\AbstractProduct
  10. {
  11. /**
  12. * @var \Dotdigitalgroup\Email\Helper\Data
  13. */
  14. public $helper;
  15. /**
  16. * @var \Dotdigitalgroup\Email\Helper\Recommended
  17. */
  18. public $recommnededHelper;
  19. /**
  20. * @var \Magento\Catalog\Model\ProductFactory
  21. */
  22. public $productFactory;
  23. /**
  24. * @var \Dotdigitalgroup\Email\Model\ResourceModel\Catalog
  25. */
  26. public $catalog;
  27. /**
  28. * Bestsellers constructor.
  29. *
  30. * @param \Magento\Catalog\Block\Product\Context $context
  31. * @param \Dotdigitalgroup\Email\Model\ResourceModel\Catalog $catalog
  32. * @param \Dotdigitalgroup\Email\Helper\Data $helper
  33. * @param \Dotdigitalgroup\Email\Helper\Recommended $recommended
  34. * @param \Magento\Catalog\Model\ProductFactory $productFactory
  35. * @param array $data
  36. */
  37. public function __construct(
  38. \Magento\Catalog\Block\Product\Context $context,
  39. \Dotdigitalgroup\Email\Model\ResourceModel\Catalog $catalog,
  40. \Dotdigitalgroup\Email\Helper\Data $helper,
  41. \Dotdigitalgroup\Email\Helper\Recommended $recommended,
  42. \Magento\Catalog\Model\ProductFactory $productFactory,
  43. array $data = []
  44. ) {
  45. $this->productFactory = $productFactory;
  46. $this->helper = $helper;
  47. $this->recommnededHelper = $recommended;
  48. $this->catalog = $catalog;
  49. parent::__construct($context, $data);
  50. }
  51. /**
  52. * Collection
  53. *
  54. * @return array|\Magento\Catalog\Model\ResourceModel\Product\Collection
  55. */
  56. public function getLoadedProductCollection()
  57. {
  58. $params = $this->getRequest()->getParams();
  59. if (! isset($params['code']) || ! $this->helper->isCodeValid($params['code'])) {
  60. $this->helper->log('Best sellers no valid code is set');
  61. return [];
  62. }
  63. //mode param grid/list
  64. $mode = $this->getRequest()->getActionName();
  65. //limit of the products to display
  66. $limit = $this->recommnededHelper->getDisplayLimitByMode($mode);
  67. //date range
  68. $from = $this->recommnededHelper->getTimeFromConfig($mode);
  69. $to = $this->_localeDate->date()->format(\Zend_Date::ISO_8601);
  70. $storeId = $this->_storeManager->getStore()->getId();
  71. return $this->catalog->getBestsellerCollection($from, $to, $limit, $storeId);
  72. }
  73. /**
  74. * Display type mode.
  75. *
  76. * @return string|boolean
  77. */
  78. public function getMode()
  79. {
  80. return $this->recommnededHelper->getDisplayType();
  81. }
  82. /**
  83. * @param null|string|bool|int|\Magento\Store\Api\Data\StoreInterface $store
  84. *
  85. * @return string|null
  86. */
  87. public function getTextForUrl($store)
  88. {
  89. /** @var Store $store */
  90. $store = $this->_storeManager->getStore($store);
  91. return $store->getConfig(
  92. \Dotdigitalgroup\Email\Helper\Config::XML_PATH_CONNECTOR_DYNAMIC_CONTENT_LINK_TEXT
  93. );
  94. }
  95. }