Collection.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cms\Model\ResourceModel\Page;
  7. use Magento\Cms\Api\Data\PageInterface;
  8. use \Magento\Cms\Model\ResourceModel\AbstractCollection;
  9. /**
  10. * CMS page collection
  11. */
  12. class Collection extends AbstractCollection
  13. {
  14. /**
  15. * @var string
  16. */
  17. protected $_idFieldName = 'page_id';
  18. /**
  19. * Load data for preview flag
  20. *
  21. * @var bool
  22. */
  23. protected $_previewFlag;
  24. /**
  25. * Event prefix
  26. *
  27. * @var string
  28. */
  29. protected $_eventPrefix = 'cms_page_collection';
  30. /**
  31. * Event object
  32. *
  33. * @var string
  34. */
  35. protected $_eventObject = 'page_collection';
  36. /**
  37. * Define resource model
  38. *
  39. * @return void
  40. */
  41. protected function _construct()
  42. {
  43. $this->_init(\Magento\Cms\Model\Page::class, \Magento\Cms\Model\ResourceModel\Page::class);
  44. $this->_map['fields']['page_id'] = 'main_table.page_id';
  45. $this->_map['fields']['store'] = 'store_table.store_id';
  46. }
  47. /**
  48. * Set first store flag
  49. *
  50. * @param bool $flag
  51. * @return $this
  52. */
  53. public function setFirstStoreFlag($flag = false)
  54. {
  55. $this->_previewFlag = $flag;
  56. return $this;
  57. }
  58. /**
  59. * Add filter by store
  60. *
  61. * @param int|array|\Magento\Store\Model\Store $store
  62. * @param bool $withAdmin
  63. * @return $this
  64. */
  65. public function addStoreFilter($store, $withAdmin = true)
  66. {
  67. if (!$this->getFlag('store_filter_added')) {
  68. $this->performAddStoreFilter($store, $withAdmin);
  69. }
  70. return $this;
  71. }
  72. /**
  73. * Perform operations after collection load
  74. *
  75. * @return $this
  76. */
  77. protected function _afterLoad()
  78. {
  79. $entityMetadata = $this->metadataPool->getMetadata(PageInterface::class);
  80. $this->performAfterLoad('cms_page_store', $entityMetadata->getLinkField());
  81. $this->_previewFlag = false;
  82. return parent::_afterLoad();
  83. }
  84. /**
  85. * Perform operations before rendering filters
  86. *
  87. * @return void
  88. */
  89. protected function _renderFiltersBefore()
  90. {
  91. $entityMetadata = $this->metadataPool->getMetadata(PageInterface::class);
  92. $this->joinStoreRelationTable('cms_page_store', $entityMetadata->getLinkField());
  93. }
  94. }