Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/fluentform/app/Services/Spout/Reader/CSV/Reader.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
3
+
namespace Box\Spout\Reader\CSV;
4
+
5
+
use Box\Spout\Reader\AbstractReader;
6
+
use Box\Spout\Common\Exception\IOException;
7
+
8
+
/**
9
+
* Class Reader
10
+
* This class provides support to read data from a CSV file.
11
+
*
12
+
* @package Box\Spout\Reader\CSV
13
+
*/
14
+
class Reader extends AbstractReader
15
+
{
16
+
/** @var resource Pointer to the file to be written */
17
+
protected $filePointer;
18
+
19
+
/** @var SheetIterator To iterator over the CSV unique "sheet" */
20
+
protected $sheetIterator;
21
+
22
+
/** @var string Original value for the "auto_detect_line_endings" INI value */
23
+
protected $originalAutoDetectLineEndings;
24
+
25
+
/**
26
+
* Returns the reader's current options
27
+
*
28
+
* @return ReaderOptions
29
+
*/
30
+
protected function getOptions()
31
+
{
32
+
if (!isset($this->options)) {
33
+
$this->options = new ReaderOptions();
34
+
}
35
+
return $this->options;
36
+
}
37
+
38
+
/**
39
+
* Sets the field delimiter for the CSV.
40
+
* Needs to be called before opening the reader.
41
+
*
42
+
* @param string $fieldDelimiter Character that delimits fields
43
+
* @return Reader
44
+
*/
45
+
public function setFieldDelimiter($fieldDelimiter)
46
+
{
47
+
$this->getOptions()->setFieldDelimiter($fieldDelimiter);
48
+
return $this;
49
+
}
50
+
51
+
/**
52
+
* Sets the field enclosure for the CSV.
53
+
* Needs to be called before opening the reader.
54
+
*
55
+
* @param string $fieldEnclosure Character that enclose fields
56
+
* @return Reader
57
+
*/
58
+
public function setFieldEnclosure($fieldEnclosure)
59
+
{
60
+
$this->getOptions()->setFieldEnclosure($fieldEnclosure);
61
+
return $this;
62
+
}
63
+
64
+
/**
65
+
* Sets the encoding of the CSV file to be read.
66
+
* Needs to be called before opening the reader.
67
+
*
68
+
* @param string $encoding Encoding of the CSV file to be read
69
+
* @return Reader
70
+
*/
71
+
public function setEncoding($encoding)
72
+
{
73
+
$this->getOptions()->setEncoding($encoding);
74
+
return $this;
75
+
}
76
+
77
+
/**
78
+
* Sets the EOL for the CSV.
79
+
* Needs to be called before opening the reader.
80
+
*
81
+
* @param string $endOfLineCharacter used to properly get lines from the CSV file.
82
+
* @return Reader
83
+
*/
84
+
public function setEndOfLineCharacter($endOfLineCharacter)
85
+
{
86
+
$this->getOptions()->setEndOfLineCharacter($endOfLineCharacter);
87
+
return $this;
88
+
}
89
+
90
+
/**
91
+
* Returns whether stream wrappers are supported
92
+
*
93
+
* @return bool
94
+
*/
95
+
protected function doesSupportStreamWrapper()
96
+
{
97
+
return true;
98
+
}
99
+
100
+
/**
101
+
* Opens the file at the given path to make it ready to be read.
102
+
* If setEncoding() was not called, it assumes that the file is encoded in UTF-8.
103
+
*
104
+
* @param string $filePath Path of the CSV file to be read
105
+
* @return void
106
+
* @throws \Box\Spout\Common\Exception\IOException
107
+
*/
108
+
protected function openReader($filePath)
109
+
{
110
+
$this->originalAutoDetectLineEndings = ini_get('auto_detect_line_endings');
111
+
ini_set('auto_detect_line_endings', '1');
112
+
113
+
$this->filePointer = $this->globalFunctionsHelper->fopen($filePath, 'r');
114
+
if (!$this->filePointer) {
115
+
throw new IOException("Could not open file $filePath for reading.");
116
+
}
117
+
118
+
$this->sheetIterator = new SheetIterator(
119
+
$this->filePointer,
120
+
$this->getOptions(),
121
+
$this->globalFunctionsHelper
122
+
);
123
+
}
124
+
125
+
/**
126
+
* Returns an iterator to iterate over sheets.
127
+
*
128
+
* @return SheetIterator To iterate over sheets
129
+
*/
130
+
protected function getConcreteSheetIterator()
131
+
{
132
+
return $this->sheetIterator;
133
+
}
134
+
135
+
136
+
/**
137
+
* Closes the reader. To be used after reading the file.
138
+
*
139
+
* @return void
140
+
*/
141
+
protected function closeReader()
142
+
{
143
+
if ($this->filePointer) {
144
+
$this->globalFunctionsHelper->fclose($this->filePointer);
145
+
}
146
+
147
+
ini_set('auto_detect_line_endings', $this->originalAutoDetectLineEndings);
148
+
}
149
+
}
150
+