Collection.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Theme\Model\ResourceModel\Design;
  7. /**
  8. * Core Design resource collection
  9. */
  10. class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
  11. {
  12. /**
  13. * @var \Magento\Framework\Stdlib\DateTime
  14. */
  15. protected $dateTime;
  16. /**
  17. * @param \Magento\Framework\Data\Collection\EntityFactory $entityFactory
  18. * @param \Psr\Log\LoggerInterface $logger
  19. * @param \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy
  20. * @param \Magento\Framework\Event\ManagerInterface $eventManager
  21. * @param \Magento\Framework\Stdlib\DateTime $dateTime
  22. * @param mixed $connection
  23. * @param \Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource
  24. */
  25. public function __construct(
  26. \Magento\Framework\Data\Collection\EntityFactory $entityFactory,
  27. \Psr\Log\LoggerInterface $logger,
  28. \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy,
  29. \Magento\Framework\Event\ManagerInterface $eventManager,
  30. \Magento\Framework\Stdlib\DateTime $dateTime,
  31. \Magento\Framework\DB\Adapter\AdapterInterface $connection = null,
  32. \Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource = null
  33. ) {
  34. $this->dateTime = $dateTime;
  35. parent::__construct($entityFactory, $logger, $fetchStrategy, $eventManager, $connection, $resource);
  36. }
  37. /**
  38. * Core Design resource collection
  39. *
  40. * @return void
  41. */
  42. protected function _construct()
  43. {
  44. $this->_init(\Magento\Theme\Model\Design::class, \Magento\Theme\Model\ResourceModel\Design::class);
  45. }
  46. /**
  47. * Join store data to collection
  48. *
  49. * @return \Magento\Theme\Model\ResourceModel\Design\Collection
  50. */
  51. public function joinStore()
  52. {
  53. return $this->join(['cs' => 'store'], 'cs.store_id = main_table.store_id', ['cs.name']);
  54. }
  55. /**
  56. * Add date filter to collection
  57. *
  58. * @param null|int|string|\DateTimeInterface $date
  59. * @return $this
  60. */
  61. public function addDateFilter($date = null)
  62. {
  63. if ($date === null) {
  64. $date = $this->dateTime->formatDate(true);
  65. } else {
  66. $date = $this->dateTime->formatDate($date);
  67. }
  68. $this->addFieldToFilter('date_from', ['lteq' => $date]);
  69. $this->addFieldToFilter('date_to', ['gteq' => $date]);
  70. return $this;
  71. }
  72. /**
  73. * Add store filter to collection
  74. *
  75. * @param int|array $storeId
  76. * @return \Magento\Theme\Model\ResourceModel\Design\Collection
  77. */
  78. public function addStoreFilter($storeId)
  79. {
  80. return $this->addFieldToFilter('store_id', ['in' => $storeId]);
  81. }
  82. }