CRM_Report_Form_Campaign_SurveyDetails
class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_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 |
ROW_COUNT_LIMIT |
|
OP_INT |
Operator types - used for displaying filter elements |
OP_STRING |
Operator types - used for displaying filter elements |
OP_DATE |
Operator types - used for displaying filter elements |
OP_DATETIME |
Operator types - used for displaying filter elements |
OP_FLOAT |
Operator types - used for displaying filter elements |
OP_SELECT |
Operator types - used for displaying filter elements |
OP_MULTISELECT |
Operator types - used for displaying filter elements |
OP_MULTISELECT_SEPARATOR |
Operator types - used for displaying filter elements |
OP_MONTH |
Operator types - used for displaying filter elements |
OP_ENTITYREF |
Operator types - used for displaying filter elements |
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 report title | from CRM_Report_Form |
array | $_defaults | The default values for the form. | from CRM_Core_Form |
array | $_options | The set of optional columns in the report | from CRM_Report_Form |
int | $_action | (QUASI-PROTECTED) The mode of operation for this form | from CRM_Core_Form |
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 int | $_id | The id of the report instance | from CRM_Report_Form |
protected int | $_templateID | The id of the report template | from CRM_Report_Form |
protected | $_noFields | from CRM_Report_Form | |
protected array | $_columns | The set of all columns in the report. An associative array with column name as the key and attributes as the value | from CRM_Report_Form |
protected array | $_filters | The set of filters in the report | from CRM_Report_Form |
protected bool | $_exposeContactID | By default most reports hide contact id. | from CRM_Report_Form |
protected array | $_statFields | Set of statistic fields | from CRM_Report_Form |
protected array | $_statistics | Set of statistics data | from CRM_Report_Form |
protected array | $_noRepeats | List of fields not to be repeated during display | from CRM_Report_Form |
protected array | $_noDisplay | List of fields not to be displayed | from CRM_Report_Form |
protected | $_customGroupExtends | ||
protected | $_customGroupExtendsJoin | from CRM_Report_Form | |
protected | $_customGroupFilters | from CRM_Report_Form | |
protected | $_customGroupGroupBy | ||
protected | $_customGroupJoin | from CRM_Report_Form | |
protected bool | $_tagFilter | Build tags filter | from CRM_Report_Form |
protected string | $_tagFilterTable | specify entity table for tags filter | from CRM_Report_Form |
protected bool | $_groupFilter | Build groups filter. | from CRM_Report_Form |
protected bool | $groupFilterNotOptimised | Has the report been optimised for group filtering. | from CRM_Report_Form |
array | $_navigation | Navigation fields | from CRM_Report_Form |
$_drilldownReport | |||
protected array | $tabs | Array of tabs to display on report. | from CRM_Report_Form |
protected bool | $addPaging | Should we add paging. | from CRM_Report_Form |
protected | $isForceGroupBy | from CRM_Report_Form | |
protected | $groupConcatTested | from CRM_Report_Form | |
protected array | $_fourColumnAttribute | An attribute for checkbox/radio form field layout | from CRM_Report_Form |
protected | $_force | from CRM_Report_Form | |
protected | $_params | from CRM_Report_Form | |
protected | $_formValues | from CRM_Report_Form | |
protected | $_instanceValues | from CRM_Report_Form | |
protected | $_instanceForm | from CRM_Report_Form | |
protected | $_criteriaForm | from CRM_Report_Form | |
protected | $_instanceButtonName | from CRM_Report_Form | |
protected | $_createNewButtonName | from CRM_Report_Form | |
protected | $_printButtonName | from CRM_Report_Form | |
protected | $_pdfButtonName | from CRM_Report_Form | |
protected | $_csvButtonName | from CRM_Report_Form | |
protected | $_groupButtonName | from CRM_Report_Form | |
protected | $_chartButtonName | from CRM_Report_Form | |
protected | $_csvSupported | from CRM_Report_Form | |
protected | $_add2groupSupported | from CRM_Report_Form | |
protected | $_groups | from CRM_Report_Form | |
protected | $_grandFlag | from CRM_Report_Form | |
protected | $_rowsFound | from CRM_Report_Form | |
protected | $_selectAliases | from CRM_Report_Form | |
protected | $_rollup | from CRM_Report_Form | |
protected string | $groupTempTable | Table containing list of contact IDs within the group filter. | from CRM_Report_Form |
protected array | $_aliases | from CRM_Report_Form | |
protected string | $_where | from CRM_Report_Form | |
protected string | $_from | from CRM_Report_Form | |
protected string | $_limit | SQL Limit clause | from CRM_Report_Form |
protected int | $_limitValue | This can be set to specify a limit to the number of rows Since it is currently envisaged as part of the api usage it is only being applied when $_output mode is not 'html' or 'group' so as not to have to interpret / mess with that part of the code (see limit() fn. | from CRM_Report_Form |
protected int | $_offsetValue | This can be set to specify row offset See notes on _limitValue | from CRM_Report_Form |
protected null | $_sections | from CRM_Report_Form | |
protected | $_autoIncludeIndexedFieldsAsOrderBys | from CRM_Report_Form | |
protected | $_absoluteUrl | from CRM_Report_Form | |
protected bool | $_storeResultSet | Flag to indicate if result-set is to be stored in a class variable which could be retrieved using getResultSet() method. | from CRM_Report_Form |
protected bool | $_resultSet | When _storeResultSet Flag is set use this var to store result set in form of array | from CRM_Report_Form |
protected array | $_groupByDateFreq | To what frequency group-by a date column | from CRM_Report_Form |
protected string|null | $_aclFrom | Variables to hold the acl inner join and where clause | from CRM_Report_Form |
protected | $_aclWhere | from CRM_Report_Form | |
protected array | $_selectedTables | Array of DAO tables having columns included in SELECT or ORDER BY clause. | from CRM_Report_Form |
protected array | $filteredTables | Array of DAO tables having columns included in WHERE or HAVING clause | from CRM_Report_Form |
protected string | $_outputMode | Output mode e.g 'print', 'csv', 'pdf'. | from CRM_Report_Form |
protected string|null | $_format | Format of any chart in use. | from CRM_Report_Form |
$_having | from CRM_Report_Form | ||
$_select | from CRM_Report_Form | ||
$_selectClauses | from CRM_Report_Form | ||
$_columnHeaders | from CRM_Report_Form | ||
$_orderBy | from CRM_Report_Form | ||
$_orderByFields | from CRM_Report_Form | ||
$_orderByArray | from CRM_Report_Form | ||
protected array | $_groupByArray | Array of clauses to group by. | from CRM_Report_Form |
$_groupBy | from CRM_Report_Form | ||
$_whereClauses | from CRM_Report_Form | ||
$_havingClauses | from CRM_Report_Form | ||
int | $_dashBoardRowCount | DashBoardRowCount Dashboard row count. | from CRM_Report_Form |
bool | $noController | Is this being called without a form controller (ie. the report is being render outside the normal form - e.g the api is retrieving the rows. | from CRM_Report_Form |
protected string|null | $_currencyColumn | Variable to hold the currency alias. | from CRM_Report_Form |
protected string | $_interval | from CRM_Report_Form | |
protected bool | $_sendmail | from CRM_Report_Form | |
protected int | $_chartId | from CRM_Report_Form | |
int | $_section | from CRM_Report_Form | |
string | $_description | Report description. | from CRM_Report_Form |
protected bool | $_addressField | Is an address field selected. | from CRM_Report_Form |
protected | $_emailField | ||
protected | $_phoneField | ||
protected bool | $_createNew | Create new report instance? (or update existing) on save. | from CRM_Report_Form |
protected array | $rollupRow | When a grand total row has calculated the status we pop it off to here. | from CRM_Report_Form |
protected string | $_databaseAttributes | Database attributes - character set and collation. | from CRM_Report_Form |
protected string | $sql | SQL being run in this report. | from CRM_Report_Form |
protected bool | $noGroupBy | An instruction not to add a Group By. | from CRM_Report_Form |
protected string | $sqlArray | SQL being run in this report as an array. | from CRM_Report_Form |
protected array | $temporaryTables | Tables created for the report that need removal afterwards. | from CRM_Report_Form |
bool | $optimisedForOnlyFullGroupBy | Can this report use the sql mode ONLY_FULL_GROUP_BY. | from CRM_Report_Form |
protected | $_locationBasedPhoneField | ||
protected | $_summary |
Methods
No description
Simple easy to use wrapper around addElement.
Pre process function.
This is a virtual function that adds group and global rules to the form.
This if a front end form function for setting the payment processor.
Format the fields in $this->_params for the payment processor.
Format the fields in $params for the payment processor.
Handle Payment Processor switching for contribution and event registration forms.
Default extra tpl file basically just replaces .tpl with .extra.tpl.
Store the variable with the value in the form scope.
Assign value to name in template by reference.
Appends values to template variables.
Returns an array containing template variables.
No description
No description
No description
Simple shell that derived classes can call to add buttons to the form with a customized title for the main Submit
No description
Add a search for a range using date picker fields.
Based on form action, return a string representing the api action.
Classes extending CRM_Core_Form should implement this method.
Adds a select based on field metadata.
Adds a field based on metadata.
Add a widget for selecting/editing/creating/copying a profile form
Add date.
Function that will add date and time.
Add a currency and money element to the form.
Add currency element to the form.
Create a single or multiple entity ref field.
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
Helper function to verify that required fields have been filled.
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?)
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
Set default values on form for given contact (or no contact defaults)
Create a chain-select target field. All settings are optional; the defaults usually work.
Assign billing name to the template.
Get element from group.
Create a temporary table.
The intent is to add a tab for developers to view the sql.
This adds the tab referred to as Title and Format, rendered through Instance.tpl.
A form rule function for custom data.
Get operators to display on form.
Get SQL operator from form text version.
Generate where clause.
Get SQL where clause for contact subtypes
Get SQL where clause for a date field.
Get values for from and to for date ranges.
Alter display of rows.
Alter the way in which custom data fields are displayed.
Fix subtotal display.
No description
No description
No description
No description
Generate the SELECT clause and set class variable $_select.
Build select clause for a single field.
Build where clause.
BeginPostProcess function run in both report mode and non-report mode (api).
Move totals columns to the right edge of the table.
Compile the report content.
Build a group filter with contempt for large data sets.
Build where clause for groups.
Create a table of the contact ids included by the group filter.
Execute query and add it to the developer tab.
Build where clause for tags.
Generate membership organization clause.
Generate Membership Type SQL Clause.
Build the permision clause for all entities in this report
Add custom data to the columns.
Build custom data from clause.
Check for empty order_by configurations and remove them.
Check if table name has columns in SELECT clause.
Check if table name has columns in WHERE or HAVING clause.
Fetch array of DAO tables having columns included in SELECT or ORDER BY clause.
Add campaign fields.
Add address fields.
Do AlterDisplay processing on Address Fields.
Do AlterDisplay processing on Address Fields.
Adjusts dates passed in to YEAR() for fiscal year.
Add Address into From Table if required.
Add Country into From Table if required.
Add Phone into From Table if required.
Add Email into From Table if required.
Add Financial Transaction into From Table if required.
Get a standard set of contact filters.
Apply common settings to entityRef fields.
Add link fields to the row.
CRM-17793 - Alter DateTime section header to group by date from the datetime field.
Get an array of the columns that have been selected for display.
Add location tables to the query if they are used for filtering.
Set the base table for the FROM clause.
Join the temp table contacting contacts who are members of the filtered groups.
Get all labels for fields that are used in a group concat.
Add statistics columns.
Add a basic field to the select clause.
Function to add columns to reports.
Get address columns to add to array.
Build the columns.
Store group bys into array - so we can check elsewhere what is grouped.
Get the select clause for a field, wrapping in GROUP_CONCAT if appropriate.
Generate clause for the selected filter.
No description
Details
in CRM_Core_Form at line 200
string
getContext()
in CRM_Core_Form at line 207
setContext()
Set context variable.
at line 68
CRM_Core_Form
__construct()
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.
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.
at line 235
preProcess()
Pre process function.
Called prior to build form.
in CRM_Report_Form at line 3551
postProcess()
Post process function.
in CRM_Core_Form at line 494
mainProcess(bool $allowAjax = TRUE)
Main process wrapper.
Implemented so that we can call all the hook functions.
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_Report_Form at line 1688
buildQuickForm()
Main build form function.
in CRM_Report_Form at line 921
array|NULL
setDefaultValues(bool $freeze = TRUE)
Set 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.
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.
in CRM_Core_Form at line 723
string
getName()
Getter function for Name.
in CRM_Core_Form at line 732
object
getState()
Getter function for State.
in CRM_Core_Form at line 741
int
getStateType()
Getter function for StateType.
in CRM_Core_Form at line 752
string
getTitle()
Getter function for title.
Should be over-ridden by derived class.
in CRM_Core_Form at line 762
setTitle(string $title)
Setter function for title.
in CRM_Core_Form at line 772
assignBillingType()
Assign billing type id to bltID.
in CRM_Core_Form at line 781
int
getPaymentProcessorID()
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.
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.
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.
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.
in CRM_Core_Form at line 973
setOptions(mixed $options)
Setter function for options.
in CRM_Core_Form at line 982
string
toSmarty()
Render form and return contents.
in CRM_Core_Form at line 1000
object
getRenderer()
Getter function for renderer.
If renderer is not set create one and initialize it.
in CRM_Report_Form at line 3525
string
getTemplateFileName()
Use the form name to create the tpl file name.
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.
in CRM_Core_Form at line 1048
string
overrideExtraTemplateFileName()
Default extra tpl file basically just replaces .tpl with .extra.tpl.
i.e. we do not override.
in CRM_Core_Form at line 1062
error(string $message, int $code = NULL, CRM_Core_DAO $dao = NULL)
Error reporting mechanism.
in CRM_Core_Form at line 1080
set(string $name, mixed $value)
Store the variable with the value in the form scope.
in CRM_Core_Form at line 1092
mixed
get(string $name)
Get the variable from the form scope.
in CRM_Core_Form at line 1101
int
getAction()
Getter for action.
in CRM_Core_Form at line 1111
setAction(int $action)
Setter for action.
in CRM_Core_Form at line 1123
assign(string $var, mixed $value = NULL)
Assign value to name in template.
in CRM_Core_Form at line 1135
assign_by_ref(string $var, mixed $value)
Assign value to name in template by reference.
in CRM_Core_Form at line 1147
append(array|string $tpl_var, mixed $value = NULL, bool $merge = FALSE)
Appends values to template variables.
in CRM_Core_Form at line 1158
array
get_template_vars(string $name = NULL)
Returns an array containing template variables.
in CRM_Core_Form at line 1172
HTML_QuickForm_group
addRadio(string $name, $title, $values, array $attributes = [], null $separator = NULL, bool $required = FALSE)
in CRM_Core_Form at line 1204
addYesNo(int $id, $title, bool $allowClear = FALSE, null $required = NULL, 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)
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
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)
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.
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.
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.
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
in CRM_Core_Form at line 1507
mixed
addField($name, array $props = [], bool $required = FALSE, bool $legacyDate = TRUE)
Adds a field based on metadata.
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
in CRM_Core_Form at line 1729
null
getRootTitle()
in CRM_Core_Form at line 1736
string
getCompleteTitle()
in CRM_Core_Form at line 1743
static CRM_Core_Smarty
getTemplate()
in CRM_Core_Form at line 1750
addUploadElement($elementName)
in CRM_Core_Form at line 1780
null
getVar($name)
in CRM_Core_Form at line 1788
setVar($name, $value)
in CRM_Core_Form at line 1807
addDate(string $name, string $label, bool $required = FALSE, array $attributes = NULL)
deprecated
deprecated
Add date.
in CRM_Core_Form at line 1896
addDateTime(string $name, string $label, bool $required = FALSE, null $attributes = NULL)
deprecated
deprecated
Function that will add date and time.
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.
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.
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.
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
in CRM_Core_Form at line 2075
removeFileRequiredRules($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
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?)
in CRM_Core_Form at line 2179
int|null
getContactID()
Get the contact id that the form is being submitted for.
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)}
{/if}
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)
in CRM_Core_Form at line 2299
preventAjaxSubmit()
Sets form attribute.
in CRM_Core_Form at line 2307
allowAjaxSubmit()
Sets form attribute.
in CRM_Core_Form at line 2315
setPageTitle(string $entityLabel)
Sets page title based on entity and action.
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.
in CRM_Core_Form at line 2379
addTaskMenu(array $tasks)
Add actions menu to results form.
in CRM_Core_Form at line 2496
string
assignBillingName(array $params = [])
Assign billing name to the template.
in CRM_Core_Form at line 2531
string
getCurrency(array $submittedValues = [])
Get the currency for the form.
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.
in CRM_Report_Form at line 586
preProcessCommon()
Shared pre-process function.
If overriding preProcess function this should still be called.
in CRM_Report_Form at line 728
addBreadCrumb()
Add bread crumb.
in CRM_Report_Form at line 1076
bool
getElementFromGroup(string $group, string $grpFieldName)
Get element from group.
in CRM_Report_Form at line 1091
setParams(array $params)
Setter for $_params.
in CRM_Report_Form at line 1100
void|array
getParams()
Getter for $_params.
in CRM_Report_Form at line 1109
setID(int $instanceID)
Setter for $_id.
in CRM_Report_Form at line 1118
setForce(bool $isForce)
Setter for $_force.
in CRM_Report_Form at line 1127
setLimitValue(int $_limitValue)
Setter for $_limitValue.
in CRM_Report_Form at line 1136
setOffsetValue(int $_offsetValue)
Setter for $_offsetValue.
in CRM_Report_Form at line 1145
setAddPaging(bool $value)
Setter for $addPaging.
in CRM_Report_Form at line 1154
array
getDefaultValues()
Getter for $_defaultValues.
in CRM_Report_Form at line 1161
cleanUpTemporaryTables()
Remove any temporary tables.
in CRM_Report_Form at line 1183
string
createTemporaryTable(string $identifier, string $sql, bool $isColumns = FALSE, bool $isMemory = FALSE)
Create a temporary table.
This function creates a table AND adds the details to the developer tab & $this->>temporary tables.
in CRM_Report_Form at line 1205
addColumns()
Add columns to report.
in CRM_Report_Form at line 1266
addFilters()
Add filters to report.
in CRM_Report_Form at line 1413
protected
assignTabs()
Function to assign the tabs to the template in the correct order.
We want the tabs to wind up in this order (if not overridden).
- Field Selection
- Group Bys
- Order Bys
- Other Options
- Filters
in CRM_Report_Form at line 1433
addToDeveloperTab(string $sql)
The intent is to add a tab for developers to view the sql.
Currently using dpm.
in CRM_Report_Form at line 1466
addOptions()
Add options defined in $this->_options to the report.
in CRM_Report_Form at line 1502
addChartOptions()
Add chart options to the report.
in CRM_Report_Form at line 1513
addGroupBys()
Add group by options to the report.
in CRM_Report_Form at line 1550
addOrderBys()
Add data for order by tab.
in CRM_Report_Form at line 1611
buildInstanceAndButtons()
This adds the tab referred to as Title and Format, rendered through Instance.tpl.
in CRM_Report_Form at line 1649
bool
resultsDisplayed()
Has this form been submitted already?
in CRM_Report_Form at line 1661
protected array
getActions(int $instanceId)
Get the actions for this report instance.
in CRM_Report_Form at line 1723
array
customDataFormRule(array $fields, array $ignoreFields = [])
A form rule function for custom data.
The rule ensures that fields selected in group_by if any) should only be the ones present in display/select fields criteria; note: works if and only if any custom field selected in group_by.
in CRM_Report_Form at line 1765
array
getOperationPair(string $type = "string", string $fieldName = NULL)
Get operators to display on form.
Note: $fieldName param allows inheriting class to build operationPairs specific to a field.
in CRM_Report_Form at line 1840
buildTagFilter()
Build the tag filter field to display on the filters tab.
in CRM_Report_Form at line 1862
buildGroupFilter()
Adds group filters to _columns (called from _Construct).
in CRM_Report_Form at line 1888
string
getSQLOperator(string $operator = "like")
Get SQL operator from form text version.
in CRM_Report_Form at line 1943
null|string
whereClause(array $field, string $op, mixed $value, float $min, float $max)
Generate where clause.
This can be overridden in reports for special treatment of a field
in CRM_Report_Form at line 2131
string
whereSubtypeClause(string $field, mixed $value, string $op)
Get SQL where clause for contact subtypes
in CRM_Report_Form at line 2175
null|string
dateClause(string $fieldName, string $relative, string $from, string $to, string $type = NULL, string $fromTime = NULL, string $toTime = NULL)
Get SQL where clause for a date field.
in CRM_Report_Form at line 2215
array
getFromTo(bool $relative, string $from, string $to, string $fromTime = NULL, string $toTime = NULL)
deprecated
deprecated
Get values for from and to for date ranges.
at line 469
alterDisplay(array $rows)
Alter display of rows.
Iterate through the rows retrieved via SQL and make changes for display purposes, such as rendering contacts as links.
in CRM_Report_Form at line 2242
alterCustomDataDisplay(array $rows)
Alter the way in which custom data fields are displayed.
in CRM_Report_Form at line 2298
removeDuplicates(array $rows)
Remove duplicate rows.
in CRM_Report_Form at line 2325
fixSubTotalDisplay(array $row, array $fields, bool $subtotal = TRUE)
Fix subtotal display.
in CRM_Report_Form at line 2348
bool
grandTotal(array $rows)
Calculate grant total.
in CRM_Report_Form at line 2383
formatDisplay(array $rows, bool $pager = TRUE)
Format display output.
in CRM_Report_Form at line 2473
protected array
alterStateProvinceID($value, $row, $selectedfield, $criteriaFieldName)
in CRM_Report_Form at line 2494
protected array
alterCountryID($value, $row, $selectedField, $criteriaFieldName)
in CRM_Report_Form at line 2514
protected array
alterCountyID($value, $row, $selectedfield, $criteriaFieldName)
in CRM_Report_Form at line 2534
protected mixed
alterLocationTypeID($value, $row, $selectedfield, $criteriaFieldName)
in CRM_Report_Form at line 2545
protected mixed
alterContactID($value, $row, $fieldname)
in CRM_Report_Form at line 2570
protected mixed
alterBoolean($value)
in CRM_Report_Form at line 2583
buildChart(array $rows)
Build chart.
at line 239
select()
Generate the SELECT clause and set class variable $_select.
in CRM_Report_Form at line 2738
bool
selectClause(string $tableName, string $tableKey, string $fieldName, string $field)
Build select clause for a single field.
at line 320
where()
Build where clause.
in CRM_Report_Form at line 2781
storeWhereHavingClauseArray()
Store Where clauses into an array.
Breaking out this step makes over-riding more flexible as the clauses can be used in constructing a temp table that may not be part of the final where clause or added in other functions
in CRM_Report_Form at line 2809
processReportMode()
Set output mode.
in CRM_Report_Form at line 2870
beginPostProcess()
Post Processing function for Form.
postProcessCommon should be used to set other variables from input as the api accesses that function. This function is not accessed when the api calls the report.
in CRM_Report_Form at line 2904
beginPostProcessCommon()
BeginPostProcess function run in both report mode and non-report mode (api).
in CRM_Report_Form at line 2914
string
buildQuery(bool $applyLimit = TRUE)
Build the report query.
in CRM_Report_Form at line 2945
groupBy()
Build group by clause.
in CRM_Report_Form at line 2965
orderBy()
Build order by clause.
in CRM_Report_Form at line 2982
storeOrderByArray()
Extract order by fields and store as an array.
In some cases other functions want to know which fields are selected for ordering by Separating this into a separate function allows it to be called separately from constructing the order by clause
in CRM_Report_Form at line 3048
array
unselectedOrderByColumns()
Determine unselected columns.
in CRM_Report_Form at line 3057
array
unselectedSectionColumns()
Determine unselected columns.
in CRM_Report_Form at line 3072
buildRows(string $sql, array $rows)
Build output rows.
in CRM_Report_Form at line 3116
sectionTotals()
Calculate section totals.
When "order by" fields are marked as sections, this assigns to the template an array of total counts for each section. This data is used by the Smarty plugin {sectionTotal}.
in CRM_Report_Form at line 3180
modifyColumnHeaders()
Modify column headers.
in CRM_Report_Form at line 3190
moveSummaryColumnsToTheRightHandSide()
Move totals columns to the right edge of the table.
It seems like a more logical layout to have any totals columns on the far right regardless of the location of the rest of their table.
in CRM_Report_Form at line 3200
doTemplateAssignment(array $rows)
Assign rows to the template.
in CRM_Report_Form at line 3215
array
statistics(array $rows)
Build report statistics.
Override this method to build your own statistics.
in CRM_Report_Form at line 3241
countStat(array $statistics, int $count)
Add count statistics.
in CRM_Report_Form at line 3260
groupByStat(array $statistics)
Add group by statistics.
in CRM_Report_Form at line 3286
filterStat(array $statistics)
Filter statistics.
in CRM_Report_Form at line 3393
endPostProcess(array|null $rows = NULL)
End post processing.
in CRM_Report_Form at line 3498
storeResultSet()
Set store result set indicator to TRUE.
in CRM_Report_Form at line 3507
bool
getResultSet()
Get result set.
in CRM_Report_Form at line 3516
string
getReportSql()
Get the sql used to generate the report.
at line 376
string
compileContent()
Compile the report content.
Although this function is super-short it is useful to keep separate so it can be over-ridden by report classes.
in CRM_Report_Form at line 3580
array
limit(int $rowCount = self::ROW_COUNT_LIMIT)
Set limit.
in CRM_Report_Form at line 3630
setPager(int $rowCount = self::ROW_COUNT_LIMIT)
Set pager.
in CRM_Report_Form at line 3674
string
legacySlowGroupFilterClause(string $field, mixed $value, string $op)
deprecated
deprecated
Build a group filter with contempt for large data sets.
This function has been retained as it takes time to migrate the reports over to the new method which will not crash on large datasets.
in CRM_Report_Form at line 3729
string
whereGroupClause(string $field, mixed $value, string $op)
Build where clause for groups.
in CRM_Report_Form at line 3745
buildGroupTempTable()
Create a table of the contact ids included by the group filter.
This function is called by both the api (tests) and the UI.
in CRM_Report_Form at line 3787
protected CRM_Core_DAO|object
executeReportQuery(string $query, array $params = [])
Execute query and add it to the developer tab.
in CRM_Report_Form at line 3801
string
whereTagClause(string $field, mixed $value, string $op)
Build where clause for tags.
in CRM_Report_Form at line 3825
string
whereMembershipOrgClause(mixed $value, string $op)
Generate membership organization clause.
in CRM_Report_Form at line 3853
string
whereMembershipTypeClause(mixed $value, string $op)
Generate Membership Type SQL Clause.
in CRM_Report_Form at line 3878
buildACLClause(string $tableAlias = 'contact_a')
deprecated
deprecated
Buld contact acl clause
in CRM_Report_Form at line 3885
buildPermissionClause()
Build the permision clause for all entities in this report
in CRM_Report_Form at line 3911
addCustomDataToColumns(bool $addFields = TRUE, array $permCustomGroupIds = [])
Add custom data to the columns.
in CRM_Report_Form at line 4066
customDataFrom(bool $joinsForFiltersOnly = FALSE)
Build custom data from clause.
in CRM_Report_Form at line 4114
bool
isFieldSelected(string $prop)
Check if the field is selected.
in CRM_Report_Form at line 4169
protected bool
isFieldFiltered(string $prop)
Check if the field is used as a filter.
in CRM_Report_Form at line 4207
preProcessOrderBy(array $formValues)
Check for empty order_by configurations and remove them.
Also set template to hide them.
in CRM_Report_Form at line 4251
bool
isTableSelected(string $tableName)
Check if table name has columns in SELECT clause.
in CRM_Report_Form at line 4263
bool
isTableFiltered(string $tableName)
Check if table name has columns in WHERE or HAVING clause.
in CRM_Report_Form at line 4279
array
selectedTables()
Fetch array of DAO tables having columns included in SELECT or ORDER BY clause.
If the array is unset it will be built.
in CRM_Report_Form at line 4340
addCampaignFields(string $entityTable = 'civicrm_contribution', bool $groupBy = FALSE, bool $orderBy = FALSE, bool $filters = TRUE)
Add campaign fields.
in CRM_Report_Form at line 4389
array
addAddressFields(bool $groupBy = TRUE, bool $orderBy = FALSE, bool $filters = TRUE, array $defaults = ['country_id' => TRUE])
deprecated
deprecated
Add address fields.
in CRM_Report_Form at line 4536
bool
alterDisplayAddressFields(array $row, array $rows, int $rowNum, string $baseUrl, string $linkText, string $separator = ',')
Do AlterDisplay processing on Address Fields.
If there are multiple address field values then on basis of provided separator the code values are translated into respective labels
in CRM_Report_Form at line 4585
bool
alterDisplayContactFields(array $row, array $rows, int $rowNum, string $baseUrl, string $linkText)
Do AlterDisplay processing on Address Fields.
in CRM_Report_Form at line 4641
string
fiscalYearOffset(string $fieldName)
Adjusts dates passed in to YEAR() for fiscal year.
in CRM_Report_Form at line 4659
addAddressFromClause()
deprecated
deprecated
Add Address into From Table if required.
in CRM_Report_Form at line 4681
addPhoneFromClause()
deprecated
deprecated
Add Phone into From Table if required.
in CRM_Report_Form at line 4703
protected
joinAddressFromContact(string $prefix = '', array $extra = [])
Add Address into From Table if required.
Prefix will be added to both tables as it is assumed you are using it to get address of a secondary contact.
in CRM_Report_Form at line 4736
protected
joinCountryFromAddress(string $prefix = '', array $extra = [])
Add Country into From Table if required.
Prefix will be added to both tables as it is assumed you are using it to get address of a secondary contact.
in CRM_Report_Form at line 4765
protected
joinPhoneFromContact(string $prefix = '', array $extra = [])
Add Phone into From Table if required.
Prefix will be added to both tables as it is assumed you are using it to get address of a secondary contact.
in CRM_Report_Form at line 4791
protected
joinEmailFromContact(string $prefix = '', array $extra = [])
Add Email into From Table if required.
Prefix will be added to both tables as it is assumed you are using it to get address of a secondary contact.
in CRM_Report_Form at line 4810
addFinancialTrxnFromClause()
Add Financial Transaction into From Table if required.
in CRM_Report_Form at line 4831
array
getPhoneColumns(array $options = [])
Get phone columns to add to array.
in CRM_Report_Form at line 4858
array
getBasicContactFields()
deprecated
deprecated
Get a standard set of contact fields.
in CRM_Report_Form at line 4935
array
getBasicContactFilters(array $defaults = [])
Get a standard set of contact filters.
in CRM_Report_Form at line 5009
add2group(int $groupID)
Add contact to group.
in CRM_Report_Form at line 5041
setEntityRefDefaults(array $field, string $table)
Apply common settings to entityRef fields.
in CRM_Report_Form at line 5065
protected mixed
addLinkToRow(array $row, string $baseUrl, string $linkText, string $value, string $fieldName, string $tablePrefix, string $fieldLabel)
Add link fields to the row.
Function adds the _link & _hover fields to the row.
in CRM_Report_Form at line 5083
string
getResultsLabel()
Get label for show results buttons.
in CRM_Report_Form at line 5102
protected
setOutputMode()
Determine the output mode from the url or input.
Output could be - pdf : Render as pdf - csv : Render as csv - print : Render in print format - save : save the report and display the new report - copy : save the report as a new instance and display that. - group : go to the add to group screen.
Potentially chart variations could also be included but the complexity is that we might print a bar chart as a pdf.
in CRM_Report_Form at line 5125
alterSectionHeaderForDateTime($tempTable, $columnName)
CRM-17793 - Alter DateTime section header to group by date from the datetime field.
in CRM_Report_Form at line 5143
array
getSelectColumns()
Get an array of the columns that have been selected for display.
in CRM_Report_Form at line 5165
selectivelyAddLocationTablesJoinsToFilterQuery()
Add location tables to the query if they are used for filtering.
This is for when we are running the query separately for filtering and retrieving display fields.
in CRM_Report_Form at line 5196
setFromBase(string $baseTable, string $field = 'id', null $tableAlias = NULL)
Set the base table for the FROM clause.
Sets up the from clause, allowing for the possibility it might be a temp table pre-filtered by groups if a group filter is in use.
in CRM_Report_Form at line 5214
joinGroupTempTable(string $baseTable, string $field, string $tableAlias)
Join the temp table contacting contacts who are members of the filtered groups.
If we are using an IN filter we use an inner join, otherwise a left join.
in CRM_Report_Form at line 5240
getLabels(string $options, string $baoName, string $fieldName)
Get all labels for fields that are used in a group concat.
in CRM_Report_Form at line 5264
protected array
addStatisticsToSelect(array $field, string $tableName, string $fieldName, array $select)
Add statistics columns.
If a group by is in play then add columns for the statistics fields.
This would lead to a new field in the $row such as $fieldName_sum and a new, matching column header field.
in CRM_Report_Form at line 5314
protected array
addBasicFieldToSelect(string $tableName, string $fieldName, array $field, string $select)
Add a basic field to the select clause.
in CRM_Report_Form at line 5332
protected string
setTableAlias(array $table, string $tableName)
Set table alias.
in CRM_Report_Form at line 5370
protected array
getColumns(string $type, array $options = [])
Function to add columns to reports.
This is ported from extended reports, which also adds join filters to the options.
in CRM_Report_Form at line 5397
protected array
getContactColumns(array $options = [])
Get columns for contact table.
in CRM_Report_Form at line 5616
protected array
getAddressColumns(array $options = [])
Get address columns to add to array.
in CRM_Report_Form at line 5812
protected array
buildColumns(array $specs, string $tableName, string $daoName = NULL, string $tableAlias = NULL, array $defaults = [], array $options = [])
Build the columns.
The normal report class needs you to remember to do a few things that are often erratic
1) use a unique key for any field that might not be unique (e.g. start date, label) - this class will prepend an alias to the key & set the 'name' if you don't set it yourself. You can suppress the alias with 'no_field_disambiguation' if transitioning existing reports. This means any saved filters / fields on saved report instances. This will mean that matching names from different tables may be ambigious, but it will smooth any code transition. - note that it assumes the value being passed in is the actual table field name
2) set the field & set it to no display if you don't want the field but you might want to use the field in other contexts - the code looks up the fields array for data - so it both defines the field spec & the fields you want to show
3) this function also sets the 'metadata' array - the extended report class now uses this in place of the fields array to reduce the issues caused when metadata is needed but 'fields' are not defined. Code in the core classes can start to move towards that.
in CRM_Report_Form at line 5857
protected
storeGroupByArray()
Store group bys into array - so we can check elsewhere what is grouped.
in CRM_Report_Form at line 5907
protected array
getDefaultsFromOptions($options)
in CRM_Report_Form at line 5929
protected string
getSelectClauseWithGroupConcatIfNotGroupedBy(string $tableName, string $fieldName, string $field)
Get the select clause for a field, wrapping in GROUP_CONCAT if appropriate.
Full group by mode dictates that a field must either be in the group by function or wrapped in a aggregate function. Here we wrap the field in GROUP_CONCAT if it is not in the group concat.
in CRM_Report_Form at line 5955
protected string
generateFilterClause(array $field, string $fieldName)
Generate clause for the selected filter.