class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form

This class generates form components for processing a contribution.

Traits

This class holds functionality shared between various front end forms.

Constants

ATTR_SPACING

Constants for attributes for various form elements attempt to standardize on the number of variations that we use of the below form elements

CB_PREFIX

All checkboxes are defined with a common prefix. This allows us to have the same javascript to check / clear all the checkboxes etc If u have multiple groups of checkboxes, you will need to give them different ids to avoid potential name collision

CB_PREFIY

All checkboxes are defined with a common prefix. This allows us to have the same javascript to check / clear all the checkboxes etc If u have multiple groups of checkboxes, you will need to give them different ids to avoid potential name collision

CB_PREFIZ

All checkboxes are defined with a common prefix. This allows us to have the same javascript to check / clear all the checkboxes etc If u have multiple groups of checkboxes, you will need to give them different ids to avoid potential name collision

CB_PREFIX_LEN

All checkboxes are defined with a common prefix. This allows us to have the same javascript to check / clear all the checkboxes etc If u have multiple groups of checkboxes, you will need to give them different ids to avoid potential name collision

Properties

protected object $_state The state object that this form belongs to from CRM_Core_Form
protected string $_name The name of this form from CRM_Core_Form
protected string $_title The title of this form from CRM_Core_Form
array $_defaults The default values for the form. from CRM_Core_Form
mixed $_options (QUASI-PROTECTED) The options passed into this form from CRM_Core_Form
$_action
protected array $_paymentProcessors Available payment processors. from CRM_Core_Form
array $_paymentProcessorIDs Available payment processors (IDS). from CRM_Core_Form
protected int $_paymentProcessorID Default or selected processor id. from CRM_Core_Form
protected int $_is_pay_later_enabled Is pay later enabled for the form. from CRM_Core_Form
protected object $_renderer The renderer used for this form from CRM_Core_Form
protected array $_dateFields An array to hold a list of datefields on the form so that they can be converted to ISO in a consistent manner from CRM_Core_Form
static protected CRM_Core_Smarty $_template Cache the smarty template for efficiency reasons from CRM_Core_Form
protected bool $unsavedChangesWarn Indicate if this form should warn users of unsaved changes from CRM_Core_Form
array $ajaxResponse What to return to the client if in ajax mode (snippet=json) from CRM_Core_Form
array $urlPath Url path used to reach this page from CRM_Core_Form
protected string $context Context of the form being loaded. from CRM_Core_Form
bool $submitOnce from CRM_Core_Form
CRM_Core_Controller $controller from CRM_Core_Form
static array $html5Types Extra input types we support via the "add" method from CRM_Core_Form
protected string $payLaterLabel The label for the pay later pseudoprocessor option. from CRM_Financial_Form_FrontEndPaymentFormTrait
int $_id The id of the contribution page that we are processing.
string $_mode The mode that we are in
int $_membershipContactID The contact id related to a membership
array $_values The values for the contribution db object
array $_paymentProcessor The paymentProcessor attributes for this page
$_paymentObject
array $_membershipBlock The membership block for this page
protected bool $_separateMembershipPayment Does this form support a separate membership payment
array $_params The params submitted by the form and computed by the app
array $_fields The fields involved in this contribution page
int $_bltID The billing location id for this contribution page.
float $_amount Cache the amount to make things easier
int $_pcpId Pcp id
array $_pcpBlock Pcp block
array $_pcpInfo Pcp info
int $_contactID The contact id of the person for whom membership is being added or renewed based on the cid in the url, checksum, or session
protected $_userID
int $_membershipId The Membership ID for membership renewal
int $_priceSetId Price Set ID, if the new price set method is used
array $_priceSet Array of fields for the price set
string $_contributeMode Contribution mode e.g express for payment express, notify for off-site + notification back to CiviCRM
bool $_useForMember Contribution page supports memberships
bool $_isBillingAddressRequiredForPayLater
bool $_emailExists Flag if email field exists in embedded profile
bool $isBackOffice Is this a backoffice form (this will affect whether paypal express code is displayed)
int $paymentInstrumentID Payment instrument if for the transaction.

Methods

string
getContext()

No description

setContext()

Set context variable.

__construct(object $state = NULL, const|enum|int $action = CRM_Core_Action::NONE, string $method = 'post', string $name = NULL)

Constructor for the basic form page.

setTranslatedFields()

Set translated fields.

addClass(string $className)

Add one or more css classes to the form.

registerRules()

Register all the standard rules that most forms potentially use.

HTML_QuickForm_Element
add(string $type, string $name, string $label = '', string|array $attributes = '', bool $required = FALSE, array $extra = NULL)

