Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ConvertToCsv.php
Go to the documentation of this file.
1 <?php
7 
13 
18 {
22  protected $directory;
23 
27  protected $metadataProvider;
28 
32  protected $pageSize = null;
33 
37  protected $filter;
38 
46  public function __construct(
50  $pageSize = 200
51  ) {
52  $this->filter = $filter;
53  $this->directory = $filesystem->getDirectoryWrite(DirectoryList::VAR_DIR);
54  $this->metadataProvider = $metadataProvider;
55  $this->pageSize = $pageSize;
56  }
57 
64  public function getCsvFile()
65  {
66  $component = $this->filter->getComponent();
67 
68  $name = md5(microtime());
69  $file = 'export/'. $component->getName() . $name . '.csv';
70 
71  $this->filter->prepareComponent($component);
72  $this->filter->applySelectionOnTargetProvider();
73  $dataProvider = $component->getContext()->getDataProvider();
74  $fields = $this->metadataProvider->getFields($component);
75  $options = $this->metadataProvider->getOptions();
76 
77  $this->directory->create('export');
78  $stream = $this->directory->openFile($file, 'w+');
79  $stream->lock();
80  $stream->writeCsv($this->metadataProvider->getHeaders($component));
81  $i = 1;
82  $searchCriteria = $dataProvider->getSearchCriteria()
83  ->setCurrentPage($i)
84  ->setPageSize($this->pageSize);
85  $totalCount = (int) $dataProvider->getSearchResult()->getTotalCount();
86  while ($totalCount > 0) {
87  $items = $dataProvider->getSearchResult()->getItems();
88  foreach ($items as $item) {
89  $this->metadataProvider->convertDate($item, $component->getName());
90  $stream->writeCsv($this->metadataProvider->getRowData($item, $fields, $options));
91  }
92  $searchCriteria->setCurrentPage(++$i);
93  $totalCount = $totalCount - $this->pageSize;
94  }
95  $stream->unlock();
96  $stream->close();
97 
98  return [
99  'type' => 'filename',
100  'value' => $file,
101  'rm' => true // can delete file after use
102  ];
103  }
104 }
__construct(Filesystem $filesystem, Filter $filter, MetadataProvider $metadataProvider, $pageSize=200)
$fields
Definition: details.phtml:14
$searchCriteria
$filesystem
$i
Definition: gallery.phtml:31
$items
if(!isset($_GET['name'])) $name
Definition: log.php:14