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 / EscapeFormula.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
EscapeFormula.php
130 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 InvalidArgumentException;
15 use function array_fill_keys;
16 use function array_keys;
17 use function array_map;
18 use function array_merge;
19 use function array_unique;
20 use function is_object;
21 use function is_string;
22 use function method_exists;
23 /**
24 * A Formatter to tackle CSV Formula Injection.
25 *
26 * @see http://georgemauer.net/2017/10/07/csv-injection.html
27 */
28 class EscapeFormula
29 {
30 /** Spreadsheet formula starting character. */
31 const FORMULA_STARTING_CHARS = ['=', '-', '+', '@', "\t", "\r"];
32 /** Effective Spreadsheet formula starting characters. */
33 protected array $special_chars = [];
34 /** Escape character to escape each CSV formula field. */
35 protected string $escape;
36 /**
37 * @param string $escape escape character to escape each CSV formula field
38 * @param string[] $special_chars additional spreadsheet formula starting characters
39 */
40 public function __construct(string $escape = "'", array $special_chars = [])
41 {
42 $this->escape = $escape;
43 if ([] !== $special_chars) {
44 $special_chars = $this->filterSpecialCharacters(...$special_chars);
45 }
46 $chars = array_unique(array_merge(self::FORMULA_STARTING_CHARS, $special_chars));
47 $this->special_chars = array_fill_keys($chars, 1);
48 }
49 /**
50 * Filter submitted special characters.
51 *
52 * @param string ...$characters
53 *
54 * @throws InvalidArgumentException if the string is not a single character
55 *
56 * @return array<string>
57 */
58 protected function filterSpecialCharacters(string ...$characters): array
59 {
60 foreach ($characters as $str) {
61 if (1 != strlen($str)) {
62 throw new InvalidArgumentException('The submitted string ' . $str . ' must be a single character');
63 }
64 }
65 return $characters;
66 }
67 /**
68 * Returns the list of character the instance will escape.
69 *
70 * @return array<string>
71 */
72 public function getSpecialCharacters(): array
73 {
74 return array_keys($this->special_chars);
75 }
76 /**
77 * Returns the escape character.
78 */
79 public function getEscape(): string
80 {
81 return $this->escape;
82 }
83 /**
84 * League CSV formatter hook.
85 *
86 * @see escapeRecord
87 */
88 public function __invoke(array $record): array
89 {
90 return $this->escapeRecord($record);
91 }
92 /**
93 * Escape a CSV record.
94 */
95 public function escapeRecord(array $record): array
96 {
97 return array_map([$this, 'escapeField'], $record);
98 }
99 /**
100 * Escape a CSV cell if its content is stringable.
101 *
102 * @param int|float|string|object|resource|array $cell the content of the cell
103 *
104 * @return mixed the escaped content
105 */
106 protected function escapeField($cell)
107 {
108 if (!is_string($cell) && (!is_object($cell) || !method_exists($cell, '__toString'))) {
109 return $cell;
110 }
111 $str_cell = (string) $cell;
112 if (isset($str_cell[0], $this->special_chars[$str_cell[0]])) {
113 return $this->escape . $str_cell;
114 }
115 return $cell;
116 }
117 /**
118 * @deprecated since 9.7.2 will be removed in the next major release
119 * @codeCoverageIgnore
120 *
121 * Tells whether the submitted value is stringable.
122 *
123 * @param mixed $value value to check if it is stringable
124 */
125 protected function isStringable($value): bool
126 {
127 return is_string($value) || is_object($value) && method_exists($value, '__toString');
128 }
129 }
130