Simple easy to use wrapper around addElement.

preProcess()

Set variables up before form is built.

postProcess()

Called after the form is validated.

mainProcess(bool $allowAjax = TRUE)

Main process wrapper.

postProcessHook()

The postProcess hook is typically called by the framework.

buildQuickForm()

This virtual function is used to build the form.

array|NULL
setDefaultValues()

Set the default values.

addRules()

This is a virtual function that adds group and global rules to the form.

bool
validate()

Performs the server side validation.

buildForm()

Core function that builds the form.

addButtons(array $params)

Add default Next / Back buttons.

string
getName()

Getter function for Name.

object
getState()

Getter function for State.

int
getStateType()

Getter function for StateType.

string
getTitle()

Getter function for title.

setTitle(string $title)

Setter function for title.

assignBillingType()

Assign billing type id to bltID.

int
getPaymentProcessorID()

No description

assignPaymentProcessor(bool $isPayLaterEnabled)

This if a front end form function for setting the payment processor.

array
formatParamsForPaymentProcessor(array $fields)

Format the fields in $this->_params for the payment processor.

array
prepareParamsForPaymentProcessor(array $params)

Format the fields in $params for the payment processor.

preProcessPaymentOptions()

Handle Payment Processor switching for contribution and event registration forms.

handlePreApproval(array $params)

Handle pre approval for processors.

setOptions(mixed $options)

Setter function for options.

string
toSmarty()

Render form and return contents.

object
getRenderer()

Getter function for renderer.

string
getTemplateFileName()

Use the form name to create the tpl file name.

getHookedTemplateFileName()

A wrapper for getTemplateFileName.

string
overrideExtraTemplateFileName()

Add the extra.tpl in.

error(string $message, int $code = NULL, CRM_Core_DAO $dao = NULL)

Error reporting mechanism.

set(string $name, mixed $value)

Store the variable with the value in the form scope.

mixed
get(string $name)

Get the variable from the form scope.

int
getAction()

Getter for action.

setAction(int $action)

Setter for action.

assign(string $var, mixed $value = NULL)

Assign value to name in template.

assign_by_ref(string $var, mixed $value)

Assign value to name in template by reference.

append(array|string $tpl_var, mixed $value = NULL, bool $merge = FALSE)

Appends values to template variables.

array
get_template_vars(string $name = NULL)

Returns an array containing template variables.

HTML_QuickForm_group
addRadio(string $name, $title, $values, array $attributes = [], null $separator = NULL, bool $required = FALSE)

No description

addYesNo(int $id, $title, bool $allowClear = FALSE, null $required = NULL, array $attributes = [])

No description

addCheckBox(int $id, $title, $values, null $other = NULL, null $attributes = NULL, null $required = NULL, null $javascriptMethod = NULL, string $separator = '<br />', bool $flipValues = FALSE)

No description

resetValues()

No description

addDefaultButtons(string $title, string $nextType = 'next', string $backType = 'back', bool|string $submitOnce = FALSE)

Simple shell that derived classes can call to add buttons to the form with a customized title for the main Submit

addDateRange(string $name, string $from = '_from', string $to = '_to', string $label = 'From:', string $dateFormat = 'searchDate', bool $required = FALSE, bool $displayTime = FALSE)

No description

addDatePickerRange(string $fieldName, string $label, bool $isDateTime = FALSE, bool $required = FALSE, string $fromLabel = 'From', string $toLabel = 'To')

Add a search for a range using date picker fields.

getApiAction()

Based on form action, return a string representing the api action.

getDefaultEntity()

Classes extending CRM_Core_Form should implement this method.

getDefaultContext()

Classes extending CRM_Core_Form should implement this method.

HTML_QuickForm_Element
addSelect($name, array $props = [], bool $required = FALSE)

Adds a select based on field metadata.

mixed
addField($name, array $props = [], bool $required = FALSE, bool $legacyDate = TRUE)

Adds a field based on metadata.

addProfileSelector(string $name, string $label, string $allowCoreTypes, string $allowSubTypes, array $entities, bool $default = FALSE, string $usedFor = NULL)

Add a widget for selecting/editing/creating/copying a profile form

null
getRootTitle()

No description

string
getCompleteTitle()

No description

static CRM_Core_Smarty
getTemplate()

No description

addUploadElement($elementName)

No description

null
getVar($name)

No description

setVar($name, $value)

No description

addDate(string $name, string $label, bool $required = FALSE, array $attributes = NULL) deprecated

Add date.

addDateTime(string $name, string $label, bool $required = FALSE, null $attributes = NULL) deprecated

Function that will add date and time.

