PluginProbe
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder / 6.2.2
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder v6.2.2
6.2.14 6.2.13 6.2.12 6.2.10 6.2.11 6.2.9 6.2.8 6.2.7 6.2.6 6.2.5 6.2.4 6.2.3 6.2.2 3.6.22 3.6.31 3.6.40 3.6.41 3.6.42 3.6.50 3.6.51 3.6.60 3.6.61 3.6.62 3.6.64 3.6.65 All 196 releases
fluentform / app / Services / Spout / Reader / CSV / Reader.php

Reader.php in Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder 6.2.2, at app/Services/Spout/Reader/CSV/Reader.php

150 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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