File: /var/www/html/wpmuhibbah_err/wp-content/plugins/give/src/Framework/FieldsAPI/Concerns/HasNodes.php
<?php
namespace Give\Framework\FieldsAPI\Concerns;
use Give\Framework\FieldsAPI\Contracts\Collection;
use Give\Framework\FieldsAPI\Contracts\Node;
use Give\Framework\FieldsAPI\Field;
trait HasNodes
{
/**
* @var Node[]
*/
protected $nodes = [];
/**
* @inheritdoc
*/
public function getNodeIndexByName(string $name)
{
foreach ($this->nodes as $index => $node) {
if ($node->getName() === $name) {
return $index;
}
}
return null;
}
/**
* @inheritdoc
*
* @return Node|null
*/
public function getNodeByName(string $name)
{
foreach ($this->nodes as $node) {
if ($node->getName() === $name) {
return $node;
}
if ($node instanceof Collection) {
$nestedNode = $node->getNodeByName($name);
if ($nestedNode !== null) {
return $nestedNode;
}
}
}
return null;
}
/**
* @inheritdoc
*/
public function all(): array
{
return $this->nodes;
}
/**
* @inheritdoc
*
* @return Field[]
*/
public function getFields(): array
{
$fields = [];
foreach ($this->nodes as $node) {
if ($node instanceof Field) {
$fields[] = $node;
} elseif ($node instanceof Collection) {
$nestedFields = $node->getFields();
foreach($nestedFields as $field) {
$fields[] = $field;
}
}
}
return $fields;
}
/**
* @inheritdoc
*/
public function count(): int
{
return count($this->nodes);
}
}