HTML_QuickForm_Element
addMoney(string $name, string $label, bool $required = FALSE, null $attributes = NULL, bool $addCurrency = TRUE, string $currencyName = 'currency', null $defaultCurrency = NULL, bool $freezeCurrency = FALSE)

Add a currency and money element to the form.

addCurrency(string $name = 'currency', null $label = NULL, bool $required = TRUE, string $defaultCurrency = NULL, bool $freezeCurrency = FALSE, bool $setDefaultCurrency = TRUE)

Add currency element to the form.

HTML_QuickForm_Element
addEntityRef(string $name, string $label = '', array $props = [], bool $required = FALSE)

Create a single or multiple entity ref field.

convertDateFieldsToMySQL(array $params)

Convert all date fields within the params to mysql date ready for the BAO layer. In this case fields are checked against the $_datefields defined for the form and if time is defined it is incorporated

removeFileRequiredRules($elementName)

No description

cancelAction()

Function that can be defined in Form to override or.

static 
validateMandatoryFields(array $fields, array $values, array $errors)

Helper function to verify that required fields have been filled.

NULL|int
setContactID()

Get contact if for a form object. Prioritise - cid in URL if 0 (on behalf on someoneelse) (@todo consider setting a variable if onbehalf for clarity of downstream 'if's - logged in user id if it matches the one in the cid in the URL - contact id validated from a checksum from a checksum - cid from the url if the caller has ACL permission to view - fallback is logged in user (or ? NULL if no logged in user) (@todo wouldn't 0 be more intuitive?)

int|null
getContactID()

Get the contact id that the form is being submitted for.

getLoggedInUserContactID()

Get the contact id of the logged in user.

addAutoSelector(array $profiles = [], array $autoCompleteField = [])

Add autoselector field -if user has permission to view contacts If adding this to a form you also need to add to the tpl e.g

canUseAjaxContactLookups()

No description

addCIDZeroOptions()

Add the options appropriate to cid = zero - ie. autocomplete

array
getProfileDefaults(mixed $profile_id = 'Billing', int $contactID = NULL)

Set default values on form for given contact (or no contact defaults)

preventAjaxSubmit()

Sets form attribute.

allowAjaxSubmit()

Sets form attribute.

setPageTitle(string $entityLabel)

Sets page title based on entity and action.

HTML_QuickForm_Element
addChainSelect(string $elementName, array $settings = [])

Create a chain-select target field. All settings are optional; the defaults usually work.

addTaskMenu(array $tasks)

Add actions menu to results form.

string
assignBillingName(array $params = [])

Assign billing name to the template.

string
getCurrency(array $submittedValues = [])

Get the currency for the form.

bool
isFormInViewOrEditMode()

Is the form in view or edit mode.

setPayLaterLabel(string $payLaterLabel)

No description

alterLineItemsForTemplate($tplLineItems)

Alter line items for template.

assignLineItemsToTemplate($tplLineItems)

Assign line items to the template.

array
getProcessors()

Get the configured processors, including the pay later processor.

bool
isQuickConfig()

Is the price set quick config.

assignToTemplate()

Assign the minimal set of variables to the template.

buildCustom(int $id, string $name, bool $viewOnly = FALSE, null $profileContactType = NULL, array $fieldTypes = NULL)

Add the custom fields.

enableCaptchaOnForm()

Enable ReCAPTCHA on Contribution form

assignPaymentFields()

No description

displayCaptchaWarning()

Display ReCAPTCHA warning on Contribution form

hasToAddForcefully()

Check if ReCAPTCHA has to be added on Contribution form forcefully.

buildComponentForm(int $id, CRM_Core_Form $form)

Add onbehalf/honoree profile fields and native module fields.

null|string
checkTemplateFileExists(string $suffix = NULL)

Check template file exists.

authenticatePledgeUser()

Authenticate pledge user during online payment.

cancelRecurring()

Cancel recurring contributions.

bool
buildMembershipBlock(int $cid, bool $isContributionMainPage = FALSE, int|array $selectedMembershipTypeID = NULL, bool $thankPage = FALSE, null $isTest = NULL)

Build Membership Block in Contribution Pages.

setRecurringMembershipParams()

Determine if recurring parameters need to be added to the form parameters.

getPaymentProcessorObject()

Get the payment processor object for the submission, returning the manual one for offline payments.

Details

in CRM_Core_Form at line 200
string getContext()

Return Value

string

in CRM_Core_Form at line 207
setContext()

Set context variable.

in CRM_Core_Form at line 268
CRM_Core_Form __construct(object $state = NULL, const|enum|int $action = CRM_Core_Action::NONE, string $method = 'post', string $name = NULL)

Constructor for the basic form page.

We should not use QuickForm directly. This class provides a lot of default convenient functions, rules and buttons

Parameters

object $state State associated with this form.
const|enum|int $action The mode the form is operating in (None/Create/View/Update/Delete)
string $method The type of http method used (GET/POST).
string $name The name of the form if different from class name.

Return Value

CRM_Core_Form

in CRM_Core_Form at line 311
protected setTranslatedFields()

Set translated fields.

This function is called from the class constructor, allowing us to set fields on the class that can't be set as properties due to need for translation or other non-input specific handling.

in CRM_Core_Form at line 318
addClass(string $className)

Add one or more css classes to the form.

Parameters

string $className

in CRM_Core_Form at line 326
registerRules()

Register all the standard rules that most forms potentially use.

in CRM_Core_Form at line 379
HTML_QuickForm_Element add(string $type, string $name, string $label = '', string|array $attributes = '', bool $required = FALSE, array $extra = NULL)

Simple easy to use wrapper around addElement.

Deal with simple validation rules.

Parameters

string $type
string $name
string $label
string|array $attributes (options for select elements)
bool $required
array $extra (attributes for select elements). For datepicker elements this is consistent with the data from CRM_Utils_Date::getDatePickerExtra

Return Value

HTML_QuickForm_Element Could be an error object

at line 228
preProcess()

Set variables up before form is built.

in CRM_Core_Form at line 482
postProcess()

Called after the form is validated.

Any processing of form state etc should be done in this function. Typically all processing associated with a form should be done here and relevant state should be stored in the session

This is a virtual function and should be redefined if needed

in CRM_Core_Form at line 494
mainProcess(bool $allowAjax = TRUE)

Main process wrapper.

Implemented so that we can call all the hook functions.

Parameters

bool $allowAjax FIXME: This feels kind of hackish, ideally we would take the json-related code from this function. and bury it deeper down in the controller

in CRM_Core_Form at line 520
postProcessHook()

The postProcess hook is typically called by the framework.

However in a few cases, the form exits or redirects early in which case it needs to call this function so other modules can do the needful Calling this function directly should be avoided if possible. In general a better way is to do setUserContext so the framework does the redirect

in CRM_Core_Form at line 530
buildQuickForm()

This virtual function is used to build the form.

It replaces the buildForm associated with QuickForm_Page. This allows us to put preProcess in front of the actual form building routine

at line 508
array|NULL setDefaultValues()

Set the default values.

Return Value

array|NULL reference to the array of default values

in CRM_Core_Form at line 549
addRules()

This is a virtual function that adds group and global rules to the form.

Keeping it distinct from the form to keep code small and localized in the form building code

in CRM_Core_Form at line 559
bool validate()

Performs the server side validation.

Return Value

bool true if no error found

Exceptions

HTML_QuickForm_Error

in CRM_Core_Form at line 587
buildForm()

Core function that builds the form.

We redefine this function here and expect all CRM forms to build their form in the function buildQuickForm.

in CRM_Core_Form at line 650
addButtons(array $params)

Add default Next / Back buttons.

Parameters

array $params Array of associative arrays in the order in which the buttons should be displayed. The associate array has 3 fields: 'type', 'name' and 'isDefault' The base form class will define a bunch of static arrays for commonly used formats.

in CRM_Core_Form at line 723
string getName()

Getter function for Name.

Return Value

string

in CRM_Core_Form at line 732
object getState()

Getter function for State.

Return Value

object

in CRM_Core_Form at line 741
int getStateType()

Getter function for StateType.

Return Value

int

in CRM_Core_Form at line 752
string getTitle()

Getter function for title.

Should be over-ridden by derived class.

Return Value

string

in CRM_Core_Form at line 762
setTitle(string $title)

Setter function for title.

Parameters

string $title The title of the form.

in CRM_Core_Form at line 772
assignBillingType()

Assign billing type id to bltID.

Exceptions

CRM_Core_Exception

in CRM_Core_Form at line 781
int getPaymentProcessorID()

Return Value

int

in CRM_Core_Form at line 794
protected assignPaymentProcessor(bool $isPayLaterEnabled)

This if a front end form function for setting the payment processor.

It would be good to sync it with the back-end function on abstractEditPayment & use one everywhere.

Parameters

bool $isPayLaterEnabled

Exceptions

CRM_Core_Exception

in CRM_Core_Form at line 832
protected array formatParamsForPaymentProcessor(array $fields)

Format the fields in $this->_params for the payment processor.

In order to pass fields to the payment processor in a consistent way we add some renamed parameters.

Parameters

array $fields

Return Value

array

in CRM_Core_Form at line 848
protected array prepareParamsForPaymentProcessor(array $params)

Format the fields in $params for the payment processor.

In order to pass fields to the payment processor in a consistent way we add some renamed parameters.

Parameters

array $params Payment processor params

Return Value

array $params

in CRM_Core_Form at line 896
protected preProcessPaymentOptions()

Handle Payment Processor switching for contribution and event registration forms.

This function is shared between contribution & event forms & this is their common class.

However, this should be seen as an in-progress refactor, the end goal being to also align the backoffice forms that action payments.

This function overlaps assignPaymentProcessor, in a bad way.

in CRM_Core_Form at line 948
protected handlePreApproval(array $params)

Handle pre approval for processors.

This fits with the flow where a pre-approval is done and then confirmed in the next stage when confirm is hit.

This function is shared between contribution & event forms & this is their common class.

However, this should be seen as an in-progress refactor, the end goal being to also align the backoffice forms that action payments.

Parameters

array $params

in CRM_Core_Form at line 973
setOptions(mixed $options)

Setter function for options.

Parameters

mixed $options

in CRM_Core_Form at line 982
string toSmarty()

Render form and return contents.

Return Value

string

in CRM_Core_Form at line 1000
object getRenderer()

Getter function for renderer.

If renderer is not set create one and initialize it.

Return Value

object

at line 1031
string getTemplateFileName()

Use the form name to create the tpl file name.

Return Value

string

in CRM_Core_Form at line 1035
getHookedTemplateFileName()

A wrapper for getTemplateFileName.

This includes calling the hook to prevent us from having to copy & paste the logic of calling the hook.

at line 1044
string overrideExtraTemplateFileName()

Add the extra.tpl in.

Default extra tpl file basically just replaces .tpl with .extra.tpl i.e. we do not override - why isn't this done at the CRM_Core_Form level?

Return Value

string

in CRM_Core_Form at line 1062
error(string $message, int $code = NULL, CRM_Core_DAO $dao = NULL)

Error reporting mechanism.

Parameters

string $message Error Message.
int $code Error Code.
CRM_Core_DAO $dao A data access object on which we perform a rollback if non - empty.

in CRM_Core_Form at line 1080
set(string $name, mixed $value)

Store the variable with the value in the form scope.

Parameters

string $name Name of the variable.
mixed $value Value of the variable.

in CRM_Core_Form at line 1092
mixed get(string $name)

Get the variable from the form scope.

Parameters

string $name Name of the variable

Return Value

mixed

in CRM_Core_Form at line 1101
int getAction()

Getter for action.

Return Value

int

in CRM_Core_Form at line 1111
setAction(int $action)

Setter for action.

Parameters

int $action The mode we want to set the form.

in CRM_Core_Form at line 1123
assign(string $var, mixed $value = NULL)

Assign value to name in template.

Parameters

string $var Name of variable.
mixed $value Value of variable.

in CRM_Core_Form at line 1135
assign_by_ref(string $var, mixed $value)

Assign value to name in template by reference.

Parameters

string $var Name of variable.
mixed $value Value of variable.

in CRM_Core_Form at line 1147
append(array|string $tpl_var, mixed $value = NULL, bool $merge = FALSE)

Appends values to template variables.

Parameters

array|string $tpl_var the template variable name(s)
mixed $value The value to append.
bool $merge

in CRM_Core_Form at line 1158
array get_template_vars(string $name = NULL)

Returns an array containing template variables.

Parameters

string $name

Return Value

array

in CRM_Core_Form at line 1172
HTML_QuickForm_group addRadio(string $name, $title, $values, array $attributes = [], null $separator = NULL, bool $required = FALSE)

Parameters

string $name
$title
$values
array $attributes
null $separator
bool $required

Return Value

HTML_QuickForm_group

in CRM_Core_Form at line 1204
addYesNo(int $id, $title, bool $allowClear = FALSE, null $required = NULL, array $attributes = [])

Parameters

int $id
$title
bool $allowClear
null $required
array $attributes

in CRM_Core_Form at line 1230
addCheckBox(int $id, $title, $values, null $other = NULL, null $attributes = NULL, null $required = NULL, null $javascriptMethod = NULL, string $separator = '<br />', bool $flipValues = FALSE)

Parameters

int $id
$title
$values
null $other
null $attributes
null $required
null $javascriptMethod
string $separator
bool $flipValues

in CRM_Core_Form at line 1277
resetValues()

in CRM_Core_Form at line 1293
addDefaultButtons(string $title, string $nextType = 'next', string $backType = 'back', bool|string $submitOnce = FALSE)

Simple shell that derived classes can call to add buttons to the form with a customized title for the main Submit

Parameters

string $title Title of the main button.
string $nextType Button type for the form after processing.
string $backType
bool|string $submitOnce

in CRM_Core_Form at line 1324
addDateRange(string $name, string $from = '_from', string $to = '_to', string $label = 'From:', string $dateFormat = 'searchDate', bool $required = FALSE, bool $displayTime = FALSE)

Parameters

string $name
string $from
string $to
string $label
string $dateFormat
bool $required
bool $displayTime

in CRM_Core_Form at line 1346
addDatePickerRange(string $fieldName, string $label, bool $isDateTime = FALSE, bool $required = FALSE, string $fromLabel = 'From', string $toLabel = 'To')

Add a search for a range using date picker fields.

Parameters

string $fieldName
string $label
bool $isDateTime Is this a date-time field (not just date).
bool $required
string $fromLabel
string $toLabel

in CRM_Core_Form at line 1372
protected getApiAction()

Based on form action, return a string representing the api action.

Used by addField method.

Return string

in CRM_Core_Form at line 1391
getDefaultEntity()

Classes extending CRM_Core_Form should implement this method.

Exceptions

Exception

in CRM_Core_Form at line 1401
getDefaultContext()

Classes extending CRM_Core_Form should implement this method.

TODO: Merge with CRM_Core_DAO::buildOptionsContext($context) and add validation.

Exceptions

Exception

in CRM_Core_Form at line 1423
HTML_QuickForm_Element addSelect($name, array $props = [], bool $required = FALSE)

Adds a select based on field metadata.

TODO: This could be even more generic and widget type (select in this case) could also be read from metadata Perhaps a method like $form->bind($name) which would look up all metadata for named field

Parameters

$name Field name to go on the form.
array $props Mix of html attributes and special properties, namely. - entity (api entity name, can usually be inferred automatically from the form class) - field (field name - only needed if different from name used on the form) - option_url - path to edit this option list - usually retrieved automatically - set to NULL to disable link - placeholder - set to NULL to disable - multiple - bool - context - see CRM_Core_DAO::buildOptionsContext
bool $required

Return Value

HTML_QuickForm_Element

Exceptions

CRM_Core_Exception

in CRM_Core_Form at line 1507
mixed addField($name, array $props = [], bool $required = FALSE, bool $legacyDate = TRUE)

Adds a field based on metadata.

Parameters

$name Field name to go on the form.
array $props Mix of html attributes and special properties, namely. - entity (api entity name, can usually be inferred automatically from the form class) - name (field name - only needed if different from name used on the form) - option_url - path to edit this option list - usually retrieved automatically - set to NULL to disable link - placeholder - set to NULL to disable - multiple - bool - context - see CRM_Core_DAO::buildOptionsContext
bool $required
bool $legacyDate Temporary param to facilitate the conversion of fields to use the datepicker in a controlled way. To convert the field the jcalendar code needs to be removed from the tpl as well. That file is intended to be EOL.

Return Value

mixed HTML_QuickForm_Element void

Exceptions

CiviCRM_API3_Exception
Exception

in CRM_Core_Form at line 1710
addProfileSelector(string $name, string $label, string $allowCoreTypes, string $allowSubTypes, array $entities, bool $default = FALSE, string $usedFor = NULL)

Add a widget for selecting/editing/creating/copying a profile form

Parameters

string $name HTML form-element name.
string $label Printable label.
string $allowCoreTypes Only present a UFGroup if its group_type includes a subset of $allowCoreTypes; e.g. 'Individual', 'Activity'.
string $allowSubTypes Only present a UFGroup if its group_type is compatible with $allowSubypes.
array $entities
bool $default //CRM-15427.
string $usedFor

in CRM_Core_Form at line 1729
null getRootTitle()

Return Value

null

in CRM_Core_Form at line 1736
string getCompleteTitle()

Return Value

string

in CRM_Core_Form at line 1743
static CRM_Core_Smarty getTemplate()

Return Value

CRM_Core_Smarty

in CRM_Core_Form at line 1750
addUploadElement($elementName)

Parameters

$elementName

in CRM_Core_Form at line 1780
null getVar($name)

Parameters

$name

Return Value

null

in CRM_Core_Form at line 1788
setVar($name, $value)

Parameters

$name
$value

in CRM_Core_Form at line 1807
addDate(string $name, string $label, bool $required = FALSE, array $attributes = NULL) deprecated

deprecated Use $this->add('datepicker', ...) instead.

Add date.

Parameters

string $name Name of the element.
string $label Label of the element.
bool $required True if required.
array $attributes Key / value pair.

in CRM_Core_Form at line 1896
addDateTime(string $name, string $label, bool $required = FALSE, null $attributes = NULL) deprecated

deprecated Use $this->add('datepicker', ...) instead.

Function that will add date and time.

Parameters

string $name
string $label
bool $required
null $attributes

in CRM_Core_Form at line 1922
HTML_QuickForm_Element addMoney(string $name, string $label, bool $required = FALSE, null $attributes = NULL, bool $addCurrency = TRUE, string $currencyName = 'currency', null $defaultCurrency = NULL, bool $freezeCurrency = FALSE)

Add a currency and money element to the form.

Parameters

string $name
string $label
bool $required
null $attributes
bool $addCurrency
string $currencyName
null $defaultCurrency
bool $freezeCurrency

Return Value

HTML_QuickForm_Element

in CRM_Core_Form at line 1952
addCurrency(string $name = 'currency', null $label = NULL, bool $required = TRUE, string $defaultCurrency = NULL, bool $freezeCurrency = FALSE, bool $setDefaultCurrency = TRUE)

Add currency element to the form.

Parameters

string $name
null $label
bool $required
string $defaultCurrency
bool $freezeCurrency
bool $setDefaultCurrency

in CRM_Core_Form at line 2006
HTML_QuickForm_Element addEntityRef(string $name, string $label = '', array $props = [], bool $required = FALSE)

Create a single or multiple entity ref field.

Parameters

string $name
string $label
array $props Mix of html and widget properties, including:. - select - params to give to select2 widget - entity - defaults to Contact - create - can the user create a new entity on-the-fly? Set to TRUE if entity is contact and you want the default profiles, or pass in your own set of links. see CRM_Campaign_BAO_Campaign::getEntityRefCreateLinks for format note that permissions are checked automatically - api - array of settings for the getlist api wrapper note that it accepts a 'params' setting which will be passed to the underlying api - placeholder - string - multiple - bool - class, etc. - other html properties
bool $required

Return Value

HTML_QuickForm_Element

in CRM_Core_Form at line 2055
convertDateFieldsToMySQL(array $params)

Convert all date fields within the params to mysql date ready for the BAO layer. In this case fields are checked against the $_datefields defined for the form and if time is defined it is incorporated

Parameters

array $params Input params from the form.

in CRM_Core_Form at line 2075
removeFileRequiredRules($elementName)

Parameters

$elementName

in CRM_Core_Form at line 2093
cancelAction()

Function that can be defined in Form to override or.

perform specific action on cancel action

in CRM_Core_Form at line 2105
static validateMandatoryFields(array $fields, array $values, array $errors)

Helper function to verify that required fields have been filled.

Typically called within the scope of a FormRule function

Parameters

array $fields
array $values
array $errors

in CRM_Core_Form at line 2124
protected NULL|int setContactID()

Get contact if for a form object. Prioritise - cid in URL if 0 (on behalf on someoneelse) (@todo consider setting a variable if onbehalf for clarity of downstream 'if's - logged in user id if it matches the one in the cid in the URL - contact id validated from a checksum from a checksum - cid from the url if the caller has ACL permission to view - fallback is logged in user (or ? NULL if no logged in user) (@todo wouldn't 0 be more intuitive?)

Return Value

NULL|int

in CRM_Core_Form at line 2179
int|null getContactID()

Get the contact id that the form is being submitted for.

Return Value

int|null

in CRM_Core_Form at line 2186
getLoggedInUserContactID()

Get the contact id of the logged in user.

in CRM_Core_Form at line 2215
addAutoSelector(array $profiles = [], array $autoCompleteField = [])

Add autoselector field -if user has permission to view contacts If adding this to a form you also need to add to the tpl e.g

{if !empty($selectable)}

{$form.select_contact.label}
{$form.select_contact.html}

{/if}

Parameters

array $profiles Ids of profiles that are on the form (to be autofilled).
array $autoCompleteField
  • name_field
    • id_field
    • url (for ajax lookup)

in CRM_Core_Form at line 2240
canUseAjaxContactLookups()

in CRM_Core_Form at line 2256
addCIDZeroOptions()

Add the options appropriate to cid = zero - ie. autocomplete

in CRM_Core_Form at line 2280
array getProfileDefaults(mixed $profile_id = 'Billing', int $contactID = NULL)

Set default values on form for given contact (or no contact defaults)

Parameters

mixed $profile_id (can be id, or profile name).
int $contactID

Return Value

array

in CRM_Core_Form at line 2299
preventAjaxSubmit()

Sets form attribute.

See also

CRM.loadForm

in CRM_Core_Form at line 2307
allowAjaxSubmit()

Sets form attribute.

See also

CRM.loadForm

in CRM_Core_Form at line 2315
setPageTitle(string $entityLabel)

Sets page title based on entity and action.

Parameters

string $entityLabel

in CRM_Core_Form at line 2344
HTML_QuickForm_Element addChainSelect(string $elementName, array $settings = [])

Create a chain-select target field. All settings are optional; the defaults usually work.

Parameters

string $elementName
array $settings

Return Value

HTML_QuickForm_Element

in CRM_Core_Form at line 2379
addTaskMenu(array $tasks)

Add actions menu to results form.

Parameters

array $tasks

in CRM_Core_Form at line 2496
string assignBillingName(array $params = [])

Assign billing name to the template.

Parameters

array $params Form input params, default to $this->_params.

Return Value

string

in CRM_Core_Form at line 2531
string getCurrency(array $submittedValues = [])

Get the currency for the form.

Parameters

array $submittedValues Array allowed so forms inheriting this class do not break. Ideally we would make a clear standard around how submitted values are stored (is $this->_values consistently doing that?).

Return Value

string

in CRM_Core_Form at line 2553
protected bool isFormInViewOrEditMode()

Is the form in view or edit mode.

The 'addField' function relies on the form action being one of a set list of actions. Checking for these allows for an early return.

Return Value

bool

string getPayLaterLabel()

Return Value

string

setPayLaterLabel(string $payLaterLabel)

Parameters

string $payLaterLabel

protected alterLineItemsForTemplate($tplLineItems)

Alter line items for template.

This is an early cut of what will ideally eventually be a hooklike call to the CRM_Invoicing_Utils class with a potential end goal of moving this handling to an extension.

Parameters

$tplLineItems

protected assignLineItemsToTemplate($tplLineItems)

Assign line items to the template.

Parameters

$tplLineItems

protected array getProcessors()

Get the configured processors, including the pay later processor.

Return Value

array

at line 218
bool isQuickConfig()

Is the price set quick config.

Return Value

bool

at line 515
assignToTemplate()

Assign the minimal set of variables to the template.

at line 599
buildCustom(int $id, string $name, bool $viewOnly = FALSE, null $profileContactType = NULL, array $fieldTypes = NULL)

Add the custom fields.

Parameters

int $id
string $name
bool $viewOnly
null $profileContactType
array $fieldTypes

at line 747
protected enableCaptchaOnForm()

Enable ReCAPTCHA on Contribution form

at line 751
assignPaymentFields()

at line 806
protected displayCaptchaWarning()

Display ReCAPTCHA warning on Contribution form

at line 817
protected hasToAddForcefully()

Check if ReCAPTCHA has to be added on Contribution form forcefully.

at line 827
buildComponentForm(int $id, CRM_Core_Form $form)

Add onbehalf/honoree profile fields and native module fields.

Parameters

int $id
CRM_Core_Form $form

at line 1015
null|string checkTemplateFileExists(string $suffix = NULL)

Check template file exists.

Parameters

string $suffix

Return Value

null|string

at line 1052
authenticatePledgeUser()

Authenticate pledge user during online payment.

at line 1105
cancelRecurring()

Cancel recurring contributions.

In case user cancel recurring contribution, When we get the control back from payment gate way lets delete the recurring and related contribution.

at line 1138
protected bool buildMembershipBlock(int $cid, bool $isContributionMainPage = FALSE, int|array $selectedMembershipTypeID = NULL, bool $thankPage = FALSE, null $isTest = NULL)

Build Membership Block in Contribution Pages.

Parameters

int $cid Contact checked for having a current membership for a particular membership.
bool $isContributionMainPage Is this the main page? If so add form input fields. (or better yet don't have this functionality in a function shared with forms that don't share it).
int|array $selectedMembershipTypeID Selected membership id.
bool $thankPage Thank you page.
null $isTest

Return Value

bool Is this a separate membership payment

at line 1347
protected setRecurringMembershipParams()

Determine if recurring parameters need to be added to the form parameters.

  • is_recur
    • frequency_interval
    • frequency_unit

For membership this is based on the membership type.

This needs to be done before processing the pre-approval redirect where relevant on the main page or before any payment processing.

Arguably the form should start to build $this->_params in the pre-process main page & use that array consistently throughout.

at line 1390
protected CRM_Core_Payment getPaymentProcessorObject()

Get the payment processor object for the submission, returning the manual one for offline payments.

Return Value

CRM_Core_Payment