PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 3.100.2
MailPoet – Newsletters, Email Marketing, and Automation v3.100.2
5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / lib-3rd-party / pquery / pQuery.php
mailpoet / lib-3rd-party / pquery Last commit date
third_party 4 years ago IQuery.php 4 years ago LICENSE 4 years ago gan_formatter.php 4 years ago gan_node_html.php 4 years ago gan_parser_html.php 4 years ago gan_selector_html.php 4 years ago gan_tokenizer.php 4 years ago gan_xml2array.php 4 years ago ganon.php 4 years ago index.php 4 years ago pQuery.php 4 years ago
pQuery.php
285 lines
1 <?php
2 /**
3 * @author Niels A.D.
4 * @author Todd Burry <todd@vanillaforums.com>
5 * @copyright 2010 Niels A.D., 2014 Todd Burry
6 * @license http://opensource.org/licenses/LGPL-2.1 LGPL-2.1
7 * @package pQuery
8 */
9
10 namespace MailPoetVendor\pQuery;
11
12 if (!defined('ABSPATH')) exit;
13
14
15
16 /**
17 * A jQuery-like object for php.
18 */
19 class pQuery implements \ArrayAccess, \IteratorAggregate, IQuery {
20 /// Properties ///
21
22 /**
23 * @var IQuery[]
24 */
25 protected $nodes = array();
26
27 /// Methods ///
28
29 public function __construct($nodes = array()) {
30 $this->nodes = $nodes;
31 }
32
33 public function addClass($classname) {
34 foreach ($this->nodes as $node) {
35 $node->addClass($classname);
36 }
37 return $this;
38 }
39
40 public function after($content) {
41 foreach ($this->nodes as $node) {
42 $node->after($content);
43 }
44 return $this;
45 }
46
47 public function append($content) {
48 foreach ($this->nodes as $node) {
49 $node->append($content);
50 }
51 return $this;
52 }
53
54 public function attr($name, $value = null) {
55 if (empty($this->nodes) && $value === null)
56 return '';
57
58 foreach ($this->nodes as $node) {
59 if ($value === null)
60 return $node->attr($name);
61 $node->attr($name, $value);
62 }
63 return $this;
64 }
65
66 public function before($content) {
67 foreach ($this->nodes as $node) {
68 $node->before($content);
69 }
70 return $this;
71 }
72
73 public function clear() {
74 foreach ($this->nodes as $node) {
75 $node->clear();
76 }
77 return $this;
78 }
79
80 /**
81 * Get the count of matched elements.
82 *
83 * @return int Returns the count of matched elements.
84 */
85 public function count(): int {
86 return count($this->nodes);
87 }
88
89 /**
90 * Format/beautify a DOM.
91 *
92 * @param DomNode $dom The dom to format.
93 * @param array $options Extra formatting options. See {@link HtmlFormatter::$options}.
94 * @return bool Returns `true` on sucess and `false` on failure.
95 */
96 // public static function format($dom, $options = array()) {
97 // $formatter = new pQuery\HtmlFormatter($options);
98 // return $formatter->format($dom);
99 // }
100
101 public function getIterator(): \ArrayIterator {
102 return new \ArrayIterator($this->nodes);
103 }
104
105 public function hasClass($classname) {
106 foreach ($this->nodes as $node) {
107 if ($node->hasClass($classname))
108 return true;
109 }
110 return false;
111 }
112
113 public function html($value = null) {
114 if (empty($this->nodes) && $value === null)
115 return '';
116
117 foreach ($this->nodes as $node) {
118 if ($value === null)
119 return $node->html();
120 $node->html($value);
121 }
122 return $this;
123 }
124
125 public function offsetExists($offset): bool {
126 return isset($this->nodes[$offset]);
127 }
128
129 #[\ReturnTypeWillChange]
130 public function offsetGet($offset) {
131 return isset($this->nodes[$offset]) ? $this->nodes[$offset] : null;
132 }
133
134 public function offsetSet($offset, $value): void {
135
136 if (is_null($offset) || !isset($this->nodes[$offset])) {
137 throw new \BadMethodCallException("You are not allowed to add new nodes to the pQuery object.");
138 } else {
139 $this->nodes[$offset]->replaceWith($value);
140 }
141 }
142
143 public function offsetUnset($offset): void {
144 if (isset($this->nodes[$offset])) {
145 $this->nodes[$offset]->remove();
146 unset($this->nodes[$offset]);
147 }
148 }
149
150 /**
151 * Query a file or url.
152 *
153 * @param string $path The path to the url.
154 * @param resource $context A context suitable to be passed into {@link file_get_contents}
155 * @return DomNode Returns the root dom node for the html file.
156 */
157 public static function parseFile($path, $context = null) {
158 $html_str = file_get_contents($path, false, $context);
159 return static::parseStr($html_str);
160 }
161
162 /**
163 * Query a string of html.
164 *
165 * @param string $html
166 * @return DomNode Returns the root dom node for the html string.
167 */
168 public static function parseStr($html) {
169 $parser = new Html5Parser($html);
170 return $parser->root;
171 }
172
173 public function prepend($content = null) {
174 foreach ($this->nodes as $node) {
175 $node->prepend($content);
176 }
177 return $this;
178 }
179
180 public function prop($name, $value = null) {
181 if (empty($this->nodes) && $value === null)
182 return '';
183
184 foreach ($this->nodes as $node) {
185 if ($value === null)
186 return $node->prop($name);
187 $node->prop($name, $value);
188 }
189 return $this;
190 }
191
192 public function remove($selector = null) {
193 foreach ($this->nodes as $node) {
194 $node->remove($selector);
195 }
196 if ($selector === null)
197 $this->nodes = array();
198
199 return $this;
200 }
201
202 public function removeAttr($name) {
203 foreach ($this->nodes as $node) {
204 $node->removeAttr($name);
205 }
206 return $this;
207 }
208
209 public function removeClass($classname) {
210 foreach ($this->nodes as $node) {
211 $node->removeClass($classname);
212 }
213 return $this;
214 }
215
216 public function replaceWith($content) {
217 foreach ($this->nodes as &$node) {
218 $node = $node->replaceWith($content);
219 }
220 return $this;
221 }
222
223 public function tagName($value = null) {
224 foreach ($this->nodes as $node) {
225 if ($value === null)
226 return $node->tagName();
227 $node->tagName($value);
228 }
229 return $this;
230 }
231
232 public function text($value = null) {
233 if (empty($this->nodes) && $value === null)
234 return '';
235
236 foreach ($this->nodes as $node) {
237 if ($value === null)
238 return $node->text();
239 $node->text($value);
240 }
241 return $this;
242 }
243
244 public function toggleClass($classname, $switch = null) {
245 foreach ($this->nodes as $node) {
246 $node->toggleClass($classname, $switch);
247 }
248
249 return $this;
250 }
251
252 public function unwrap() {
253 foreach ($this->nodes as $node) {
254 $node->unwrap();
255 }
256 return $this;
257 }
258
259 public function val($value = null) {
260 if (empty($this->nodes) && $value === null)
261 return '';
262
263 foreach ($this->nodes as $node) {
264 if ($value === null)
265 return $node->val();
266 $node->val($value);
267 }
268 return $this;
269 }
270
271 public function wrap($wrapping_element) {
272 foreach ($this->nodes as $node) {
273 $node->wrap($wrapping_element);
274 }
275 return $this;
276 }
277
278 public function wrapInner($wrapping_element) {
279 foreach ($this->nodes as $node) {
280 $node->wrapInner($wrapping_element);
281 }
282 return $this;
283 }
284 }
285