![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-reports/Model/Grouped/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Reports\Model\Grouped; use Magento\Framework\Data\Collection\AbstractDb as DbCollection; /** * @api * @since 100.0.2 */ class Collection extends \Magento\Framework\Data\Collection { /** * Column name for group by clause * * @var string */ protected $_columnGroupBy = null; /** * Collection resource * * @var \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection */ protected $_resourceCollection = null; /** * Set column to group by * @codeCoverageIgnore * * @param string $column * @return $this */ public function setColumnGroupBy($column) { $this->_columnGroupBy = (string)$column; return $this; } /** * Load collection * * @param bool $printQuery * @param bool $logQuery * @return $this */ public function load($printQuery = false, $logQuery = false) { if ($this->isLoaded()) { return $this; } parent::load($printQuery, $logQuery); $this->_setIsLoaded(); if ($this->_columnGroupBy !== null) { $this->_mergeWithEmptyData(); $this->_groupResourceData(); } return $this; } /** * Setter for resource collection * @codeCoverageIgnore * * @param DbCollection $collection * @return $this */ public function setResourceCollection($collection) { $this->_resourceCollection = $collection; return $this; } /** * Merge empty data collection with resource collection * * @return $this */ protected function _mergeWithEmptyData() { if (count($this->_items) == 0) { return $this; } foreach ($this->_items as $key => $item) { foreach ($this->_resourceCollection as $dataItem) { if ($item->getData($this->_columnGroupBy) == $dataItem->getData($this->_columnGroupBy)) { if ($this->_items[$key]->getIsEmpty()) { $this->_items[$key] = $dataItem; } else { $this->_items[$key]->addChild($dataItem); } } } } return $this; } /** * Group data in resource collection * * @return $this */ protected function _groupResourceData() { if (count($this->_items) == 0) { foreach ($this->_resourceCollection as $item) { if (isset($this->_items[$item->getData($this->_columnGroupBy)])) { $this->_items[$item->getData($this->_columnGroupBy)]->addChild($item->setIsEmpty(false)); } else { $this->_items[$item->getData($this->_columnGroupBy)] = $item->setIsEmpty(false); } } } return $this; } }