PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.17.1
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.17.1
4.17.1 4.17.0 4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / third-party / vendor / league / csv / src / CharsetConverter.php
wp-user-avatar / third-party / vendor / league / csv / src Last commit date
AbstractCsv.php 2 months ago ByteSequence.php 2 months ago CannotInsertRecord.php 2 months ago CharsetConverter.php 2 months ago ColumnConsistency.php 2 months ago EncloseField.php 2 months ago EscapeFormula.php 2 months ago Exception.php 2 months ago HTMLConverter.php 2 months ago Info.php 2 months ago InvalidArgument.php 2 months ago MapIterator.php 2 months ago RFC4180Field.php 2 months ago Reader.php 2 months ago ResultSet.php 2 months ago Statement.php 2 months ago Stream.php 2 months ago SyntaxError.php 2 months ago TabularDataReader.php 2 months ago UnableToProcessCsv.php 2 months ago UnavailableFeature.php 2 months ago UnavailableStream.php 2 months ago Writer.php 2 months ago XMLConverter.php 2 months ago functions.php 2 months ago functions_include.php 2 months ago
CharsetConverter.php
185 lines
1 <?php
2
3 /**
4 * League.Csv (https://csv.thephpleague.com)
5 *
6 * (c) Ignace Nyamagana Butera <nyamsprod@gmail.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 declare (strict_types=1);
12 namespace ProfilePressVendor\League\Csv;
13
14 use OutOfRangeException;
15 use php_user_filter;
16 use Traversable;
17 use function array_combine;
18 use function array_map;
19 use function in_array;
20 use function is_numeric;
21 use function mb_convert_encoding;
22 use function mb_list_encodings;
23 use function preg_match;
24 use function sprintf;
25 use function stream_bucket_append;
26 use function stream_bucket_make_writeable;
27 use function stream_filter_register;
28 use function stream_get_filters;
29 use function strpos;
30 use function strtolower;
31 use function substr;
32 /**
33 * Converts resource stream or tabular data content charset.
34 */
35 class CharsetConverter extends php_user_filter
36 {
37 const FILTERNAME = 'convert.league.csv';
38 protected string $input_encoding = 'UTF-8';
39 protected string $output_encoding = 'UTF-8';
40 /**
41 * Static method to add the stream filter to a {@link AbstractCsv} object.
42 */
43 public static function addTo(AbstractCsv $csv, string $input_encoding, string $output_encoding): AbstractCsv
44 {
45 self::register();
46 return $csv->addStreamFilter(self::getFiltername($input_encoding, $output_encoding));
47 }
48 /**
49 * Static method to register the class as a stream filter.
50 */
51 public static function register(): void
52 {
53 $filter_name = self::FILTERNAME . '.*';
54 if (!in_array($filter_name, stream_get_filters(), \true)) {
55 stream_filter_register($filter_name, self::class);
56 }
57 }
58 /**
59 * Static method to return the stream filter filtername.
60 */
61 public static function getFiltername(string $input_encoding, string $output_encoding): string
62 {
63 return sprintf('%s.%s/%s', self::FILTERNAME, self::filterEncoding($input_encoding), self::filterEncoding($output_encoding));
64 }
65 /**
66 * Filter encoding charset.
67 *
68 * @throws OutOfRangeException if the charset is malformed or unsupported
69 */
70 protected static function filterEncoding(string $encoding): string
71 {
72 static $encoding_list;
73 if (null === $encoding_list) {
74 $list = mb_list_encodings();
75 $encoding_list = array_combine(array_map('strtolower', $list), $list);
76 }
77 $key = strtolower($encoding);
78 if (isset($encoding_list[$key])) {
79 return $encoding_list[$key];
80 }
81 throw new OutOfRangeException('The submitted charset ' . $encoding . ' is not supported by the mbstring extension.');
82 }
83 public function onCreate(): bool
84 {
85 $prefix = self::FILTERNAME . '.';
86 if (0 !== strpos($this->filtername, $prefix)) {
87 return \false;
88 }
89 $encodings = substr($this->filtername, strlen($prefix));
90 if (1 !== preg_match(',^(?<input>[-\w]+)\/(?<output>[-\w]+)$,', $encodings, $matches)) {
91 return \false;
92 }
93 try {
94 $this->input_encoding = self::filterEncoding($matches['input']);
95 $this->output_encoding = self::filterEncoding($matches['output']);
96 } catch (OutOfRangeException $e) {
97 return \false;
98 }
99 return \true;
100 }
101 /**
102 * @param resource $in
103 * @param resource $out
104 * @param int $consumed
105 * @param bool $closing
106 */
107 public function filter($in, $out, &$consumed, $closing): int
108 {
109 while (null !== $bucket = stream_bucket_make_writeable($in)) {
110 $bucket->data = @mb_convert_encoding($bucket->data, $this->output_encoding, $this->input_encoding);
111 $consumed += $bucket->datalen;
112 stream_bucket_append($out, $bucket);
113 }
114 return \PSFS_PASS_ON;
115 }
116 /**
117 * Convert Csv records collection into UTF-8.
118 */
119 public function convert(iterable $records): iterable
120 {
121 if ($this->output_encoding === $this->input_encoding) {
122 return $records;
123 }
124 if (is_array($records)) {
125 return array_map($this, $records);
126 }
127 /* @var Traversable $records */
128 return new MapIterator($records, $this);
129 }
130 /**
131 * Enable using the class as a formatter for the {@link Writer}.
132 */
133 public function __invoke(array $record): array
134 {
135 $outputRecord = [];
136 foreach ($record as $offset => $value) {
137 [$newOffset, $newValue] = $this->encodeField($value, $offset);
138 $outputRecord[$newOffset] = $newValue;
139 }
140 return $outputRecord;
141 }
142 /**
143 * Walker method to convert the offset and the value of a CSV record field.
144 *
145 * @param int|float|string|null $value can be a scalar type or null
146 * @param int|string $offset can be a string or an int
147 */
148 protected function encodeField($value, $offset): array
149 {
150 if (null !== $value && !is_numeric($value)) {
151 $value = mb_convert_encoding($value, $this->output_encoding, $this->input_encoding);
152 }
153 if (!is_numeric($offset)) {
154 $offset = mb_convert_encoding($offset, $this->output_encoding, $this->input_encoding);
155 }
156 return [$offset, $value];
157 }
158 /**
159 * Sets the records input encoding charset.
160 */
161 public function inputEncoding(string $encoding): self
162 {
163 $encoding = self::filterEncoding($encoding);
164 if ($encoding === $this->input_encoding) {
165 return $this;
166 }
167 $clone = clone $this;
168 $clone->input_encoding = $encoding;
169 return $clone;
170 }
171 /**
172 * Sets the records output encoding charset.
173 */
174 public function outputEncoding(string $encoding): self
175 {
176 $encoding = self::filterEncoding($encoding);
177 if ($encoding === $this->output_encoding) {
178 return $this;
179 }
180 $clone = clone $this;
181 $clone->output_encoding = $encoding;
182 return $clone;
183 }
184 }
185