class CRM_Member_Form_Membership extends CRM_Member_Form

This class generates form components for offline membership form.

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
array $_options Stores all product option from CRM_Contribute_Form_AbstractEditPayment
$_action from CRM_Contribute_Form_AbstractEditPayment
protected array $_paymentProcessors Available payment processors with full details including the key 'object' indexed by their id from CRM_Contribute_Form_AbstractEditPayment
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 date fields on the form so that they can be converted to ISO in a consistent manner
static protected CRM_Core_Smarty $_template Cache the smarty template for efficiency reasons from CRM_Core_Form
protected $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
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 int $_task The task being performed from CRM_Contact_Form_Task
array $_contactIds The array that holds all the contact ids from CRM_Contact_Form_Task
array $_contactTypes The array that holds all the contact types from CRM_Contact_Form_Task
protected string $_componentClause The additional clause that we restrict the search with from CRM_Contact_Form_Task
protected string $_componentTable The name of the temp table where we store the contact IDs from CRM_Contact_Form_Task
protected array $_componentIds The array that holds all the component ids from CRM_Contact_Form_Task
static protected $_searchFormValues This includes the submitted values of the search form from CRM_Contact_Form_Task
$_mode
$_bltID from CRM_Contribute_Form_AbstractEditPayment
$_fields from CRM_Contribute_Form_AbstractEditPayment
array $_paymentProcessor from CRM_Contribute_Form_AbstractEditPayment
array $_recurPaymentProcessors Available recurring processors. from CRM_Contribute_Form_AbstractEditPayment
array $_processors Array of processor options in the format id => array($id => $label) WARNING it appears that the format used to differ to this and there are places in the code that expect the old format. $this->_paymentProcessors provides the additional data which this array seems to have provided in the past from CRM_Contribute_Form_AbstractEditPayment
protected CRM_Core_Payment $_paymentObject Instance of the payment processor object. from CRM_Contribute_Form_AbstractEditPayment
int $_id The id of the object being edited / created from CRM_Member_Form
int $_premiumID The id of the premium that we are proceessing. from CRM_Contribute_Form_AbstractEditPayment
CRM_Contribute_DAO_ContributionProduct $_productDAO from CRM_Contribute_Form_AbstractEditPayment
int $_noteID The id of the note from CRM_Contribute_Form_AbstractEditPayment
int $_contactID Contact ID of the member.
int $_ppID The id of the pledge payment that we are processing from CRM_Contribute_Form_AbstractEditPayment
int $_pledgeID The id of the pledge that we are processing from CRM_Contribute_Form_AbstractEditPayment
boolean $_online Is this contribution associated with an online financial transaction from CRM_Contribute_Form_AbstractEditPayment
int $_honorID Stores the honor id from CRM_Contribute_Form_AbstractEditPayment
array $_contributionType Store the financial Type ID from CRM_Contribute_Form_AbstractEditPayment
$_values The contribution values if an existing contribution from CRM_Contribute_Form_AbstractEditPayment
$_pledgeValues The pledge values if this contribution is associated with pledge from CRM_Contribute_Form_AbstractEditPayment
$_contributeMode
$_context from CRM_Contribute_Form_AbstractEditPayment
$_compId from CRM_Contribute_Form_AbstractEditPayment
$_lineItems Store the line items if price set used. from CRM_Contribute_Form_AbstractEditPayment
bool $isBackOffice Is this a backoffice form from CRM_Contribute_Form_AbstractEditPayment
protected $_formType from CRM_Contribute_Form_AbstractEditPayment
int $paymentInstrumentID Payment instrument id for the transaction. from CRM_Contribute_Form_AbstractEditPayment
array $billingFieldSets Array of fields to display on billingBlock.tpl - this is not fully implemented but basically intent is the panes/fieldsets on this page should be all in this array in order like 'credit_card' => array('credit_card_number' . from CRM_Contribute_Form_AbstractEditPayment
protected $_memType
protected array $_fromEmails Array of from email ids from CRM_Member_Form
protected array $allMembershipTypeDetails Details of all enabled membership types. from CRM_Member_Form
protected array $membershipTypeRenewalStatus Array of membership type IDs and whether they permit autorenewal. from CRM_Member_Form
int $_priceSetId Price set ID configured for the form. from CRM_Member_Form
array $_priceSet Price set details as an array. from CRM_Member_Form
protected array $_params Values submitted to the form, processed along the way. from CRM_Member_Form
protected $_onlinePendingContributionId
protected $_recurMembershipTypes
protected $_memTypeSelected
protected string $_memberDisplayName Display name of the member.
protected $_memberEmail email of the person paying for the membership (used for receipts)
protected string $_contributorDisplayName Display name of the person paying for the membership (used for receipts)
protected $_contributorEmail email of the person paying for the membership (used for receipts)
protected int $_contributorContactID email of the person paying for the membership (used for receipts)
protected int $_receiptContactId ID of the person the receipt is to go to.
protected array $_membershipIDs Keep a class variable for ALL membership IDs so postProcess hook function can do something with it

Methods

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

Constructor for the basic form page.

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()

Form preProcess function.

postProcess()

Process the form submission.

mainProcess(bool $allowAjax = TRUE)

Main process wrapper.

postProcessHook()

The postProcess hook is typically called by the framework.

buildQuickForm()

Build the form object.

array|NULL
setDefaultValues()

Set default values for the form.

addRules()

Add the rules for 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.

assignPaymentProcessor(bool $is_pay_later_enabled)

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

array
formatParamsForPaymentProcessor(array $fields)

Format the fields 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()

Default extra tpl file basically just replaces .tpl with .extra.tpl.

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 = array(), null $separator = NULL, bool $required = FALSE)

