Documentation

Submit extends AbstractProcessor
in package
uses ArrayQueryActionTrait

Class Submit

Table of Contents

Constants

EVENT_NAME  = 'civi.afform.submit'

Properties

$_debugOutput  : mixed
$_actionName  : string
$_afform  : array<string|int, mixed>
$_entityIds  : array<string|int, mixed>
Ids of each autoloaded entity.
$_entityName  : string
$_entityValues  : mixed
$_formDataModel  : FormDataModel
$args  : array<string|int, mixed>
Arguments present when loading the form
$chain  : array<string|int, mixed>
Additional api requests - will be called once per result.
$checkPermissions  : bool
Whether to enforce acl permissions based on the current user.
$debug  : bool
Add debugging info to the api result.
$fillMode  : string
Mode indicates what is being prefilled.
$language  : string
Preferred language (optional)
$name  : string
Form name
$values  : array<string|int, mixed>
Submitted values
$version  : int
Api version number; cannot be changed.
$_arrayStorage  : array<string|int, mixed>
$_entityFields  : array<string|int, mixed>
$_id  : int
$_paramInfo  : array<string|int, mixed>
$_reflection  : ReflectionClass

Methods

__call()  : static|mixed
Magic function to provide automatic getter/setter for params.
__construct()  : mixed
Action constructor.
__set()  : mixed
Strictly enforce api parameters
_run()  : mixed
addChain()  : $this
checkAfformConditional()  : bool
PHP interpretation of the "af-if" directive to determine conditional status.
compareValues()  : bool
entityFields()  : array<string|int, mixed>
Returns schema fields for this entity & action.
evaluateCondition()  : bool
This function is used internally for evaluating field annotations.
execute()  : Result
Invoke api call.
filterCompare()  : bool
getActionName()  : string
getArgs()  : array<string|int, mixed>
getChain()  : array<string|int, mixed>
getCheckPermissions()  : bool
getDebug()  : bool
getEntityField()  : array<string|int, mixed>|null
Get field definition for a given entity
getEntityFields()  : array<string|int, mixed>
Get all fields for a given entity
getEntityName()  : string
getFillMode()  : string
getJoinResult()  : array<string|int, mixed>
getLanguage()  : string|null
getName()  : string
getParamInfo()  : array<string|int, mixed>
Get documentation for one or all params
getParams()  : array<string|int, mixed>
Serialize this object's params into an array
getPermissions()  : array<string|int, mixed>
getValues()  : array<string|int, mixed>
loadEntity()  : void
Fetch all data needed to display a given entity on this form
loadJoins()  : array<string|int, mixed>
Finds all joins after loading an entity.
offsetExists()  : bool
offsetGet()  : mixed
offsetSet()  : void
offsetUnset()  : void
paramExists()  : bool
preprocessContact()  : void
Check if contact(s) meet the minimum requirements to be created (name and/or email).
preprocessSubmittedValues()  : mixed
Preprocess submitted values
processFormData()  : mixed
Process form data
processGenericEntity()  : mixed
processRelationships()  : mixed
reflect()  : ReflectionClass
setArgs()  : $this
setChain()  : $this
setCheckPermissions()  : $this
setDebug()  : $this
setFillMode()  : $this
setLanguage()  : $this
setName()  : $this
setValues()  : $this
setVersion()  : $this
validateEntityRefFields()  : void
Validate all fields of type "EntityRef" contain values that are allowed by filters
validateRequiredFields()  : void
Validate required field values
addCallbackToDebugOutput()  : mixed
When in debug mode, this logs the callback function being used by a Basic*Action class.
checkRequiredFields()  : array<string|int, mixed>
Validates required fields for actions which create a new object.
combineValuesAndIds()  : mixed
Recursively add entity IDs to the values.
fillIdFields()  : void
filterArray()  : array<string|int, mixed>
formatWriteValues()  : mixed
Replaces pseudoconstants in input values
getFileFields()  : array<string|int, mixed>
getFkField()  : array<string|int, mixed>|null
getJoinWhereClause()  : array<string|int, array<string|int, mixed>>
Gets the clause for looking up join entities, or NULL if not available.
getLanguageOptions()  : array<string|int, mixed>
Get available preferred languages.
getMagicProperties()  : array<string|int, mixed>
Get a list of class properties for which magic methods are supported.
getNestedKey()  : int|string|null
Given a nested array like `[0 => ['id' => 123]]`, this returns the first key from the inner array, e.g. `'id'`.
getParamDefaults()  : array<string|int, mixed>
getSubmittableFields()  : array<string|int, mixed>
limitArray()  : array<string|int, mixed>
loadEntities()  : mixed
Load all entities
prePopulateSubmissionData()  : mixed
Load the data from submission table
processForm()  : array<string|int, mixed>
queryArray()  : mixed
replaceReferences()  : mixed
Replace Entity reference fields with the id of the referenced entity.
saveJoins()  : mixed
This saves joins (sub-entities) such as Email, Address, Phone, etc.
selectArray()  : array<string|int, mixed>
sortArray()  : array<string|int, mixed>
apiGet()  : array<string|int, mixed>
Delegated by loadEntity to call API.get and fill in additioal info
checkAfformConditionalClause()  : mixed
evaluateFilters()  : bool
filterEmptyJoins()  : array<string|int, mixed>
Filter out join entities that have been left blank on the form
generatePostSubmitToken()  : string
Generates token returned from submit action
getEntityRefError()  : string|null
Return an error if an EntityRef field is submitted with a value outside the range of its savedSearch filters
getRequiredFieldError()  : string|null
If a required field is missing a value, return an error message
getValueFromEntity()  : mixed
Given a value like "Individual1[0][fields][Volunteer_Info.Residency_History]", searches a multi-dimensional array for the corresponding value if it exists.
loadJoin()  : array<string|int, mixed>
Directly loads a join entity e.g. from an autocomplete field in the join block.
processVerficationEmail()  : void
Function to send the verification email if configured
saveRelationshipById()  : void
saveRelationshipByValues()  : void
sendEmail()  : void
Function to send email
sortCompare()  : mixed
validateBySavedSearch()  : array<string|int, mixed>
Validate that given id(s) are actually returned by the Autocomplete API
walkFilters()  : bool

