![]() 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-customer-import-export/Model/Export/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\CustomerImportExport\Model\Export; /** * Export entity customer model * * @api * * @method \Magento\Customer\Model\ResourceModel\Attribute\Collection getAttributeCollection() getAttributeCollection() * @since 100.0.2 */ class Customer extends \Magento\ImportExport\Model\Export\Entity\AbstractEav { /** * Permanent column names. * * Names that begins with underscore is not an attribute. This name convention is for * to avoid interference with same attribute name. */ const COLUMN_EMAIL = 'email'; const COLUMN_WEBSITE = '_website'; const COLUMN_STORE = '_store'; /** * Attribute collection name */ const ATTRIBUTE_COLLECTION_NAME = \Magento\Customer\Model\ResourceModel\Attribute\Collection::class; /** * XML path to page size parameter */ const XML_PATH_PAGE_SIZE = 'export/customer_page_size/customer'; /** * @var array */ protected $_attributeOverrides = [ 'created_at' => ['backend_type' => 'datetime'], 'reward_update_notification' => ['source_model' => \Magento\Eav\Model\Entity\Attribute\Source\Boolean::class], 'reward_warning_notification' => ['source_model' => \Magento\Eav\Model\Entity\Attribute\Source\Boolean::class], ]; /** * Array of attributes codes which are disabled for export * * @var string[] */ protected $_disabledAttributes = ['default_billing', 'default_shipping']; /** * Attributes with index (not label) value. * * @var string[] */ protected $_indexValueAttributes = ['group_id', 'website_id', 'store_id']; /** * Permanent entity columns. * * @var string[] */ protected $_permanentAttributes = [self::COLUMN_EMAIL, self::COLUMN_WEBSITE, self::COLUMN_STORE]; /** * Customers whose data is exported * * @var \Magento\Customer\Model\ResourceModel\Customer\Collection */ protected $_customerCollection; /** * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param \Magento\ImportExport\Model\Export\Factory $collectionFactory * @param \Magento\ImportExport\Model\ResourceModel\CollectionByPagesIteratorFactory $resourceColFactory * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate * @param \Magento\Eav\Model\Config $eavConfig * @param \Magento\Customer\Model\ResourceModel\Customer\CollectionFactory $customerColFactory * @param array $data */ public function __construct( \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\ImportExport\Model\Export\Factory $collectionFactory, \Magento\ImportExport\Model\ResourceModel\CollectionByPagesIteratorFactory $resourceColFactory, \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate, \Magento\Eav\Model\Config $eavConfig, \Magento\Customer\Model\ResourceModel\Customer\CollectionFactory $customerColFactory, array $data = [] ) { parent::__construct( $scopeConfig, $storeManager, $collectionFactory, $resourceColFactory, $localeDate, $eavConfig, $data ); $this->_customerCollection = isset( $data['customer_collection'] ) ? $data['customer_collection'] : $customerColFactory->create(); $this->_initAttributeValues()->_initAttributeTypes()->_initStores()->_initWebsites(true); } /** * Export process. * * @return string */ public function export() { $this->_prepareEntityCollection($this->_getEntityCollection()); $writer = $this->getWriter(); // create export file $writer->setHeaderCols($this->_getHeaderColumns()); $this->_exportCollectionByPages($this->_getEntityCollection()); return $writer->getContents(); } /** * Get customers collection * * @return \Magento\Customer\Model\ResourceModel\Customer\Collection */ protected function _getEntityCollection() { return $this->_customerCollection; } /** * {@inheritdoc} */ protected function _getHeaderColumns() { $validAttributeCodes = $this->_getExportAttributeCodes(); return array_merge($this->_permanentAttributes, $validAttributeCodes, ['password']); } /** * Export given customer data * * @param \Magento\Customer\Model\Customer $item * @return void */ public function exportItem($item) { $row = $this->_addAttributeValuesToRow($item); $row[self::COLUMN_WEBSITE] = $this->_websiteIdToCode[$item->getWebsiteId()]; $row[self::COLUMN_STORE] = $this->_storeIdToCode[$item->getStoreId()]; $this->getWriter()->writeRow($row); } /** * Clean up already loaded attribute collection. * * @param \Magento\Framework\Data\Collection $collection * @return \Magento\Framework\Data\Collection */ public function filterAttributeCollection(\Magento\Framework\Data\Collection $collection) { /** @var $attribute \Magento\Customer\Model\Attribute */ foreach (parent::filterAttributeCollection($collection) as $attribute) { if (!empty($this->_attributeOverrides[$attribute->getAttributeCode()])) { $data = $this->_attributeOverrides[$attribute->getAttributeCode()]; if (isset($data['options_method']) && method_exists($this, $data['options_method'])) { $data['filter_options'] = $this->{$data['options_method']}(); } $attribute->addData($data); } } return $collection; } /** * EAV entity type code getter. * * @return string */ public function getEntityTypeCode() { return $this->getAttributeCollection()->getEntityTypeCode(); } /** * Retrieve list of overridden attributes * * @return array */ public function getOverriddenAttributes() { return $this->_attributeOverrides; } }