PluginProbe
Import WP – CSV & XML Import Export for WordPress / 2.9.0
Import WP – CSV & XML Import Export for WordPress v2.9.0
2.15.1 2.15.0 2.14.24 2.14.23 2.7.0 2.7.1 2.7.10 2.7.11 2.7.12 2.7.13 2.7.14 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.9.0 2.9.1 All 144 releases
jc-importer / class / Common / Importer / File / CSVFile.php

CSVFile.php in Import WP – CSV & XML Import Export for WordPress 2.9.0, at class/Common/Importer/File/CSVFile.php

103 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ImportWP\Common\Importer\File;
4
5 use ImportWP\Common\Importer\FileInterface;
6 use ImportWP\Common\Importer\State\ImporterState;
7
8 class CSVFile extends AbstractIndexedFile implements FileInterface
9 {
10
11 protected $enclosure = '"';
12 protected $delimiter = ',';
13
14
15 /**
16 * Set Enclosure
17 *
18 * @param string $enclosure
19 */
20 public function setEnclosure($enclosure)
21 {
22 $this->enclosure = $enclosure;
23 }
24
25 /**
26 * Set Delimiter
27 *
28 * @param string $delimiter
29 */
30 public function setDelimiter($delimiter)
31 {
32 $this->delimiter = $delimiter;
33 }
34
35 /**
36 * Get Delimiter
37 *
38 * @return string
39 */
40 public function getDelimiter()
41 {
42 return $this->delimiter;
43 }
44
45 /**
46 * Get enclosure
47 *
48 * @return string
49 */
50 public function getEnclosure()
51 {
52 return $this->enclosure;
53 }
54
55 /**
56 * Generate record file positions
57 *
58 * Loop through each record and save each position
59 */
60 public function generateIndex()
61 {
62 $record = 0;
63
64 $last_percent = 0;
65 $size = intval($this->get_file_size($this->getFileHandle()));
66 $this->config->set('process_max', $size);
67
68 rewind($this->getFileHandle());
69 while (!feof($this->getFileHandle())) {
70
71 $startIndex = ftell($this->getFileHandle());
72 $row = fgetcsv($this->getFileHandle(), 0, $this->getDelimiter(), $this->getEnclosure());
73
74 if (!empty($row)) {
75 $this->setIndex($record, $startIndex, ftell($this->getFileHandle()));
76 $record++;
77 }
78
79 if ($this->is_processing && ($record >= 2 || $startIndex > $this->process_max_size)) {
80 break;
81 }
82
83 $current_pos = intval(ftell($this->getFileHandle()));
84 if ($size > 0 && $current_pos > 0) {
85 $percent = round($current_pos / $size, 2);
86 if ($percent > $last_percent) {
87
88 do_action('iwp/importer/process', $last_percent * 100);
89 $this->config->set('process', $last_percent * 100);
90 $last_percent = $percent;
91
92 if (!is_null(iwp()->importer)) {
93 $state = ImporterState::get_state(iwp()->importer->getId());
94 if (isset($state['status']) && $state['status'] === 'cancelled') {
95 return;
96 }
97 }
98 }
99 }
100 }
101 }
102 }
103