No description

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

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 form buttons.

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

No description

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 = array(), bool $required = FALSE)

Adds a select based on field metadata.

HTML_QuickForm_Element
addField($name, array $props = array(), 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 = array(), 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(), array $autoCompleteField = array())

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($onlinePaymentProcessorEnabled)

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 = array())

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 = array())

Assign billing name to the template.

static 
preProcessCommon(CRM_Core_Form $form, bool $useTable = FALSE)

Common pre-processing function.

getContactIds()

Get the contact id for custom search.

mergeContactIdsByHousehold()

Replace ids of household members in $this->_contactIds with the id of their household.

array
createHiddenGroup()

Given this task's list of targets, produce a hidden group.

applyCustomData(string $type, string $subType, int $entityId)

No description

assignProcessors()

Assign $this->processors, $this->recurPaymentProcessors, and related Smarty variables

mixed
getCurrency($submittedValues)

Get current currency from DB or use default currency.

mixed
unsetCreditCardFields(array $submittedValues)

No description

assignPaymentRelatedVariables()

Common block for setting up the parts of a form that relate to credit / debit card

static void
formatCreditCardDetails(array $params)

Format credit card details like: 1. Retrieve last 4 digit from credit card number as pan_truncation 2. Retrieve credit card type id from name

processBillingAddress()

Add the billing address to the contact who paid.

array
getBillingDefaults($defaults)

Get default values for billing fields.

int
getDefaultPaymentInstrumentId()

Get the default payment instrument id.

storeContactFields(array $formValues)

Extract values from the contact create boxes on the form and assign appropriately to

setContextVariables(array $params)

Set variables in a way that can be accessed from different places.

array
processRecurringContribution($paymentParams)

Create a recurring contribution record.

ensurePriceParamsAreSet(array $formValues)

Ensure price parameters are set.

static array
getPriceSetDetails(array $params)

Get the details for the selected price set.

static int
getPriceSetID(array $params)

Get the selected price set id.

array
setPriceSetParameters(array $formValues)

Store parameters relating to price sets.

testSubmit(array $formValues)

Wrapper function for unit tests.

static array
getSelectedMemberships(array $priceSet, array $params)

Get selected membership type from the form values.

static array
getPriceFieldIDs(array $params, array $priceSet)

Extract price set fields and values from $params.

static bool|array
formRule(array $params, array $files, CRM_Member_Form_Membership $self)

Validation.

static bool
emailReceipt(CRM_Core_Form $form, array $formValues, object $membership)

Send email receipt.

array
submit()

Submit function.

setUserContext()

Set context in session.

string
getStatusMessageForUpdate(CRM_Member_BAO_Membership $membership, string $endDate, bool $receiptSend)

Get status message for updating membership.

array|string
getStatusMessageForCreate(string $endDate, bool $receiptSend, array $membershipTypes, array $createdMemberships, bool $isRecur, array $calcDates, bool $mailSent)

