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 / Statement.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
Statement.php
141 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 ArrayIterator;
15 use CallbackFilterIterator;
16 use Iterator;
17 use LimitIterator;
18 use function array_reduce;
19 /**
20 * Criteria to filter a {@link Reader} object.
21 */
22 class Statement
23 {
24 /** @var array<callable> Callables to filter the iterator. */
25 protected array $where = [];
26 /** @var array<callable> Callables to sort the iterator. */
27 protected array $order_by = [];
28 /** iterator Offset. */
29 protected int $offset = 0;
30 /** iterator maximum length. */
31 protected int $limit = -1;
32 /**
33 * @throws Exception
34 */
35 public static function create(callable $where = null, int $offset = 0, int $limit = -1): self
36 {
37 $stmt = new self();
38 if (null !== $where) {
39 $stmt = $stmt->where($where);
40 }
41 return $stmt->offset($offset)->limit($limit);
42 }
43 /**
44 * Set the Iterator filter method.
45 */
46 public function where(callable $where): self
47 {
48 $clone = clone $this;
49 $clone->where[] = $where;
50 return $clone;
51 }
52 /**
53 * Set an Iterator sorting callable function.
54 */
55 public function orderBy(callable $order_by): self
56 {
57 $clone = clone $this;
58 $clone->order_by[] = $order_by;
59 return $clone;
60 }
61 /**
62 * Set LimitIterator Offset.
63 *
64 * @throws Exception if the offset is lesser than 0
65 */
66 public function offset(int $offset): self
67 {
68 if (0 > $offset) {
69 throw InvalidArgument::dueToInvalidRecordOffset($offset, __METHOD__);
70 }
71 if ($offset === $this->offset) {
72 return $this;
73 }
74 $clone = clone $this;
75 $clone->offset = $offset;
76 return $clone;
77 }
78 /**
79 * Set LimitIterator Count.
80 *
81 * @throws Exception if the limit is lesser than -1
82 */
83 public function limit(int $limit): self
84 {
85 if (-1 > $limit) {
86 throw InvalidArgument::dueToInvalidLimit($limit, __METHOD__);
87 }
88 if ($limit === $this->limit) {
89 return $this;
90 }
91 $clone = clone $this;
92 $clone->limit = $limit;
93 return $clone;
94 }
95 /**
96 * Execute the prepared Statement on the {@link Reader} object.
97 *
98 * @param array<string> $header an optional header to use instead of the CSV document header
99 */
100 public function process(TabularDataReader $tabular_data, array $header = []): TabularDataReader
101 {
102 if ([] === $header) {
103 $header = $tabular_data->getHeader();
104 }
105 $iterator = $tabular_data->getRecords($header);
106 $iterator = array_reduce($this->where, [$this, 'filter'], $iterator);
107 $iterator = $this->buildOrderBy($iterator);
108 return new ResultSet(new LimitIterator($iterator, $this->offset, $this->limit), $header);
109 }
110 /**
111 * Filters elements of an Iterator using a callback function.
112 */
113 protected function filter(Iterator $iterator, callable $callable): CallbackFilterIterator
114 {
115 return new CallbackFilterIterator($iterator, $callable);
116 }
117 /**
118 * Sort the Iterator.
119 */
120 protected function buildOrderBy(Iterator $iterator): Iterator
121 {
122 if ([] === $this->order_by) {
123 return $iterator;
124 }
125 $compare = function (array $record_a, array $record_b): int {
126 foreach ($this->order_by as $callable) {
127 if (0 !== $cmp = $callable($record_a, $record_b)) {
128 return $cmp;
129 }
130 }
131 return $cmp ?? 0;
132 };
133 $it = new ArrayIterator();
134 foreach ($iterator as $offset => $value) {
135 $it[$offset] = $value;
136 }
137 $it->uasort($compare);
138 return $it;
139 }
140 }
141