Constants

EVENT_NAME

  • You may simply use the event name directly. dev/core#1744
public mixed EVENT_NAME = 'civi.afform.submit'

Properties

$_entityIds

Ids of each autoloaded entity.

protected array<string|int, mixed> $_entityIds = []

Each key in the array corresponds to the name of an entity, and the value is an array of arrays (because of <af-repeat> all entities are treated as if they may be multi) E.g. $entityIds['Individual1'] = [['id' => 1, 'joins' => ['Email' => [['id' => 1], ['id' => 2]]];

$args

Arguments present when loading the form

protected array<string|int, mixed> $args = []

$chain

Additional api requests - will be called once per result.

protected array<string|int, mixed> $chain = []

Keys can be any string - this will be the name given to the output.

You can reference other values in the api results in this call by prefixing them with $.

For example, you could create a contact and place them in a group by chaining the GroupContact api to the Contact api:

Contact::create()
  ->setValue('first_name', 'Hello')
  ->addChain('add_a_group', GroupContact::create()
    ->setValue('contact_id', '$id')
    ->setValue('group_id', 123)
  )

This will substitute the id of the newly created contact with $id.

$checkPermissions

Whether to enforce acl permissions based on the current user.

protected bool $checkPermissions = TRUE

Setting to FALSE will disable permission checks and override ACLs. In REST/javascript this cannot be disabled.

$debug

Add debugging info to the api result.

protected bool $debug = FALSE

When enabled, $result->debug will be populated with information about the api call, including sql queries executed.

Note: with checkPermissions enabled, debug info will only be returned if the user has "view debug output" permission.

$fillMode

Mode indicates what is being prefilled.

protected string $fillMode = 'form'

Either the entire form, or a specific entity, or a join for an entity.

Tags
options

form,entity,join

$language

Preferred language (optional)

protected string $language

This option will notify major localization subsystems (ts(), multilingual, etc) about which locale should be used for composing/formatting messaging.

This indicates the preferred language. The effective language is determined by Civi\Core\Locale::negotiate($preferredLanguage).

Tags
optionsCallback

getLanguageOptions

$values

Submitted values

protected array<string|int, mixed> $values
Tags
required

$version

Api version number; cannot be changed.

protected int $version = 4

$_arrayStorage

private array<string|int, mixed> $_arrayStorage = []

Methods

__call()

Magic function to provide automatic getter/setter for params.

public __call(mixed $name, mixed $arguments) : static|mixed
Parameters
$name : mixed
$arguments : mixed
Tags
throws
CRM_Core_Exception
Return values
static|mixed

__construct()

Action constructor.

public __construct(string $entityName, string $actionName) : mixed
Parameters
$entityName : string
$actionName : string

__set()

Strictly enforce api parameters

public __set(mixed $name, mixed $value) : mixed
Parameters
$name : mixed
$value : mixed
Tags
throws
Exception

addChain()

public addChain(string $name, AbstractAction $apiRequest[, string|int|array<string|int, mixed> $index = NULL ]) : $this
Parameters
$name : string

Unique name for this chained request

$apiRequest : AbstractAction
$index : string|int|array<string|int, mixed> = NULL

See civicrm_api4() for documentation of $index param

Return values
$this

checkAfformConditional()

PHP interpretation of the "af-if" directive to determine conditional status.

public static checkAfformConditional(array<string|int, mixed> $conditional, array<string|int, mixed> $allEntityValues) : bool
Parameters
$conditional : array<string|int, mixed>
$allEntityValues : array<string|int, mixed>
Return values
bool
  • Is this conditional true or not.

compareValues()

public static compareValues(mixed $value, string $operator, mixed $expected) : bool
Parameters
$value : mixed
$operator : string
$expected : mixed
Return values
bool

entityFields()

Returns schema fields for this entity & action.

public entityFields() : array<string|int, mixed>

Here we bypass the api wrapper and run the getFields action directly. This is because we DON'T want the wrapper to check permissions as this is an internal op.

Tags
see
GetFields
throws
CRM_Core_Exception
Return values
array<string|int, mixed>

evaluateCondition()

This function is used internally for evaluating field annotations.

public static evaluateCondition(string $expr, array<string|int, mixed> $vars) : bool

It should never be passed raw user input.

Parameters
$expr : string

Conditional in php format e.g. $foo > $bar

$vars : array<string|int, mixed>

Variable name => value

Tags
throws
CRM_Core_Exception
throws
Exception
Return values
bool

filterCompare()

public static filterCompare(array<string|int, mixed> $row, array<string|int, mixed> $condition[, int|null $index = NULL ]) : bool
Parameters
$row : array<string|int, mixed>
$condition : array<string|int, mixed>
$index : int|null = NULL
Tags
throws
NotImplementedException
Return values
bool

getActionName()

public getActionName() : string
Return values
string

getArgs()

public getArgs() : array<string|int, mixed>
Return values
array<string|int, mixed>

getChain()

public getChain() : array<string|int, mixed>
Return values
array<string|int, mixed>

getCheckPermissions()

public getCheckPermissions() : bool
Return values
bool

getEntityField()

Get field definition for a given entity

public static getEntityField(string $entityName, string $fieldName) : array<string|int, mixed>|null
Parameters
$entityName : string
$fieldName : string
Tags
throws
CRM_Core_Exception
Return values
array<string|int, mixed>|null

getEntityFields()

Get all fields for a given entity

public static getEntityFields(string $entityName) : array<string|int, mixed>
Parameters
$entityName : string
Tags
throws
CRM_Core_Exception
Return values
array<string|int, mixed>

getEntityName()

public getEntityName() : string
Return values
string

getJoinResult()

public getJoinResult(array<string|int, mixed> $afEntity, string $joinEntity, array<string|int, mixed> $join, array<string|int, mixed> $where, int $limit) : array<string|int, mixed>
Parameters
$afEntity : array<string|int, mixed>
$joinEntity : string
$join : array<string|int, mixed>
$where : array<string|int, mixed>
$limit : int
Return values
array<string|int, mixed>

getLanguage()

public getLanguage() : string|null
Return values
string|null

getParamInfo()

Get documentation for one or all params

public getParamInfo([string $param = NULL ]) : array<string|int, mixed>
Parameters
$param : string = NULL
Return values
array<string|int, mixed>

of arrays [description, type, default, (comment)]

getParams()

Serialize this object's params into an array

public getParams() : array<string|int, mixed>
Return values
array<string|int, mixed>

getPermissions()

public getPermissions() : array<string|int, mixed>
Return values
array<string|int, mixed>

getValues()

public getValues() : array<string|int, mixed>
Return values
array<string|int, mixed>

loadEntity()

Fetch all data needed to display a given entity on this form

public loadEntity(array<string|int, mixed> $entity, array<string|int, array<string|int, mixed>> $values[, string $mode = 'update' ]) : void
Parameters
$entity : array<string|int, mixed>

Afform entity definition

$values : array<string|int, array<string|int, mixed>>

Array of value arrays. Each must be the primary key, e.g.

[
  ['id' => 123],
  ['id' => 456],
]

In theory we could include other stuff in the values, but it's not currently supported.

$mode : string = 'update'

'update' or 'create' ('create' is only used in special cases like Event.template_id)

loadJoins()

Finds all joins after loading an entity.

public loadJoins(mixed $joinEntity, mixed $join, mixed $afEntity, mixed $entityId, mixed $index) : array<string|int, mixed>
Parameters
$joinEntity : mixed
$join : mixed
$afEntity : mixed
$entityId : mixed
$index : mixed
Return values
array<string|int, mixed>

offsetExists()

public offsetExists(mixed $offset) : bool
Parameters
$offset : mixed
Tags
inheritDoc
Return values
bool

offsetGet()

public & offsetGet(mixed $offset) : mixed
Parameters
$offset : mixed
Tags
inheritDoc
Attributes
#[ReturnTypeWillChange]

offsetSet()

public offsetSet(mixed $offset, mixed $value) : void
Parameters
$offset : mixed
$value : mixed
Tags
inheritDoc

offsetUnset()

public offsetUnset(mixed $offset) : void
Parameters
$offset : mixed
Tags
inheritDoc

paramExists()

public paramExists(string $param) : bool
Parameters
$param : string
Return values
bool

preprocessContact()

Check if contact(s) meet the minimum requirements to be created (name and/or email).

public static preprocessContact(AfformSubmitEvent $event) : void

This requires a function because simple required fields validation won't work across multiple entities (contact + n email addresses).

Parameters
$event : AfformSubmitEvent
Tags
throws
CRM_Core_Exception
see
afform_civicrm_config

preprocessSubmittedValues()

Preprocess submitted values

public preprocessSubmittedValues(array<string|int, mixed> $submittedValues) : mixed
Parameters
$submittedValues : array<string|int, mixed>

processFormData()

Process form data

public processFormData(array<string|int, mixed> $entityValues) : mixed
Parameters
$entityValues : array<string|int, mixed>

reflect()

public reflect() : ReflectionClass
Return values
ReflectionClass

setArgs()

public setArgs(array<string|int, mixed> $args) : $this
Parameters
$args : array<string|int, mixed>
Return values
$this

setChain()

public setChain([array<string|int, mixed> $chain = ]) : $this
Parameters
$chain : array<string|int, mixed> =
Return values
$this

setCheckPermissions()

public setCheckPermissions(bool $checkPermissions) : $this
Parameters
$checkPermissions : bool
Return values
$this

setDebug()

public setDebug([bool $debug = ]) : $this

Enable/disable debug output

Parameters
$debug : bool =
Return values
$this

setFillMode()

public setFillMode([string $fillMode = ]) : $this

Set entity/form fill mode.

Parameters
$fillMode : string =
Return values
$this

setLanguage()

public setLanguage([string|null $language = ]) : $this
Parameters
$language : string|null =
Return values
$this

setName()

public setName(string $name) : $this
Parameters
$name : string
Return values
$this

setValues()

public setValues(array<string|int, mixed> $values) : $this
Parameters
$values : array<string|int, mixed>
Return values
$this

validateEntityRefFields()

Validate all fields of type "EntityRef" contain values that are allowed by filters

public static validateEntityRefFields(AfformValidateEvent $event) : void
Parameters
$event : AfformValidateEvent

addCallbackToDebugOutput()

When in debug mode, this logs the callback function being used by a Basic*Action class.

protected addCallbackToDebugOutput(callable $callable) : mixed
Parameters
$callable : callable

checkRequiredFields()

Validates required fields for actions which create a new object.

protected checkRequiredFields(mixed $values) : array<string|int, mixed>
Parameters
$values : mixed
Tags
throws
CRM_Core_Exception
Return values
array<string|int, mixed>

combineValuesAndIds()

Recursively add entity IDs to the values.

protected combineValuesAndIds(mixed $values, mixed $ids[, mixed $isJoin = FALSE ]) : mixed
Parameters
$values : mixed
$ids : mixed
$isJoin : mixed = FALSE

fillIdFields()

protected fillIdFields(array<string|int, mixed> &$records, string $entityName) : void
Parameters
$records : array<string|int, mixed>
$entityName : string

filterArray()

protected filterArray(array<string|int, mixed> $values) : array<string|int, mixed>
Parameters
$values : array<string|int, mixed>
Return values
array<string|int, mixed>

formatWriteValues()

Replaces pseudoconstants in input values

protected formatWriteValues(array<string|int, mixed> &$record) : mixed
Parameters
$record : array<string|int, mixed>
Tags
throws
CRM_Core_Exception

getFileFields()

protected static getFileFields(mixed $entityName, mixed $entityFields) : array<string|int, mixed>
Parameters
$entityName : mixed
$entityFields : mixed
Return values
array<string|int, mixed>

getFkField()

protected static getFkField(mixed $mainEntity, mixed $otherEntity) : array<string|int, mixed>|null
Parameters
$mainEntity : mixed
$otherEntity : mixed
Return values
array<string|int, mixed>|null

getJoinWhereClause()

Gets the clause for looking up join entities, or NULL if not available.

protected static getJoinWhereClause(FormDataModel $formDataModel, string $mainEntityName, string $joinEntityType, int|string $mainEntityId) : array<string|int, array<string|int, mixed>>

Joins can come in two styles:

  • Forward FK e.g. Event.loc_block_id => LocBlock
  • Reverse FK e.g. Contact <= Email.contact_id
Parameters
$formDataModel : FormDataModel
$mainEntityName : string
$joinEntityType : string
$mainEntityId : int|string
Tags
throws
CRM_Core_Exception
Return values
array<string|int, array<string|int, mixed>>

getLanguageOptions()

Get available preferred languages.

protected getLanguageOptions() : array<string|int, mixed>
Return values
array<string|int, mixed>

getMagicProperties()

Get a list of class properties for which magic methods are supported.

protected static getMagicProperties() : array<string|int, mixed>
Return values
array<string|int, mixed>

List of supported properties, keyed by property name. Array(string $propertyName => bool $true).

getNestedKey()

Given a nested array like `[0 => ['id' => 123]]`, this returns the first key from the inner array, e.g. `'id'`.

protected static getNestedKey(array<string|int, mixed> $values) : int|string|null
Parameters
$values : array<string|int, mixed>
Return values
int|string|null

getParamDefaults()

protected getParamDefaults() : array<string|int, mixed>
Return values
array<string|int, mixed>

getSubmittableFields()

protected getSubmittableFields(array<string|int, mixed> $fields) : array<string|int, mixed>
Parameters
$fields : array<string|int, mixed>
Return values
array<string|int, mixed>

limitArray()

protected limitArray(mixed $values) : array<string|int, mixed>
Parameters
$values : mixed
Return values
array<string|int, mixed>

prePopulateSubmissionData()

Load the data from submission table

protected prePopulateSubmissionData() : mixed

processForm()

protected processForm() : array<string|int, mixed>
Return values
array<string|int, mixed>

queryArray()

protected queryArray(array<string|int, mixed> $values, Result $result) : mixed
Parameters
$values : array<string|int, mixed>

List of all rows to be filtered

$result : Result

Object to store result

replaceReferences()

Replace Entity reference fields with the id of the referenced entity.

protected replaceReferences(string $entityName, mixed $records) : mixed
Parameters
$entityName : string
$records : mixed

saveJoins()

This saves joins (sub-entities) such as Email, Address, Phone, etc.

protected static saveJoins(AfformSubmitEvent $event, int $index, int|string $entityId, array<string|int, mixed> $joins) : mixed
Parameters
$event : AfformSubmitEvent
$index : int
$entityId : int|string
$joins : array<string|int, mixed>
Tags
throws
CRM_Core_Exception

selectArray()

protected selectArray(mixed $values) : array<string|int, mixed>
Parameters
$values : mixed
Return values
array<string|int, mixed>

sortArray()

protected sortArray(mixed $values) : array<string|int, mixed>
Parameters
$values : mixed
Return values
array<string|int, mixed>

apiGet()

Delegated by loadEntity to call API.get and fill in additioal info

private apiGet(string $afEntityName, string $apiEntityName, array<string|int, mixed> $entityFields, string $keyField, array<string|int, mixed> $params) : array<string|int, mixed>
Parameters
$afEntityName : string

e.g. Individual1

$apiEntityName : string

Not necessarily the api of the afEntity, in the case of joins it will be different.

$entityFields : array<string|int, mixed>
$keyField : string
$params : array<string|int, mixed>
Return values
array<string|int, mixed>

checkAfformConditionalClause()

private static checkAfformConditionalClause(array<string|int, mixed> $clause, array<string|int, mixed> $allEntityValues) : mixed
Parameters
$clause : array<string|int, mixed>
$allEntityValues : array<string|int, mixed>

evaluateFilters()

private evaluateFilters(array<string|int, mixed> $row) : bool
Parameters
$row : array<string|int, mixed>
Return values
bool

filterEmptyJoins()

Filter out join entities that have been left blank on the form

private static filterEmptyJoins(array<string|int, mixed> $mainEntity, string $joinEntityName, array<string|int, mixed> $join) : array<string|int, mixed>
Parameters
$mainEntity : array<string|int, mixed>
$joinEntityName : string
$join : array<string|int, mixed>
Return values
array<string|int, mixed>

generatePostSubmitToken()

Generates token returned from submit action

private generatePostSubmitToken() : string
Tags
throws
CryptoException
Return values
string

getEntityRefError()

Return an error if an EntityRef field is submitted with a value outside the range of its savedSearch filters

private static getEntityRefError(string $formName, string $entityName, string $apiEntity, string $fieldName, array<string|int, mixed> $attributes, mixed $value) : string|null
Parameters
$formName : string
$entityName : string
$apiEntity : string
$fieldName : string
$attributes : array<string|int, mixed>
$value : mixed
Return values
string|null

getRequiredFieldError()

If a required field is missing a value, return an error message

private static getRequiredFieldError(AfformValidateEvent $event, string $apiEntity, string $fieldName, array<string|int, mixed> $attributes, mixed $value) : string|null
Parameters
$event : AfformValidateEvent
$apiEntity : string
$fieldName : string
$attributes : array<string|int, mixed>
$value : mixed
Return values
string|null

getValueFromEntity()

Given a value like "Individual1[0][fields][Volunteer_Info.Residency_History]", searches a multi-dimensional array for the corresponding value if it exists.

private static getValueFromEntity(string $getThisValue, array<string|int, mixed> $allEntityValues) : mixed
Parameters
$getThisValue : string
$allEntityValues : array<string|int, mixed>

loadJoin()

Directly loads a join entity e.g. from an autocomplete field in the join block.

private loadJoin(array<string|int, mixed> $afEntity, array<string|int, mixed> $values) : array<string|int, mixed>
Parameters
$afEntity : array<string|int, mixed>
$values : array<string|int, mixed>
Return values
array<string|int, mixed>

processVerficationEmail()

Function to send the verification email if configured

private processVerficationEmail(int $submissionId) : void
Parameters
$submissionId : int

saveRelationshipById()

private static saveRelationshipById(array<string|int, mixed> $relationship, array<string|int, mixed> $entity, callable $api4) : void
Parameters
$relationship : array<string|int, mixed>
$entity : array<string|int, mixed>
$api4 : callable

saveRelationshipByValues()

private static saveRelationshipByValues(array<string|int, mixed> $relationship, array<string|int, mixed> $entity, callable $api4) : void
Parameters
$relationship : array<string|int, mixed>
$entity : array<string|int, mixed>
$api4 : callable

sendEmail()

Function to send email

private sendEmail(string $emailAddress, int $submissionId) : void
Parameters
$emailAddress : string
$submissionId : int

sortCompare()

private sortCompare(mixed $a, mixed $b) : mixed
Parameters
$a : mixed
$b : mixed

validateBySavedSearch()

Validate that given id(s) are actually returned by the Autocomplete API

private validateBySavedSearch(string $afEntityName, string $apiEntity, array<string|int, mixed> $ids, string $matchField) : array<string|int, mixed>
Parameters
$afEntityName : string
$apiEntity : string
$ids : array<string|int, mixed>
$matchField : string
Tags
throws
CRM_Core_Exception
Return values
array<string|int, mixed>

walkFilters()

private walkFilters(array<string|int, mixed> $row, array<string|int, mixed> $filters) : bool
Parameters
$row : array<string|int, mixed>
$filters : array<string|int, mixed>
Tags
throws
NotImplementedException
Return values
bool

        
On this page

Search results