Get status message for create action.

setStatusMessage($membership, $endDate, $receiptSend, $membershipTypes, $createdMemberships, $isRecur, $calcDates, $mailSend)

No description

Details

in CRM_Core_Form at line 239
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 279
addClass(string $className)

Add one or more css classes to the form.

Parameters

string $className

in CRM_Core_Form at line 287
registerRules()

Register all the standard rules that most forms potentially use.

in CRM_Core_Form at line 340
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 172
preProcess()

Form preProcess function.

Exceptions

Exception

at line 943
postProcess()

Process the form submission.

in CRM_Core_Form at line 446
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 473
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

at line 404
buildQuickForm()

Build the form object.

at line 268
array|NULL setDefaultValues()

Set default values for the form.

Return Value

array|NULL reference to the array of default values

in CRM_Contact_Form_Task at line 338
addRules()

Add the rules for form.

in CRM_Core_Form at line 512
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 540
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 599
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 668
string getName()

Getter function for Name.

Return Value

string

in CRM_Core_Form at line 677
object getState()

Getter function for State.

Return Value

object

in CRM_Core_Form at line 686
int getStateType()

Getter function for StateType.

Return Value

int

in CRM_Core_Form at line 697
string getTitle()

Getter function for title.

Should be over-ridden by derived class.

Return Value

string

in CRM_Core_Form at line 707
setTitle(string $title)

Setter function for title.

Parameters

string $title The title of the form.

in CRM_Core_Form at line 716
assignBillingType()

Assign billing type id to bltID.

Exceptions

CRM_Core_Exception

in CRM_Core_Form at line 731
protected assignPaymentProcessor(bool $is_pay_later_enabled)

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 $is_pay_later_enabled

Exceptions

CRM_Core_Exception

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

Format the fields 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 807
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 860
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 885
setOptions(mixed $options)

Setter function for options.

Parameters

mixed $options

in CRM_Core_Form at line 894
string toSmarty()

Render form and return contents.

Return Value

string

in CRM_Core_Form at line 912
object getRenderer()

Getter function for renderer.

If renderer is not set create one and initialize it.

Return Value

object

in CRM_Core_Form at line 924
string getTemplateFileName()

Use the form name to create the tpl file name.

Return Value

string

in CRM_Core_Form at line 947
getHookedTemplateFileName()

A wrapper for getTemplateFileName.

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

in CRM_Core_Form at line 960
string overrideExtraTemplateFileName()

Default extra tpl file basically just replaces .tpl with .extra.tpl.

i.e. we do not override.

Return Value

string

in CRM_Core_Form at line 974
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 992
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 1004
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 1013
int getAction()

Getter for action.

Return Value

int

in CRM_Core_Form at line 1023
setAction(int $action)

Setter for action.

Parameters

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

