PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.11.0
GiveWP – Donation Plugin and Fundraising Platform v2.11.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 / FieldCollection / InsertNode.php
give / src / Framework / FieldsAPI / FieldCollection Last commit date
Contract 5 years ago Exception 5 years ago InsertNode.php 5 years ago MoveNode.php 5 years ago MoveNodeProxy.php 5 years ago NameCollision.php 5 years ago RemoveNode.php 5 years ago WalkNodes.php 5 years ago
InsertNode.php
107 lines
1 <?php
2
3 namespace Give\Framework\FieldsAPI\FieldCollection;
4
5 use Give\Framework\FieldsAPI\FieldCollection\Contract\Node;
6 use Give\Framework\FieldsAPI\FieldCollection\Contract\GroupNode;
7 use Give\Framework\FieldsAPI\FieldCollection\Exception\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 */
22 public function insertAfter( $siblingName, Node $node ) {
23 $this->checkNameCollisionDeep( $node );
24 $this->insertAfterRecursive( $siblingName, $node );
25 return $this;
26 }
27
28 /**
29 * @since 2.10.2
30 *
31 * @param string $siblingName
32 * @param Node $node
33 *
34 * @throws ReferenceNodeNotFoundException
35 *
36 * @return void
37 */
38 protected function insertAfterRecursive( $siblingName, Node $node ) {
39 $siblingIndex = $this->getNodeIndexByName( $siblingName );
40 if ( false !== $siblingIndex ) {
41 $this->insertAtIndex(
42 $siblingIndex + 1,
43 $node
44 );
45 return;
46 } elseif ( $this->nodes ) {
47 foreach ( $this->nodes as $childNode ) {
48 if ( $childNode instanceof GroupNode ) {
49 $childNode->insertAfterRecursive( $siblingName, $node );
50 }
51 }
52 return;
53 }
54 throw new ReferenceNodeNotFoundException( $siblingName );
55 }
56
57 /**
58 * @since 2.10.2
59 *
60 * @param string $siblingName
61 * @param Node $node
62 *
63 * @return $this
64 */
65 public function insertBefore( $siblingName, Node $node ) {
66 $this->checkNameCollisionDeep( $node );
67 $this->insertBeforeRecursive( $siblingName, $node );
68 return $this;
69 }
70
71 /**
72 * @since 2.10.2
73 *
74 * @param string $siblingName
75 * @param Node $node
76 *
77 * @throws ReferenceNodeNotFoundException
78 *
79 * @return void
80 */
81 protected function insertBeforeRecursive( $siblingName, Node $node ) {
82 $siblingIndex = $this->getNodeIndexByName( $siblingName );
83 if ( false !== $siblingIndex ) {
84 $this->insertAtIndex(
85 $siblingIndex - 1,
86 $node
87 );
88 return;
89 } elseif ( $this->nodes ) {
90 foreach ( $this->nodes as $childNode ) {
91 if ( $childNode instanceof GroupNode ) {
92 $childNode->insertBeforeRecursive( $siblingName, $node );
93 }
94 }
95 return;
96 }
97 throw new ReferenceNodeNotFoundException( $siblingName );
98 }
99
100 /**
101 * @since 2.10.2
102 */
103 protected function insertAtIndex( $index, $node ) {
104 array_splice( $this->nodes, $index, 0, [ $node ] );
105 }
106 }
107