PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.1.0
GiveWP – Donation Plugin and Fundraising Platform v4.1.0
4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 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 All 253 releases
give / src / Framework / FieldsAPI / Group.php

Group.php in GiveWP – Donation Plugin and Fundraising Platform 4.1.0, at src/Framework/FieldsAPI/Group.php

82 lines 1.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\Framework\FieldsAPI;
4
5 use Give\Framework\FieldsAPI\Contracts\Collection;
6 use Give\Framework\FieldsAPI\Contracts\Node;
7
8 /**
9 * @since 2.12.0
10 * @since 2.13.0 Support visibility conditions
11 * @since 2.22.0 Add TapNode trait
12 */
13 class Group implements Node, Collection
14 {
15 use Concerns\HasName;
16 use Concerns\HasNodes;
17 use Concerns\HasType;
18 use Concerns\InsertNode;
19 use Concerns\MoveNode;
20 use Concerns\NameCollision;
21 use Concerns\RemoveNode;
22 use Concerns\SerializeAsJson;
23 use Concerns\TapNode;
24 use Concerns\WalkNodes;
25 use Concerns\HasVisibilityConditions {
26 Concerns\HasVisibilityConditions::__construct as private __visibilityConditionsConstruct;
27 }
28
29 /**
30 * @since 2.12.2
31 */
32 const TYPE = 'group';
33
34 /**
35 * @since 2.12.0
36 * @since 2.23.1 Make constructor final to avoid unsafe usage of `new static()`.
37 *
38 * @param $name
39 */
40 final public function __construct($name)
41 {
42 $this->name = $name;
43
44 $this->__visibilityConditionsConstruct();
45 }
46
47 /**
48 * @inheritDoc
49 */
50 public function getNodeType(): string
51 {
52 return 'group';
53 }
54
55 /**
56 * @since 2.12.0
57 *
58 * @param $name
59 *
60 * @return static
61 */
62 public static function make($name)
63 {
64 return new static($name);
65 }
66
67 /**
68 * Gives th ability to fluently "tap" a specific node within the group. This is useful when fluently calling methods
69 * on the group, and making a change to a specific node without breaking the fluency.
70 *
71 * @since 2.22.0
72 *
73 * @return $this
74 */
75 public function tapNode(string $name, callable $callback)
76 {
77 $callback($this->getNodeByName($name));
78
79 return $this;
80 }
81 }
82