PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.19.7
GiveWP – Donation Plugin and Fundraising Platform v2.19.7
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / FieldsAPI / Concerns / InsertNode.php
give / src / Framework / FieldsAPI / Concerns Last commit date
AllowMultiple.php 4 years ago HasDefaultValue.php 4 years ago HasEmailTag.php 4 years ago HasHelpText.php 4 years ago HasLabel.php 4 years ago HasMaxLength.php 4 years ago HasMinLength.php 4 years ago HasName.php 4 years ago HasNodes.php 4 years ago HasOptions.php 4 years ago HasPlaceholder.php 4 years ago HasType.php 4 years ago HasVisibilityConditions.php 4 years ago InsertNode.php 4 years ago IsReadOnly.php 4 years ago IsRequired.php 4 years ago Macroable.php 4 years ago MoveNode.php 4 years ago MoveNodeProxy.php 4 years ago NameCollision.php 4 years ago RemoveNode.php 4 years ago SerializeAsJson.php 4 years ago ShowInReceipt.php 4 years ago StoreAsMeta.php 4 years ago ValidationRules.php 4 years ago WalkNodes.php 4 years ago
InsertNode.php
141 lines
1 <?php
2
3 namespace Give\Framework\FieldsAPI\Concerns;
4
5 use Give\Framework\FieldsAPI\Contracts\Collection;
6 use Give\Framework\FieldsAPI\Contracts\Node;
7 use Give\Framework\FieldsAPI\Exceptions\ReferenceNodeNotFoundException;
8
9 /**
10 * @since 2.10.2
11 */
12 trait InsertNode
13 {
14
15 /**
16 * @since 2.10.2
17 *
18 * @param string $siblingName
19 * @param Node $node
20 *
21 * @return $this
22 * @throws ReferenceNodeNotFoundException
23 */
24 public function insertAfter($siblingName, Node $node)
25 {
26 $this->checkNameCollisionDeep($node);
27 $this->insertAfterRecursive($siblingName, $node);
28
29 return $this;
30 }
31
32 /**
33 * @since 2.10.2
34 *
35 * @param string $siblingName
36 * @param Node $node
37 *
38 * @return void
39 * @throws ReferenceNodeNotFoundException
40 *
41 */
42 protected function insertAfterRecursive($siblingName, Node $node)
43 {
44 $siblingIndex = $this->getNodeIndexByName($siblingName);
45 if (false !== $siblingIndex) {
46 $this->insertAtIndex(
47 $siblingIndex + 1,
48 $node
49 );
50
51 return;
52 }
53
54 if ($this->nodes) {
55 foreach ($this->nodes as $childNode) {
56 if ($childNode instanceof Collection) {
57 $childNode->insertAfter($siblingName, $node);
58 }
59 }
60
61 return;
62 }
63
64 throw new ReferenceNodeNotFoundException($siblingName);
65 }
66
67 /**
68 * @since 2.10.2
69 *
70 * @param string $siblingName
71 * @param Node $node
72 *
73 * @return $this
74 * @throws ReferenceNodeNotFoundException
75 *
76 */
77 public function insertBefore($siblingName, Node $node)
78 {
79 $this->checkNameCollisionDeep($node);
80 $this->insertBeforeRecursive($siblingName, $node);
81
82 return $this;
83 }
84
85 /**
86 * @since 2.10.2
87 *
88 * @param string $siblingName
89 * @param Node $node
90 *
91 * @return void
92 * @throws ReferenceNodeNotFoundException
93 *
94 */
95 protected function insertBeforeRecursive($siblingName, Node $node)
96 {
97 $siblingIndex = $this->getNodeIndexByName($siblingName);
98 if (false !== $siblingIndex) {
99 $this->insertAtIndex(
100 $siblingIndex - 1,
101 $node
102 );
103
104 return;
105 }
106
107 if ($this->nodes) {
108 foreach ($this->nodes as $childNode) {
109 if ($childNode instanceof Collection) {
110 $childNode->insertBefore($siblingName, $node);
111 }
112 }
113
114 return;
115 }
116
117 throw new ReferenceNodeNotFoundException($siblingName);
118 }
119
120 /**
121 * @since 2.10.2
122 */
123 protected function insertAtIndex($index, $node)
124 {
125 $this->checkNameCollisionDeep($node);
126 array_splice($this->nodes, $index, 0, [$node]);
127 }
128
129 /**
130 * {@inheritdoc}
131 */
132 public function append(Node ...$nodes)
133 {
134 foreach ($nodes as $node) {
135 $this->insertAtIndex($this->count(), $node);
136 }
137
138 return $this;
139 }
140 }
141