PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.10.1
GiveWP – Donation Plugin and Fundraising Platform v2.10.1
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 * @unreleased
11 */
12 trait InsertNode {
13
14 /**
15 * @unreleased
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 * @unreleased
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 * @unreleased
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 * @unreleased
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 * @unreleased
102 */
103 protected function insertAtIndex( $index, $node ) {
104 array_splice( $this->nodes, $index, 0, [ $node ] );
105 }
106 }
107