Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/fluentform/app/Services/Spout/Reader/CSV/Reader.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
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 +