4 +--------------------------------------------------------------------+
5 | Copyright CiviCRM LLC. All rights reserved. |
7 | This work is published under the GNU AGPLv3 license with some |
8 | permitted exceptions and without any warranty. For full license |
9 | and copyright information, see https://civicrm.org/licensing |
10 +--------------------------------------------------------------------+
16 * @copyright CiviCRM LLC https://civicrm.org/licensing
22 namespace Civi\Api4\Service\Spec
;
39 protected $fields = [];
42 * @param string $entity
43 * @param string $action
45 public function __construct($entity, $action) {
46 $this->entity
= $entity;
47 $this->action
= $action;
50 public function addFieldSpec(FieldSpec
$field) {
51 $this->fields
[] = $field;
57 * @return FieldSpec|null
59 public function getFieldByName($name) {
60 foreach ($this->fields
as $field) {
61 if ($field->getName() === $name) {
71 * Gets all the field names currently part of the specification
73 public function getFieldNames() {
74 return array_map(function(FieldSpec
$field) {
75 return $field->getName();
80 * @return array|FieldSpec[]
82 public function getRequiredFields() {
83 return array_filter($this->fields
, function (FieldSpec
$field) {
84 return $field->isRequired();
89 * @return array|FieldSpec[]
91 public function getConditionalRequiredFields() {
92 return array_filter($this->fields
, function (FieldSpec
$field) {
93 return $field->getRequiredIf();
98 * @param array $fieldNames
99 * Optional array of fields to return
100 * @return FieldSpec[]
102 public function getFields($fieldNames = NULL) {
104 return $this->fields
;
107 foreach ($this->fields
as $field) {
108 if (in_array($field->getName(), $fieldNames)) {
118 public function getEntity() {
119 return $this->entity
;
125 public function getAction() {
126 return $this->action
;