PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.14.0
GiveWP – Donation Plugin and Fundraising Platform v2.14.0
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 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
127 lines
1 <?php
2
3 namespace Give\Framework\FieldsAPI\Concerns;
4
5 use Give\Framework\FieldsAPI\Contracts\Node;
6 use Give\Framework\FieldsAPI\Contracts\Collection;
7 use Give\Framework\FieldsAPI\Exceptions\ReferenceNodeNotFoundException;
8
9 /**
10 * @since 2.10.2
11 */
12 trait InsertNode {
13
14 /**
15 * @since 2.10.2
16 *
17 * @param string $siblingName
18 * @param Node $node
19 *
20 * @return $this
21 * @throws ReferenceNodeNotFoundException
22 */
23 public function insertAfter( $siblingName, Node $node ) {
24 $this->checkNameCollisionDeep( $node );
25 $this->insertAfterRecursive( $siblingName, $node );
26 return $this;
27 }
28
29 /**
30 * @since 2.10.2
31 *
32 * @param string $siblingName
33 * @param Node $node
34 *
35 * @throws ReferenceNodeNotFoundException
36 *
37 * @return void
38 */
39 protected function insertAfterRecursive( $siblingName, Node $node ) {
40 $siblingIndex = $this->getNodeIndexByName( $siblingName );
41 if ( false !== $siblingIndex ) {
42 $this->insertAtIndex(
43 $siblingIndex + 1,
44 $node
45 );
46 return;
47 }
48
49 if ( $this->nodes ) {
50 foreach ( $this->nodes as $childNode ) {
51 if ( $childNode instanceof Collection ) {
52 $childNode->insertAfter( $siblingName, $node );
53 }
54 }
55 return;
56 }
57
58 throw new ReferenceNodeNotFoundException( $siblingName );
59 }
60
61 /**
62 * @since 2.10.2
63 *
64 * @param string $siblingName
65 * @param Node $node
66 *
67 * @throws ReferenceNodeNotFoundException
68 *
69 * @return $this
70 */
71 public function insertBefore( $siblingName, Node $node ) {
72 $this->checkNameCollisionDeep( $node );
73 $this->insertBeforeRecursive( $siblingName, $node );
74 return $this;
75 }
76
77 /**
78 * @since 2.10.2
79 *
80 * @param string $siblingName
81 * @param Node $node
82 *
83 * @throws ReferenceNodeNotFoundException
84 *
85 * @return void
86 */
87 protected function insertBeforeRecursive( $siblingName, Node $node ) {
88 $siblingIndex = $this->getNodeIndexByName( $siblingName );
89 if ( false !== $siblingIndex ) {
90 $this->insertAtIndex(
91 $siblingIndex - 1,
92 $node
93 );
94 return;
95 }
96
97 if ( $this->nodes ) {
98 foreach ( $this->nodes as $childNode ) {
99 if ( $childNode instanceof Collection ) {
100 $childNode->insertBefore( $siblingName, $node );
101 }
102 }
103 return;
104 }
105
106 throw new ReferenceNodeNotFoundException( $siblingName );
107 }
108
109 /**
110 * @since 2.10.2
111 */
112 protected function insertAtIndex( $index, $node ) {
113 $this->checkNameCollisionDeep( $node );
114 array_splice( $this->nodes, $index, 0, [ $node ] );
115 }
116
117 /**
118 * {@inheritdoc}
119 */
120 public function append( Node ...$nodes ) {
121 foreach ( $nodes as $node ) {
122 $this->insertAtIndex( $this->count(), $node );
123 }
124 return $this;
125 }
126 }
127