PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.1
Independent Analytics – WordPress Analytics Plugin v2.14.1
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / league / csv / src / EncloseField.php
independent-analytics / vendor / league / csv / src Last commit date
Polyfill 10 months ago AbstractCsv.php 10 months ago ByteSequence.php 10 months ago CannotInsertRecord.php 10 months ago CharsetConverter.php 10 months ago ColumnConsistency.php 10 months ago EncloseField.php 10 months ago EscapeFormula.php 10 months ago Exception.php 10 months ago HTMLConverter.php 10 months ago Info.php 10 months ago InvalidArgument.php 10 months ago MapIterator.php 10 months ago RFC4180Field.php 10 months ago Reader.php 10 months ago ResultSet.php 10 months ago Statement.php 10 months ago Stream.php 10 months ago SyntaxError.php 10 months ago TabularDataReader.php 10 months ago UnableToProcessCsv.php 10 months ago UnavailableFeature.php 10 months ago UnavailableStream.php 10 months ago Writer.php 10 months ago XMLConverter.php 10 months ago functions.php 10 months ago functions_include.php 10 months ago
EncloseField.php
114 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 IAWPSCOPED\League\Csv;
13
14 use InvalidArgumentException;
15 use php_user_filter;
16 use function array_map;
17 use function in_array;
18 use function str_replace;
19 use function strcspn;
20 use function stream_bucket_append;
21 use function stream_bucket_make_writeable;
22 use function stream_filter_register;
23 use function stream_get_filters;
24 use function strlen;
25 /**
26 * A stream filter to improve enclosure character usage.
27 *
28 * @see https://tools.ietf.org/html/rfc4180#section-2
29 * @see https://bugs.php.net/bug.php?id=38301
30 * @internal
31 */
32 class EncloseField extends php_user_filter
33 {
34 const FILTERNAME = 'convert.league.csv.enclosure';
35 /**
36 * Default sequence.
37 *
38 * @var string
39 */
40 protected $sequence;
41 /**
42 * Characters that triggers enclosure in PHP.
43 *
44 * @var string
45 */
46 protected static $force_enclosure = "\n\r\t ";
47 /**
48 * Static method to return the stream filter filtername.
49 */
50 public static function getFiltername() : string
51 {
52 return self::FILTERNAME;
53 }
54 /**
55 * Static method to register the class as a stream filter.
56 */
57 public static function register() : void
58 {
59 if (!in_array(self::FILTERNAME, stream_get_filters(), \true)) {
60 stream_filter_register(self::FILTERNAME, self::class);
61 }
62 }
63 /**
64 * Static method to add the stream filter to a {@link Writer} object.
65 *
66 * @throws InvalidArgumentException if the sequence is malformed
67 * @throws Exception
68 */
69 public static function addTo(Writer $csv, string $sequence) : Writer
70 {
71 self::register();
72 if (!self::isValidSequence($sequence)) {
73 throw new InvalidArgumentException('The sequence must contain at least one character to force enclosure');
74 }
75 $formatter = function (array $record) use($sequence) : array {
76 return array_map(function (?string $value) use($sequence) : string {
77 return $sequence . $value;
78 }, $record);
79 };
80 return $csv->addFormatter($formatter)->addStreamFilter(self::FILTERNAME, ['sequence' => $sequence]);
81 }
82 /**
83 * Filter type and sequence parameters.
84 *
85 * The sequence to force enclosure MUST contains one of the following character ("\n\r\t ")
86 */
87 protected static function isValidSequence(string $sequence) : bool
88 {
89 return strlen($sequence) != strcspn($sequence, self::$force_enclosure);
90 }
91 /**
92 * {@inheritdoc}
93 */
94 public function onCreate() : bool
95 {
96 return isset($this->params['sequence']) && self::isValidSequence($this->params['sequence']);
97 }
98 /**
99 * @param resource $in
100 * @param resource $out
101 * @param int $consumed
102 * @param bool $closing
103 */
104 public function filter($in, $out, &$consumed, $closing) : int
105 {
106 while ($res = stream_bucket_make_writeable($in)) {
107 $res->data = str_replace($this->params['sequence'], '', $res->data);
108 $consumed += $res->datalen;
109 stream_bucket_append($out, $res);
110 }
111 return \PSFS_PASS_ON;
112 }
113 }
114