in CRM_Core_Form at line 1035
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 1047
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 1059
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 1070
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 1084
HTML_QuickForm_group addRadio(string $name, $title, $values, array $attributes = array(), 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 1110
addYesNo(int $id, $title, bool $allowClear = FALSE, null $required = NULL, array $attributes = array())

Parameters

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

in CRM_Core_Form at line 1136
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 1179
resetValues()

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

Simple shell that derived classes can call to add form buttons.

Allows 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 If true, add javascript to next button submit which prevents it from being clicked more than once

in CRM_Core_Form at line 1226
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 1259
getDefaultEntity()

Classes extending CRM_Core_Form should implement this method.

Exceptions

Exception

in CRM_Core_Form at line 1269
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 1291
HTML_QuickForm_Element addSelect($name, array $props = array(), 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 1372
HTML_QuickForm_Element addField($name, array $props = array(), 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

HTML_QuickForm_Element

Exceptions

CiviCRM_API3_Exception
Exception

in CRM_Core_Form at line 1553
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 1572
null getRootTitle()

Return Value

null

in CRM_Core_Form at line 1579
string getCompleteTitle()

Return Value

string

in CRM_Core_Form at line 1586
static CRM_Core_Smarty getTemplate()

Return Value

CRM_Core_Smarty

in CRM_Core_Form at line 1593
addUploadElement($elementName)

Parameters

$elementName

in CRM_Core_Form at line 1623
null getVar($name)

Parameters

$name

Return Value

null

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

Parameters

$name
$value

in CRM_Core_Form at line 1650
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 1739
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 1765
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 1795
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 1845
HTML_QuickForm_Element addEntityRef(string $name, string $label = '', array $props = array(), 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_Core_BAO_UFGroup::getCreateLinks 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 1894
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 1914
removeFileRequiredRules($elementName)

Parameters

$elementName

in CRM_Core_Form at line 1932
cancelAction()

Function that can be defined in Form to override or.

perform specific action on cancel action

in CRM_Core_Form at line 1944
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 1963
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 2018
int|NULL getContactID()

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

Return Value

int|NULL

in CRM_Core_Form at line 2025
getLoggedInUserContactID()

Get the contact id of the logged in user.

in CRM_Core_Form at line 2054
addAutoSelector(array $profiles = array(), array $autoCompleteField = array())

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 2079
canUseAjaxContactLookups()

in CRM_Core_Form at line 2097
addCIDZeroOptions($onlinePaymentProcessorEnabled)

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

Parameters

$onlinePaymentProcessorEnabled

in CRM_Core_Form at line 2123
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 2142
preventAjaxSubmit()

Sets form attribute.

See also

CRM.loadForm

in CRM_Core_Form at line 2150
allowAjaxSubmit()

Sets form attribute.

See also

CRM.loadForm

in CRM_Core_Form at line 2158
setPageTitle(string $entityLabel)

Sets page title based on entity and action.

Parameters

string $entityLabel

in CRM_Core_Form at line 2187
HTML_QuickForm_Element addChainSelect(string $elementName, array $settings = array())

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 2222
addTaskMenu(array $tasks)

Add actions menu to results form.

Parameters

array $tasks

in CRM_Core_Form at line 2337
string assignBillingName(array $params = array())

Assign billing name to the template.

Parameters

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

Return Value

string

in CRM_Contact_Form_Task at line 99
static preProcessCommon(CRM_Core_Form $form, bool $useTable = FALSE)

Common pre-processing function.

Parameters

CRM_Core_Form $form
bool $useTable

in CRM_Contact_Form_Task at line 278
getContactIds()

Get the contact id for custom search.

we are not using prev/next table in case of custom search

in CRM_Contact_Form_Task at line 387
mergeContactIdsByHousehold()

Replace ids of household members in $this->_contactIds with the id of their household.

CRM-8338

in CRM_Contact_Form_Task at line 470
array createHiddenGroup()

Given this task's list of targets, produce a hidden group.

Return Value

array Array(0 => int $groupID, 1 => int|NULL $ssID).

Exceptions

Exception

showRecordLinkMesssage(int $id)

Parameters

int $id

buildValuesAndAssignOnline_Note_Type(int $id, $values)

Parameters

int $id
$values

applyCustomData(string $type, string $subType, int $entityId)

Parameters

string $type Eg 'Contribution'.
string $subType
int $entityId

assignPremiumProduct(int $id)

Parameters

int $id

array getValidProcessors()

Return Value

array Array of valid processors. The array resembles the DB table but also has 'object' as a key

Exceptions

Exception

assignProcessors()

Assign $this->processors, $this->recurPaymentProcessors, and related Smarty variables

mixed getCurrency($submittedValues)

Get current currency from DB or use default currency.

Parameters

$submittedValues

Return Value

mixed

preProcessPledge()

mixed unsetCreditCardFields(array $submittedValues)

Parameters

array $submittedValues

Return Value

mixed

protected assignPaymentRelatedVariables()

Common block for setting up the parts of a form that relate to credit / debit card

Exceptions

Exception

protected beginPostProcess()

Begin post processing.

This function aims to start to bring together common postProcessing functions.

Eventually these are also shared with the front end forms & may need to be moved to where they can also access this function.

static void formatCreditCardDetails(array $params)

Format credit card details like: 1. Retrieve last 4 digit from credit card number as pan_truncation 2. Retrieve credit card type id from name

Parameters

array $params

Return Value

void

protected processBillingAddress()

Add the billing address to the contact who paid.

Note that this function works based on the presence or otherwise of billing fields & can be called regardless of whether they are 'expected' (due to assumptions about the payment processor type or the setting to collect billing for pay later.

protected array getBillingDefaults($defaults)

Get default values for billing fields.

Parameters

$defaults

Return Value

array

protected int getDefaultPaymentInstrumentId()

Get the default payment instrument id.

Return Value

int

in CRM_Member_Form at line 260
storeContactFields(array $formValues)

Extract values from the contact create boxes on the form and assign appropriately to

  • $this->_contributorEmail,
    • $this->_memberEmail &
    • $this->_contributionName
    • $this->_memberName
    • $this->_contactID (effectively memberContactId but changing might have spin-off effects)
    • $this->_contributorContactId - id of the contributor
    • $this->_receiptContactId

If the member & contributor are the same then the values will be the same. But if different people paid then they weill differ

Parameters

array $formValues values from form. The important values we are looking for are. - contact_id - soft_credit_contact_id

in CRM_Member_Form at line 291
protected setContextVariables(array $params)

Set variables in a way that can be accessed from different places.

This is part of refactoring for unit testability on the submit function.

Parameters

array $params

in CRM_Member_Form at line 323
protected array processRecurringContribution($paymentParams)

Create a recurring contribution record.

Recurring contribution parameters are set explicitly rather than merging paymentParams because it's hard to know the downstream impacts if we keep passing around the same array.

Parameters

$paymentParams

Return Value

array

Exceptions

CiviCRM_API3_Exception

in CRM_Member_Form at line 365
protected ensurePriceParamsAreSet(array $formValues)

Ensure price parameters are set.

If they are not set it means a quick config option has been chosen so we fill them in here to make the two flows the same. They look like 'price_2' => 2 etc.

Parameters

array $formValues

in CRM_Member_Form at line 388
static protected array getPriceSetDetails(array $params)

Get the details for the selected price set.

Parameters

array $params Parameters submitted to the form.

Return Value

array

in CRM_Member_Form at line 408
static protected int getPriceSetID(array $params)

Get the selected price set id.

Parameters

array $params Parameters submitted to the form.

Return Value

int

in CRM_Member_Form at line 424
protected array setPriceSetParameters(array $formValues)

Store parameters relating to price sets.

Parameters

array $formValues

Return Value

array

in CRM_Member_Form at line 438
testSubmit(array $formValues)

Wrapper function for unit tests.

Parameters

array $formValues

at line 122
static array getSelectedMemberships(array $priceSet, array $params)

Get selected membership type from the form values.

Parameters

array $priceSet
array $params

Return Value

array

at line 146
static array getPriceFieldIDs(array $params, array $priceSet)

Extract price set fields and values from $params.

Parameters

array $params
array $priceSet

Return Value

array

at line 739
static bool|array formRule(array $params, array $files, CRM_Member_Form_Membership $self)

Validation.

Parameters

array $params (ref.) an assoc array of name/value pairs.
array $files
CRM_Member_Form_Membership $self

Return Value

bool|array mixed true or array of errors

Exceptions

CiviCRM_API3_Exception

at line 968
static bool emailReceipt(CRM_Core_Form $form, array $formValues, object $membership)

Send email receipt.

Parameters

CRM_Core_Form $form Form object.
array $formValues
object $membership Object.

Return Value

bool true if mail was sent successfully

at line 1105
array submit()

Submit function.

This is also accessed by unit tests.

Return Value

array

at line 1733
protected setUserContext()

Set context in session.

at line 1765
protected string getStatusMessageForUpdate(CRM_Member_BAO_Membership $membership, string $endDate, bool $receiptSend)

Get status message for updating membership.

Parameters

CRM_Member_BAO_Membership $membership
string $endDate
bool $receiptSend

Return Value

string

at line 1794
protected array|string getStatusMessageForCreate(string $endDate, bool $receiptSend, array $membershipTypes, array $createdMemberships, bool $isRecur, array $calcDates, bool $mailSent)

Get status message for create action.

Parameters

string $endDate
bool $receiptSend
array $membershipTypes
array $createdMemberships
bool $isRecur
array $calcDates
bool $mailSent

Return Value

array|string

at line 1835
protected setStatusMessage($membership, $endDate, $receiptSend, $membershipTypes, $createdMemberships, $isRecur, $calcDates, $mailSend)

Parameters

$membership
$endDate
$receiptSend
$membershipTypes
$createdMemberships
$isRecur
$calcDates
$mailSend