*
* Generated from xml/schema/CRM/ACL/ACL.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:71681f363debd53627c4c98a9032b0f6)
+ * (GenCodeChecksum:810da5f19a7ead8c949065156674c087)
*/
/**
/**
* Unique table ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this ACL entry Allow (0) or Deny (1) ?
*
- * @var boolean
+ * @var bool
*/
public $deny;
/**
* ID of the object possessing this ACL
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* The ID of the object controlled by this ACL entry
*
- * @var int unsigned
+ * @var int
*/
public $object_id;
/**
* ID of the ACL or ACL group being granted/revoked
*
- * @var int unsigned
+ * @var int
*/
public $acl_id;
/**
* Is this property active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
],
'pseudoconstant' => [
'callback' => 'CRM_ACL_BAO_ACL::operation',
- ]
+ ],
],
'object_table' => [
'name' => 'object_table',
*
* Generated from xml/schema/CRM/ACL/Cache.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:7551610e08f73f20ef3e5b9ef6782f80)
+ * (GenCodeChecksum:f993d89f3a44999eed1b4c46b714b736)
*/
/**
/**
* Unique table ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign Key to Contact
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Foreign Key to ACL
*
- * @var int unsigned
+ * @var int
*/
public $acl_id;
*
* Generated from xml/schema/CRM/ACL/EntityRole.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c53e5bc404fee6d3f005fbaf15abdb4e)
+ * (GenCodeChecksum:65952cc85e04acddbaef65cfcf7fc541)
*/
/**
/**
* Unique table ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign Key to ACL Role (which is an option value pair and hence an implicit FK)
*
- * @var int unsigned
+ * @var int
*/
public $acl_role_id;
/**
* ID of the group/contact object being joined
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* Is this property active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
public function addAttachment(&$attachments, $contacts) {
// Check preferences setting
if (Civi::settings()->get('activity_assignee_notification_ics')) {
- $config = &CRM_Core_Config::singleton();
- $this->icsfile = tempnam($config->customFileUploadDir, 'ics');
+ $this->icsfile = tempnam(CRM_Core_Config::singleton()->customFileUploadDir, 'ics');
if ($this->icsfile !== FALSE) {
rename($this->icsfile, $this->icsfile . '.ics');
$this->icsfile .= '.ics';
*
* Generated from xml/schema/CRM/Activity/Activity.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ffa557668a214e3683b1692238ad74ae)
+ * (GenCodeChecksum:808e801e250ba56b83f69fe90d8b52c2)
*/
/**
/**
* Unique Other Activity ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Artificial FK to original transaction (e.g. contribution) IF it is not an Activity. Table can be figured out through activity_type_id, and further through component registry.
*
- * @var int unsigned
+ * @var int
*/
public $source_record_id;
/**
* FK to civicrm_option_value.id, that has to be valid, registered activity type.
*
- * @var int unsigned
+ * @var int
*/
public $activity_type_id;
/**
* Planned or actual duration of activity expressed in minutes. Conglomerate of former duration_hours and duration_minutes.
*
- * @var int unsigned
+ * @var int
*/
public $duration;
/**
* Phone ID of the number called (optional - used if an existing phone number is selected).
*
- * @var int unsigned
+ * @var int
*/
public $phone_id;
/**
* ID of the status this activity is currently in. Foreign key to civicrm_option_value.
*
- * @var int unsigned
+ * @var int
*/
public $status_id;
/**
* ID of the priority given to this activity. Foreign key to civicrm_option_value.
*
- * @var int unsigned
+ * @var int
*/
public $priority_id;
/**
* Parent meeting ID (if this is a follow-up item). This is not currently implemented
*
- * @var int unsigned
+ * @var int
*/
public $parent_id;
/**
- * @var boolean
+ * @var bool
*/
public $is_test;
/**
* Activity Medium, Implicit FK to civicrm_option_value where option_group = encounter_medium.
*
- * @var int unsigned
+ * @var int
*/
public $medium_id;
/**
- * @var boolean
+ * @var bool
*/
public $is_auto;
/**
* FK to Relationship ID
*
- * @var int unsigned
+ * @var int
*/
public $relationship_id;
/**
- * @var boolean
+ * @var bool
*/
public $is_current_revision;
/**
* Activity ID of the first activity record in versioning chain.
*
- * @var int unsigned
+ * @var int
*/
public $original_id;
public $result;
/**
- * @var boolean
+ * @var bool
*/
public $is_deleted;
/**
* The campaign for which this activity has been triggered.
*
- * @var int unsigned
+ * @var int
*/
public $campaign_id;
/**
* Assign a specific level of engagement to this activity. Used for tracking constituents in ladder of engagement.
*
- * @var int unsigned
+ * @var int
*/
public $engagement_level;
/**
* Activity marked as favorite.
*
- * @var boolean
+ * @var bool
*/
public $is_star;
'pseudoconstant' => [
'optionGroupName' => 'activity_type',
'optionEditPath' => 'civicrm/admin/options/activity_type',
- ]
+ ],
],
'activity_subject' => [
'name' => 'subject',
'pseudoconstant' => [
'optionGroupName' => 'activity_status',
'optionEditPath' => 'civicrm/admin/options/activity_status',
- ]
+ ],
],
'priority_id' => [
'name' => 'priority_id',
'pseudoconstant' => [
'optionGroupName' => 'priority',
'optionEditPath' => 'civicrm/admin/options/priority',
- ]
+ ],
],
'parent_id' => [
'name' => 'parent_id',
'pseudoconstant' => [
'optionGroupName' => 'encounter_medium',
'optionEditPath' => 'civicrm/admin/options/encounter_medium',
- ]
+ ],
],
'is_auto' => [
'name' => 'is_auto',
'table' => 'civicrm_campaign',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'activity_engagement_level' => [
'name' => 'engagement_level',
'pseudoconstant' => [
'optionGroupName' => 'engagement_index',
'optionEditPath' => 'civicrm/admin/options/engagement_index',
- ]
+ ],
],
'weight' => [
'name' => 'weight',
*
* Generated from xml/schema/CRM/Activity/ActivityContact.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ff5291c3d7067182669807aa125fef72)
+ * (GenCodeChecksum:bb5726fd8dc1e07e19a08982d502a9f1)
*/
/**
/**
* Activity contact id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign key to the activity for this record.
*
- * @var int unsigned
+ * @var int
*/
public $activity_id;
/**
* Foreign key to the contact for this record.
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Nature of this contact's role in the activity: 1 assignee, 2 creator, 3 focus or target.
*
- * @var int unsigned
+ * @var int
*/
public $record_type_id;
'pseudoconstant' => [
'optionGroupName' => 'activity_contacts',
'optionEditPath' => 'civicrm/admin/options/activity_contacts',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
/**
* Survey activity.
*
- * @var boolean
+ * @var bool
*/
protected $_isSurveyActivity;
* Note: This is a class property so that child classes can turn off this
* behavior (e.g. in CRM_Case_Form_Activity)
*
- * @var boolean
+ * @var bool
*
*/
return $defaults;
}
+ /**
+ * Build Quick form.
+ *
+ * @throws \CRM_Core_Exception
+ * @throws \CiviCRM_API3_Exception
+ */
public function buildQuickForm() {
if ($this->_action & (CRM_Core_Action::DELETE | CRM_Core_Action::RENEW)) {
//enable form element (ActivityLinks sets this true)
*
*
* @param array $params
-
+ *
* @return array|null
* @throws \CiviCRM_API3_Exception
*/
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
* Are we operating in "single mode", i.e. deleting one
* specific Activity?
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
* Are we operating in "single mode", i.e. sending email to one
* specific contact?
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
* Are we operating in "single mode", i.e. sending sms to one
* specific contact?
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
/**
* Is this field required
- * @var boolean
+ * @var bool
*/
public $_required;
/**
* Whether the file has a column header or not.
*
- * @var boolean
+ * @var bool
*/
protected $_haveColumnHeader;
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
if (empty($params['id'])) {
// Set name on created but don't update on update as the machine name is not exposed.
- $params['name_b_a'] = CRM_Utils_String::munge($params['label_b_a']);
- $params['name_a_b'] = CRM_Utils_String::munge($params['label_a_b']);
+ $params['name_b_a'] = $params['label_b_a'];
+ $params['name_a_b'] = $params['label_a_b'];
}
$result = civicrm_api3('RelationshipType', 'create', $params);
*/
protected function getSettingsMetaData() {
if (empty($this->settingsMetadata)) {
- $allSettingMetaData = civicrm_api3('setting', 'getfields', []);
- $this->settingsMetadata = array_intersect_key($allSettingMetaData['values'], $this->_settings);
+ $this->settingsMetadata = \Civi\Core\SettingsMetadata::getMetadata(['name' => array_keys($this->_settings)], NULL, TRUE);
// This array_merge re-orders to the key order of $this->_settings.
$this->settingsMetadata = array_merge($this->_settings, $this->settingsMetadata);
}
$quickFormType = $this->getQuickFormType($props);
if (isset($quickFormType)) {
$options = CRM_Utils_Array::value('options', $props);
- if (isset($props['pseudoconstant'])) {
- $options = civicrm_api3('Setting', 'getoptions', [
- 'field' => $setting,
- ])['values'];
+ if ($options) {
if ($props['html_type'] === 'Select' && isset($props['is_required']) && $props['is_required'] === FALSE && !isset($options[''])) {
// If the spec specifies the field is not required add a null option.
// Why not if empty($props['is_required']) - basically this has been added to the spec & might not be set to TRUE
/**
* A boolean determining if you can add options to this group in the GUI.
*
- * @var boolean
+ * @var bool
*/
public static $_isLocked = FALSE;
while ($dao->fetch()) {
$totals[$dao->batch_id] = (array) $dao;
}
- $dao->free();
}
return $totals;
}
*
* Generated from xml/schema/CRM/Batch/Batch.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:5e14654e2df1b813931043edb9d0f828)
+ * (GenCodeChecksum:3e98e0127d48dfc44b2e6db904cd556f)
*/
/**
/**
* Unique Address ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $modified_id;
/**
* FK to Saved Search ID
*
- * @var int unsigned
+ * @var int
*/
public $saved_search_id;
/**
* fk to Batch Status options in civicrm_option_values
*
- * @var int unsigned
+ * @var int
*/
public $status_id;
/**
* fk to Batch Type options in civicrm_option_values
*
- * @var int unsigned
+ * @var int
*/
public $type_id;
/**
* fk to Batch mode options in civicrm_option_values
*
- * @var int unsigned
+ * @var int
*/
public $mode_id;
/**
* Number of items in a batch.
*
- * @var int unsigned
+ * @var int
*/
public $item_count;
/**
* fk to Payment Instrument options in civicrm_option_values
*
- * @var int unsigned
+ * @var int
*/
public $payment_instrument_id;
'pseudoconstant' => [
'optionGroupName' => 'batch_status',
'optionEditPath' => 'civicrm/admin/options/batch_status',
- ]
+ ],
],
'type_id' => [
'name' => 'type_id',
'pseudoconstant' => [
'optionGroupName' => 'batch_type',
'optionEditPath' => 'civicrm/admin/options/batch_type',
- ]
+ ],
],
'mode_id' => [
'name' => 'mode_id',
'pseudoconstant' => [
'optionGroupName' => 'batch_mode',
'optionEditPath' => 'civicrm/admin/options/batch_mode',
- ]
+ ],
],
'total' => [
'name' => 'total',
'description' => ts('Total amount for this batch.'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_batch.total',
'table_name' => 'civicrm_batch',
'pseudoconstant' => [
'optionGroupName' => 'payment_instrument',
'optionEditPath' => 'civicrm/admin/options/payment_instrument',
- ]
+ ],
],
'exported_date' => [
'name' => 'exported_date',
*
* Generated from xml/schema/CRM/Batch/EntityBatch.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ad54978e70be59ea54b414bbb3131f2f)
+ * (GenCodeChecksum:12e2c6e8e3c0890f0531819aebcfc543)
*/
/**
/**
* primary key
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to entity table specified in entity_table column.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* FK to civicrm_batch
*
- * @var int unsigned
+ * @var int
*/
public $batch_id;
'table' => 'civicrm_batch',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
return NULL;
}
- if (!(CRM_Utils_Array::value('id', $params))) {
+ if (empty($params['id'])) {
- if (!(CRM_Utils_Array::value('created_id', $params))) {
+ if (empty($params['created_id'])) {
$session = CRM_Core_Session::singleton();
$params['created_id'] = $session->get('userID');
}
- if (!(CRM_Utils_Array::value('created_date', $params))) {
+ if (empty($params['created_date'])) {
$params['created_date'] = date('YmdHis');
}
- if (!(CRM_Utils_Array::value('name', $params))) {
+ if (empty($params['name'])) {
$params['name'] = CRM_Utils_String::titleToVar($params['title'], 64);
}
*
* Generated from xml/schema/CRM/Campaign/Campaign.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c6ffa4ea926f3a52afc754bf44ef8586)
+ * (GenCodeChecksum:5f32f92aafb04b54f15a47d07a2fe105)
*/
/**
/**
* Unique Campaign ID.
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Campaign Type ID.Implicit FK to civicrm_option_value where option_group = campaign_type
*
- * @var int unsigned
+ * @var int
*/
public $campaign_type_id;
/**
* Campaign status ID.Implicit FK to civicrm_option_value where option_group = campaign_status
*
- * @var int unsigned
+ * @var int
*/
public $status_id;
/**
* Optional parent id for this Campaign.
*
- * @var int unsigned
+ * @var int
*/
public $parent_id;
/**
* Is this Campaign enabled or disabled/cancelled?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* FK to civicrm_contact, who created this Campaign.
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
/**
* FK to civicrm_contact, who recently edited this Campaign.
*
- * @var int unsigned
+ * @var int
*/
public $last_modified_id;
'pseudoconstant' => [
'optionGroupName' => 'campaign_type',
'optionEditPath' => 'civicrm/admin/options/campaign_type',
- ]
+ ],
],
'status_id' => [
'name' => 'status_id',
'pseudoconstant' => [
'optionGroupName' => 'campaign_status',
'optionEditPath' => 'civicrm/admin/options/campaign_status',
- ]
+ ],
],
'external_identifier' => [
'name' => 'external_identifier',
'description' => ts('The target revenue for this campaign.'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_campaign.goal_revenue',
'table_name' => 'civicrm_campaign',
*
* Generated from xml/schema/CRM/Campaign/CampaignGroup.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:9c9ee0c8ea79ddd0f680e8050693e5db)
+ * (GenCodeChecksum:c399857d6182b7d1dcc2f037518ba8c3)
*/
/**
/**
* Campaign Group id.
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign key to the activity Campaign.
*
- * @var int unsigned
+ * @var int
*/
public $campaign_id;
/**
* Entity id of referenced table.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
'table' => 'civicrm_campaign',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'group_type' => [
'name' => 'group_type',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getCampaignGroupTypes',
- ]
+ ],
],
'entity_table' => [
'name' => 'entity_table',
*
* Generated from xml/schema/CRM/Campaign/Survey.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:bf281972fa5b1efaa8801eb9a47e42ae)
+ * (GenCodeChecksum:ad39991f1177492db1fd47cbaacf676a)
*/
/**
/**
* Survey id.
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign key to the Campaign.
*
- * @var int unsigned
+ * @var int
*/
public $campaign_id;
/**
* Implicit FK to civicrm_option_value where option_group = activity_type
*
- * @var int unsigned
+ * @var int
*/
public $activity_type_id;
/**
* Number of days for recurrence of release.
*
- * @var int unsigned
+ * @var int
*/
public $release_frequency;
/**
* Maximum number of contacts to allow for survey.
*
- * @var int unsigned
+ * @var int
*/
public $max_number_of_contacts;
/**
* Default number of contacts to allow for survey.
*
- * @var int unsigned
+ * @var int
*/
public $default_number_of_contacts;
/**
* Is this survey enabled or disabled/cancelled?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this default survey?
*
- * @var boolean
+ * @var bool
*/
public $is_default;
/**
* FK to civicrm_contact, who created this Survey.
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
/**
* FK to civicrm_contact, who recently edited this Survey.
*
- * @var int unsigned
+ * @var int
*/
public $last_modified_id;
/**
* Used to store option group id.
*
- * @var int unsigned
+ * @var int
*/
public $result_id;
/**
* Bypass the email verification.
*
- * @var boolean
+ * @var bool
*/
public $bypass_confirm;
/**
* Can people share the petition through social media?
*
- * @var boolean
+ * @var bool
*/
public $is_share;
'table' => 'civicrm_campaign',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'activity_type_id' => [
'name' => 'activity_type_id',
'pseudoconstant' => [
'optionGroupName' => 'activity_type',
'optionEditPath' => 'civicrm/admin/options/activity_type',
- ]
+ ],
],
'recontact_interval' => [
'name' => 'recontact_interval',
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
*
* Generated from xml/schema/CRM/Case/Case.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a9960d56bc697d6cbc5347f9bc6a78bc)
+ * (GenCodeChecksum:f7d3f0df9ce94aec00f5eb0e20cedd1e)
*/
/**
/**
* Unique Case ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to civicrm_case_type.id
*
- * @var int unsigned
+ * @var int
*/
public $case_type_id;
/**
* Id of case status.
*
- * @var int unsigned
+ * @var int
*/
public $status_id;
/**
- * @var boolean
+ * @var bool
*/
public $is_deleted;
'table' => 'civicrm_case_type',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'case_subject' => [
'name' => 'subject',
'pseudoconstant' => [
'optionGroupName' => 'case_status',
'optionEditPath' => 'civicrm/admin/options/case_status',
- ]
+ ],
],
'case_deleted' => [
'name' => 'is_deleted',
*
* Generated from xml/schema/CRM/Case/CaseActivity.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:fd04fd5686de74febc915b1a035a3fb5)
+ * (GenCodeChecksum:cb7a73ba739c93a482d18ef28ed0c589)
*/
/**
/**
* Unique case-activity association id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Case ID of case-activity association.
*
- * @var int unsigned
+ * @var int
*/
public $case_id;
/**
* Activity ID of case-activity association.
*
- * @var int unsigned
+ * @var int
*/
public $activity_id;
*
* Generated from xml/schema/CRM/Case/CaseContact.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ff0a0c29f836177de2ac856be6c5cb15)
+ * (GenCodeChecksum:84dae97091e4a1612c67274f5cb10531)
*/
/**
/**
* Unique case-contact association id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Case ID of case-contact association.
*
- * @var int unsigned
+ * @var int
*/
public $case_id;
/**
* Contact ID of contact record given case belongs to.
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
*
* Generated from xml/schema/CRM/Case/CaseType.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:9ebd07607858eaf185b2be32744267bb)
+ * (GenCodeChecksum:317907ffe519c3f3eab8af9d8e9e1f7f)
*/
/**
/**
* Autoincremented type id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this entry active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this case type a predefined system type?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
}
// store the submitted values in an array
- $params = $this->controller->exportValues($this->_name);
+ // Explanation for why we only check the is_unittest element: Prior to adding that check, there was no check and so any $params passed in would have been overwritten. Just in case somebody is passing in some non-null params and that broken code would have inadvertently been working, we can maintain backwards compatibility by only checking for the is_unittest parameter, and so that broken code will still work. At the same time this allows unit tests to pass in a $params without it getting overwritten. See also PR #2077 for some discussion of when the $params parameter was added as a passed in variable.
+ if (empty($params['is_unittest'])) {
+ $params = $this->controller->exportValues($this->_name);
+ }
//set parent id if its edit mode
if ($parentId = CRM_Utils_Array::value('parent_id', $this->_defaults)) {
public static function beginPostProcess(&$form, &$params) {
$params['id'] = CRM_Utils_Array::value('case_id', $params);
- if ($params['updateLinkedCases'] === '1') {
+ if (CRM_Utils_Array::value('updateLinkedCases', $params) === '1') {
$caseID = CRM_Utils_Array::first($form->_caseId);
$cases = CRM_Case_BAO_Case::getRelatedCases($caseID);
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
/**
* Prefix for the controller
- * @var sting
+ * @var string
*/
protected $_prefix = 'case_';
* Are we operating in "single mode", i.e. deleting one
* specific case?
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we moving case to Trash.
*
- * @var boolean
+ * @var bool
*/
public $_moveToTrash = TRUE;
* Are we operating in "single mode", i.e. deleting one
* specific case?
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
/**
* The default variable defined.
*
- * @var boolean
+ * @var bool
*/
protected $_isRedact;
protected $xml = [];
/**
- * @var array|NULL
+ * @var array|null
*/
protected $hookCache = NULL;
/**
- * @var array|NULL symbolic names of case-types
+ * Symbolic names of case-types.
+ *
+ * @var array|null
*/
protected $allCaseTypes = NULL;
* @return array
* Contact details
*/
- public static function getHierContactDetails($contactId, &$fields) {
+ public static function getHierContactDetails($contactId, $fields) {
$params = array(array('contact_id', '=', $contactId, 0, 0));
$options = array();
*/
public static function formatProfileContactParams(
&$params,
- &$fields,
+ $fields,
$contactID = NULL,
$ufGroupId = NULL,
$ctype = NULL,
$inputLF = CRM_Utils_Array::value(2, $input);
$check = self::generateChecksum($contactID, $inputTS, $inputLF);
-
- if (!hash_equals($check, $inputCheck)) {
+ // Joomla_11 - If $inputcheck is null without explicitly casting to a string
+ // you get an error.
+ if (!hash_equals($check, (string) $inputCheck)) {
return FALSE;
}
/**
* Are we in search mode.
*
- * @var boolean
+ * @var bool
*/
public $_search = TRUE;
/**
* Should we skip permission checking.
*
- * @var boolean
+ * @var bool
*/
public $_skipPermission = FALSE;
/**
* Should we skip adding of delete clause.
*
- * @var boolean
+ * @var bool
*/
public $_skipDeleteClause = FALSE;
/**
* Are we in strict mode (use equality over LIKE)
*
- * @var boolean
+ * @var bool
*/
public $_strict = FALSE;
/**
* Should we only search on primary location.
*
- * @var boolean
+ * @var bool
*/
public $_primaryLocation = TRUE;
/**
* Are contact ids part of the query.
*
- * @var boolean
+ * @var bool
*/
public $_includeContactIds = FALSE;
/**
* Should we use the smart group cache.
*
- * @var boolean
+ * @var bool
*/
public $_smartGroupCache = TRUE;
* Should we enable the distinct clause, used if we are including
* more than one group
*
- * @var boolean
+ * @var bool
*/
public $_useDistinct = FALSE;
*/
protected $_rangeCache = [];
/**
- * Set to true when $this->relationship is run to avoid adding twice
- * @var Boolean
+ * Set to true when $this->relationship is run to avoid adding twice.
+ *
+ * @var bool
*/
protected $_relationshipValuesAdded = FALSE;
/**
- * Set to the name of the temp table if one has been created
- * @var String
+ * Set to the name of the temp table if one has been created.
+ *
+ * @var string
*/
public static $_relationshipTempTable = NULL;
if (array_key_exists('civicrm_membership', $this->_whereTables)) {
$component = 'membership';
}
- if (isset($component)) {
- // @todo should be if (isset($component && !$this->_skipPermission)
+ if (isset($component) && !$this->_skipPermission) {
+ // Unit test coverage in api_v3_FinancialTypeACLTest::testGetACLContribution.
CRM_Financial_BAO_FinancialType::buildPermissionedClause($this->_whereClause, $component);
}
$regularGroupIDs[] = trim($id);
}
}
+ $hasNonSmartGroups = count($regularGroupIDs);
$isNotOp = ($op == 'NOT IN' || $op == '!=');
- $statii = [];
- $gcsValues = $this->getWhereValues('group_contact_status', $grouping);
- if ($gcsValues &&
- is_array($gcsValues[2])
- ) {
- foreach ($gcsValues[2] as $k => $v) {
- if ($v) {
- $statii[] = "'" . CRM_Utils_Type::escape($k, 'String') . "'";
- }
- }
- }
- else {
- $statii[] = "'Added'";
- }
+ $statusJoinClause = $this->getGroupStatusClause($grouping);
$groupClause = [];
- if (count($regularGroupIDs) || empty($value)) {
+ if ($hasNonSmartGroups || empty($value)) {
// include child groups IDs if any
$childGroupIds = (array) CRM_Contact_BAO_Group::getChildGroupIds($regularGroupIDs);
foreach ($childGroupIds as $key => $id) {
}
$groupClause[] = "( {$clause} )";
- if ($statii) {
- $joinClause[] = "{$gcTable}.status IN (" . implode(', ', $statii) . ")";
+ if ($statusJoinClause) {
+ $joinClause[] = "{$gcTable}.$statusJoinClause";
}
$this->_tables[$gcTable] = $this->_whereTables[$gcTable] = " LEFT JOIN civicrm_group_contact {$gcTable} ON (" . implode(' AND ', $joinClause) . ")";
}
list($qillop, $qillVal) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contact_DAO_Group', 'id', $value, $op);
$this->_qill[$grouping][] = ts("Group(s) %1 %2", [1 => $qillop, 2 => $qillVal]);
if (strpos($op, 'NULL') === FALSE) {
- $this->_qill[$grouping][] = ts("Group Status %1", [1 => implode(' ' . ts('or') . ' ', $statii)]);
+ $this->_qill[$grouping][] = ts("Group Status %1", [1 => implode(' ' . ts('or') . ' ', $this->getSelectedGroupStatuses($grouping))]);
}
}
];
}
+ /**
+ * Get the clause for group status.
+ *
+ * @param int $grouping
+ *
+ * @return string
+ */
+ protected function getGroupStatusClause($grouping) {
+ $statuses = $this->getSelectedGroupStatuses($grouping);
+ return "status IN (" . implode(', ', $statuses) . ")";
+ }
+
+ /**
+ * Get an array of the statuses that have been selected.
+ *
+ * @param string $grouping
+ *
+ * @return array
+ */
+ protected function getSelectedGroupStatuses($grouping) {
+ $statuses = [];
+ $gcsValues = $this->getWhereValues('group_contact_status', $grouping);
+ if ($gcsValues &&
+ is_array($gcsValues[2])
+ ) {
+ foreach ($gcsValues[2] as $k => $v) {
+ if ($v) {
+ $statuses[] = "'" . CRM_Utils_Type::escape($k, 'String') . "'";
+ }
+ }
+ }
+ else {
+ $statuses[] = "'Added'";
+ }
+ return $statuses;
+ }
+
}
*/
public static function getdefaults() {
return array(
- 'is_active' => 0,
+ 'is_active' => 1,
'is_permission_a_b' => self::NONE,
'is_permission_b_a' => self::NONE,
'description' => '',
*
* Generated from xml/schema/CRM/Contact/ACLContactCache.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ab40fa26e037ef4897359d3c288d42b8)
+ * (GenCodeChecksum:8bc987e1284d464f9b475686d9dc32a2)
*/
/**
/**
* primary key
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to civicrm_contact (could be null for anon user)
*
- * @var int unsigned
+ * @var int
*/
public $user_id;
/**
* FK to civicrm_contact
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
],
'pseudoconstant' => [
'callback' => 'CRM_ACL_BAO_ACL::operation',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Contact/Contact.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:653579cbfa509d67ae7a39c78dd27bf2)
+ * (GenCodeChecksum:e2181ea97a3e309b7e74b636757b6aac)
*/
/**
/**
* Unique Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
public $contact_sub_type;
/**
- * @var boolean
+ * @var bool
*/
public $do_not_email;
/**
- * @var boolean
+ * @var bool
*/
public $do_not_phone;
/**
- * @var boolean
+ * @var bool
*/
public $do_not_mail;
/**
- * @var boolean
+ * @var bool
*/
public $do_not_sms;
/**
- * @var boolean
+ * @var bool
*/
public $do_not_trade;
/**
* Has the contact opted out from receiving all bulk email from the organization or site domain?
*
- * @var boolean
+ * @var bool
*/
public $is_opt_out;
/**
* Prefix or Title for name (Ms, Mr...). FK to prefix ID
*
- * @var int unsigned
+ * @var int
*/
public $prefix_id;
/**
* Suffix for name (Jr, Sr...). FK to suffix ID
*
- * @var int unsigned
+ * @var int
*/
public $suffix_id;
/**
* Communication style (e.g. formal vs. familiar) to use with this contact. FK to communication styles in civicrm_option_value.
*
- * @var int unsigned
+ * @var int
*/
public $communication_style_id;
/**
* FK to civicrm_option_value.id, that has to be valid registered Email Greeting.
*
- * @var int unsigned
+ * @var int
*/
public $email_greeting_id;
/**
* FK to civicrm_option_value.id, that has to be valid registered Postal Greeting.
*
- * @var int unsigned
+ * @var int
*/
public $postal_greeting_id;
/**
* FK to civicrm_option_value.id, that has to be valid registered Addressee.
*
- * @var int unsigned
+ * @var int
*/
public $addressee_id;
/**
* FK to gender ID
*
- * @var int unsigned
+ * @var int
*/
public $gender_id;
public $birth_date;
/**
- * @var boolean
+ * @var bool
*/
public $is_deceased;
/**
* Optional FK to Primary Contact for this household.
*
- * @var int unsigned
+ * @var int
*/
public $primary_contact_id;
/**
* OPTIONAL FK to civicrm_contact record.
*
- * @var int unsigned
+ * @var int
*/
public $employer_id;
/**
- * @var boolean
+ * @var bool
*/
public $is_deleted;
'keyColumn' => 'name',
'labelColumn' => 'label',
'condition' => 'parent_id IS NULL',
- ]
+ ],
],
'contact_sub_type' => [
'name' => 'contact_sub_type',
'keyColumn' => 'name',
'labelColumn' => 'label',
'condition' => 'parent_id IS NOT NULL',
- ]
+ ],
],
'do_not_email' => [
'name' => 'do_not_email',
'name' => 'legal_identifier',
'type' => CRM_Utils_Type::T_STRING,
'title' => ts('Legal Identifier'),
- 'description' => ts('May be used for SSN, EIN/TIN, Household ID (census) or other applicable unique legal/government ID.
- '),
+ 'description' => ts('May be used for SSN, EIN/TIN, Household ID (census) or other applicable unique legal/government ID.'),
'maxlength' => 32,
'size' => CRM_Utils_Type::MEDIUM,
'import' => TRUE,
'pseudoconstant' => [
'optionGroupName' => 'preferred_communication_method',
'optionEditPath' => 'civicrm/admin/options/preferred_communication_method',
- ]
+ ],
],
'preferred_language' => [
'name' => 'preferred_language',
'optionGroupName' => 'languages',
'keyColumn' => 'name',
'optionEditPath' => 'civicrm/admin/options/languages',
- ]
+ ],
],
'preferred_mail_format' => [
'name' => 'preferred_mail_format',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::pmf',
- ]
+ ],
],
'hash' => [
'name' => 'hash',
'maxlength' => 32,
'size' => CRM_Utils_Type::MEDIUM,
'where' => 'civicrm_contact.api_key',
+ 'protected' => 'true',
'table_name' => 'civicrm_contact',
'entity' => 'Contact',
'bao' => 'CRM_Contact_BAO_Contact',
'pseudoconstant' => [
'optionGroupName' => 'individual_prefix',
'optionEditPath' => 'civicrm/admin/options/individual_prefix',
- ]
+ ],
],
'suffix_id' => [
'name' => 'suffix_id',
'pseudoconstant' => [
'optionGroupName' => 'individual_suffix',
'optionEditPath' => 'civicrm/admin/options/individual_suffix',
- ]
+ ],
],
'formal_title' => [
'name' => 'formal_title',
'pseudoconstant' => [
'optionGroupName' => 'communication_style',
'optionEditPath' => 'civicrm/admin/options/communication_style',
- ]
+ ],
],
'email_greeting_id' => [
'name' => 'email_greeting_id',
'pseudoconstant' => [
'optionGroupName' => 'email_greeting',
'optionEditPath' => 'civicrm/admin/options/email_greeting',
- ]
+ ],
],
'email_greeting_custom' => [
'name' => 'email_greeting_custom',
'pseudoconstant' => [
'optionGroupName' => 'postal_greeting',
'optionEditPath' => 'civicrm/admin/options/postal_greeting',
- ]
+ ],
],
'postal_greeting_custom' => [
'name' => 'postal_greeting_custom',
'pseudoconstant' => [
'optionGroupName' => 'addressee',
'optionEditPath' => 'civicrm/admin/options/addressee',
- ]
+ ],
],
'addressee_custom' => [
'name' => 'addressee_custom',
'pseudoconstant' => [
'optionGroupName' => 'gender',
'optionEditPath' => 'civicrm/admin/options/gender',
- ]
+ ],
],
'birth_date' => [
'name' => 'birth_date',
*
* Generated from xml/schema/CRM/Contact/ContactType.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ab123a55d492c003df354c32e8b9863c)
+ * (GenCodeChecksum:adba53a6a4d64ba498d7e36b03c0f968)
*/
/**
/**
* Contact Type ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Optional FK to parent contact type.
*
- * @var int unsigned
+ * @var int
*/
public $parent_id;
/**
* Is this entry active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this contact type a predefined system type
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
'keyColumn' => 'id',
'labelColumn' => 'label',
'condition' => 'parent_id IS NULL',
- ]
+ ],
],
'is_active' => [
'name' => 'is_active',
*
* Generated from xml/schema/CRM/Contact/DashboardContact.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f9be53bdf3d5151edf77e9b9f9004571)
+ * (GenCodeChecksum:2adb5645722410e9059da0a345a0a30b)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Dashboard ID
*
- * @var int unsigned
+ * @var int
*/
public $dashboard_id;
/**
* Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* column no for this widget
*
- * @var boolean
+ * @var bool
*/
public $column_no;
/**
* Is this widget active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
*
* Generated from xml/schema/CRM/Contact/Group.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:21b3e21494b0831994f860083cd82e24)
+ * (GenCodeChecksum:28c32e7038a2b7aa7ca2c45117660974)
*/
/**
/**
* Group ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to saved search table.
*
- * @var int unsigned
+ * @var int
*/
public $saved_search_id;
/**
* Is this entry active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this group hidden?
*
- * @var boolean
+ * @var bool
*/
public $is_hidden;
/**
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* FK to contact table.
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
/**
* FK to contact table.
*
- * @var int unsigned
+ * @var int
*/
public $modified_id;
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::groupVisibility',
- ]
+ ],
],
'where_clause' => [
'name' => 'where_clause',
'pseudoconstant' => [
'optionGroupName' => 'group_type',
'optionEditPath' => 'civicrm/admin/options/group_type',
- ]
+ ],
],
'cache_date' => [
'name' => 'cache_date',
'serialize' => self::SERIALIZE_COMMA,
'pseudoconstant' => [
'callback' => 'CRM_Core_PseudoConstant::allGroup',
- ]
+ ],
],
'children' => [
'name' => 'children',
*
* Generated from xml/schema/CRM/Contact/GroupContact.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:1d229cf09854f6b9a9991a0c0bd86c87)
+ * (GenCodeChecksum:abb2a96c7fd72f93619b605fbb11b4b5)
*/
/**
/**
* primary key
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to civicrm_group
*
- * @var int unsigned
+ * @var int
*/
public $group_id;
/**
* FK to civicrm_contact
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Optional location to associate with this membership
*
- * @var int unsigned
+ * @var int
*/
public $location_id;
/**
* Optional email to associate with this membership
*
- * @var int unsigned
+ * @var int
*/
public $email_id;
'table' => 'civicrm_group',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'contact_id' => [
'name' => 'contact_id',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::groupContactStatus',
- ]
+ ],
],
'location_id' => [
'name' => 'location_id',
*
* Generated from xml/schema/CRM/Contact/GroupContactCache.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:98cff858204d34551eec0b9bee6e24af)
+ * (GenCodeChecksum:217f20fad2d47f50e3a9c43b62df2c17)
*/
/**
/**
* primary key
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to civicrm_group
*
- * @var int unsigned
+ * @var int
*/
public $group_id;
/**
* FK to civicrm_contact
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
'table' => 'civicrm_group',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'contact_id' => [
'name' => 'contact_id',
*
* Generated from xml/schema/CRM/Contact/GroupNesting.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:dcf20d8789668c4542bc0c5d5faa1e8e)
+ * (GenCodeChecksum:2559ff6c3da8f02b147577a6d4e26004)
*/
/**
/**
* Relationship ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* ID of the child group
*
- * @var int unsigned
+ * @var int
*/
public $child_group_id;
/**
* ID of the parent group
*
- * @var int unsigned
+ * @var int
*/
public $parent_group_id;
*
* Generated from xml/schema/CRM/Contact/GroupOrganization.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4234ea5a60e2a053e2de768a10cb1488)
+ * (GenCodeChecksum:00717d9edb0719d380b5fd7c3e91bc74)
*/
/**
/**
* Relationship ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* ID of the group
*
- * @var int unsigned
+ * @var int
*/
public $group_id;
/**
* ID of the Organization Contact
*
- * @var int unsigned
+ * @var int
*/
public $organization_id;
'table' => 'civicrm_group',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'organization_id' => [
'name' => 'organization_id',
*
* Generated from xml/schema/CRM/Contact/Relationship.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0722d901c4eac4e462bc7de9887e605a)
+ * (GenCodeChecksum:ebfcea88ae4bd09a0821a942ecdfa4db)
*/
/**
/**
* Relationship ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* id of the first contact
*
- * @var int unsigned
+ * @var int
*/
public $contact_id_a;
/**
* id of the second contact
*
- * @var int unsigned
+ * @var int
*/
public $contact_id_b;
/**
* id of the relationship
*
- * @var int unsigned
+ * @var int
*/
public $relationship_type_id;
/**
* is the relationship active ?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Permission that Contact A has to view/update Contact B
*
- * @var int unsigned
+ * @var int
*/
public $is_permission_a_b;
/**
* Permission that Contact B has to view/update Contact A
*
- * @var int unsigned
+ * @var int
*/
public $is_permission_b_a;
/**
* FK to civicrm_case
*
- * @var int unsigned
+ * @var int
*/
public $case_id;
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getPermissionedRelationshipOptions',
- ]
+ ],
],
'is_permission_b_a' => [
'name' => 'is_permission_b_a',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getPermissionedRelationshipOptions',
- ]
+ ],
],
'case_id' => [
'name' => 'case_id',
*
* Generated from xml/schema/CRM/Contact/RelationshipType.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:9fa07d6d85caa27a637694324ea5b740)
+ * (GenCodeChecksum:78a8cea89e73b1a409f7908ad08cf99e)
*/
/**
/**
* Primary key
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this relationship type a predefined system type (can not be changed or de-activated)?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* Is this relationship type currently active (i.e. can be used when creating or editing relationships)?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
'keyColumn' => 'name',
'labelColumn' => 'label',
'condition' => 'parent_id IS NULL',
- ]
+ ],
],
'contact_type_b' => [
'name' => 'contact_type_b',
'keyColumn' => 'name',
'labelColumn' => 'label',
'condition' => 'parent_id IS NULL',
- ]
+ ],
],
'contact_sub_type_a' => [
'name' => 'contact_sub_type_a',
'type' => CRM_Utils_Type::T_STRING,
'title' => ts('Contact Subtype A'),
- 'description' => ts('If defined, contact_sub_type_a in a relationship of this type must be a specific contact_sub_type.
- '),
+ 'description' => ts('If defined, contact_sub_type_a in a relationship of this type must be a specific contact_sub_type.'),
'maxlength' => 64,
'size' => CRM_Utils_Type::BIG,
'where' => 'civicrm_relationship_type.contact_sub_type_a',
'keyColumn' => 'name',
'labelColumn' => 'label',
'condition' => 'parent_id IS NOT NULL',
- ]
+ ],
],
'contact_sub_type_b' => [
'name' => 'contact_sub_type_b',
'type' => CRM_Utils_Type::T_STRING,
'title' => ts('Contact Subtype B'),
- 'description' => ts('If defined, contact_sub_type_b in a relationship of this type must be a specific contact_sub_type.
- '),
+ 'description' => ts('If defined, contact_sub_type_b in a relationship of this type must be a specific contact_sub_type.'),
'maxlength' => 64,
'size' => CRM_Utils_Type::BIG,
'where' => 'civicrm_relationship_type.contact_sub_type_b',
'keyColumn' => 'name',
'labelColumn' => 'label',
'condition' => 'parent_id IS NOT NULL',
- ]
+ ],
],
'is_reserved' => [
'name' => 'is_reserved',
'name' => 'is_active',
'type' => CRM_Utils_Type::T_BOOLEAN,
'title' => ts('Relationship Type is Active'),
- 'description' => ts('Is this relationship type currently active (i.e. can be used when creating or editing relationships)?
- '),
+ 'description' => ts('Is this relationship type currently active (i.e. can be used when creating or editing relationships)?'),
'where' => 'civicrm_relationship_type.is_active',
'default' => '1',
'table_name' => 'civicrm_relationship_type',
*
* Generated from xml/schema/CRM/Contact/SavedSearch.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ff337d9810d6c4d6225f77b6b3007729)
+ * (GenCodeChecksum:556322817dc9b7b9dab015e1f0179fb7)
*/
/**
/**
* Saved Search ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign key to civicrm_mapping used for saved search-builder searches.
*
- * @var int unsigned
+ * @var int
*/
public $mapping_id;
/**
* Foreign key to civicrm_option value table used for saved custom searches.
*
- * @var int unsigned
+ * @var int
*/
public $search_custom_id;
*
* Generated from xml/schema/CRM/Contact/SubscriptionHistory.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:8051a666011690a9dfb14d91a013a3e0)
+ * (GenCodeChecksum:af7ac35767e88f1dd090f54ab44c3b35)
*/
/**
/**
* Internal Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Contact Id
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Group Id
*
- * @var int unsigned
+ * @var int
*/
public $group_id;
'table' => 'civicrm_group',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'date' => [
'name' => 'date',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getSubscriptionHistoryMethods',
- ]
+ ],
],
'status' => [
'name' => 'status',
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::groupContactStatus',
- ]
+ ],
],
'tracking' => [
'name' => 'tracking',
/**
* The profile group id used for display.
*
- * @var integer
+ * @var int
*/
protected $_ufGroupID;
public static $csv = ['contact_type', 'group', 'tag'];
/**
- * @var string how to display the results. Should we display as
- * contributons, members, cases etc
+ * How to display the results. Should we display as contributons, members, cases etc.
+ *
+ * @var string
*/
protected $_componentMode;
/**
- * @var string what operator should we use, AND or OR
+ * What operator should we use, AND or OR.
+ *
+ * @var string
*/
protected $_operator;
const LIMIT = 10;
/**
- * @var array CRM_Contact_Form_Search_Custom_FullText_AbstractPartialQuery
+ * @var CRM_Contact_Form_Search_Custom_FullText_AbstractPartialQuery[]
*/
protected $_partialQueries = NULL;
protected $_tableFields = NULL;
/**
- * @var array|null NULL if no limit; or array(0 => $limit, 1 => $offset)
+ * Limit clause.
+ *
+ * NULL if no limit; or array(0 => $limit, 1 => $offset).
+ *
+ * @var array|null
*/
protected $_limitClause = NULL;
/**
- * @var array|null NULL if no limit; or array(0 => $limit, 1 => $offset)
+ * Limit row clause.
+ *
+ * NULL if no limit; or array(0 => $limit, 1 => $offset)
+ *
+ * @var array|null
*/
protected $_limitRowClause = NULL;
/**
- * @var array|null NULL if no limit; or array(0 => $limit, 1 => $offset)
+ * Limit detail clause.
+ *
+ * NULL if no limit; or array(0 => $limit, 1 => $offset).
+ *
+ * @var array|null
*/
protected $_limitDetailClause = NULL;
protected $_limitNumber = 10;
+
/**
- * this should be one more than self::LIMIT
+ * This should be one more than self::LIMIT.
+ *
* @var int
*/
protected $_limitNumberPlus1 = 11;
}
public function buildTempTable() {
- $table = CRM_Utils_SQL_TempTable::build()->setCategory('custom')->setMemory()->setUtf8();
+ $table = CRM_Utils_SQL_TempTable::build()->setCategory('custom')->setMemory();
$this->_tableName = $table->getName();
$this->_tableFields = [
";
$table->createWithColumns($sql);
- $entityIdTable = CRM_Utils_SQL_TempTable::build()->setCategory('custom')->setMemory()->setUtf8();
+ $entityIdTable = CRM_Utils_SQL_TempTable::build()->setCategory('custom')->setMemory();
$this->_entityIDTableName = $entityIdTable->getName();
$sql = "
id int unsigned NOT NULL AUTO_INCREMENT,
/**
* @param int $offset
* @param int $rowcount
- * @param NULL $sort
+ * @param string $sort
* @param bool $includeContactIDs
* @param bool $justIDs
*
* @return string
+ * @throws \Exception
*/
public function all(
$offset = 0, $rowcount = 0, $sort = NULL,
/**
* @param int $offset
* @param int $rowcount
- * @param NULL $sort
+ * @param string $sort
* @param bool $returnSQL
*
* @return string
+ * @throws \Exception
*/
public function contactIDs($offset = 0, $rowcount = 0, $sort = NULL, $returnSQL = FALSE) {
return $this->all($offset, $rowcount, $sort, FALSE, TRUE);
$form->assign('taskName', CRM_Utils_Array::value($form->_task, $crmContactTaskTasks));
if ($useTable) {
- $tempTable = CRM_Utils_SQL_TempTable::build()->setCategory('tskact')->setDurable()->setId($qfKey)->setUtf8();
+ $tempTable = CRM_Utils_SQL_TempTable::build()->setCategory('tskact')->setDurable()->setId($qfKey);
$form->_componentTable = $tempTable->getName();
$tempTable->drop();
$tempTable->createWithColumns('contact_id int primary key');
* Are we operating in "single mode", i.e. sending email to one
* specific contact?
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
*
* Single mode means sending email to one specific contact.
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
* Are we operating in "single mode", i.e. sending email to one
* specific contact?
*
- * @var boolean
+ * @var bool
*/
public $_noEmails = FALSE;
* Are we operating in "single mode", i.e. mapping address to one
* specific contact?
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
* Are we operating in "single mode", i.e. sending sms to one
* specific contact?
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
}
// Get Task name
- $modeValue = CRM_Contact_Form_Search::getModeValue($values['component_mode']);
+ $modeValue = CRM_Contact_Form_Search::getModeValue(CRM_Utils_Array::value('component_mode', $values, CRM_Contact_BAO_Query::MODE_CONTACTS));
$className = $modeValue['taskClassName'];
$taskList = $className::taskTitles();
$this->_task = CRM_Utils_Array::value('task', $values);
/**
* Is this field required
- * @var boolean
+ * @var bool
*/
public $_required;
$result = CRM_Core_DAO::executeQuery($query, array($database));
$incompleteImportTables = array();
while ($importTable = $result->fetch()) {
- if (!$this->isComplete($importTable)) {
+ if (!self::isComplete($importTable)) {
$incompleteImportTables[] = $importTable;
}
}
/**
* Total number of lines in file
*
- * @var integer
+ * @var int
*/
protected $_rowCount;
/**
* Running total number of un-matched Contacts.
+ *
* @var int
*/
protected $_unMatchCount;
/**
- * Array of unmatched lines
+ * Array of unmatched lines.
+ *
* @var array
*/
protected $_unMatch;
'return' => 'location_type_id',
'contact_id' => $contactID,
'is_primary' => 1,
- 'sequential' => 1
+ 'sequential' => 1,
]);
}
$defaultLocationType = CRM_Core_BAO_LocationType::getDefault();
public static function flipDupePairs($prevNextId = NULL) {
if (!$prevNextId) {
// @todo figure out if this is always POST & specify that rather than inexact GET
- $prevNextId = CRM_Utils_Request::retrieve('pnid', 'Integer');
+
+ // We cannot use CRM_Utils_Request::retrieve() because it might be an array.
+ // It later gets validated in escapeAll below.
+ $prevNextId = $_REQUEST['pnid'];
}
$onlySelected = FALSE;
CRM_Dedupe_Merger::resetMergeStats($cacheKeyString);
}
- $this->_mainContacts = CRM_Dedupe_Merger::getDuplicatePairs($rgid, $gid, !$isConflictMode, 0, $this->isSelected(), '', $isConflictMode, $criteria, TRUE, $limit);
+ $this->_mainContacts = CRM_Dedupe_Merger::getDuplicatePairs($rgid, $gid, !$isConflictMode, 0, $this->isSelected(), $isConflictMode, $criteria, TRUE, $limit);
if (empty($this->_mainContacts)) {
if ($isConflictMode) {
*/
class CRM_Contact_Page_ImageFile extends CRM_Core_Page {
/**
- * @var int Time to live (seconds).
+ * Time to live (seconds).
+ *
+ * @var int
*
* 12 hours: 12 * 60 * 60 = 43200
*/
class CRM_Contact_Page_View_ContactSmartGroup extends CRM_Core_Page {
/**
- * @var int contact id
+ * Contact id.
+ *
+ * @var int
*/
public $_contactId;
/**
- * called when action is browse.
- *
+ * Called when action is browse.
*/
public function browse() {
$in = CRM_Contact_BAO_GroupContact::getContactGroup($this->_contactId, 'Added');
/**
* Field for all the objects related to this contribution
+ *
* @var array of objects (e.g membership object, participant object)
*/
- public $_relatedObjects = array();
+ public $_relatedObjects = [];
/**
* Field for the component - either 'event' (participant) or 'contribute'
*
* @return \CRM_Contribute_BAO_Contribution
* @throws \CRM_Core_Exception
+ * @throws \CiviCRM_API3_Exception
*/
- public static function add(&$params, $ids = array()) {
+ public static function add(&$params, $ids = []) {
if (empty($params)) {
return NULL;
}
//per http://wiki.civicrm.org/confluence/display/CRM/Database+layer we are moving away from $ids array
$contributionID = CRM_Utils_Array::value('contribution', $ids, CRM_Utils_Array::value('id', $params));
- $duplicates = array();
+ $duplicates = [];
if (self::checkDuplicate($params, $duplicates, $contributionID)) {
$message = ts("Duplicate error - existing contribution record(s) have a matching Transaction ID or Invoice ID. Contribution record ID(s) are: " . implode(', ', $duplicates));
throw new CRM_Core_Exception($message);
}
// first clean up all the money fields
- $moneyFields = array(
+ $moneyFields = [
'total_amount',
'net_amount',
'fee_amount',
'non_deductible_amount',
- );
+ ];
//if priceset is used, no need to cleanup money
if (!empty($params['skipCleanMoney'])) {
else {
// Since the fee amount is expecting this (later on) ensure it is always set.
// It would only not be set for an update where it is unchanged.
- $params['contribution_status_id'] = civicrm_api3('Contribution', 'getvalue', array('id' => $contributionID, 'return' => 'contribution_status_id'));
+ $params['contribution_status_id'] = civicrm_api3('Contribution', 'getvalue', [
+ 'id' => $contributionID,
+ 'return' => 'contribution_status_id',
+ ]);
}
if (!$contributionID
&& CRM_Utils_Array::value('membership_id', $params)
- && self::checkContributeSettings('deferred_revenue_enabled')
+ && Civi::settings()->get('deferred_revenue_enabled')
) {
$memberStartDate = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership', $params['membership_id'], 'start_date');
if ($memberStartDate) {
/**
* Get defaults for new entity.
+ *
* @return array
*/
public static function getDefaults() {
- return array(
+ return [
'payment_instrument_id' => key(CRM_Core_OptionGroup::values('payment_instrument',
- FALSE, FALSE, FALSE, 'AND is_default = 1')
+ FALSE, FALSE, FALSE, 'AND is_default = 1')
),
- 'contribution_status_id' => CRM_Core_Pseudoconstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'),
- );
+ 'contribution_status_id' => CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'),
+ ];
}
/**
* @throws CRM_Core_Exception
*/
public static function getValuesWithMappings($params) {
- $values = $ids = array();
+ $values = $ids = [];
$contribution = self::getValues($params, $values, $ids);
if (is_null($contribution)) {
throw new CRM_Core_Exception('No contribution found');
if (isset($params['fee_amount']) || isset($params['total_amount'])) {
// We have an existing contribution and fee_amount or total_amount has been passed in but not net_amount.
// net_amount may need adjusting.
- $contribution = civicrm_api3('Contribution', 'getsingle', array(
+ $contribution = civicrm_api3('Contribution', 'getsingle', [
'id' => $contributionID,
- 'return' => array('total_amount', 'net_amount', 'fee_amount'),
- ));
+ 'return' => ['total_amount', 'net_amount', 'fee_amount'],
+ ]);
$totalAmount = isset($params['total_amount']) ? $params['total_amount'] : CRM_Utils_Array::value('total_amount', $contribution);
$feeAmount = isset($params['fee_amount']) ? $params['fee_amount'] : CRM_Utils_Array::value('fee_amount', $contribution);
$params['net_amount'] = $totalAmount - $feeAmount;
*/
protected static function getBillingAddressParams($params, $billingLocationTypeID) {
$hasBillingField = FALSE;
- $billingFields = array(
+ $billingFields = [
'street_address',
'city',
'state_province_id',
'postal_code',
'country_id',
- );
+ ];
//build address array
- $addressParams = array();
+ $addressParams = [];
$addressParams['location_type_id'] = $billingLocationTypeID;
$addressParams['is_billing'] = 1;
$hasBillingField = TRUE;
}
}
- return array($hasBillingField, $addressParams);
+ return [$hasBillingField, $addressParams];
}
/**
$addressParams[substr($name, 9)] = $addressParams[$field];
}
}
- return array($hasBillingField, $addressParams);
+ return [$hasBillingField, $addressParams];
}
/**
SELECT membership_num_terms FROM civicrm_line_item li
LEFT JOIN civicrm_price_field_value v ON li.price_field_value_id = v.id
WHERE contribution_id = %1 AND membership_type_id = %2",
- array(1 => array($contributionID, 'Integer'), 2 => array($membershipTypeID, 'Integer'))
+ [1 => [$contributionID, 'Integer'], 2 => [$membershipTypeID, 'Integer']]
);
// default of 1 is precautionary
return empty($numTerms) ? 1 : $numTerms;
*
* @return CRM_Contribute_BAO_Contribution
*/
- public static function create(&$params, $ids = array()) {
- $dateFields = array('receive_date', 'cancel_date', 'receipt_date', 'thankyou_date', 'revenue_recognition_date');
+ public static function create(&$params, $ids = []) {
+ $dateFields = [
+ 'receive_date',
+ 'cancel_date',
+ 'receipt_date',
+ 'thankyou_date',
+ 'revenue_recognition_date',
+ ];
foreach ($dateFields as $df) {
if (isset($params[$df])) {
$params[$df] = CRM_Utils_Date::isoToMysql($params[$df]);
$session = CRM_Core_Session::singleton();
if (!empty($params['note'])) {
- $noteParams = array(
+ $noteParams = [
'entity_table' => 'civicrm_contribution',
'note' => $params['note'],
'entity_id' => $contribution->id,
'contact_id' => $session->get('userID'),
'modified_date' => date('Ymd'),
- );
+ ];
if (!$noteParams['contact_id']) {
$noteParams['contact_id'] = $params['contact_id'];
}
// make entry in batch entity batch table
if (!empty($params['batch_id'])) {
// in some update cases we need to get extra fields - ie an update that doesn't pass in all these params
- $titleFields = array(
+ $titleFields = [
'contact_id',
'total_amount',
'currency',
'financial_type_id',
- );
+ ];
$retrieveRequired = 0;
foreach ($titleFields as $titleField) {
if (!isset($contribution->$titleField)) {
$transaction->commit();
- $activity = civicrm_api3('Activity', 'get', array(
+ $activity = civicrm_api3('Activity', 'get', [
'source_record_id' => $contribution->id,
- 'options' => array('limit' => 1),
+ 'options' => ['limit' => 1],
'sequential' => 1,
'activity_type_id' => 'Contribution',
- 'return' => array('id', 'campaign'),
- ));
+ 'return' => ['id', 'campaign'],
+ ]);
//CRM-18406: Update activity when edit contribution.
if ($activity['count']) {
"action=view&reset=1&id={$contribution->id}&cid={$contribution->contact_id}&context=home"
);
// in some update cases we need to get extra fields - ie an update that doesn't pass in all these params
- $titleFields = array(
+ $titleFields = [
'contact_id',
'total_amount',
'currency',
'financial_type_id',
- );
+ ];
$retrieveRequired = 0;
foreach ($titleFields as $titleField) {
if (!isset($contribution->$titleField)) {
$financialType = CRM_Contribute_PseudoConstant::financialType($contribution->financial_type_id);
$title = CRM_Contact_BAO_Contact::displayName($contribution->contact_id) . ' - (' . CRM_Utils_Money::format($contribution->total_amount, $contribution->currency) . ' ' . ' - ' . $financialType . ')';
- $recentOther = array();
+ $recentOther = [];
if (CRM_Core_Permission::checkActionPermission('CiviContribute', CRM_Core_Action::UPDATE)) {
$recentOther['editUrl'] = CRM_Utils_System::url('civicrm/contact/view/contribution',
"action=update&reset=1&id={$contribution->id}&cid={$contribution->contact_id}&context=home"
public static function &importableFields($contactType = 'Individual', $status = TRUE) {
if (!self::$_importableFields) {
if (!self::$_importableFields) {
- self::$_importableFields = array();
+ self::$_importableFields = [];
}
if (!$status) {
- $fields = array('' => array('title' => ts('- do not import -')));
+ $fields = ['' => ['title' => ts('- do not import -')]];
}
else {
- $fields = array('' => array('title' => ts('- Contribution Fields -')));
+ $fields = ['' => ['title' => ts('- Contribution Fields -')]];
}
$note = CRM_Core_DAO_Note::import();
$contactFields = CRM_Contact_BAO_Contact::importableFields($contactType, NULL);
// Using new Dedupe rule.
- $ruleParams = array(
+ $ruleParams = [
'contact_type' => $contactType,
'used' => 'Unsupervised',
- );
+ ];
$fieldsArray = CRM_Dedupe_BAO_Rule::dedupeRuleFields($ruleParams);
- $tmpContactField = array();
+ $tmpContactField = [];
if (is_array($fieldsArray)) {
foreach ($fieldsArray as $value) {
//skip if there is no dupe rule
public static function &exportableFields($checkPermission = TRUE) {
if (!self::$_exportableFields) {
if (!self::$_exportableFields) {
- self::$_exportableFields = array();
+ self::$_exportableFields = [];
}
$fields = CRM_Contribute_DAO_Contribution::export();
$financialAccount = CRM_Financial_DAO_FinancialAccount::export();
- $contributionPage = array(
- 'contribution_page' => array(
+ $contributionPage = [
+ 'contribution_page' => [
'title' => ts('Contribution Page'),
'name' => 'contribution_page',
'where' => 'civicrm_contribution_page.title',
'data_type' => CRM_Utils_Type::T_STRING,
- ),
- );
+ ],
+ ];
- $contributionNote = array(
- 'contribution_note' => array(
+ $contributionNote = [
+ 'contribution_note' => [
'title' => ts('Contribution Note'),
'name' => 'contribution_note',
'data_type' => CRM_Utils_Type::T_TEXT,
- ),
- );
+ ],
+ ];
- $extraFields = array(
- 'contribution_batch' => array(
+ $extraFields = [
+ 'contribution_batch' => [
'title' => ts('Batch Name'),
- ),
- );
+ ],
+ ];
// CRM-17787
- $campaignTitle = array(
- 'contribution_campaign_title' => array(
+ $campaignTitle = [
+ 'contribution_campaign_title' => [
'title' => ts('Campaign Title'),
'name' => 'campaign_title',
'where' => 'civicrm_campaign.title',
'data_type' => CRM_Utils_Type::T_STRING,
- ),
- );
- $softCreditFields = array(
- 'contribution_soft_credit_name' => array(
+ ],
+ ];
+ $softCreditFields = [
+ 'contribution_soft_credit_name' => [
'name' => 'contribution_soft_credit_name',
'title' => ts('Soft Credit For'),
'where' => 'civicrm_contact_d.display_name',
'data_type' => CRM_Utils_Type::T_STRING,
- ),
- 'contribution_soft_credit_amount' => array(
+ ],
+ 'contribution_soft_credit_amount' => [
'name' => 'contribution_soft_credit_amount',
'title' => ts('Soft Credit Amount'),
'where' => 'civicrm_contribution_soft.amount',
'data_type' => CRM_Utils_Type::T_MONEY,
- ),
- 'contribution_soft_credit_type' => array(
+ ],
+ 'contribution_soft_credit_type' => [
'name' => 'contribution_soft_credit_type',
'title' => ts('Soft Credit Type'),
'where' => 'contribution_softcredit_type.label',
'data_type' => CRM_Utils_Type::T_STRING,
- ),
- 'contribution_soft_credit_contribution_id' => array(
+ ],
+ 'contribution_soft_credit_contribution_id' => [
'name' => 'contribution_soft_credit_contribution_id',
'title' => ts('Soft Credit For Contribution ID'),
'where' => 'civicrm_contribution_soft.contribution_id',
'data_type' => CRM_Utils_Type::T_INT,
- ),
- 'contribution_soft_credit_contact_id' => array(
+ ],
+ 'contribution_soft_credit_contact_id' => [
'name' => 'contribution_soft_credit_contact_id',
'title' => ts('Soft Credit For Contact ID'),
'where' => 'civicrm_contact_d.id',
'data_type' => CRM_Utils_Type::T_INT,
- ),
- );
+ ],
+ ];
$fields = array_merge($fields, $contributionPage,
$contributionNote, $extraFields, $softCreditFields, $financialAccount, $campaignTitle,
}
/**
- * @param $contributionId
- * @param $participantId
- * @param array $financialTrxn
+ * Record an activity when a payment is received.
+ *
+ * @todo this is intended to be moved to payment BAO class as a protected function
+ * on that class. Currently being cleaned up. The addActivityForPayment doesn't really
+ * merit it's own function as it makes the code less rather than more readable.
+ *
+ * @param int $contributionId
+ * @param int $participantId
+ * @param string $totalAmount
+ * @param string $currency
+ * @param string $trxnDate
*
- * @param $financialTrxn
+ * @throws \CRM_Core_Exception
+ * @throws \CiviCRM_API3_Exception
*/
- protected static function recordPaymentActivity($contributionId, $participantId, $financialTrxn) {
- $activityType = ($financialTrxn->total_amount < 0) ? 'Refund' : 'Payment';
+ protected static function recordPaymentActivity($contributionId, $participantId, $totalAmount, $currency, $trxnDate) {
+ $activityType = ($totalAmount < 0) ? 'Refund' : 'Payment';
+
if ($participantId) {
$inputParams['id'] = $participantId;
$values = [];
$ids = [];
- $component = 'event';
$entityObj = CRM_Event_BAO_Participant::getValues($inputParams, $values, $ids);
$entityObj = $entityObj[$participantId];
+ $title = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Event', $entityObj->event_id, 'title');
}
else {
$entityObj = new CRM_Contribute_BAO_Contribution();
$entityObj->id = $contributionId;
$entityObj->find(TRUE);
- $component = 'contribution';
+ $title = ts('Contribution');
}
-
- self::addActivityForPayment($entityObj, $financialTrxn, $activityType, $component, $contributionId);
+ // @todo per block above this is not a logical splitting off of functionality.
+ self::addActivityForPayment($entityObj->contact_id, $activityType, $title, $contributionId, $totalAmount, $currency, $trxnDate);
}
/**
])['values'];
}
+ /**
+ * Cancel contribution.
+ *
+ * This function should only be called from transitioncomponents - it is an interim step in refactoring.
+ *
+ * @param $processContributionObject
+ * @param $memberships
+ * @param $contributionId
+ * @param $membershipStatuses
+ * @param $updateResult
+ * @param $participant
+ * @param $oldStatus
+ * @param $pledgePayment
+ * @param $pledgeID
+ * @param $pledgePaymentIDs
+ * @param $contributionStatusId
+ *
+ * @return array
+ */
+ protected static function cancel($processContributionObject, $memberships, $contributionId, $membershipStatuses, $updateResult, $participant, $oldStatus, $pledgePayment, $pledgeID, $pledgePaymentIDs, $contributionStatusId) {
+ $processContribution = FALSE;
+ $participantStatuses = CRM_Event_PseudoConstant::participantStatus();
+ if (is_array($memberships)) {
+ foreach ($memberships as $membership) {
+ $update = TRUE;
+ //Update Membership status if there is no other completed contribution associated with the membership.
+ $relatedContributions = CRM_Member_BAO_Membership::getMembershipContributionId($membership->id, TRUE);
+ foreach ($relatedContributions as $contriId) {
+ if ($contriId == $contributionId) {
+ continue;
+ }
+ $statusId = CRM_Core_DAO::getFieldValue('CRM_Contribute_BAO_Contribution', $contriId, 'contribution_status_id');
+ if (CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $statusId) === 'Completed') {
+ $update = FALSE;
+ }
+ }
+ if ($membership && $update) {
+ $newStatus = array_search('Cancelled', $membershipStatuses);
+
+ // Create activity
+ $allStatus = CRM_Member_BAO_Membership::buildOptions('status_id', 'get');
+ $activityParam = [
+ 'subject' => "Status changed from {$allStatus[$membership->status_id]} to {$allStatus[$newStatus]}",
+ 'source_contact_id' => CRM_Core_Session::singleton()->get('userID'),
+ 'target_contact_id' => $membership->contact_id,
+ 'source_record_id' => $membership->id,
+ 'activity_type_id' => 'Change Membership Status',
+ 'status_id' => 'Completed',
+ 'priority_id' => 'Normal',
+ 'activity_date_time' => 'now',
+ ];
+
+ $membership->status_id = $newStatus;
+ $membership->is_override = TRUE;
+ $membership->status_override_end_date = 'null';
+ $membership->save();
+ civicrm_api3('activity', 'create', $activityParam);
+
+ $updateResult['updatedComponents']['CiviMember'] = $membership->status_id;
+ if ($processContributionObject) {
+ $processContribution = TRUE;
+ }
+ }
+ }
+ }
+
+ if ($participant) {
+ $updatedStatusId = array_search('Cancelled', $participantStatuses);
+ CRM_Event_BAO_Participant::updateParticipantStatus($participant->id, $oldStatus, $updatedStatusId, TRUE);
+
+ $updateResult['updatedComponents']['CiviEvent'] = $updatedStatusId;
+ if ($processContributionObject) {
+ $processContribution = TRUE;
+ }
+ }
+
+ if ($pledgePayment) {
+ CRM_Pledge_BAO_PledgePayment::updatePledgePaymentStatus($pledgeID, $pledgePaymentIDs, $contributionStatusId);
+
+ $updateResult['updatedComponents']['CiviPledge'] = $contributionStatusId;
+ if ($processContributionObject) {
+ $processContribution = TRUE;
+ }
+ }
+ return [$updateResult, $processContribution];
+ }
+
/**
* @inheritDoc
*/
* @return array|null
*/
public static function getTotalAmountAndCount($status = NULL, $startDate = NULL, $endDate = NULL) {
- $where = array();
+ $where = [];
switch ($status) {
case 'Valid':
$where[] = 'contribution_status_id = 1';
";
$dao = CRM_Core_DAO::executeQuery($query);
- $amount = array();
+ $amount = [];
$count = 0;
while ($dao->fetch()) {
$count += $dao->total_count;
$amount[] = CRM_Utils_Money::format($dao->total_amount, $dao->currency);
}
if ($count) {
- return array(
+ return [
'amount' => implode(', ', $amount),
'count' => $count,
- );
+ ];
}
return NULL;
}
$results = NULL;
//delete activity record
- $params = array(
+ $params = [
'source_record_id' => $id,
// activity type id for contribution
'activity_type_id' => 6,
- );
+ ];
CRM_Activity_BAO_Activity::deleteActivity($params);
CRM_Utils_Hook::post('delete', 'Contribution', $dao->id, $dao);
// delete the recently created Contribution
- $contributionRecent = array(
+ $contributionRecent = [
'id' => $id,
'type' => 'Contribution',
- );
+ ];
CRM_Utils_Recent::del($contributionRecent);
return $results;
* @throws \CiviCRM_API3_Exception
*/
public static function failPayment($contributionID, $contactID, $message) {
- civicrm_api3('activity', 'create', array(
+ civicrm_api3('activity', 'create', [
'activity_type_id' => 'Failed Payment',
'details' => $message,
'subject' => ts('Payment failed at payment processor'),
'source_record_id' => $contributionID,
- 'source_contact_id' => CRM_Core_Session::getLoggedInContactID() ? CRM_Core_Session::getLoggedInContactID() :
- $contactID,
- ));
+ 'source_contact_id' => CRM_Core_Session::getLoggedInContactID() ? CRM_Core_Session::getLoggedInContactID() : $contactID,
+ ]);
// CRM-20336 Make sure that the contribution status is Failed, not Pending.
- civicrm_api3('contribution', 'create', array(
+ civicrm_api3('contribution', 'create', [
'id' => $contributionID,
'contribution_status_id' => 'Failed',
- ));
+ ]);
}
/**
$trxn_id = CRM_Utils_Array::value('trxn_id', $input);
$invoice_id = CRM_Utils_Array::value('invoice_id', $input);
- $clause = array();
- $input = array();
+ $clause = [];
+ $input = [];
if ($trxn_id) {
$clause[] = "trxn_id = %1";
- $input[1] = array($trxn_id, 'String');
+ $input[1] = [$trxn_id, 'String'];
}
if ($invoice_id) {
$clause[] = "invoice_id = %2";
- $input[2] = array($invoice_id, 'String');
+ $input[2] = [$invoice_id, 'String'];
}
if (empty($clause)) {
$clause = implode(' OR ', $clause);
if ($id) {
$clause = "( $clause ) AND id != %3";
- $input[3] = array($id, 'Integer');
+ $input[3] = [$id, 'Integer'];
}
$query = "SELECT id FROM civicrm_contribution WHERE $clause";
* Add extra fields specific to contribution.
*/
public static function getSpecialContributionFields() {
- $extraFields = array(
- 'contribution_soft_credit_name' => array(
+ $extraFields = [
+ 'contribution_soft_credit_name' => [
'name' => 'contribution_soft_credit_name',
'title' => ts('Soft Credit Name'),
'headerPattern' => '/^soft_credit_name$/i',
'where' => 'civicrm_contact_d.display_name',
- ),
- 'contribution_soft_credit_email' => array(
+ ],
+ 'contribution_soft_credit_email' => [
'name' => 'contribution_soft_credit_email',
'title' => ts('Soft Credit Email'),
'headerPattern' => '/^soft_credit_email$/i',
'where' => 'soft_email.email',
- ),
- 'contribution_soft_credit_phone' => array(
+ ],
+ 'contribution_soft_credit_phone' => [
'name' => 'contribution_soft_credit_phone',
'title' => ts('Soft Credit Phone'),
'headerPattern' => '/^soft_credit_phone$/i',
'where' => 'soft_phone.phone',
- ),
- 'contribution_soft_credit_contact_id' => array(
+ ],
+ 'contribution_soft_credit_contact_id' => [
'name' => 'contribution_soft_credit_contact_id',
'title' => ts('Soft Credit Contact ID'),
'headerPattern' => '/^soft_credit_contact_id$/i',
'where' => 'civicrm_contribution_soft.contact_id',
- ),
- 'contribution_pcp_title' => array(
+ ],
+ 'contribution_pcp_title' => [
'name' => 'contribution_pcp_title',
'title' => ts('Personal Campaign Page Title'),
'headerPattern' => '/^contribution_pcp_title$/i',
'where' => 'contribution_pcp.title',
- ),
- );
+ ],
+ ];
return $extraFields;
}
";
$config = CRM_Core_Config::singleton();
- $params = array(1 => array($pageID, 'Integer'));
+ $params = [1 => [$pageID, 'Integer']];
$dao = CRM_Core_DAO::executeQuery($query, $params);
if ($dao->fetch()) {
- return array($dao->goal, $dao->total);
+ return [$dao->goal, $dao->total];
}
else {
- return array(NULL, NULL);
+ return [NULL, NULL];
}
}
*
* The returned array provides details about the original contribution & donor.
*
- * @todo - this is a confusing function called from one place. It has a test. It would be
- * nice to deprecate it.
- *
* @param int $honorId
* In Honor of Contact ID.
*
* @return array
* list of contribution fields
+ * @todo - this is a confusing function called from one place. It has a test. It would be
+ * nice to deprecate it.
+ *
*/
public static function getHonorContacts($honorId) {
- $params = array();
+ $params = [];
$honorDAO = new CRM_Contribute_DAO_ContributionSoft();
$honorDAO->contact_id = $honorId;
$honorDAO->find();
$query = self::getAnnualQuery($contactIDs);
$dao = CRM_Core_DAO::executeQuery($query);
$count = 0;
- $amount = $average = array();
+ $amount = $average = [];
while ($dao->fetch()) {
if ($dao->count > 0 && $dao->amount > 0) {
$count += $dao->count;
}
}
if ($count > 0) {
- return array(
+ return [
$count,
implode(', ', $amount),
implode(', ', $average),
- );
+ ];
}
- return array(0, 0, 0);
+ return [0, 0, 0];
}
/**
public static function checkDuplicateIds($params) {
$dao = new CRM_Contribute_DAO_Contribution();
- $clause = array();
- $input = array();
+ $clause = [];
+ $input = [];
foreach ($params as $k => $v) {
if ($v) {
$clause[] = "$k = '$v'";
* associated array
*/
public static function getContributionDetails($exportMode, $componentIds) {
- $paymentDetails = array();
+ $paymentDetails = [];
$componentClause = ' IN ( ' . implode(',', $componentIds) . ' ) ';
if ($exportMode == CRM_Export_Form_Select::EVENT_EXPORT) {
$dao = CRM_Core_DAO::executeQuery($query);
while ($dao->fetch()) {
- $paymentDetails[$dao->id] = array(
+ $paymentDetails[$dao->id] = [
'total_amount' => $dao->total_amount,
'contribution_status' => $dao->status,
'receive_date' => $dao->receive_date,
'pay_instru' => $dao->payment_instrument,
'trxn_id' => $dao->trxn_id,
- );
+ ];
}
return $paymentDetails;
* @param int $contactId
*/
public static function deleteAddress($contributionId = NULL, $contactId = NULL) {
- $clauses = array();
+ $clauses = [];
$contactJoin = NULL;
if ($contributionId) {
$dao = CRM_Core_DAO::executeQuery($query);
while ($dao->fetch()) {
- $params = array('id' => $dao->id);
+ $params = ['id' => $dao->id];
CRM_Core_BAO_Block::blockDelete('Address', $params);
}
}
public static function checkOnlinePendingContribution($componentId, $componentName) {
$contributionId = NULL;
if (!$componentId ||
- !in_array($componentName, array('Event', 'Membership'))
+ !in_array($componentName, ['Event', 'Membership'])
) {
return $contributionId;
}
*
* This function by-passes hooks - to address this - don't use this function.
*
- * @deprecated
- *
- * Use api contribute.completetransaction
- * For failures use failPayment (preferably exposing by api in the process).
- *
* @param array $params
* @param bool $processContributionObject
*
* @return array
* @throws \Exception
+ * @deprecated
+ *
+ * Use api contribute.completetransaction
+ * For failures use failPayment (preferably exposing by api in the process).
+ *
*/
public static function transitionComponents($params, $processContributionObject = FALSE) {
// get minimum required values.
// if we already processed contribution object pass previous status id.
$previousContriStatusId = CRM_Utils_Array::value('previous_contribution_status_id', $params);
- $updateResult = array();
+ $updateResult = [];
$contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
// we process only ( Completed, Cancelled, or Failed ) contributions.
if (!$contributionId ||
- !in_array($contributionStatusId, array(
+ !in_array($contributionStatusId, [
array_search('Completed', $contributionStatuses),
array_search('Cancelled', $contributionStatuses),
array_search('Failed', $contributionStatuses),
- ))
+ ])
) {
return $updateResult;
}
$baseIPN = new CRM_Core_Payment_BaseIPN();
- $input = $ids = $objects = array();
+ $input = $ids = $objects = [];
$input['component'] = CRM_Utils_Array::value('component', $componentDetails);
$ids['contribution'] = $contributionId;
$participant = &$objects['participant'];
$pledgePayment = &$objects['pledge_payment'];
$contribution = &$objects['contribution'];
-
+ $pledgeID = $oldStatus = NULL;
+ $pledgePaymentIDs = [];
if ($pledgePayment) {
- $pledgePaymentIDs = array();
foreach ($pledgePayment as $key => $object) {
$pledgePaymentIDs[] = $object->id;
}
// we might want to process contribution object.
$processContribution = FALSE;
if ($contributionStatusId == array_search('Cancelled', $contributionStatuses)) {
- if (is_array($memberships)) {
- foreach ($memberships as $membership) {
- $update = TRUE;
- //Update Membership status if there is no other completed contribution associated with the membership.
- $relatedContributions = CRM_Member_BAO_Membership::getMembershipContributionId($membership->id, TRUE);
- foreach ($relatedContributions as $contriId) {
- if ($contriId == $contributionId) {
- continue;
- }
- $statusId = CRM_Core_DAO::getFieldValue('CRM_Contribute_BAO_Contribution', $contriId, 'contribution_status_id');
- if (CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $statusId) === 'Completed') {
- $update = FALSE;
- }
- }
- if ($membership && $update) {
- $newStatus = array_search('Cancelled', $membershipStatuses);
-
- // Create activity
- $allStatus = CRM_Member_BAO_Membership::buildOptions('status_id', 'get');
- $activityParam = array(
- 'subject' => "Status changed from {$allStatus[$membership->status_id]} to {$allStatus[$newStatus]}",
- 'source_contact_id' => CRM_Core_Session::singleton()->get('userID'),
- 'target_contact_id' => $membership->contact_id,
- 'source_record_id' => $membership->id,
- 'activity_type_id' => 'Change Membership Status',
- 'status_id' => 'Completed',
- 'priority_id' => 'Normal',
- 'activity_date_time' => 'now',
- );
-
- $membership->status_id = $newStatus;
- $membership->is_override = TRUE;
- $membership->status_override_end_date = 'null';
- $membership->save();
- civicrm_api3('activity', 'create', $activityParam);
-
- $updateResult['updatedComponents']['CiviMember'] = $membership->status_id;
- if ($processContributionObject) {
- $processContribution = TRUE;
- }
- }
- }
- }
-
- if ($participant) {
- $updatedStatusId = array_search('Cancelled', $participantStatuses);
- CRM_Event_BAO_Participant::updateParticipantStatus($participant->id, $oldStatus, $updatedStatusId, TRUE);
-
- $updateResult['updatedComponents']['CiviEvent'] = $updatedStatusId;
- if ($processContributionObject) {
- $processContribution = TRUE;
- }
- }
-
- if ($pledgePayment) {
- CRM_Pledge_BAO_PledgePayment::updatePledgePaymentStatus($pledgeID, $pledgePaymentIDs, $contributionStatusId);
-
- $updateResult['updatedComponents']['CiviPledge'] = $contributionStatusId;
- if ($processContributionObject) {
- $processContribution = TRUE;
- }
- }
+ // Call interim cancel function - with a goal to cleaning up the signature on it and switching to a tested api Contribution.cancel function.
+ list($updateResult, $processContribution) = self::cancel($processContributionObject, $memberships, $contributionId, $membershipStatuses, $updateResult, $participant, $oldStatus, $pledgePayment, $pledgeID, $pledgePaymentIDs, $contributionStatusId);
}
elseif ($contributionStatusId == array_search('Failed', $contributionStatuses)) {
if (is_array($memberships)) {
// only pending contribution related object processed.
if ($previousContriStatusId &&
- !in_array($contributionStatuses[$previousContriStatusId], array('Pending', 'Partially paid'))
+ !in_array($contributionStatuses[$previousContriStatusId], [
+ 'Pending',
+ 'Partially paid',
+ ])
) {
// this is case when we already processed contribution object.
return $updateResult;
}
elseif (!$previousContriStatusId &&
- !in_array($contributionStatuses[$contribution->contribution_status_id], array('Pending', 'Partially paid'))
+ !in_array($contributionStatuses[$contribution->contribution_status_id], [
+ 'Pending',
+ 'Partially paid',
+ ])
) {
// this is case when we are going to process contribution object later.
return $updateResult;
(array) $membership
);
- $formattedParams = array(
+ $formattedParams = [
'status_id' => CRM_Utils_Array::value('id', $calcStatus,
array_search('Current', $membershipStatuses)
),
'join_date' => CRM_Utils_Date::customFormat($dates['join_date'], $format),
'start_date' => CRM_Utils_Date::customFormat($dates['start_date'], $format),
'end_date' => CRM_Utils_Date::customFormat($dates['end_date'], $format),
- );
+ ];
CRM_Utils_Hook::pre('edit', 'Membership', $membership->id, $formattedParams);
$membership->save();
//updating the membership log
- $membershipLog = array();
+ $membershipLog = [];
$membershipLog = $formattedParams;
$logStartDate = CRM_Utils_Date::customFormat(CRM_Utils_Array::value('log_start_date', $dates), $format);
$logStartDate = ($logStartDate) ? CRM_Utils_Date::isoToMysql($logStartDate) : $formattedParams['start_date'];
//update related Memberships.
CRM_Member_BAO_Membership::updateRelatedMemberships($membership->id, $formattedParams);
- foreach (array('Membership Signup', 'Membership Renewal') as $activityType) {
+ foreach (['Membership Signup', 'Membership Renewal'] as $activityType) {
$scheduledActivityID = CRM_Utils_Array::value('id',
civicrm_api3('Activity', 'Get',
- array(
+ [
'source_record_id' => $membership->id,
'activity_type_id' => $activityType,
'status_id' => 'Scheduled',
- 'options' => array(
+ 'options' => [
'limit' => 1,
'sort' => 'id DESC',
- ),
- )
+ ],
+ ]
)
);
// 1. Update Schedule Membership Signup/Renewal activity to completed on successful payment of pending membership
// 2. OR Create renewal activity scheduled if its membership renewal will be paid later
if ($scheduledActivityID) {
- CRM_Activity_BAO_Activity::addActivity($membership, $activityType, $membership->contact_id, array('id' => $scheduledActivityID));
+ CRM_Activity_BAO_Activity::addActivity($membership, $activityType, $membership->contact_id, ['id' => $scheduledActivityID]);
break;
}
}
CRM_Activity_BAO_Activity::addActivity($membership,
'Change Membership Status',
NULL,
- array(
+ [
'subject' => "Status changed from {$allStatus[$oldStatus]} to {$allStatus[$membership->status_id]}",
'source_contact_id' => $membershipLog['modified_id'],
'priority_id' => 'Normal',
- )
+ ]
);
}
// process contribution object.
if ($processContribution) {
- $contributionParams = array();
- $fields = array(
+ $contributionParams = [];
+ $fields = [
'contact_id',
'total_amount',
'receive_date',
'non_deductible_amount',
'receipt_date',
'check_number',
- );
+ ];
foreach ($fields as $field) {
if (empty($params[$field])) {
continue;
$contributionParams[$field] = $params[$field];
}
- $ids = array('contribution' => $contributionId);
+ $ids = ['contribution' => $contributionId];
$contribution = CRM_Contribute_BAO_Contribution::create($contributionParams, $ids);
}
* @return array
*/
public static function getComponentDetails($contributionId) {
- $componentDetails = $pledgePayment = array();
+ $componentDetails = $pledgePayment = [];
if (!$contributionId) {
return $componentDetails;
}
WHERE c.id = $contributionId";
$dao = CRM_Core_DAO::executeQuery($query);
- $componentDetails = array();
+ $componentDetails = [];
while ($dao->fetch()) {
$componentDetails['component'] = $dao->participant_id ? 'event' : 'contribute';
}
if ($dao->membership_id) {
if (!isset($componentDetails['membership'])) {
- $componentDetails['membership'] = $componentDetails['membership_type'] = array();
+ $componentDetails['membership'] = $componentDetails['membership_type'] = [];
}
$componentDetails['membership'][] = $dao->membership_id;
$componentDetails['membership_type'][] = $dao->membership_type_id;
}
if (!empty($contributionParams['contribution_recur_id'])) {
- $recurringContribution = civicrm_api3('ContributionRecur', 'getsingle', array(
+ $recurringContribution = civicrm_api3('ContributionRecur', 'getsingle', [
'id' => $contributionParams['contribution_recur_id'],
- ));
+ ]);
if (!empty($recurringContribution['campaign_id'])) {
// CRM-17718 the campaign id on the contribution recur record should get precedence.
$contributionParams['campaign_id'] = $recurringContribution['campaign_id'];
}
$templateContribution = CRM_Contribute_BAO_ContributionRecur::getTemplateContribution(
$contributionParams['contribution_recur_id'],
- array_intersect_key($contributionParams, array('total_amount' => TRUE, 'financial_type_id' => TRUE))
+ array_intersect_key($contributionParams, [
+ 'total_amount' => TRUE,
+ 'financial_type_id' => TRUE,
+ ])
);
$input['line_item'] = $contributionParams['line_item'] = $templateContribution['line_item'];
*/
public static function getOnbehalfIds($contributionId, $contributorId = NULL) {
- $ids = array();
+ $ids = [];
if (!$contributionId) {
return $ids;
$activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate');
$sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts);
- $params = array(
- 1 => array($activityTypeId, 'Integer'),
- 2 => array($contributionId, 'Integer'),
- 3 => array($sourceID, 'Integer'),
- );
+ $params = [
+ 1 => [$activityTypeId, 'Integer'],
+ 2 => [$contributionId, 'Integer'],
+ 3 => [$sourceID, 'Integer'],
+ ];
$sourceContactId = CRM_Core_DAO::singleValueQuery($activityQuery, $params);
else {
$year = date('Y');
}
- $year = array('Y' => $year);
+ $year = ['Y' => $year];
$yearDate = $config->fiscalYearStart;
$yearDate = array_merge($year, $yearDate);
$yearDate = CRM_Utils_Date::format($yearDate);
$now = date('Ymd');
- return array(
+ return [
'now' => $now,
'yearDate' => $yearDate,
'monthDate' => $monthDate,
- );
+ ];
}
/**
* Load objects relations to contribution object.
* Objects are stored in the $_relatedObjects property
* In the first instance we are just moving functionality from BASEIpn -
+ *
* @see http://issues.civicrm.org/jira/browse/CRM-9996
*
* Note that the unit test for the BaseIPN class tests this function
}
// todo remove strtolower - check consistency
if (strtolower($this->_component) == 'event') {
- $eventParams = array('id' => $this->_relatedObjects['participant']->event_id);
- $values['event'] = array();
+ $eventParams = ['id' => $this->_relatedObjects['participant']->event_id];
+ $values['event'] = [];
CRM_Event_BAO_Event::retrieve($eventParams, $values['event']);
//get location details
- $locationParams = array('entity_id' => $this->_relatedObjects['participant']->event_id, 'entity_table' => 'civicrm_event');
+ $locationParams = [
+ 'entity_id' => $this->_relatedObjects['participant']->event_id,
+ 'entity_table' => 'civicrm_event',
+ ];
$values['location'] = CRM_Core_BAO_Location::getValues($locationParams);
- $ufJoinParams = array(
+ $ufJoinParams = [
'entity_table' => 'civicrm_event',
'entity_id' => $ids['event'],
'module' => 'CiviEvent',
- );
+ ];
list($custom_pre_id,
$custom_post_ids
if (isset($ids['onbehalf_dupe_alert'])) {
$values['onbehalf_dupe_alert'] = $ids['onbehalf_dupe_alert'];
}
- $entityBlock = array(
+ $entityBlock = [
'contact_id' => $ids['contact'],
'location_type_id' => CRM_Core_DAO::getFieldValue('CRM_Core_DAO_LocationType',
'Home', 'id', 'name'
),
- );
+ ];
$address = CRM_Core_BAO_Address::getValues($entityBlock);
$template->assign('onBehalfAddress', $address[$entityBlock['location_type_id']]['display']);
}
*
* @return array
*/
- public function _gatherMessageValues($input, &$values, $ids = array()) {
+ public function _gatherMessageValues($input, &$values, $ids = []) {
// set display address of contributor
if ($this->address_id) {
- $addressParams = array('id' => $this->address_id);
+ $addressParams = ['id' => $this->address_id];
$addressDetails = CRM_Core_BAO_Address::getValues($addressParams, FALSE, 'id');
$addressDetails = array_values($addressDetails);
}
// Else we assign the billing address of the contribution contact.
else {
- $addressParams = array('contact_id' => $this->contact_id, 'is_billing' => 1);
+ $addressParams = ['contact_id' => $this->contact_id, 'is_billing' => 1];
$addressDetails = (array) CRM_Core_BAO_Address::getValues($addressParams);
$addressDetails = array_values($addressDetails);
}
// This is precautionary as there are some legacy flows, but it should really be
// loaded by now.
if (!isset($this->_relatedObjects['contributionPage'])) {
- $this->loadRelatedEntitiesByID(array('contributionPage' => $this->contribution_page_id));
+ $this->loadRelatedEntitiesByID(['contributionPage' => $this->contribution_page_id]);
}
// CRM-8254 - override default currency if applicable
$config = CRM_Core_Config::singleton();
$lineItems = CRM_Price_BAO_LineItem::getLineItemsByContributionID($this->id);
if (!empty($lineItems)) {
$firstLineItem = reset($lineItems);
- $priceSet = array();
+ $priceSet = [];
if (CRM_Utils_Array::value('price_set_id', $firstLineItem)) {
- $priceSet = civicrm_api3('PriceSet', 'getsingle', array('id' => $firstLineItem['price_set_id'], 'return' => 'is_quick_config, id'));
+ $priceSet = civicrm_api3('PriceSet', 'getsingle', [
+ 'id' => $firstLineItem['price_set_id'],
+ 'return' => 'is_quick_config, id',
+ ]);
$values['priceSetID'] = $priceSet['id'];
}
foreach ($lineItems as &$eachItem) {
if (isset($this->_relatedObjects['membership'])
- && is_array($this->_relatedObjects['membership'])
- && array_key_exists($eachItem['membership_type_id'], $this->_relatedObjects['membership'])) {
+ && is_array($this->_relatedObjects['membership'])
+ && array_key_exists($eachItem['membership_type_id'], $this->_relatedObjects['membership'])) {
$eachItem['join_date'] = CRM_Utils_Date::customFormat($this->_relatedObjects['membership'][$eachItem['membership_type_id']]->join_date);
$eachItem['start_date'] = CRM_Utils_Date::customFormat($this->_relatedObjects['membership'][$eachItem['membership_type_id']]->start_date);
$eachItem['end_date'] = CRM_Utils_Date::customFormat($this->_relatedObjects['membership'][$eachItem['membership_type_id']]->end_date);
}
else {
// event
- $eventParams = array(
+ $eventParams = [
'id' => $this->_relatedObjects['event']->id,
- );
- $values['event'] = array();
+ ];
+ $values['event'] = [];
CRM_Event_BAO_Event::retrieve($eventParams, $values['event']);
// add custom fields for event
$eventGroupTree = CRM_Core_BAO_CustomGroup::getTree('Event', NULL, $this->_relatedObjects['event']->id);
- $eventCustomGroup = array();
+ $eventCustomGroup = [];
foreach ($eventGroupTree as $key => $group) {
if ($key === 'info') {
continue;
$values['event']['customGroup'] = $eventCustomGroup;
//get participant details
- $participantParams = array(
+ $participantParams = [
'id' => $this->_relatedObjects['participant']->id,
- );
+ ];
- $values['participant'] = array();
+ $values['participant'] = [];
CRM_Event_BAO_Participant::getValues($participantParams, $values['participant'], $participantIds);
// add custom fields for event
$participantGroupTree = CRM_Core_BAO_CustomGroup::getTree('Participant', NULL, $this->_relatedObjects['participant']->id);
- $participantCustomGroup = array();
+ $participantCustomGroup = [];
foreach ($participantGroupTree as $key => $group) {
if ($key === 'info') {
continue;
$values['participant']['customGroup'] = $participantCustomGroup;
//get location details
- $locationParams = array(
+ $locationParams = [
'entity_id' => $this->_relatedObjects['event']->id,
'entity_table' => 'civicrm_event',
- );
+ ];
$values['location'] = CRM_Core_BAO_Location::getValues($locationParams);
- $ufJoinParams = array(
+ $ufJoinParams = [
'entity_table' => 'civicrm_event',
'entity_id' => $ids['event'],
'module' => 'CiviEvent',
- );
+ ];
list($custom_pre_id,
$custom_post_ids
$groupTree = CRM_Core_BAO_CustomGroup::getTree('Contribution', NULL, $this->id);
- $customGroup = array();
+ $customGroup = [];
foreach ($groupTree as $key => $group) {
if ($key === 'info') {
continue;
//assign honor information to receipt message
$softRecord = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($this->id);
- $honorParams = ['soft_credit_type' => NULL, 'honor_block_is_active' => NULL];
+ $honorParams = [
+ 'soft_credit_type' => NULL,
+ 'honor_block_is_active' => NULL,
+ ];
if (isset($softRecord['soft_credit'])) {
//if id of contribution page is present
if (!empty($values['id'])) {
- $values['honor'] = array(
- 'honor_profile_values' => array(),
+ $values['honor'] = [
+ 'honor_profile_values' => [],
'honor_profile_id' => CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFJoin', $values['id'], 'uf_group_id', 'entity_id'),
'honor_id' => $softRecord['soft_credit'][1]['contact_id'],
- );
+ ];
$honorParams['soft_credit_type'] = $softRecord['soft_credit'][1]['soft_credit_type_label'];
$honorParams['honor_block_is_active'] = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFJoin', $values['id'], 'is_active', 'entity_id');
}
else {
//offline contribution
- $softCreditTypes = $softCredits = array();
+ $softCreditTypes = $softCredits = [];
foreach ($softRecord['soft_credit'] as $key => $softCredit) {
$softCreditTypes[$key] = $softCredit['soft_credit_type_label'];
- $softCredits[$key] = array(
+ $softCredits[$key] = [
'Name' => $softCredit['contact_name'],
'Amount' => CRM_Utils_Money::format($softCredit['amount'], $softCredit['currency']),
- );
+ ];
}
$template->assign('softCreditTypes', $softCreditTypes);
$template->assign('softCredits', $softCredits);
$values['amount'] = $this->total_amount;
}
- $pcpParams = ['pcpBlock' => NULL, 'pcp_display_in_roll' => NULL, 'pcp_roll_nickname' => NULL, 'pcp_personal_note' => NULL, 'title' => NULL];
+ $pcpParams = [
+ 'pcpBlock' => NULL,
+ 'pcp_display_in_roll' => NULL,
+ 'pcp_roll_nickname' => NULL,
+ 'pcp_personal_note' => NULL,
+ 'title' => NULL,
+ ];
if (strtolower($this->_component) == 'contribute') {
//PCP Info
if ($this->_component == 'event') {
$template->assign('title', $values['event']['title']);
$participantRoles = CRM_Event_PseudoConstant::participantRole();
- $viewRoles = array();
+ $viewRoles = [];
foreach (explode(CRM_Core_DAO::VALUE_SEPARATOR, $this->_relatedObjects['participant']->role_id) as $k => $v) {
$viewRoles[] = $participantRoles[$v];
}
$isTest = TRUE;
}
- $values['params'] = array();
+ $values['params'] = [];
//to get email of primary participant.
$primaryEmail = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Email', $this->_relatedObjects['participant']->contact_id, 'email', 'contact_id');
- $primaryAmount[] = array(
+ $primaryAmount[] = [
'label' => $this->_relatedObjects['participant']->fee_level . ' - ' . $primaryEmail,
'amount' => $this->_relatedObjects['participant']->fee_amount,
- );
+ ];
//build an array of cId/pId of participants
$additionalIDs = CRM_Event_BAO_Event::buildCustomProfile($this->_relatedObjects['participant']->id, NULL, $this->_relatedObjects['contact']->id, $isTest, TRUE);
unset($additionalIDs[$this->_relatedObjects['participant']->id]);
//set additionalParticipant true
$values['params']['additionalParticipant'] = TRUE;
foreach ($additionalIDs as $pId => $cId) {
- $amount = array();
+ $amount = [];
//to change the status pending to completed
$additional = new CRM_Event_DAO_Participant();
$additional->id = $pId;
if (!$additionalParticipantInfo) {
$additionalParticipantInfo = CRM_Contact_BAO_Contact::displayName($additional->contact_id);
}
- $amount[0] = array('label' => $additional->fee_level, 'amount' => $additional->fee_amount);
- $primaryAmount[] = array(
+ $amount[0] = [
+ 'label' => $additional->fee_level,
+ 'amount' => $additional->fee_amount,
+ ];
+ $primaryAmount[] = [
'label' => $additional->fee_level . ' - ' . $additionalParticipantInfo,
'amount' => $additional->fee_amount,
- );
+ ];
$additional->save();
$template->assign('amount', $amount);
CRM_Event_BAO_Event::sendMail($cId, $values, $pId, $isTest, $returnMessageText);
$cacheKeyString = "$contributionId";
$cacheKeyString .= $isNotCancelled ? '_1' : '_0';
- static $supportsCancel = array();
+ static $supportsCancel = [];
if (!array_key_exists($cacheKeyString, $supportsCancel)) {
$supportsCancel[$cacheKeyString] = FALSE;
FROM civicrm_contribution_recur cr
LEFT JOIN civicrm_contribution con ON ( cr.id = con.contribution_recur_id )
WHERE con.id = %1 LIMIT 1";
- $params = array(1 => array($contributionId, 'Integer'));
+ $params = [1 => [$contributionId, 'Integer']];
$statusId = CRM_Core_DAO::singleValueQuery($sql, $params);
$status = CRM_Contribute_PseudoConstant::contributionStatus($statusId);
if ($status == 'Cancelled') {
public static function recordFinancialAccounts(&$params, $financialTrxnValues = NULL) {
$skipRecords = $update = $return = $isRelatedId = FALSE;
- $additionalParticipantId = array();
+ $additionalParticipantId = [];
$contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
$contributionStatus = empty($params['contribution_status_id']) ? NULL : $contributionStatuses[$params['contribution_status_id']];
!($contributionStatus == 'Pending' && !$params['contribution']->is_pay_later)
) {
$skipRecords = TRUE;
- $pendingStatus = array(
+ $pendingStatus = [
'Pending',
'In Progress',
- );
+ ];
if (in_array($contributionStatus, $pendingStatus)) {
$params['to_financial_account_id'] = CRM_Financial_BAO_FinancialAccount::getFinancialAccountForFinancialTypeByRelationship(
$params['financial_type_id'],
}
elseif (!empty($params['payment_processor'])) {
$params['to_financial_account_id'] = CRM_Contribute_PseudoConstant::getRelationalFinancialAccount($params['payment_processor'], NULL, 'civicrm_payment_processor');
- $params['payment_instrument_id'] = civicrm_api3('PaymentProcessor', 'getvalue', array(
+ $params['payment_instrument_id'] = civicrm_api3('PaymentProcessor', 'getvalue', [
'id' => $params['payment_processor'],
'return' => 'payment_instrument_id',
- ));
+ ]);
}
elseif (!empty($params['payment_instrument_id'])) {
$params['to_financial_account_id'] = CRM_Financial_BAO_FinancialTypeAccount::getInstrumentFinancialAccount($params['payment_instrument_id']);
}
else {
$relationTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('financial_account_type', NULL, " AND v.name LIKE 'Asset' "));
- $queryParams = array(1 => array($relationTypeId, 'Integer'));
+ $queryParams = [1 => [$relationTypeId, 'Integer']];
$params['to_financial_account_id'] = CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_financial_account WHERE is_default = 1 AND financial_account_type_id = %1", $queryParams);
}
$totalAmount = $params['total_amount'] = $params['prevContribution']->total_amount;
}
//build financial transaction params
- $trxnParams = array(
+ $trxnParams = [
'contribution_id' => $params['contribution']->id,
'to_financial_account_id' => $params['to_financial_account_id'],
'trxn_date' => !empty($params['contribution']->receive_date) ? $params['contribution']->receive_date : date('YmdHis'),
'check_number' => CRM_Utils_Array::value('check_number', $params),
'pan_truncation' => CRM_Utils_Array::value('pan_truncation', $params),
'card_type_id' => CRM_Utils_Array::value('card_type_id', $params),
- );
+ ];
if ($contributionStatus == 'Refunded' || $contributionStatus == 'Chargeback' || $contributionStatus == 'Cancelled') {
$trxnParams['trxn_date'] = !empty($params['contribution']->cancel_date) ? $params['contribution']->cancel_date : date('YmdHis');
if (isset($params['refund_trxn_id'])) {
if (isset($params['refund_trxn_id'])) {
$refundIDs = CRM_Core_BAO_FinancialTrxn::getRefundTransactionIDs($params['id']);
if (!empty($refundIDs['financialTrxnId']) && $refundIDs['trxn_id'] != $params['refund_trxn_id']) {
- civicrm_api3('FinancialTrxn', 'create', array('id' => $refundIDs['financialTrxnId'], 'trxn_id' => $params['refund_trxn_id']));
+ civicrm_api3('FinancialTrxn', 'create', [
+ 'id' => $refundIDs['financialTrxnId'],
+ 'trxn_id' => $params['refund_trxn_id'],
+ ]);
}
}
$cardType = CRM_Utils_Array::value('card_type_id', $params);
// create batch entry if batch_id is passed and
// ensure no batch entry is been made on 'Pending' or 'Failed' contribution, CRM-16611
if (!empty($params['batch_id']) && !empty($financialTxn)) {
- $entityParams = array(
+ $entityParams = [
'batch_id' => $params['batch_id'],
'entity_table' => 'civicrm_financial_trxn',
'entity_id' => $financialTxn->id,
- );
+ ];
CRM_Batch_BAO_EntityBatch::create($entityParams);
}
* @param array $params
* Contribution object, line item array and params for trxn.
*
- * @todo stop passing $params by reference. It is unclear the purpose of doing this &
- * adds unpredictability.
- *
* @param string $context
* Update scenarios.
*
+ * @todo stop passing $params by reference. It is unclear the purpose of doing this &
+ * adds unpredictability.
+ *
*/
public static function updateFinancialAccounts(&$params, $context = NULL) {
$trxnID = NULL;
) {
return;
}
- if ((($previousContributionStatus == 'Partially paid'
- && $currentContributionStatus == 'Completed')
- || ($previousContributionStatus == 'Pending' && $params['prevContribution']->is_pay_later == TRUE
- && $currentContributionStatus == 'Partially paid'))
+ // The 'right' way to add payments or refunds is through the Payment.create api. That api
+ // then updates the contribution but this process shoud not also record another financial trxn.
+ if ((($previousContributionStatus == 'Partially paid' && $currentContributionStatus == 'Completed')
+ || ($previousContributionStatus == 'Pending refund' && $currentContributionStatus == 'Completed')
+ // This concept of pay_later as different to any other sort of pending is deprecated & it's unclear
+ // why it is here or where it is handled instead.
+ || ($previousContributionStatus == 'Pending' && $params['prevContribution']->is_pay_later == TRUE
+ && $currentContributionStatus == 'Partially paid'))
&& $context == 'changedStatus'
) {
return;
$query = "UPDATE civicrm_financial_item SET status_id = %1 WHERE entity_id = %2 and entity_table = 'civicrm_line_item'";
$sql = "SELECT id, amount FROM civicrm_financial_item WHERE entity_id = %1 and entity_table = 'civicrm_line_item'";
- $entityParams = array(
+ $entityParams = [
'entity_table' => 'civicrm_financial_item',
- );
+ ];
foreach ($params['line_item'] as $fieldId => $fields) {
foreach ($fields as $fieldValueId => $lineItemDetails) {
- $fparams = array(
- 1 => array(CRM_Core_PseudoConstant::getKey('CRM_Financial_BAO_FinancialItem', 'status_id', 'Paid'), 'Integer'),
- 2 => array($lineItemDetails['id'], 'Integer'),
- );
+ $fparams = [
+ 1 => [
+ CRM_Core_PseudoConstant::getKey('CRM_Financial_BAO_FinancialItem', 'status_id', 'Paid'),
+ 'Integer',
+ ],
+ 2 => [$lineItemDetails['id'], 'Integer'],
+ ];
CRM_Core_DAO::executeQuery($query, $fparams);
- $fparams = array(
- 1 => array($lineItemDetails['id'], 'Integer'),
- );
+ $fparams = [
+ 1 => [$lineItemDetails['id'], 'Integer'],
+ ];
$financialItem = CRM_Core_DAO::executeQuery($sql, $fparams);
while ($financialItem->fetch()) {
$entityParams['entity_id'] = $financialItem->id;
$currency = $params['contribution']->currency;
}
$previousLineItemTotal = CRM_Utils_Array::value('line_total', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0);
- $itemParams = array(
+ $itemParams = [
'transaction_date' => $receiveDate,
'contact_id' => $params['prevContribution']->contact_id,
'currency' => $currency,
'financial_account_id' => $financialAccount,
'entity_table' => 'civicrm_line_item',
'entity_id' => $lineItemDetails['id'],
- );
+ ];
$financialItem = CRM_Financial_BAO_FinancialItem::create($itemParams, NULL, $trxnIds);
// @todo we should stop passing $params by reference - splitting this out would be a step towards that.
$params['line_item'][$fieldId][$fieldValueId]['deferred_line_total'] = $itemParams['amount'];
elseif ($previousLineItemTotal != $lineItemDetails['line_total']) {
$taxAmount -= CRM_Utils_Array::value('tax_amount', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0);
}
- $itemParams['amount'] = self::getMultiplier($params['contribution']->contribution_status_id, $context) * $taxAmount;
- $itemParams['description'] = $taxTerm;
- if ($lineItemDetails['financial_type_id']) {
- $itemParams['financial_account_id'] = CRM_Contribute_PseudoConstant::getRelationalFinancialAccount(
- $lineItemDetails['financial_type_id'],
- 'Sales Tax Account is'
- );
+ if ($taxAmount != 0) {
+ $itemParams['amount'] = self::getMultiplier($params['contribution']->contribution_status_id, $context) * $taxAmount;
+ $itemParams['description'] = $taxTerm;
+ if ($lineItemDetails['financial_type_id']) {
+ $itemParams['financial_account_id'] = CRM_Contribute_PseudoConstant::getRelationalFinancialAccount(
+ $lineItemDetails['financial_type_id'],
+ 'Sales Tax Account is'
+ );
+ }
+ CRM_Financial_BAO_FinancialItem::create($itemParams, NULL, $trxnIds);
}
- CRM_Financial_BAO_FinancialItem::create($itemParams, NULL, $trxnIds);
}
}
}
* @return bool
*/
public static function isContributionStatusNegative($status_id) {
- $reversalStatuses = array('Cancelled', 'Chargeback', 'Refunded');
+ $reversalStatuses = ['Cancelled', 'Chargeback', 'Refunded'];
return in_array(CRM_Contribute_PseudoConstant::contributionStatus($status_id, 'name'), $reversalStatuses);
}
}
}
$contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
- $checkStatus = array(
- 'Cancelled' => array('Completed', 'Refunded'),
- 'Completed' => array('Cancelled', 'Refunded', 'Chargeback'),
- 'Pending' => array('Cancelled', 'Completed', 'Failed', 'Partially paid'),
- 'In Progress' => array('Cancelled', 'Completed', 'Failed'),
- 'Refunded' => array('Cancelled', 'Completed'),
- 'Partially paid' => array('Completed'),
- );
+ $checkStatus = [
+ 'Cancelled' => ['Completed', 'Refunded'],
+ 'Completed' => ['Cancelled', 'Refunded', 'Chargeback'],
+ 'Pending' => ['Cancelled', 'Completed', 'Failed', 'Partially paid'],
+ 'In Progress' => ['Cancelled', 'Completed', 'Failed'],
+ 'Refunded' => ['Cancelled', 'Completed'],
+ 'Partially paid' => ['Completed'],
+ ];
if (!in_array($contributionStatuses[$fields['contribution_status_id']],
- CRM_Utils_Array::value($contributionStatuses[$values['contribution_status_id']], $checkStatus, array()))
+ CRM_Utils_Array::value($contributionStatuses[$values['contribution_status_id']], $checkStatus, []))
) {
- $errors['contribution_status_id'] = ts("Cannot change contribution status from %1 to %2.", array(
+ $errors['contribution_status_id'] = ts("Cannot change contribution status from %1 to %2.", [
1 => $contributionStatuses[$values['contribution_status_id']],
2 => $contributionStatuses[$fields['contribution_status_id']],
- ));
+ ]);
}
}
/**
* Get options for a given contribution field.
- * @see CRM_Core_DAO::buildOptions
*
* @param string $fieldName
* @param string $context see CRM_Core_DAO::buildOptionsContext.
- * @param array $props whatever is known about this dao object.
+ * @param array $props whatever is known about this dao object.
*
* @return array|bool
+ * @see CRM_Core_DAO::buildOptions
+ *
*/
- public static function buildOptions($fieldName, $context = NULL, $props = array()) {
+ public static function buildOptions($fieldName, $context = NULL, $props = []) {
$className = __CLASS__;
- $params = array();
+ $params = [];
if (isset($props['orderColumn'])) {
$params['orderColumn'] = $props['orderColumn'];
}
$className = 'CRM_Contribute_BAO_ContributionPage';
// Filter results by contribution page
if (!empty($props['contribution_page_id'])) {
- $page = civicrm_api('contribution_page', 'getsingle', array(
+ $page = civicrm_api('contribution_page', 'getsingle', [
'version' => 3,
'id' => ($props['contribution_page_id']),
- ));
+ ]);
$types = (array) CRM_Utils_Array::value('payment_processor', $page, 0);
$params['condition'] = 'id IN (' . implode(',', $types) . ')';
}
}
if (!empty($financialTrxn)) {
- self::recordPaymentActivity($contributionId, $participantId, $financialTrxn);
+ self::recordPaymentActivity($contributionId, $participantId, $financialTrxn->total_amount, $financialTrxn->currency, $financialTrxn->trxn_date);
return $financialTrxn;
}
}
/**
- * @param $entityObj
- * @param $trxnObj
+ * @param int $targetCid
* @param $activityType
- * @param $component
+ * @param string $title
* @param int $contributionId
+ * @param string $totalAmount
+ * @param string $currency
+ * @param string $trxn_date
*
- * @throws CRM_Core_Exception
+ * @throws \CRM_Core_Exception
+ * @throws \CiviCRM_API3_Exception
*/
- public static function addActivityForPayment($entityObj, $trxnObj, $activityType, $component, $contributionId) {
- if ($component == 'event') {
- $title = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Event', $entityObj->event_id, 'title');
- }
- else {
- $title = ts('Contribution');
- }
- $paymentAmount = CRM_Utils_Money::format($trxnObj->total_amount, $trxnObj->currency);
+ public static function addActivityForPayment($targetCid, $activityType, $title, $contributionId, $totalAmount, $currency, $trxn_date) {
+ $paymentAmount = CRM_Utils_Money::format($totalAmount, $currency);
$subject = "{$paymentAmount} - Offline {$activityType} for {$title}";
- $date = CRM_Utils_Date::isoToMysql($trxnObj->trxn_date);
- $targetCid = $entityObj->contact_id;
+ $date = CRM_Utils_Date::isoToMysql($trxn_date);
// source record id would be the contribution id
$srcRecId = $contributionId;
// activity params
- $activityParams = array(
+ $activityParams = [
'source_contact_id' => $targetCid,
'source_record_id' => $srcRecId,
'activity_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', $activityType),
'activity_date_time' => $date,
'status_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_status_id', 'Completed'),
'skipRecentView' => TRUE,
- );
+ ];
// create activity with target contacts
$session = CRM_Core_Session::singleton();
$activityParams['source_contact_id'] = $id;
$activityParams['target_contact_id'][] = $targetCid;
}
- // @todo use api.
- CRM_Activity_BAO_Activity::create($activityParams);
+ civicrm_api3('Activity', 'create', $activityParams);
}
/**
$paymentBalance = CRM_Contribute_BAO_Contribution::getContributionBalance($contributionId, $total);
- $contribution = civicrm_api3('Contribution', 'getsingle', array('id' => $contributionId, 'return' => array('currency', 'is_pay_later', 'contribution_status_id', 'financial_type_id')));
+ $contribution = civicrm_api3('Contribution', 'getsingle', [
+ 'id' => $contributionId,
+ 'return' => [
+ 'currency',
+ 'is_pay_later',
+ 'contribution_status_id',
+ 'financial_type_id',
+ ],
+ ]);
$info['payLater'] = $contribution['is_pay_later'];
$info['contribution_status'] = $contribution['contribution_status'];
$info['balance'] = $paymentBalance;
$info['id'] = $id;
$info['component'] = $component;
- $rows = array();
+ $rows = [];
if ($getTrxnInfo && $baseTrxnId) {
// Need to exclude fee trxn rows so filter out rows where TO FINANCIAL ACCOUNT is expense account
$sql = "
WHERE con.id = %1 AND ft.is_payment = 1
GROUP BY ft.id";
- $queryParams = array(
- 1 => array($contributionId, 'Integer'),
- 2 => array($feeFinancialAccount, 'Integer'),
- );
+ $queryParams = [
+ 1 => [$contributionId, 'Integer'],
+ 2 => [$feeFinancialAccount, 'Integer'],
+ ];
$resultDAO = CRM_Core_DAO::executeQuery($sql, $queryParams);
$statuses = CRM_Contribute_PseudoConstant::contributionStatus();
// show payment edit link only for payments done via backoffice form
$paymentEditLink = '';
if (empty($resultDAO->payment_processor_id) && CRM_Core_Permission::check('edit contributions')) {
- $links = array(
- CRM_Core_Action::UPDATE => array(
+ $links = [
+ CRM_Core_Action::UPDATE => [
'name' => "<i class='crm-i fa-pencil'></i>",
'url' => 'civicrm/payment/edit',
'class' => 'medium-popup',
'qs' => "reset=1&id=%%id%%&contribution_id=%%contribution_id%%",
'title' => ts('Edit Payment'),
- ),
- );
+ ],
+ ];
$paymentEditLink = CRM_Core_Action::formLink(
$links,
- CRM_Core_Action::mask(array(CRM_Core_Permission::EDIT)),
- array(
+ CRM_Core_Action::mask([CRM_Core_Permission::EDIT]),
+ [
'id' => $resultDAO->id,
'contribution_id' => $contributionId,
- )
+ ]
);
}
- $val = array(
+ $val = [
'id' => $resultDAO->id,
'total_amount' => $resultDAO->total_amount,
'financial_type' => $resultDAO->financial_account,
'status' => $statuses[$resultDAO->status_id],
'currency' => $resultDAO->currency,
'action' => $paymentEditLink,
- );
+ ];
if ($paidByName == 'Check') {
$val['check_number'] = $resultDAO->check_number;
}
$params['prevContribution'] = self::getOriginalContribution($params['id']);
}
- foreach (array('total_amount', 'financial_type_id', 'fee_amount') as $field) {
+ foreach (['total_amount', 'financial_type_id', 'fee_amount'] as $field) {
if (!isset($params[$field])) {
if ($field == 'total_amount' && $params['prevContribution']->tax_amount) {
// Tax amount gets added back on later....
// Assign tax Amount on update of contribution
if (!empty($params['prevContribution']->tax_amount)) {
$params['tax_amount'] = 'null';
- CRM_Price_BAO_LineItem::getLineItemArray($params, array($params['id']));
+ CRM_Price_BAO_LineItem::getLineItemArray($params, [$params['id']]);
foreach ($params['line_item'] as $setID => $priceField) {
foreach ($priceField as $priceFieldID => $priceFieldValue) {
$params['line_item'][$setID][$priceFieldID]['tax_amount'] = $params['tax_amount'];
// Get Line Item on update of contribution
if (isset($params['id'])) {
- CRM_Price_BAO_LineItem::getLineItemArray($params, array($params['id']));
+ CRM_Price_BAO_LineItem::getLineItemArray($params, [$params['id']]);
}
else {
CRM_Price_BAO_LineItem::getLineItemArray($params);
}
elseif (isset($params['api.line_item.create'])) {
// Update total amount of contribution using lineItem
- $taxAmountArray = array();
+ $taxAmountArray = [];
foreach ($params['api.line_item.create'] as $key => $value) {
if (isset($value['financial_type_id']) && array_key_exists($value['financial_type_id'], $taxRates)) {
$taxRate = $taxRates[$value['financial_type_id']];
}
else {
// update line item of contrbution
- if (isset($params['financial_type_id']) && array_key_exists($params['financial_type_id'], $taxRates) && $isLineItem) {
+ if (isset($params['financial_type_id']) && array_key_exists($params['financial_type_id'], $taxRates) && $isLineItem) {
$taxRate = $taxRates[$params['financial_type_id']];
$taxAmount = CRM_Contribute_BAO_Contribution_Utils::calculateTaxAmount($params['line_total'], $taxRate, $unknownIfMoneyIsClean);
$params['tax_amount'] = round($taxAmount['tax_amount'], 2);
}
}
$sql = 'SELECT financial_type_id FROM civicrm_line_item WHERE contribution_id = %1 GROUP BY financial_type_id;';
- $params = array(
- '1' => array($contributionId, 'Integer'),
- );
+ $params = [
+ '1' => [$contributionId, 'Integer'],
+ ];
$result = CRM_Core_DAO::executeQuery($sql, $params);
if ($result->N > 1) {
$errors['financial_type_id'] = ts('One or more line items have a different financial type than the contribution. Editing the financial type is not yet supported in this situation.');
if ($updatePledgePaymentStatus) {
CRM_Pledge_BAO_PledgePayment::updatePledgePaymentStatus($pledgeID,
- array($pledgePaymentID),
+ [$pledgePaymentID],
$contribution_status_id,
NULL,
$total_amount,
/**
* Compute the stats values
*
- * @deprecated
- *
* @param string $stat either 'mode' or 'median'
* @param string $sql
* @param string $alias of civicrm_contribution
*
* @return array|null
+ * @deprecated
+ *
*/
public static function computeStats($stat, $sql, $alias = NULL) {
CRM_Core_Error::deprecatedFunctionWarning('computeStats is now deprecated');
* @throws \CiviCRM_API3_Exception
*/
public static function isSingleLineItem($id) {
- $lineItemCount = civicrm_api3('LineItem', 'getcount', array('contribution_id' => $id));
+ $lineItemCount = civicrm_api3('LineItem', 'getcount', ['contribution_id' => $id]);
return ($lineItemCount == 1);
}
$primaryContributionID = isset($contribution->id) ? $contribution->id : $objects['first_contribution']->id;
// The previous details are used when calculating line items so keep it before any code that 'does something'
if (!empty($contribution->id)) {
- $input['prevContribution'] = CRM_Contribute_BAO_Contribution::getValues(array('id' => $contribution->id),
+ $input['prevContribution'] = CRM_Contribute_BAO_Contribution::getValues(['id' => $contribution->id],
CRM_Core_DAO::$_nullArray, CRM_Core_DAO::$_nullArray);
}
- $inputContributionWhiteList = array(
+ $inputContributionWhiteList = [
'fee_amount',
'net_amount',
'trxn_id',
'contribution_status_id',
'card_type_id',
'pan_truncation',
- );
+ ];
if (self::isSingleLineItem($primaryContributionID)) {
$inputContributionWhiteList[] = 'financial_type_id';
}
$completedContributionStatusID = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed');
- $contributionParams = array_merge(array(
+ $contributionParams = array_merge([
'contribution_status_id' => $completedContributionStatusID,
'source' => self::getRecurringContributionDescription($contribution, $event),
- ), array_intersect_key($input, array_fill_keys($inputContributionWhiteList, 1)
+ ], array_intersect_key($input, array_fill_keys($inputContributionWhiteList, 1)
));
// CRM-20678 Ensure that the currency is correct in subseqent transcations.
self::repeatTransaction($contribution, $input, $contributionParams, $paymentProcessorId);
$contributionParams['financial_type_id'] = $contribution->financial_type_id;
- $values = array();
+ $values = [];
if (isset($input['is_email_receipt'])) {
$values['is_email_receipt'] = $input['is_email_receipt'];
}
CRM_Contribute_BAO_ContributionRecur::addrecurSoftCredit($objects['contributionRecur']->id, $contribution->id);
}
- $contributionStatuses = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'contribution_status_id', array(
+ $contributionStatuses = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'contribution_status_id', [
'labelColumn' => 'name',
'flip' => 1,
- ));
+ ]);
if (isset($input['prevContribution']) && (!$input['prevContribution']->is_pay_later && $input['prevContribution']->contribution_status_id == $contributionStatuses['Pending'])) {
$input['payment_processor'] = $paymentProcessorId;
}
if (!array_key_exists('is_email_receipt', $values) ||
$values['is_email_receipt'] == 1
) {
- civicrm_api3('Contribution', 'sendconfirmation', array(
+ civicrm_api3('Contribution', 'sendconfirmation', [
'id' => $contribution->id,
'payment_processor_id' => $paymentProcessorId,
- ));
+ ]);
CRM_Core_Error::debug_log_message("Receipt sent");
}
$values['contribution_status'] = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contribution->contribution_status_id);
$return = $contribution->composeMessageArray($input, $ids, $values, $returnMessageText);
if ((!isset($input['receipt_update']) || $input['receipt_update']) && empty($contribution->receipt_date)) {
- civicrm_api3('Contribution', 'create', array('receipt_date' => 'now', 'id' => $contribution->id));
+ civicrm_api3('Contribution', 'create', [
+ 'receipt_date' => 'now',
+ 'id' => $contribution->id,
+ ]);
}
return $return;
}
/**
* Generate From email and from name in an array values
+ *
* @param array $input
* @param \CRM_Contribute_BAO_Contribution $contribution
+ *
* @return array
*/
public static function generateFromEmailAndName($input, $contribution) {
// Use input value if supplied.
if (!empty($input['receipt_from_email'])) {
- return array(CRM_Utils_array::value('receipt_from_name', $input, ''), $input['receipt_from_email']);
+ return [
+ CRM_Utils_array::value('receipt_from_name', $input, ''),
+ $input['receipt_from_email'],
+ ];
}
// if we are still empty see if we can use anything from a contribution page.
- $pageValues = array();
+ $pageValues = [];
if (!empty($contribution->contribution_page_id)) {
- $pageValues = civicrm_api3('ContributionPage', 'getsingle', array('id' => $contribution->contribution_page_id));
+ $pageValues = civicrm_api3('ContributionPage', 'getsingle', ['id' => $contribution->contribution_page_id]);
}
// if we are still empty see if we can use anything from a contribution page.
if (!empty($pageValues['receipt_from_email'])) {
- return array($pageValues['receipt_from_name'], $pageValues['receipt_from_email']);
+ return [
+ $pageValues['receipt_from_name'],
+ $pageValues['receipt_from_email'],
+ ];
}
// If we are still empty fall back to the domain or logged in user information.
return CRM_Core_BAO_Domain::getDefaultReceiptFrom();
do {
$creditNoteNum++;
$creditNoteId = CRM_Utils_Array::value('credit_notes_prefix', $prefixValue) . "" . $creditNoteNum;
- $result = civicrm_api3('Contribution', 'getcount', array(
+ $result = civicrm_api3('Contribution', 'getcount', [
'sequential' => 1,
'creditnote_id' => $creditNoteId,
- ));
+ ]);
} while ($result > 0);
return $creditNoteId;
/**
* Load related memberships.
*
+ * @param array $ids
+ *
+ * @return array $ids
+ *
+ * @throws Exception
* @deprecated
*
* Note that in theory it should be possible to retrieve these from the line_item table
*
* I don't know if it never worked or broke as a result of https://issues.civicrm.org/jira/browse/CRM-14918.
*
- * @param array $ids
- *
- * @return array $ids
- *
- * @throws Exception
*/
public function loadRelatedMembershipObjects($ids = []) {
$query = "
SELECT membership_id
FROM civicrm_membership_payment
WHERE contribution_id = %1 ";
- $params = array(1 => array($this->id, 'Integer'));
- $ids['membership'] = (array) CRM_Utils_Array::value('membership', $ids, array());
+ $params = [1 => [$this->id, 'Integer']];
+ $ids['membership'] = (array) CRM_Utils_Array::value('membership', $ids, []);
$dao = CRM_Core_DAO::executeQuery($query, $params);
while ($dao->fetch()) {
return $contribution->source;
}
elseif (!empty($contribution->contribution_page_id) && is_numeric($contribution->contribution_page_id)) {
- $contributionPageTitle = civicrm_api3('ContributionPage', 'getvalue', array(
+ $contributionPageTitle = civicrm_api3('ContributionPage', 'getvalue', [
'id' => $contribution->contribution_page_id,
'return' => 'title',
- ));
+ ]);
return ts('Online Contribution') . ': ' . $contributionPageTitle;
}
elseif ($event) {
FROM civicrm_financial_trxn ft
INNER JOIN civicrm_entity_financial_trxn eft ON eft.financial_trxn_id = ft.id AND eft.entity_table = 'civicrm_contribution'
WHERE eft.entity_id = %1 AND ft.is_payment = 1 ORDER BY ft.id DESC LIMIT 1";
- $contributionStatus = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'contribution_status_id', array(
+ $contributionStatus = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'contribution_status_id', [
'labelColumn' => 'name',
- ));
+ ]);
foreach ($contributions as $contribution) {
if (!($contributionStatus[$contribution->contribution_status_id] == 'Partially paid'
|| CRM_Utils_Array::value($contributionStatusId, $contributionStatus) == 'Partially paid')
) {
continue;
}
- $ftDao = CRM_Core_DAO::executeQuery($ftSql, array(1 => array($contribution->id, 'Integer')));
+ $ftDao = CRM_Core_DAO::executeQuery($ftSql, [
+ 1 => [
+ $contribution->id,
+ 'Integer',
+ ],
+ ]);
$ftDao->fetch();
// store financial item Proportionaly.
- $trxnParams = array(
+ $trxnParams = [
'total_amount' => $ftDao->total_amount,
'contribution_id' => $contribution->id,
- );
+ ];
self::assignProportionalLineItems($trxnParams, $ftDao->id, $contribution->total_amount);
}
}
if (!empty($lineItems)) {
// get financial item
list($ftIds, $taxItems) = self::getLastFinancialItemIds($trxnParams['contribution_id']);
- $entityParams = array(
+ $entityParams = [
'contribution_total_amount' => $contributionTotalAmount,
'trxn_total_amount' => $trxnParams['total_amount'],
'trxn_id' => $trxnId,
- );
+ ];
self::createProportionalFinancialEntries($entityParams, $lineItems, $ftIds, $taxItems);
}
}
}
$contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus($params['contribution_status_id'], 'name');
- $preferredAccountsRelationships = array(
+ $preferredAccountsRelationships = [
'Refunded' => 'Credit/Contra Revenue Account is',
'Chargeback' => 'Chargeback Account is',
- );
+ ];
if (in_array($contributionStatus, array_keys($preferredAccountsRelationships))) {
$financialTypeID = !empty($params['financial_type_id']) ? $params['financial_type_id'] : $params['prevContribution']->financial_type_id;
* @return array
*/
protected function addContributionPageValuesToValuesHeavyHandedly(&$values) {
- $contributionPageValues = array();
+ $contributionPageValues = [];
CRM_Contribute_BAO_ContributionPage::setValues(
$this->contribution_page_id,
$contributionPageValues
);
- $valuesToCopy = array(
+ $valuesToCopy = [
// These are the values that I believe to be useful.
'id',
'title',
'thankyou_text',
'thankyou_title',
- );
+ ];
foreach ($valuesToCopy as $valueToCopy) {
if (isset($contributionPageValues[$valueToCopy])) {
$values[$valueToCopy] = $contributionPageValues[$valueToCopy];
return $statusMsg;
}
- $params = array(
+ $params = [
'contribution_id' => $contributionId,
'contribution_status_id' => $statusId,
'previous_contribution_status_id' => $previousStatusId,
'receive_date' => $receiveDate,
- );
+ ];
$updateResult = CRM_Contribute_BAO_Contribution::transitionComponents($params);
break;
}
- $statusMsg .= "<br />" . ts("Membership for %1 has been %2.", array(1 => $userDisplayName, 2 => $statusNameMsgPart));
+ $statusMsg .= "<br />" . ts("Membership for %1 has been %2.", [
+ 1 => $userDisplayName,
+ 2 => $statusNameMsgPart,
+ ]);
}
if ($componentName == 'CiviEvent') {
CRM_Event_PseudoConstant::participantStatus()
);
if ($updatedStatusName == 'Cancelled') {
- $statusMsg .= "<br />" . ts("Event Registration for %1 has been Cancelled.", array(1 => $userDisplayName));
+ $statusMsg .= "<br />" . ts("Event Registration for %1 has been Cancelled.", [1 => $userDisplayName]);
}
elseif ($updatedStatusName == 'Registered') {
- $statusMsg .= "<br />" . ts("Event Registration for %1 has been updated.", array(1 => $userDisplayName));
+ $statusMsg .= "<br />" . ts("Event Registration for %1 has been updated.", [1 => $userDisplayName]);
}
}
CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name')
);
if ($updatedStatusName == 'Cancelled') {
- $statusMsg .= "<br />" . ts("Pledge Payment for %1 has been Cancelled.", array(1 => $userDisplayName));
+ $statusMsg .= "<br />" . ts("Pledge Payment for %1 has been Cancelled.", [1 => $userDisplayName]);
}
elseif ($updatedStatusName == 'Failed') {
- $statusMsg .= "<br />" . ts("Pledge Payment for %1 has been Failed.", array(1 => $userDisplayName));
+ $statusMsg .= "<br />" . ts("Pledge Payment for %1 has been Failed.", [1 => $userDisplayName]);
}
elseif ($updatedStatusName == 'Completed') {
- $statusMsg .= "<br />" . ts("Pledge Payment for %1 has been updated.", array(1 => $userDisplayName));
+ $statusMsg .= "<br />" . ts("Pledge Payment for %1 has been updated.", [1 => $userDisplayName]);
}
}
}
* @return \CRM_Contribute_BAO_Contribution|null
*/
private static function getOriginalContribution($contributionID) {
- return self::getValues(array('id' => $contributionID), CRM_Core_DAO::$_nullArray, CRM_Core_DAO::$_nullArray);
+ return self::getValues(['id' => $contributionID], CRM_Core_DAO::$_nullArray, CRM_Core_DAO::$_nullArray);
}
/**
* for historical reasons. Going forwards we can hope to add tests & improve readibility
* of that function
*
- * @todo move recordFinancialAccounts & helper functions to their own class?
- *
* @param array $params
* Params as passed to contribution.create
*
* @param int $previousLineItemTotal
*
* @return float
+ * @todo move recordFinancialAccounts & helper functions to their own class?
+ *
*/
protected static function getFinancialItemAmountFromParams($params, $context, $lineItemDetails, $isARefund, $previousLineItemTotal) {
if ($context == 'changedAmount') {
elseif (empty($lineItemDetails['line_total'])) {
// follow legacy code path
Civi::log()
- ->warning('Deprecated bit of code, please log a ticket explaining how you got here!', array('civi.tag' => 'deprecated'));
+ ->warning('Deprecated bit of code, please log a ticket explaining how you got here!', ['civi.tag' => 'deprecated']);
return $params['total_amount'];
}
else {
public static function updateMembershipBasedOnCompletionOfContribution($contribution, $primaryContributionID, $changeDate) {
$memberships = self::getRelatedMemberships($contribution->id);
foreach ($memberships as $membership) {
- $membershipParams = array(
+ $membershipParams = [
'id' => $membership['id'],
'contact_id' => $membership['contact_id'],
'is_test' => $membership['is_test'],
'membership_type_id' => $membership['membership_type_id'],
'membership_activity_status' => 'Completed',
- );
+ ];
$currentMembership = CRM_Member_BAO_Membership::getContactMembership($membershipParams['contact_id'],
$membershipParams['membership_type_id'],
);
// @todo remove all this stuff in favour of letting the api call further down handle in
// (it is a duplication of what the api does).
- $dates = array_fill_keys(array(
+ $dates = array_fill_keys([
'join_date',
'start_date',
'end_date',
- ), NULL);
+ ], NULL);
if ($currentMembership) {
/*
* Fixed FOR CRM-4433
// but not for Failed contributions, where we don't accept additional payments at the moment.
// (in some cases the contribution is 'Pending' and only the payment is failed. In those we
// do accept more payments agains them.
- return array();
+ return [];
}
- $actionLinks = array();
+ $actionLinks = [];
if ((int) $balance > 0) {
if (CRM_Core_Config::isEnabledBackOfficeCreditCardPayments()) {
- $actionLinks[] = array(
- 'url' => CRM_Utils_System::url('civicrm/payment', array(
+ $actionLinks[] = [
+ 'url' => CRM_Utils_System::url('civicrm/payment', [
'action' => 'add',
'reset' => 1,
'id' => $id,
'mode' => 'live',
- )),
+ ]),
'title' => ts('Submit Credit Card payment'),
- );
+ ];
}
- $actionLinks[] = array(
- 'url' => CRM_Utils_System::url('civicrm/payment', array(
+ $actionLinks[] = [
+ 'url' => CRM_Utils_System::url('civicrm/payment', [
'action' => 'add',
'reset' => 1,
'id' => $id,
- )),
+ ]),
'title' => ts('Record Payment'),
- );
+ ];
}
elseif ((int) $balance < 0) {
- $actionLinks[] = array(
- 'url' => CRM_Utils_System::url('civicrm/payment', array(
+ $actionLinks[] = [
+ 'url' => CRM_Utils_System::url('civicrm/payment', [
'action' => 'add',
'reset' => 1,
'id' => $id,
- )),
+ ]),
'title' => ts('Record Refund'),
- );
+ ];
}
return $actionLinks;
}
* @return null
*/
public static function recordAlwaysAccountsReceivable(&$trxnParams, $contributionParams) {
- if (!self::checkContributeSettings('always_post_to_accounts_receivable')) {
+ if (!Civi::settings()->get('always_post_to_accounts_receivable')) {
return NULL;
}
$statusId = $contributionParams['contribution']->contribution_status_id;
$previousContributionStatus = empty($contributionParams['prevContribution']) ? NULL : $contributionStatuses[$contributionParams['prevContribution']->contribution_status_id];
// Return if contribution status is not completed.
if (!($contributionStatus == 'Completed' && (empty($previousContributionStatus)
- || (!empty($previousContributionStatus) && $previousContributionStatus == 'Pending'
- && $contributionParams['prevContribution']->is_pay_later == 0
- )))
+ || (!empty($previousContributionStatus) && $previousContributionStatus == 'Pending'
+ && $contributionParams['prevContribution']->is_pay_later == 0
+ )))
) {
return NULL;
}
INNER JOIN civicrm_financial_account cfa ON ce.financial_account_id = cfa.id
WHERE `entity_table` = 'civicrm_financial_type' AND cfa.is_tax = 1 AND ce.account_relationship = %1 GROUP BY cfa.id";
$accountRel = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Sales Tax Account is' "));
- $queryParams = array(1 => array($accountRel, 'Integer'));
+ $queryParams = [1 => [$accountRel, 'Integer']];
$dao = CRM_Core_DAO::executeQuery($query, $queryParams);
- $financialAccount = array();
+ $financialAccount = [];
while ($dao->fetch()) {
$financialAccount[$dao->id] = $dao->id;
}
*
* @param array $eftParams
*
+ * @throws \CiviCRM_API3_Exception
*/
public static function createProportionalEntry($entityParams, $eftParams) {
$paid = 0;
FROM civicrm_financial_item fi
INNER JOIN civicrm_line_item li ON li.id = fi.entity_id and fi.entity_table = 'civicrm_line_item'
WHERE li.contribution_id = %1";
- $dao = CRM_Core_DAO::executeQuery($sql, array(1 => array($contributionId, 'Integer')));
- $ftIds = $taxItems = array();
+ $dao = CRM_Core_DAO::executeQuery($sql, [
+ 1 => [
+ $contributionId,
+ 'Integer',
+ ],
+ ]);
+ $ftIds = $taxItems = [];
$salesTaxFinancialAccount = self::getSalesTaxFinancialAccounts();
while ($dao->fetch()) {
/* if sales tax item*/
if (in_array($dao->financial_account_id, $salesTaxFinancialAccount)) {
- $taxItems[$dao->price_field_value_id] = array(
+ $taxItems[$dao->price_field_value_id] = [
'financial_item_id' => $dao->id,
'amount' => $dao->tax_amount,
- );
+ ];
}
else {
$ftIds[$dao->price_field_value_id] = $dao->id;
}
}
- return array($ftIds, $taxItems);
+ return [$ftIds, $taxItems];
}
/**
*
* @param array $taxItems
*
+ * @throws \CiviCRM_API3_Exception
*/
public static function createProportionalFinancialEntries($entityParams, $lineItems, $ftIds, $taxItems) {
- $eftParams = array(
+ $eftParams = [
'entity_table' => 'civicrm_financial_item',
'financial_trxn_id' => $entityParams['trxn_id'],
- );
+ ];
foreach ($lineItems as $key => $value) {
if ($value['qty'] == 0) {
continue;
* @throws \CRM_Core_Exception
*/
protected function loadRelatedEntitiesByID($ids) {
- $entities = array(
+ $entities = [
'contact' => 'CRM_Contact_BAO_Contact',
'contributionRecur' => 'CRM_Contribute_BAO_ContributionRecur',
'contributionType' => 'CRM_Financial_BAO_FinancialType',
'financialType' => 'CRM_Financial_BAO_FinancialType',
'contributionPage' => 'CRM_Contribute_BAO_ContributionPage',
- );
+ ];
foreach ($entities as $entity => $bao) {
if (!empty($ids[$entity])) {
$this->_relatedObjects[$entity] = new $bao();
* @param bool $escapeSmarty
*
* @return array
+ * @throws \CiviCRM_API3_Exception
*/
public static function replaceContributionTokens(
$contributionIds,
$escapeSmarty
) {
if (empty($contributionIds)) {
- return array();
+ return [];
}
- $contributionDetails = array();
+ $contributionDetails = [];
foreach ($contributionIds as $id) {
- $result = civicrm_api3('Contribution', 'get', array('id' => $id));
+ $result = civicrm_api3('Contribution', 'get', ['id' => $id]);
$contributionDetails[$result['values'][$result['id']]['contact_id']]['subject'] = CRM_Utils_Token::replaceContributionTokens($subject, $result, FALSE, $subjectToken, FALSE, $escapeSmarty);
$contributionDetails[$result['values'][$result['id']]['contact_id']]['text'] = CRM_Utils_Token::replaceContributionTokens($text, $result, FALSE, $messageToken, FALSE, $escapeSmarty);
$contributionDetails[$result['values'][$result['id']]['contact_id']]['html'] = CRM_Utils_Token::replaceContributionTokens($html, $result, FALSE, $messageToken, FALSE, $escapeSmarty);
'title' => ts('Copy of') . ' ',
],
];
- $copy = &CRM_Core_DAO::copyGeneric('CRM_Contribute_DAO_ContributionPage', [
+ $copy = CRM_Core_DAO::copyGeneric('CRM_Contribute_DAO_ContributionPage', [
'id' => $id,
], NULL, $fieldsFix);
//copying all the blocks pertaining to the contribution page
- $copyPledgeBlock = &CRM_Core_DAO::copyGeneric('CRM_Pledge_DAO_PledgeBlock', [
+ $copyPledgeBlock = CRM_Core_DAO::copyGeneric('CRM_Pledge_DAO_PledgeBlock', [
'entity_id' => $id,
'entity_table' => 'civicrm_contribution_page',
], [
'entity_id' => $copy->id,
]);
- $copyMembershipBlock = &CRM_Core_DAO::copyGeneric('CRM_Member_DAO_MembershipBlock', [
+ $copyMembershipBlock = CRM_Core_DAO::copyGeneric('CRM_Member_DAO_MembershipBlock', [
'entity_id' => $id,
'entity_table' => 'civicrm_contribution_page',
], [
'entity_id' => $copy->id,
]);
- $copyUFJoin = &CRM_Core_DAO::copyGeneric('CRM_Core_DAO_UFJoin', [
+ $copyUFJoin = CRM_Core_DAO::copyGeneric('CRM_Core_DAO_UFJoin', [
'entity_id' => $id,
'entity_table' => 'civicrm_contribution_page',
], [
'entity_id' => $copy->id,
]);
- $copyWidget = &CRM_Core_DAO::copyGeneric('CRM_Contribute_DAO_Widget', [
+ $copyWidget = CRM_Core_DAO::copyGeneric('CRM_Contribute_DAO_Widget', [
'contribution_page_id' => $id,
], [
'contribution_page_id' => $copy->id,
//copy price sets
CRM_Price_BAO_PriceSet::copyPriceSet('civicrm_contribution_page', $id, $copy->id);
- $copyTellFriend = &CRM_Core_DAO::copyGeneric('CRM_Friend_DAO_Friend', [
+ $copyTellFriend = CRM_Core_DAO::copyGeneric('CRM_Friend_DAO_Friend', [
'entity_id' => $id,
'entity_table' => 'civicrm_contribution_page',
], [
'entity_id' => $copy->id,
]);
- $copyPersonalCampaignPages = &CRM_Core_DAO::copyGeneric('CRM_PCP_DAO_PCPBlock', [
+ $copyPersonalCampaignPages = CRM_Core_DAO::copyGeneric('CRM_PCP_DAO_PCPBlock', [
'entity_id' => $id,
'entity_table' => 'civicrm_contribution_page',
], [
'target_entity_id' => $copy->id,
]);
- $copyPremium = &CRM_Core_DAO::copyGeneric('CRM_Contribute_DAO_Premium', [
+ $copyPremium = CRM_Core_DAO::copyGeneric('CRM_Contribute_DAO_Premium', [
'entity_id' => $id,
'entity_table' => 'civicrm_contribution_page',
], [
default:
//all other elements are handle in this case
$fldName = substr($name, 13);
- CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes);
- $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_contribution.financial_type_id", 'IN', array_keys($financialTypes), 'String');
if (!isset($fields[$fldName])) {
// CRM-12597
CRM_Core_Session::setStatus(ts(
$now = time();
if ($dao->start_date) {
$startDate = CRM_Utils_Date::unixTime($dao->start_date);
+ $data['start_date'] = $dao->start_date;
if ($startDate && $startDate >= $now) {
$data['is_active'] = FALSE;
$data['campaign_start'] = ts('Campaign starts on %1', [
if ($dao->end_date) {
$endDate = CRM_Utils_Date::unixTime($dao->end_date);
+ $data['end_date'] = $dao->end_date;
if ($endDate &&
$endDate < $now
) {
*
* Generated from xml/schema/CRM/Contribute/Contribution.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:99cdf75ae6e6bf73bc5ff6871a3baf82)
+ * (GenCodeChecksum:7a81b495b5661ae881321938d4ee38c9)
*/
/**
/**
* Contribution ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* FK to Financial Type for (total_amount - non_deductible_amount).
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
/**
* The Contribution Page which triggered this contribution
*
- * @var int unsigned
+ * @var int
*/
public $contribution_page_id;
/**
* FK to Payment Instrument
*
- * @var int unsigned
+ * @var int
*/
public $payment_instrument_id;
/**
* Conditional foreign key to civicrm_contribution_recur id. Each contribution made in connection with a recurring contribution carries a foreign key to the recurring contribution record. This assumes we can track these processor initiated events.
*
- * @var int unsigned
+ * @var int
*/
public $contribution_recur_id;
/**
- * @var boolean
+ * @var bool
*/
public $is_test;
/**
- * @var boolean
+ * @var bool
*/
public $is_pay_later;
/**
- * @var int unsigned
+ * @var int
*/
public $contribution_status_id;
/**
* Conditional foreign key to civicrm_address.id. We insert an address record for each contribution when we have associated billing name and address data.
*
- * @var int unsigned
+ * @var int
*/
public $address_id;
/**
* The campaign for which this contribution has been triggered.
*
- * @var int unsigned
+ * @var int
*/
public $campaign_id;
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'contribution_page_id' => [
'name' => 'contribution_page_id',
'table' => 'civicrm_contribution_page',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'payment_instrument_id' => [
'name' => 'payment_instrument_id',
'pseudoconstant' => [
'optionGroupName' => 'payment_instrument',
'optionEditPath' => 'civicrm/admin/options/payment_instrument',
- ]
+ ],
],
'receive_date' => [
'name' => 'receive_date',
'description' => ts('Portion of total amount which is NOT tax deductible. Equal to total_amount for non-deductible financial types.'),
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_contribution.non_deductible_amount',
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_contribution.total_amount',
'description' => ts('actual processor fee if known - may be 0.'),
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_contribution.fee_amount',
'description' => ts('actual funds transfer amount. total less fees. if processor does not report actual fee during transaction, this is set to total_amount.'),
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_contribution.net_amount',
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'cancel_date' => [
'name' => 'cancel_date',
'pseudoconstant' => [
'optionGroupName' => 'contribution_status',
'optionEditPath' => 'civicrm/admin/options/contribution_status',
- ]
+ ],
],
'contribution_address_id' => [
'name' => 'address_id',
'table' => 'civicrm_campaign',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'creditnote_id' => [
'name' => 'creditnote_id',
'description' => ts('Total tax amount of this contribution.'),
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_contribution.tax_amount',
*
* Generated from xml/schema/CRM/Contribute/ContributionPage.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:923a4b6d8829d7aa6cc24e18d62114ff)
+ * (GenCodeChecksum:c6e11bf69550f2253d2a287e8ebeae3d)
*/
/**
/**
* Contribution Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* default financial type assigned to contributions submitted via this page, e.g. Contribution, Campaign Contribution
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
/**
* if true - processing logic must reject transaction at confirmation stage if pay method != credit card
*
- * @var boolean
+ * @var bool
*/
public $is_credit_card_only;
/**
* if true - allows real-time monetary transactions otherwise non-monetary transactions
*
- * @var boolean
+ * @var bool
*/
public $is_monetary;
/**
* if true - allows recurring contributions, valid only for PayPal_Standard
*
- * @var boolean
+ * @var bool
*/
public $is_recur;
/**
* if false, the confirm page in contribution pages gets skipped
*
- * @var boolean
+ * @var bool
*/
public $is_confirm_enabled;
/**
* if true - supports recurring intervals
*
- * @var boolean
+ * @var bool
*/
public $is_recur_interval;
/**
* if true - asks user for recurring installments
*
- * @var boolean
+ * @var bool
*/
public $is_recur_installments;
/**
* if true - user is able to adjust payment start date
*
- * @var boolean
+ * @var bool
*/
public $adjust_recur_start_date;
/**
* if true - allows the user to send payment directly to the org later
*
- * @var boolean
+ * @var bool
*/
public $is_pay_later;
/**
* is partial payment enabled for this online contribution page
*
- * @var boolean
+ * @var bool
*/
public $is_partial_payment;
/**
* if true, page will include an input text field where user can enter their own amount
*
- * @var boolean
+ * @var bool
*/
public $is_allow_other_amount;
/**
* FK to civicrm_option_value.
*
- * @var int unsigned
+ * @var int
*/
public $default_amount_id;
/**
* if true, receipt is automatically emailed to contact on success
*
- * @var boolean
+ * @var bool
*/
public $is_email_receipt;
/**
* Is this property active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this property active?
*
- * @var boolean
+ * @var bool
*/
public $amount_block_is_active;
/**
* FK to civicrm_contact, who created this contribution page
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
/**
* The campaign for which we are collecting contributions with this page.
*
- * @var int unsigned
+ * @var int
*/
public $campaign_id;
/**
* Can people share the contribution page through social media?
*
- * @var boolean
+ * @var bool
*/
public $is_share;
/**
* if true - billing block is required for online contribution page
*
- * @var boolean
+ * @var bool
*/
public $is_billing_required;
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'payment_processor' => [
'name' => 'payment_processor',
'table' => 'civicrm_payment_processor',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'is_credit_card_only' => [
'name' => 'is_credit_card_only',
'optionGroupName' => 'recur_frequency_units',
'keyColumn' => 'name',
'optionEditPath' => 'civicrm/admin/options/recur_frequency_units',
- ]
+ ],
],
'is_recur_interval' => [
'name' => 'is_recur_interval',
'description' => ts('Minimum initial amount for partial payment'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_contribution_page.min_initial_amount',
'table_name' => 'civicrm_contribution_page',
'description' => ts('if other amounts allowed, user can configure minimum allowed.'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_contribution_page.min_amount',
'table_name' => 'civicrm_contribution_page',
'description' => ts('if other amounts allowed, user can configure maximum allowed.'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_contribution_page.max_amount',
'table_name' => 'civicrm_contribution_page',
'description' => ts('The target goal for this page, allows people to build a goal meter'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_contribution_page.goal_amount',
'table_name' => 'civicrm_contribution_page',
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'campaign_id' => [
'name' => 'campaign_id',
'table' => 'civicrm_campaign',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'is_share' => [
'name' => 'is_share',
*
* Generated from xml/schema/CRM/Contribute/ContributionProduct.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b5a1b3fa2819c4dfe99635fef8583a42)
+ * (GenCodeChecksum:565e6473df8dd62f25ba951b18860b5c)
*/
/**
public static $_log = TRUE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
- * @var int unsigned
+ * @var int
*/
public $product_id;
/**
- * @var int unsigned
+ * @var int
*/
public $contribution_id;
/**
* FK to Financial Type(for membership price sets only).
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Contribute/ContributionRecur.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:9859d3b98d51f0f1df207253199186ab)
+ * (GenCodeChecksum:02897f2c575bc43e915d0b7e8ee68fbb)
*/
/**
/**
* Contribution Recur ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign key to civicrm_contact.id.
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Number of time units for recurrence of payment.
*
- * @var int unsigned
+ * @var int
*/
public $frequency_interval;
/**
* Total number of payments to be made. Set this to 0 if this is an open-ended commitment i.e. no set end date.
*
- * @var int unsigned
+ * @var int
*/
public $installments;
/**
* Optionally used to store a link to a payment token used for this recurring contribution.
*
- * @var int unsigned
+ * @var int
*/
public $payment_token_id;
public $invoice_id;
/**
- * @var int unsigned
+ * @var int
*/
public $contribution_status_id;
/**
- * @var boolean
+ * @var bool
*/
public $is_test;
/**
* Day in the period when the payment should be charged e.g. 1st of month, 15th etc.
*
- * @var int unsigned
+ * @var int
*/
public $cycle_day;
/**
* Number of failed charge attempts since last success. Business rule could be set to deactivate on more than x failures.
*
- * @var int unsigned
+ * @var int
*/
public $failure_count;
/**
* Some systems allow contributor to set a number of installments - but then auto-renew the subscription or commitment if they do not cancel.
*
- * @var boolean
+ * @var bool
*/
public $auto_renew;
/**
* Foreign key to civicrm_payment_processor.id
*
- * @var int unsigned
+ * @var int
*/
public $payment_processor_id;
/**
* FK to Financial Type
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
/**
* FK to Payment Instrument
*
- * @var int unsigned
+ * @var int
*/
public $payment_instrument_id;
/**
* The campaign for which this contribution has been triggered.
*
- * @var int unsigned
+ * @var int
*/
public $campaign_id;
/**
* if true, receipt is automatically emailed to contact on each successful payment
*
- * @var boolean
+ * @var bool
*/
public $is_email_receipt;
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_contribution_recur.amount',
'table_name' => 'civicrm_contribution_recur',
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'frequency_unit' => [
'name' => 'frequency_unit',
'optionGroupName' => 'recur_frequency_units',
'keyColumn' => 'name',
'optionEditPath' => 'civicrm/admin/options/recur_frequency_units',
- ]
+ ],
],
'frequency_interval' => [
'name' => 'frequency_interval',
'pseudoconstant' => [
'optionGroupName' => 'contribution_status',
'optionEditPath' => 'civicrm/admin/options/contribution_status',
- ]
+ ],
],
'is_test' => [
'name' => 'is_test',
'table' => 'civicrm_payment_processor',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'financial_type_id' => [
'name' => 'financial_type_id',
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'payment_instrument_id' => [
'name' => 'payment_instrument_id',
'pseudoconstant' => [
'optionGroupName' => 'payment_instrument',
'optionEditPath' => 'civicrm/admin/options/payment_instrument',
- ]
+ ],
],
'contribution_campaign_id' => [
'name' => 'campaign_id',
'table' => 'civicrm_campaign',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'is_email_receipt' => [
'name' => 'is_email_receipt',
*
* Generated from xml/schema/CRM/Contribute/ContributionSoft.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b9a4bdee130cdaf934a53e456cd0e3e8)
+ * (GenCodeChecksum:12f49d75296e9500e850dd63741372ea)
*/
/**
/**
* Soft Contribution ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to contribution table.
*
- * @var int unsigned
+ * @var int
*/
public $contribution_id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* FK to civicrm_pcp.id
*
- * @var int unsigned
+ * @var int
*/
public $pcp_id;
/**
- * @var boolean
+ * @var bool
*/
public $pcp_display_in_roll;
/**
* Soft Credit Type ID.Implicit FK to civicrm_option_value where option_group = soft_credit_type.
*
- * @var int unsigned
+ * @var int
*/
public $soft_credit_type_id;
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_contribution_soft.amount',
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'pcp_id' => [
'name' => 'pcp_id',
'table' => 'civicrm_pcp',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'pcp_display_in_roll' => [
'name' => 'pcp_display_in_roll',
'pseudoconstant' => [
'optionGroupName' => 'soft_credit_type',
'optionEditPath' => 'civicrm/admin/options/soft_credit_type',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Contribute/Premium.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:09b04d3dd373d7dc64bc873b56b5e171)
+ * (GenCodeChecksum:5193d923732bb6b983b32e86e9441d72)
*/
/**
public static $_log = TRUE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
public $entity_table;
/**
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* Is the Premiums feature enabled for this page?
*
- * @var boolean
+ * @var bool
*/
public $premiums_active;
/**
* Boolean. Should we automatically display minimum contribution amount text after the premium descriptions.
*
- * @var boolean
+ * @var bool
*/
public $premiums_display_min_contribution;
public $premiums_nothankyou_label;
/**
- * @var int unsigned
+ * @var int
*/
public $premiums_nothankyou_position;
*
* Generated from xml/schema/CRM/Contribute/PremiumsProduct.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b6944ad257ea16a60d6c1cf79ca391b0)
+ * (GenCodeChecksum:400970a4b33e5fc5af3784b5dbf9f90c)
*/
/**
/**
* Contribution ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign key to premiums settings record.
*
- * @var int unsigned
+ * @var int
*/
public $premiums_id;
/**
* Foreign key to each product object.
*
- * @var int unsigned
+ * @var int
*/
public $product_id;
/**
- * @var int unsigned
+ * @var int
*/
public $weight;
/**
* FK to Financial Type.
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Contribute/Product.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:7db77c58d48112d25da791aba4586080)
+ * (GenCodeChecksum:27002591d220b4bc2498b367bef17367)
*/
/**
public static $_log = TRUE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Financial Type.
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
/**
* Disabling premium removes it from the premiums_premium join table below.
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Rolling means we set start/end based on current day, fixed means we set start/end for current year or month
- (e.g. 1 year + fixed -> we would set start/end for 1/1/06 thru 12/31/06 for any premium chosen in 2006)
+ * (e.g. 1 year + fixed -> we would set start/end for 1/1/06 thru 12/31/06 for any premium chosen in 2006)
*
* @var string
*/
'description' => ts('Sell price or market value for premiums. For tax-deductible contributions, this will be stored as non_deductible_amount in the contribution record.'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_product.price',
'table_name' => 'civicrm_product',
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'financial_type_id' => [
'name' => 'financial_type_id',
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'min_contribution' => [
'name' => 'min_contribution',
'description' => ts('Minimum contribution required to be eligible to select this premium.'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_product.min_contribution',
'table_name' => 'civicrm_product',
'description' => ts('Actual cost of this product. Useful to determine net return from sale or using this as an incentive.'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_product.cost',
'table_name' => 'civicrm_product',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::periodType',
- ]
+ ],
],
'fixed_period_start_day' => [
'name' => 'fixed_period_start_day',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getPremiumUnits',
- ]
+ ],
],
'duration_interval' => [
'name' => 'duration_interval',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getPremiumUnits',
- ]
+ ],
],
'frequency_interval' => [
'name' => 'frequency_interval',
*
* Generated from xml/schema/CRM/Contribute/Widget.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0605d26592e841a169687b225d891bc8)
+ * (GenCodeChecksum:c958a95fa7e2ff07a891780d343cd308)
*/
/**
/**
* Contribution Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* The Contribution Page which triggered this contribution
*
- * @var int unsigned
+ * @var int
*/
public $contribution_page_id;
/**
* Is this property active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
* Is this contribution associated with an online
* financial transaction
*
- * @var boolean
+ * @var bool
*/
public $_online = FALSE;
* Is this contribution associated with an online.
* financial transaction
*
- * @var boolean
+ * @var bool
*/
public $_online = FALSE;
public $_fromEmails;
/**
- * ID of from email
- * @var integer
+ * ID of from email.
+ *
+ * @var int
*/
public $fromEmailId;
public $userEmail;
/**
- * Price set ID
- * @var integer
+ * Price set ID.
+ *
+ * @var int
*/
public $_priceSetId;
}
// CRM-16189, add Revenue Recognition Date
- if (CRM_Contribute_BAO_Contribution::checkContributeSettings('deferred_revenue_enabled')) {
+ if (Civi::settings()->get('deferred_revenue_enabled')) {
$revenueDate = $this->add('date', 'revenue_recognition_date', ts('Revenue Recognition Date'), CRM_Core_SelectValues::date(NULL, 'M Y', NULL, 5));
if ($this->_id && !CRM_Contribute_BAO_Contribution::allowUpdateRevenueRecognitionDate($this->_id)) {
$revenueDate->freeze();
/**
* Pcp id
*
- * @var integer
+ * @var int
*/
public $_pcpId;
/**
* Contribution page supports memberships
- * @var boolean
+ * @var bool
*/
public $_useForMember;
/**
* Are we in single form mode or wizard mode?
*
- * @var boolean
+ * @var bool
*/
protected $_single;
/**
* Is this the first page?
*
- * @var boolean
+ * @var bool
*/
protected $_first = FALSE;
/**
* Is this the last page?
*
- * @var boolean
+ * @var bool
*/
protected $_last = FALSE;
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
/**
* The flag to tell if there are soft credits included.
*
- * @var boolean
+ * @var bool
*/
public $_includesSoftCredits = FALSE;
* Are we operating in "single mode", i.e. deleting one
* specific contribution?
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
* Are we operating in "single mode", i.e. sending email to one
* specific contact?
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
* Are we operating in "single mode", i.e. updating the task of only
* one specific contribution?
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
* Are we operating in "single mode", i.e. updating the task of only
* one specific contribution?
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
* Are we operating in "single mode", i.e. updating the task of only
* one specific contribution?
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
public $_type;
/**
- * Is this field required
- * @var boolean
+ * Is this field required.
+ *
+ * @var bool
*/
public $_required;
/**
* Whether the file has a column header or not
*
- * @var boolean
+ * @var bool
*/
protected $_haveColumnHeader;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
* Different possible actions are defined here. Keep in sync with the
* constant from CRM_Core_Form for various modes.
*
- * @var integer const
+ * @var int
*/
const
NONE = 0,
return ["sms_phone_missing" => "Couldn't find recipient's phone number."];
}
+ // dev/core#369 If an SMS provider is deleted then the relevant row in the action_schedule_table is set to NULL
+ // So we need to exclude them.
+ if (CRM_Utils_System::isNull($schedule->sms_provider_id)) {
+ return ["sms_provider_missing" => "SMS reminder cannot be sent because the SMS provider has been deleted."];
+ }
+
$messageSubject = $tokenRow->render('subject');
$sms_body_text = $tokenRow->render('sms_body_text');
$addressDAO->copyValues($params);
$addressDAO->id = $dao->id;
$addressDAO->save();
- $addressDAO->free();
}
}
$block->is_primary = FALSE;
$block->save();
}
- $block->free();
}
}
}
if (!$dao->fetch()) {
CRM_Core_Error::fatal();
}
- $dao->free();
$fieldValues = array($dao->table_name, $dao->column_name, $dao->id);
$cache->set($cacheKey, $fieldValues);
}
$params = [];
$sqlParamKey = 1;
+ $subType = '';
if (!empty($subTypes)) {
foreach ($subTypes as $key => $subType) {
$subTypeClauses[] = self::whereListHas("civicrm_custom_group.extends_entity_column_value", self::validateSubTypeByEntity($entityType, $subType));
}
if (empty($groupTree)) {
- $groupTree = $multipleFieldGroups = [];
- $crmDAO = CRM_Core_DAO::executeQuery($queryString, $params);
- $customValueTables = [];
-
- // process records
- while ($crmDAO->fetch()) {
- // get the id's
- $groupID = $crmDAO->civicrm_custom_group_id;
- $fieldId = $crmDAO->civicrm_custom_field_id;
- if ($crmDAO->civicrm_custom_group_is_multiple) {
- $multipleFieldGroups[$groupID] = $crmDAO->civicrm_custom_group_table_name;
- }
- // create an array for groups if it does not exist
- if (!array_key_exists($groupID, $groupTree)) {
- $groupTree[$groupID] = [];
- $groupTree[$groupID]['id'] = $groupID;
-
- // populate the group information
- foreach ($toReturn['custom_group'] as $fieldName) {
- $fullFieldName = "civicrm_custom_group_$fieldName";
- if ($fieldName == 'id' ||
- is_null($crmDAO->$fullFieldName)
- ) {
- continue;
- }
- // CRM-5507
- // This is an old bit of code - per the CRM number & probably does not work reliably if
- // that one contact sub-type exists.
- if ($fieldName == 'extends_entity_column_value' && !empty($subTypes[0])) {
- $groupTree[$groupID]['subtype'] = self::validateSubTypeByEntity($entityType, $subType);
- }
- $groupTree[$groupID][$fieldName] = $crmDAO->$fullFieldName;
- }
- $groupTree[$groupID]['fields'] = [];
-
- $customValueTables[$crmDAO->civicrm_custom_group_table_name] = [];
- }
-
- // add the fields now (note - the query row will always contain a field)
- // we only reset this once, since multiple values come is as multiple rows
- if (!array_key_exists($fieldId, $groupTree[$groupID]['fields'])) {
- $groupTree[$groupID]['fields'][$fieldId] = [];
- }
-
- $customValueTables[$crmDAO->civicrm_custom_group_table_name][$crmDAO->civicrm_custom_field_column_name] = 1;
- $groupTree[$groupID]['fields'][$fieldId]['id'] = $fieldId;
- // populate information for a custom field
- foreach ($toReturn['custom_field'] as $fieldName) {
- $fullFieldName = "civicrm_custom_field_$fieldName";
- if ($fieldName == 'id' ||
- is_null($crmDAO->$fullFieldName)
- ) {
- continue;
- }
- $groupTree[$groupID]['fields'][$fieldId][$fieldName] = $crmDAO->$fullFieldName;
- }
- }
-
- if (!empty($customValueTables)) {
- $groupTree['info'] = ['tables' => $customValueTables];
- }
+ list($multipleFieldGroups, $groupTree) = self::buildGroupTree($entityType, $toReturn, $subTypes, $queryString, $params, $subType);
$cache->set($cacheKey, $groupTree);
$cache->set($multipleFieldGroupCacheKey, $multipleFieldGroups);
return $multipleGroup;
}
+ /**
+ * Build the metadata tree for the custom group.
+ *
+ * @param string $entityType
+ * @param array $toReturn
+ * @param array $subTypes
+ * @param string $queryString
+ * @param array $params
+ * @param string $subType
+ *
+ * @return array
+ * @throws \CRM_Core_Exception
+ */
+ private static function buildGroupTree($entityType, $toReturn, $subTypes, $queryString, $params, $subType) {
+ $groupTree = $multipleFieldGroups = [];
+ $crmDAO = CRM_Core_DAO::executeQuery($queryString, $params);
+ $customValueTables = [];
+
+ // process records
+ while ($crmDAO->fetch()) {
+ // get the id's
+ $groupID = $crmDAO->civicrm_custom_group_id;
+ $fieldId = $crmDAO->civicrm_custom_field_id;
+ if ($crmDAO->civicrm_custom_group_is_multiple) {
+ $multipleFieldGroups[$groupID] = $crmDAO->civicrm_custom_group_table_name;
+ }
+ // create an array for groups if it does not exist
+ if (!array_key_exists($groupID, $groupTree)) {
+ $groupTree[$groupID] = [];
+ $groupTree[$groupID]['id'] = $groupID;
+
+ // populate the group information
+ foreach ($toReturn['custom_group'] as $fieldName) {
+ $fullFieldName = "civicrm_custom_group_$fieldName";
+ if ($fieldName == 'id' ||
+ is_null($crmDAO->$fullFieldName)
+ ) {
+ continue;
+ }
+ // CRM-5507
+ // This is an old bit of code - per the CRM number & probably does not work reliably if
+ // that one contact sub-type exists.
+ if ($fieldName == 'extends_entity_column_value' && !empty($subTypes[0])) {
+ $groupTree[$groupID]['subtype'] = self::validateSubTypeByEntity($entityType, $subType);
+ }
+ $groupTree[$groupID][$fieldName] = $crmDAO->$fullFieldName;
+ }
+ $groupTree[$groupID]['fields'] = [];
+
+ $customValueTables[$crmDAO->civicrm_custom_group_table_name] = [];
+ }
+
+ // add the fields now (note - the query row will always contain a field)
+ // we only reset this once, since multiple values come is as multiple rows
+ if (!array_key_exists($fieldId, $groupTree[$groupID]['fields'])) {
+ $groupTree[$groupID]['fields'][$fieldId] = [];
+ }
+
+ $customValueTables[$crmDAO->civicrm_custom_group_table_name][$crmDAO->civicrm_custom_field_column_name] = 1;
+ $groupTree[$groupID]['fields'][$fieldId]['id'] = $fieldId;
+ // populate information for a custom field
+ foreach ($toReturn['custom_field'] as $fieldName) {
+ $fullFieldName = "civicrm_custom_field_$fieldName";
+ if ($fieldName == 'id' ||
+ is_null($crmDAO->$fullFieldName)
+ ) {
+ continue;
+ }
+ $groupTree[$groupID]['fields'][$fieldId][$fieldName] = $crmDAO->$fullFieldName;
+ }
+ }
+
+ if (!empty($customValueTables)) {
+ $groupTree['info'] = ['tables' => $customValueTables];
+ }
+ return [$multipleFieldGroups, $groupTree];
+ }
+
}
];
}
$sql = "UPDATE `{$customGroup->table_name}` SET `{$customField->column_name}` = REPLACE(`{$customField->column_name}`, %1, %2) WHERE `{$customField->column_name}` LIKE %3";
- $customGroup->free();
CRM_Core_DAO::executeQuery($sql, $params);
}
- $customField->free();
}
}
/**
* Searching for contacts?
*
- * @var boolean
+ * @var bool
*/
protected $_contactSearch;
$entityFileDAO->entity_id = $field['entity_id'];
$entityFileDAO->file_id = $field['file_id'];
$entityFileDAO->save();
- $entityFileDAO->free();
$value = $field['file_id'];
$type = 'String';
break;
],
'replace' => $params,
];
- $copy = &CRM_Core_DAO::copyGeneric('CRM_Core_DAO_Job', ['id' => $id], NULL, $fieldsFix);
+ $copy = CRM_Core_DAO::copyGeneric('CRM_Core_DAO_Job', ['id' => $id], NULL, $fieldsFix);
$copy->save();
CRM_Utils_Hook::copy('Job', $copy);
$dao->id = $id;
$dao->find(TRUE);
$dao->delete();
- $dao->free();
}
}
}
* newly created/updated location block id.
*/
public static function copyLocBlock($locBlockId, $updateLocBlockId = NULL) {
+ CRM_Core_Error::deprecatedFunctionWarning('unused function which will be removed');
//get the location info.
$defaults = $updateValues = [];
$locBlock = ['id' => $locBlockId];
}
}
- $copyLocation = &CRM_Core_DAO::copyGeneric('CRM_Core_DAO_LocBlock',
+ $copyLocation = CRM_Core_DAO::copyGeneric('CRM_Core_DAO_LocBlock',
['id' => $locBlock['id']],
$copyLocationParams
);
$childNote = new CRM_Core_DAO_Note();
$childNote->id = $childId;
$childNote->delete();
- $childNote->free();
$recent[] = $childId;
}
$return = $note->delete();
- $note->free();
if ($showStatus) {
CRM_Core_Session::setStatus($status, ts('Deleted'), 'success');
}
$optionValue->weight = $opWeight;
$optionValue->save();
}
- $optionValue->free();
}
}
}
/**
- * Delete from the previous next cache table for a pair of ids.
+ * Delete pair from the previous next cache table to remove it from further merge consideration.
+ *
+ * The pair may have been flipped, so make sure we delete using both orders
*
* @param int $id1
* @param int $id2
* @param string $cacheKey
- * @param bool $isViceVersa
- * @param string $entityTable
*/
- public static function deletePair($id1, $id2, $cacheKey = NULL, $isViceVersa = FALSE, $entityTable = 'civicrm_contact') {
- $sql = "DELETE FROM civicrm_prevnext_cache WHERE entity_table = %1";
- $params = [1 => [$entityTable, 'String']];
+ public static function deletePair($id1, $id2, $cacheKey = NULL) {
+ $sql = "DELETE FROM civicrm_prevnext_cache WHERE entity_table = 'civicrm_contact'";
- $pair = !$isViceVersa ? "entity_id1 = %2 AND entity_id2 = %3" : "(entity_id1 = %2 AND entity_id2 = %3) OR (entity_id1 = %3 AND entity_id2 = %2)";
+ $pair = "(entity_id1 = %2 AND entity_id2 = %3) OR (entity_id1 = %3 AND entity_id2 = %2)";
$sql .= " AND ( {$pair} )";
$params[2] = [$id1, 'Integer'];
$params[3] = [$id2, 'Integer'];
$tags[$tag->id]['color'] = !empty($tag->color) ? $tag->color : NULL;
}
}
- $tag->free();
}
return $tags;
}
}
- $dao->free();
// While we have nodes left to build, shift the first (alphabetically)
// node of the list, place it in our tags list and loop through the
// list of unplaced nodes to find its children. We make a copy to
while ($dao->fetch()) {
$tagSets[$dao->id] = $dao->name;
}
- $dao->free();
return $tagSets;
}
),
);
- $copy = &CRM_Core_DAO::copyGeneric('CRM_Core_DAO_UFGroup',
+ $copy = CRM_Core_DAO::copyGeneric('CRM_Core_DAO_UFGroup',
array('id' => $id),
NULL,
$fieldsFix
$copy->name = CRM_Utils_String::munge($copy->name, '_', 56) . "_{$copy->id}";
$copy->save();
- $copyUFJoin = &CRM_Core_DAO::copyGeneric('CRM_Core_DAO_UFJoin',
+ $copyUFJoin = CRM_Core_DAO::copyGeneric('CRM_Core_DAO_UFJoin',
array('uf_group_id' => $id),
array('uf_group_id' => $copy->id),
NULL,
'entity_table'
);
- $copyUFField = &CRM_Core_DAO::copyGeneric('CRM_Core_BAO_UFField',
+ $copyUFField = CRM_Core_DAO::copyGeneric('CRM_Core_BAO_UFField',
array('uf_group_id' => $id),
array('uf_group_id' => $copy->id)
);
public $database;
/**
- * @var string|NULL path in which to store a marker that indicates the last execution of
- * GenCode. If a matching marker already exists, GenCode doesn't run.
+ * Path in which to store a marker that indicates the last execution of GenCode.
+ *
+ * If a matching marker already exists, GenCode doesn't run.
+ *
+ * @var string|null
*/
public $digestPath;
/**
- * @var string|NULL a digest of the inputs to the code-generator (eg the properties and source files)
+ * Digest of the inputs to the code-generator (eg the properties and source files).
+ *
+ * @var string|null
*/
public $sourceDigest;
// need this case since some versions of mysql do not have boolean as a valid column type and hence it
// is changed to tinyint. hopefully after 2 yrs this case can be removed.
$field['sqlType'] = 'tinyint';
- $field['phpType'] = $type;
+ $field['phpType'] = 'bool';
$field['crmType'] = 'CRM_Utils_Type::T_' . strtoupper($type);
break;
$field['sqlType'] = 'decimal(' . $length . ')';
$field['phpType'] = 'float';
$field['crmType'] = 'CRM_Utils_Type::T_MONEY';
- $field['precision'] = $length;
+ $field['precision'] = $length . ',';
break;
case 'float':
$field['phpType'] = $this->value('phpType', $fieldXML, $type);
$field['sqlType'] = $type;
if ($type == 'int unsigned') {
+ $field['phpType'] = 'int';
$field['crmType'] = 'CRM_Utils_Type::T_INT';
}
else {
$field['uniqueName'] = $this->value('uniqueName', $fieldXML);
$field['serialize'] = $this->value('serialize', $fieldXML);
$field['html'] = $this->value('html', $fieldXML);
+ $field['protected'] = $this->value('protected', $fieldXML);
if (!empty($field['html'])) {
$validOptions = [
'type',
*
* @package CRM
* @copyright CiviCRM LLC (c) 2004-2019
- * $Id$
- *
*/
abstract class CRM_Core_Component_Info {
const COMPONENT_MENU_XML = 'Menu';
/**
- * Stores component information.
- * @var array component settings as key/value pairs
+ * Component settings as key/value pairs.
+ *
+ * @var array
*/
public $info;
/**
- * Stores component keyword.
- * @var string name of component keyword
+ * Component keyword.
+ *
+ * @var string
*/
protected $keyword;
* so the display routine needs to not do any work. (The
* parent object takes care of the display)
*
- * @var boolean
+ * @var bool
*/
protected $_embedded = FALSE;
* Useful when we run form in non civicrm context
* and we need to transfer control back.(eg. drupal)
*
- * @var boolean
+ * @var bool
*/
protected $_skipRedirection = FALSE;
* Are we in print mode? if so we need to modify the display
* functionality to do a minimal display :)
*
- * @var boolean
+ * @var bool
*/
public $_print = 0;
/**
* Should we generate a qfKey, true by default
*
- * @var boolean
+ * @var bool
*/
public $_generateQFKey = TRUE;
if (!array_key_exists($tableName, $show)) {
$query = "SHOW CREATE TABLE $tableName";
- $dao = CRM_Core_DAO::executeQuery($query);
+ $dao = CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE);
if (!$dao->fetch()) {
CRM_Core_Error::fatal();
foreach ($tables as $tableName) {
if (!array_key_exists($tableName, $show)) {
$query = "SHOW CREATE TABLE $tableName";
- $dao = CRM_Core_DAO::executeQuery($query);
+ $dao = CRM_Core_DAO::executeQuery($query, [], TRUE, NULL, FALSE, FALSE);
if (!$dao->fetch()) {
CRM_Core_Error::fatal();
* Fields that you want to block from.
* getting copied
*
- * @return CRM_Core_DAO
- * the newly created copy of the object
+ * @return CRM_Core_DAO|bool
+ * the newly created copy of the object. False if none created.
*/
- public static function ©Generic($daoName, $criteria, $newData = NULL, $fieldsFix = NULL, $blockCopyOfDependencies = NULL) {
+ public static function copyGeneric($daoName, $criteria, $newData = NULL, $fieldsFix = NULL, $blockCopyOfDependencies = NULL) {
$object = new $daoName();
+ $newObject = FALSE;
if (!$newData) {
$object->id = $criteria['id'];
}
}
}
$newObject->save();
- if (!empty($newData['custom'])) {
- CRM_Core_BAO_CustomValueTable::store($newData['custom'], $newObject::getTableName(), $newObject->id);
- }
+ $newObject->copyCustomFields($object->id, $newObject->id);
CRM_Utils_Hook::post('create', CRM_Core_DAO_AllCoreTables::getBriefName($daoName), $newObject->id, $newObject);
}
return $newObject;
}
+ /**
+ * Method that copies custom fields values from an old entity to a new one.
+ *
+ * Fixes bug CRM-19302,
+ * where if a custom field of File type was present, left both events using the same file,
+ * breaking download URL's for the old event.
+ *
+ * @todo the goal here is to clean this up so that it works for any entity. Copy Generic already DOES some custom field stuff
+ * but it seems to be bypassed & perhaps less good than this (or this just duplicates it...)
+ *
+ * @param int $entityID
+ * @param int $newEntityID
+ */
+ public function copyCustomFields($entityID, $newEntityID) {
+ $entity = CRM_Core_DAO_AllCoreTables::getBriefName(get_class($this));
+ $tableName = CRM_Core_DAO_AllCoreTables::getTableForClass(get_class($this));
+ // Obtain custom values for old event
+ $customParams = $htmlType = [];
+ $customValues = CRM_Core_BAO_CustomValueTable::getEntityValues($entityID, $entity);
+
+ // If custom values present, we copy them
+ if (!empty($customValues)) {
+ // Get Field ID's and identify File type attributes, to handle file copying.
+ $fieldIds = implode(', ', array_keys($customValues));
+ $sql = "SELECT id FROM civicrm_custom_field WHERE html_type = 'File' AND id IN ( {$fieldIds} )";
+ $result = CRM_Core_DAO::executeQuery($sql);
+
+ // Build array of File type fields
+ while ($result->fetch()) {
+ $htmlType[] = $result->id;
+ }
+
+ // Build params array of custom values
+ foreach ($customValues as $field => $value) {
+ if ($value !== NULL) {
+ // Handle File type attributes
+ if (in_array($field, $htmlType)) {
+ $fileValues = CRM_Core_BAO_File::path($value, $entityID);
+ $customParams["custom_{$field}_-1"] = [
+ 'name' => CRM_Utils_File::duplicate($fileValues[0]),
+ 'type' => $fileValues[1],
+ ];
+ }
+ // Handle other types
+ else {
+ $customParams["custom_{$field}_-1"] = $value;
+ }
+ }
+ }
+
+ // Save Custom Fields for new Event
+ CRM_Core_BAO_CustomValueTable::postProcess($customParams, $tableName, $newEntityID, $entity);
+ }
+
+ // copy activity attachments ( if any )
+ CRM_Core_BAO_File::copyEntityFile($tableName, $entityID, $tableName, $newEntityID);
+ }
+
/**
* Cascade update through related entities.
*
*
* Generated from xml/schema/CRM/Core/ActionLog.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:38f897676ff054f67ba7188470e41dee)
+ * (GenCodeChecksum:2ccacada384ba37fcf929647dfa3d845)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* FK to id of the entity that the action was performed on. Pseudo - FK.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* FK to the action schedule that this action originated from.
*
- * @var int unsigned
+ * @var int
*/
public $action_schedule_id;
/**
* Was there any error sending the reminder?
*
- * @var boolean
+ * @var bool
*/
public $is_error;
/**
* Keeps track of the sequence number of this repetition.
*
- * @var int unsigned
+ * @var int
*/
public $repetition_number;
*
* Generated from xml/schema/CRM/Core/ActionMapping.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:eafaaa48176b2854e6b8a7f19fc1ebe6)
+ * (GenCodeChecksum:c7d2ed31b30490f0a1794fb81b700ac6)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
*
* Generated from xml/schema/CRM/Core/ActionSchedule.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4d6dca3786a9d3ab90b492be017b045b)
+ * (GenCodeChecksum:cb2618343c279fbf0baabe1f1ebd9973)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this the recipient criteria limited to OR in addition to?
*
- * @var boolean
+ * @var bool
*/
public $limit_to;
/**
* Reminder Interval.
*
- * @var int unsigned
+ * @var int
*/
public $start_action_offset;
public $start_action_date;
/**
- * @var boolean
+ * @var bool
*/
public $is_repeat;
/**
* Time interval for repeating the reminder.
*
- * @var int unsigned
+ * @var int
*/
public $repetition_frequency_interval;
/**
* Time interval till repeating the reminder.
*
- * @var int unsigned
+ * @var int
*/
public $end_frequency_interval;
/**
* Is this option active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Record Activity for this reminder?
*
- * @var boolean
+ * @var bool
*/
public $record_activity;
/**
* FK to Group
*
- * @var int unsigned
+ * @var int
*/
public $group_id;
/**
* FK to the message template.
*
- * @var int unsigned
+ * @var int
*/
public $msg_template_id;
/**
* FK to the message template.
*
- * @var int unsigned
+ * @var int
*/
public $sms_template_id;
public $mode;
/**
- * @var int unsigned
+ * @var int
*/
public $sms_provider_id;
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getRecurringFrequencyUnits',
- ]
+ ],
],
'start_action_condition' => [
'name' => 'start_action_condition',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getRecurringFrequencyUnits',
- ]
+ ],
],
'repetition_frequency_interval' => [
'name' => 'repetition_frequency_interval',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getRecurringFrequencyUnits',
- ]
+ ],
],
'end_frequency_interval' => [
'name' => 'end_frequency_interval',
'table' => 'civicrm_group',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'msg_template_id' => [
'name' => 'msg_template_id',
'pseudoconstant' => [
'optionGroupName' => 'msg_mode',
'optionEditPath' => 'civicrm/admin/options/msg_mode',
- ]
+ ],
],
'sms_provider_id' => [
'name' => 'sms_provider_id',
*
* Generated from xml/schema/CRM/Core/Address.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a81d4789f6650c68145ab9bf1e4481a8)
+ * (GenCodeChecksum:4999e79688aae8d0958e46cbd320ae3a)
*/
/**
/**
* Unique Address ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Which Location does this address belong to.
*
- * @var int unsigned
+ * @var int
*/
public $location_type_id;
/**
* Is this the primary address.
*
- * @var boolean
+ * @var bool
*/
public $is_primary;
/**
* Is this the billing address.
*
- * @var boolean
+ * @var bool
*/
public $is_billing;
/**
* Concatenation of all routable street address components (prefix, street number, street name, suffix, unit
- number OR P.O. Box). Apps should be able to determine physical location with this data (for mapping, mail
- delivery, etc.).
+ * number OR P.O. Box). Apps should be able to determine physical location with this data (for mapping, mail
+ * delivery, etc.).
*
* @var string
*/
/**
* Which County does this address belong to.
*
- * @var int unsigned
+ * @var int
*/
public $county_id;
/**
* Which State_Province does this address belong to.
*
- * @var int unsigned
+ * @var int
*/
public $state_province_id;
/**
* Which Country does this address belong to.
*
- * @var int unsigned
+ * @var int
*/
public $country_id;
/**
* Is this a manually entered geo code
*
- * @var boolean
+ * @var bool
*/
public $manual_geo_code;
/**
* FK to Address ID
*
- * @var int unsigned
+ * @var int
*/
public $master_id;
'table' => 'civicrm_location_type',
'keyColumn' => 'id',
'labelColumn' => 'display_name',
- ]
+ ],
],
'is_primary' => [
'name' => 'is_primary',
'title' => ts('Street Address'),
'description' => ts('Concatenation of all routable street address components (prefix, street number, street name, suffix, unit
number OR P.O. Box). Apps should be able to determine physical location with this data (for mapping, mail
- delivery, etc.).
- '),
+ delivery, etc.).'),
'maxlength' => 96,
'size' => CRM_Utils_Type::HUGE,
'import' => TRUE,
'name' => 'street_number_suffix',
'type' => CRM_Utils_Type::T_STRING,
'title' => ts('Street Number Suffix'),
- 'description' => ts('Non-numeric portion of address number on the street, e.g. For 112A Main St, the street_number_suffix = A
- '),
+ 'description' => ts('Non-numeric portion of address number on the street, e.g. For 112A Main St, the street_number_suffix = A'),
'maxlength' => 8,
'size' => CRM_Utils_Type::EIGHT,
'where' => 'civicrm_address.street_number_suffix',
'table' => 'civicrm_county',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'state_province_id' => [
'name' => 'state_province_id',
'table' => 'civicrm_state_province',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'postal_code_suffix' => [
'name' => 'postal_code_suffix',
'keyColumn' => 'id',
'labelColumn' => 'name',
'nameColumn' => 'iso_code',
- ]
+ ],
],
'geo_code_1' => [
'name' => 'geo_code_1',
*
* Generated from xml/schema/CRM/Core/AddressFormat.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:08e72cd783856c58dbdaeee364102c01)
+ * (GenCodeChecksum:144542b9aa31391600f73d885f819091)
*/
/**
/**
* Address Format Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
*
* Generated from xml/schema/CRM/Core/Cache.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0683b150dd60e1ec9b53c00957137a27)
+ * (GenCodeChecksum:2ed8c033a46531123b2a0bb158487c30)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Component that this menu item belongs to
*
- * @var int unsigned
+ * @var int
*/
public $component_id;
'table' => 'civicrm_component',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'created_date' => [
'name' => 'created_date',
*
* Generated from xml/schema/CRM/Core/Component.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b9121c01e72b5a9a2772dad9274f4549)
+ * (GenCodeChecksum:3259789de86a7fb333ce0b11d35fe6aa)
*/
/**
/**
* Component ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
public $name;
/**
- * Path to components main directory in a form of a class
- namespace.
+ * Path to components main directory in a form of a class namespace.
*
* @var string
*/
'name' => 'namespace',
'type' => CRM_Utils_Type::T_STRING,
'title' => ts('Namespace reserved for component.'),
- 'description' => ts('Path to components main directory in a form of a class
- namespace.
- '),
+ 'description' => ts('Path to components main directory in a form of a class namespace.'),
'maxlength' => 128,
'size' => CRM_Utils_Type::HUGE,
'where' => 'civicrm_component.namespace',
*
* Generated from xml/schema/CRM/Core/Country.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a7e07335fea6b1eea5894c119eaa1c4e)
+ * (GenCodeChecksum:367384a5604d933a66247bddb06e96bb)
*/
/**
/**
* Country Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign key to civicrm_address_format.id.
*
- * @var int unsigned
+ * @var int
*/
public $address_format_id;
/**
* Foreign key to civicrm_worldregion.id.
*
- * @var int unsigned
+ * @var int
*/
public $region_id;
/**
* Should state/province be displayed as abbreviation for contacts from this country?
*
- * @var boolean
+ * @var bool
*/
public $is_province_abbreviated;
'table' => 'civicrm_worldregion',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'is_province_abbreviated' => [
'name' => 'is_province_abbreviated',
*
* Generated from xml/schema/CRM/Core/County.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:74b37d0061cdff5aa638ff68f3879b6c)
+ * (GenCodeChecksum:3ce3045eed44f727cbca947945315329)
*/
/**
/**
* County ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* ID of State/Province that County belongs
*
- * @var int unsigned
+ * @var int
*/
public $state_province_id;
*
* Generated from xml/schema/CRM/Core/CustomField.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a1a27e2af4724a92f37a959ee359428b)
+ * (GenCodeChecksum:58323f46f5ac021f96591e075b37cca6)
*/
/**
/**
* Unique Custom Field ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to civicrm_custom_group.
*
- * @var int unsigned
+ * @var int
*/
public $custom_group_id;
/**
* Is a value required for this property.
*
- * @var boolean
+ * @var bool
*/
public $is_required;
/**
* Is this property searchable.
*
- * @var boolean
+ * @var bool
*/
public $is_searchable;
/**
* Is this property range searchable.
*
- * @var boolean
+ * @var bool
*/
public $is_search_range;
/**
* Is this property active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this property set by PHP Code? A code field is viewable but not editable
*
- * @var boolean
+ * @var bool
*/
public $is_view;
/**
* number of options per line for checkbox and radio
*
- * @var int unsigned
+ * @var int
*/
public $options_per_line;
/**
* field length if alphanumeric
*
- * @var int unsigned
+ * @var int
*/
public $text_length;
/**
* time format for custom date
*
- * @var int unsigned
+ * @var int
*/
public $time_format;
/**
* Number of columns in Note Field
*
- * @var int unsigned
+ * @var int
*/
public $note_columns;
/**
* Number of rows in Note Field
*
- * @var int unsigned
+ * @var int
*/
public $note_rows;
/**
* For elements with options, the option group id that is used
*
- * @var int unsigned
+ * @var int
*/
public $option_group_id;
/**
* Should the multi-record custom field values be displayed in tab table listing
*
- * @var boolean
+ * @var bool
*/
public $in_selector;
'table' => 'civicrm_custom_group',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'name' => [
'name' => 'name',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_BAO_CustomField::dataType',
- ]
+ ],
],
'html_type' => [
'name' => 'html_type',
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::customHtmlType',
- ]
+ ],
],
'default_value' => [
'name' => 'default_value',
'table' => 'civicrm_option_group',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'filter' => [
'name' => 'filter',
*
* Generated from xml/schema/CRM/Core/CustomGroup.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:9131714b35a45d028cf14456d1e57170)
+ * (GenCodeChecksum:288ec5d75e51339f23a2057dc1a383d2)
*/
/**
/**
* Unique Custom Group ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to civicrm_option_value.id (for option group custom_data_type.)
*
- * @var int unsigned
+ * @var int
*/
public $extends_entity_column_id;
/**
* Will this group be in collapsed or expanded mode on initial display ?
*
- * @var int unsigned
+ * @var int
*/
public $collapse_display;
/**
* Is this property active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Does this group hold multiple values?
*
- * @var boolean
+ * @var bool
*/
public $is_multiple;
/**
* minimum number of multiple records (typically 0?)
*
- * @var int unsigned
+ * @var int
*/
public $min_multiple;
/**
* maximum number of multiple records, if 0 - no max
*
- * @var int unsigned
+ * @var int
*/
public $max_multiple;
/**
* Will this group be in collapsed or expanded mode on advanced search display ?
*
- * @var int unsigned
+ * @var int
*/
public $collapse_adv_display;
/**
* FK to civicrm_contact, who created this custom group
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
/**
* Is this a reserved Custom Group?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* Is this property public?
*
- * @var boolean
+ * @var bool
*/
public $is_public;
'pseudoconstant' => [
'optionGroupName' => 'custom_data_type',
'optionEditPath' => 'civicrm/admin/options/custom_data_type',
- ]
+ ],
],
'extends_entity_column_value' => [
'name' => 'extends_entity_column_value',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::customGroupStyle',
- ]
+ ],
],
'collapse_display' => [
'name' => 'collapse_display',
*
* Generated from xml/schema/CRM/Core/Dashboard.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:52a635955e779405d2eaa2b403c41092)
+ * (GenCodeChecksum:d1fc3dec2d559acdfedb070a6a5bd107)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Domain for dashboard
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* Is this dashlet active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this dashlet reserved?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* Number of minutes to cache dashlet content in browser localStorage.
*
- * @var int unsigned
+ * @var int
*/
public $cache_minutes;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'name' => [
'name' => 'name',
*
* Generated from xml/schema/CRM/Core/Discount.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:74c8162f321ac50b965c1416951fe93a)
+ * (GenCodeChecksum:a414d91af17f5a6cfd69e3a0fc8fb8ca)
*/
/**
/**
* primary key
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to entity table specified in entity_table column.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* FK to civicrm_price_set
*
- * @var int unsigned
+ * @var int
*/
public $price_set_id;
*
* Generated from xml/schema/CRM/Core/Domain.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c5d80d8a9e689b48c5f6373b9229c442)
+ * (GenCodeChecksum:74b35dfcc8ad2ade69e9bcb75e2f407b)
*/
/**
/**
* Domain ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID. This is specifically not an FK to avoid circular constraints
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
*
* Generated from xml/schema/CRM/Core/Email.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:198627a1fa129294e4c7be52939883e1)
+ * (GenCodeChecksum:6da9864657d2b5e46956386ab414d8d6)
*/
/**
/**
* Unique Email ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Which Location does this email belong to.
*
- * @var int unsigned
+ * @var int
*/
public $location_type_id;
/**
* Is this the primary?
*
- * @var boolean
+ * @var bool
*/
public $is_primary;
/**
* Is this the billing?
*
- * @var boolean
+ * @var bool
*/
public $is_billing;
/**
* Implicit FK to civicrm_option_value where option_group = email_on_hold.
*
- * @var int unsigned
+ * @var int
*/
public $on_hold;
/**
* Is this address for bulk mail ?
*
- * @var boolean
+ * @var bool
*/
public $is_bulkmail;
'table' => 'civicrm_location_type',
'keyColumn' => 'id',
'labelColumn' => 'display_name',
- ]
+ ],
],
'email' => [
'name' => 'email',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_PseudoConstant::emailOnHoldOptions',
- ]
+ ],
],
'is_bulkmail' => [
'name' => 'is_bulkmail',
*
* Generated from xml/schema/CRM/Core/EntityFile.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:febc5ccbfb965f8f4ba8477d4db0e5f3)
+ * (GenCodeChecksum:7a5ef1cb4866290ba8edac3fd92f1102)
*/
/**
/**
* primary key
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to entity table specified in entity_table column.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* FK to civicrm_file
*
- * @var int unsigned
+ * @var int
*/
public $file_id;
*
* Generated from xml/schema/CRM/Core/EntityTag.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:721b045d10e22535a86c5e927e489477)
+ * (GenCodeChecksum:16302a8c63dcb3978dbc0d089397be50)
*/
/**
/**
* primary key
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to entity table specified in entity_table column.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* FK to civicrm_tag
*
- * @var int unsigned
+ * @var int
*/
public $tag_id;
'pseudoconstant' => [
'optionGroupName' => 'tag_used_for',
'optionEditPath' => 'civicrm/admin/options/tag_used_for',
- ]
+ ],
],
'entity_id' => [
'name' => 'entity_id',
'table' => 'civicrm_tag',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Core/Extension.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:02c87fb773b6c1e61e48e0ddfac2bb5a)
+ * (GenCodeChecksum:d7421ef144f074ada5688f6e56ab8418)
*/
/**
/**
* Local Extension ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this extension active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getExtensionTypes',
- ]
+ ],
],
'full_name' => [
'name' => 'full_name',
*
* Generated from xml/schema/CRM/Core/File.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:994c11201c8b27ec0913d1ce505ef864)
+ * (GenCodeChecksum:0ddebff42aa9d0c2fe3114281ca95e70)
*/
/**
/**
* Unique ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Type of file (e.g. Transcript, Income Tax Return, etc). FK to civicrm_option_value.
*
- * @var int unsigned
+ * @var int
*/
public $file_type_id;
/**
* FK to civicrm_contact, who uploaded this file
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
*
* Generated from xml/schema/CRM/Core/IM.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c112fd2803d82fb22d2635f7929c391c)
+ * (GenCodeChecksum:5a7b60741331c475603af3bb180d2bd7)
*/
/**
/**
* Unique IM ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Which Location does this email belong to.
*
- * @var int unsigned
+ * @var int
*/
public $location_type_id;
/**
* Which IM Provider does this screen name belong to.
*
- * @var int unsigned
+ * @var int
*/
public $provider_id;
/**
* Is this the primary IM for this contact and location.
*
- * @var boolean
+ * @var bool
*/
public $is_primary;
/**
* Is this the billing?
*
- * @var boolean
+ * @var bool
*/
public $is_billing;
'table' => 'civicrm_location_type',
'keyColumn' => 'id',
'labelColumn' => 'display_name',
- ]
+ ],
],
'name' => [
'name' => 'name',
'pseudoconstant' => [
'optionGroupName' => 'instant_messenger_service',
'optionEditPath' => 'civicrm/admin/options/instant_messenger_service',
- ]
+ ],
],
'is_primary' => [
'name' => 'is_primary',
*
* Generated from xml/schema/CRM/Core/Job.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:6a87295b587fb722d7b2026e2f2dbfe7)
+ * (GenCodeChecksum:752f86f1ad35917f008e81c0bc45786e)
*/
/**
/**
* Job Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which Domain is this scheduled job for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* Is this job active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'run_frequency' => [
'name' => 'run_frequency',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getJobFrequency',
- ]
+ ],
],
'last_run' => [
'name' => 'last_run',
*
* Generated from xml/schema/CRM/Core/JobLog.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:68e8b90d050e64feef2b1868d83a7923)
+ * (GenCodeChecksum:647390b654065a0cc421975a24ae14f9)
*/
/**
/**
* Job log entry Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which Domain is this scheduled job for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* Pointer to job id - not a FK though, just for logging purposes
*
- * @var int unsigned
+ * @var int
*/
public $job_id;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'run_time' => [
'name' => 'run_time',
*
* Generated from xml/schema/CRM/Core/LocBlock.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:cc12c8f1ddd73d6d8b1d056dd04696e9)
+ * (GenCodeChecksum:f2893cf360fe552d5ff1d90e2eb9272c)
*/
/**
/**
* Unique ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
- * @var int unsigned
+ * @var int
*/
public $address_id;
/**
- * @var int unsigned
+ * @var int
*/
public $email_id;
/**
- * @var int unsigned
+ * @var int
*/
public $phone_id;
/**
- * @var int unsigned
+ * @var int
*/
public $im_id;
/**
- * @var int unsigned
+ * @var int
*/
public $address_2_id;
/**
- * @var int unsigned
+ * @var int
*/
public $email_2_id;
/**
- * @var int unsigned
+ * @var int
*/
public $phone_2_id;
/**
- * @var int unsigned
+ * @var int
*/
public $im_2_id;
*
* Generated from xml/schema/CRM/Core/LocationType.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a97cc190a4fbeafa8846f48f47dcd63e)
+ * (GenCodeChecksum:aa147acf0dac148b113c33d4ca12876c)
*/
/**
/**
* Location Type ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this location type a predefined system location?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* Is this property active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this location type the default?
*
- * @var boolean
+ * @var bool
*/
public $is_default;
*
* Generated from xml/schema/CRM/Core/Log.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:38303a678c8e5104d63803ce900dc370)
+ * (GenCodeChecksum:ffaccbd0ebaf86e07a6302fe32e05ea8)
*/
/**
/**
* Log ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign key to the referenced item.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* FK to Contact ID of person under whose credentials this data modification was made.
*
- * @var int unsigned
+ * @var int
*/
public $modified_id;
*
* Generated from xml/schema/CRM/Core/MailSettings.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:419c207b65557941ee6f58e31d1bb6d8)
+ * (GenCodeChecksum:1818e655bde2e2a0ecd15e7d645ba58a)
*/
/**
/**
* primary key
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which Domain is this match entry for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* whether this is the default set of settings for this domain
*
- * @var boolean
+ * @var bool
*/
public $is_default;
/**
* port to use when polling
*
- * @var int unsigned
+ * @var int
*/
public $port;
/**
* whether to use SSL or not
*
- * @var boolean
+ * @var bool
*/
public $is_ssl;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'name' => [
'name' => 'name',
'pseudoconstant' => [
'optionGroupName' => 'mail_protocol',
'optionEditPath' => 'civicrm/admin/options/mail_protocol',
- ]
+ ],
],
'server' => [
'name' => 'server',
'optionGroupName' => 'activity_status',
'keyColumn' => 'name',
'optionEditPath' => 'civicrm/admin/options/activity_status',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Core/Managed.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:47e95661423fb2f97b3fd2069c4e404f)
+ * (GenCodeChecksum:79f57e32601e72d62755569fbf58c801)
*/
/**
/**
* Surrogate Key
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign key to the referenced item.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
],
'pseudoconstant' => [
'callback' => 'CRM_Core_ManagedEntities::getCleanupOptions',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Core/Mapping.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:26d8aa33c9340571c606aa5b8f085c1a)
+ * (GenCodeChecksum:e0576a33199627f5846830d076b12229)
*/
/**
/**
* Mapping ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Mapping Type
*
- * @var int unsigned
+ * @var int
*/
public $mapping_type_id;
'pseudoconstant' => [
'optionGroupName' => 'mapping_type',
'optionEditPath' => 'civicrm/admin/options/mapping_type',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Core/MappingField.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4c827f0d31c1d9304836b198b0d93374)
+ * (GenCodeChecksum:e18a4d7c43e3fded3e10bed98437577e)
*/
/**
/**
* Mapping Field ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Mapping to which this field belongs
*
- * @var int unsigned
+ * @var int
*/
public $mapping_id;
/**
* Column number for mapping set
*
- * @var int unsigned
+ * @var int
*/
public $column_number;
/**
* Location type of this mapping, if required
*
- * @var int unsigned
+ * @var int
*/
public $location_type_id;
/**
* Which type of phone does this number belongs.
*
- * @var int unsigned
+ * @var int
*/
public $phone_type_id;
/**
* Which type of IM Provider does this name belong.
*
- * @var int unsigned
+ * @var int
*/
public $im_provider_id;
/**
* Which type of website does this site belong
*
- * @var int unsigned
+ * @var int
*/
public $website_type_id;
/**
* Relationship type, if required
*
- * @var int unsigned
+ * @var int
*/
public $relationship_type_id;
/**
* Used to group mapping_field records into related sets (e.g. for criteria sets in search builder
- mappings).
+ * mappings).
*
- * @var int unsigned
+ * @var int
*/
public $grouping;
'pseudoconstant' => [
'optionGroupName' => 'instant_messenger_service',
'optionEditPath' => 'civicrm/admin/options/instant_messenger_service',
- ]
+ ],
],
'website_type_id' => [
'name' => 'website_type_id',
'pseudoconstant' => [
'optionGroupName' => 'website_type',
'optionEditPath' => 'civicrm/admin/options/website_type',
- ]
+ ],
],
'relationship_type_id' => [
'name' => 'relationship_type_id',
'type' => CRM_Utils_Type::T_INT,
'title' => ts('Grouping'),
'description' => ts('Used to group mapping_field records into related sets (e.g. for criteria sets in search builder
- mappings).
- '),
+ mappings).'),
'where' => 'civicrm_mapping_field.grouping',
'default' => '1',
'table_name' => 'civicrm_mapping_field',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getSearchBuilderOperators',
- ]
+ ],
],
'value' => [
'name' => 'value',
*
* Generated from xml/schema/CRM/Core/Menu.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ea477a411301cae7e78667099c0f654c)
+ * (GenCodeChecksum:2ba374f38c5906a6338e2c0de34208f6)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which Domain is this menu item for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* Component that this menu item belongs to
*
- * @var int unsigned
+ * @var int
*/
public $component_id;
/**
* Is this menu item active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this menu accessible to the public?
*
- * @var boolean
+ * @var bool
*/
public $is_public;
/**
* Is this menu exposed to the navigation system?
*
- * @var boolean
+ * @var bool
*/
public $is_exposed;
/**
* Should this menu be exposed via SSL if enabled?
*
- * @var boolean
+ * @var bool
*/
public $is_ssl;
/**
* skip this url being exposed to breadcrumb
*
- * @var boolean
+ * @var bool
*/
public $skipBreadcrumb;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'path' => [
'name' => 'path',
'table' => 'civicrm_component',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'is_active' => [
'name' => 'is_active',
*
* Generated from xml/schema/CRM/Core/MessageTemplate.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:988d404fbe6cd84e14a175f71b3f8440)
+ * (GenCodeChecksum:334135bbbd8614a2501e1cf56715eb46)
*/
/**
/**
* Message Template ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
public $msg_html;
/**
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* a pseudo-FK to civicrm_option_value
*
- * @var int unsigned
+ * @var int
*/
public $workflow_id;
/**
* is this the default message template for the workflow referenced by workflow_id?
*
- * @var boolean
+ * @var bool
*/
public $is_default;
/**
* is this the reserved message template which we ship for the workflow referenced by workflow_id?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* Is this message template used for sms?
*
- * @var boolean
+ * @var bool
*/
public $is_sms;
/**
* a pseudo-FK to civicrm_option_value containing PDF Page Format.
*
- * @var int unsigned
+ * @var int
*/
public $pdf_format_id;
'optionGroupName' => 'pdf_format',
'keyColumn' => 'id',
'optionEditPath' => 'civicrm/admin/options/pdf_format',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Core/Navigation.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f168de98d6c4d46c63abfd789f6fdf24)
+ * (GenCodeChecksum:377bbf9cfce4cb146a9638344c718b11)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which Domain is this navigation item for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* Parent navigation item, used for grouping
*
- * @var int unsigned
+ * @var int
*/
public $parent_id;
/**
* Is this navigation item active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* If separator needs to be added after this menu item
*
- * @var boolean
+ * @var bool
*/
public $has_separator;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'label' => [
'name' => 'label',
'keyColumn' => 'id',
'labelColumn' => 'label',
'nameColumn' => 'name',
- ]
+ ],
],
'is_active' => [
'name' => 'is_active',
*
* Generated from xml/schema/CRM/Core/Note.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:daafebd13390de67d82735263e9fa886)
+ * (GenCodeChecksum:c5b4c2796ae7a974e822e74d9e5b4338)
*/
/**
/**
* Note ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign key to the referenced item.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* FK to Contact ID creator
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Core_BAO_Note::entityTables',
- ]
+ ],
],
'entity_id' => [
'name' => 'entity_id',
'pseudoconstant' => [
'optionGroupName' => 'note_privacy',
'optionEditPath' => 'civicrm/admin/options/note_privacy',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Core/OpenID.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:8f43063bba0682c56356dbf7afa64658)
+ * (GenCodeChecksum:d63a37d228f3faa87726f65906737301)
*/
/**
/**
* Unique OpenID ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Which Location does this email belong to.
*
- * @var int unsigned
+ * @var int
*/
public $location_type_id;
/**
* Whether or not this user is allowed to login
*
- * @var boolean
+ * @var bool
*/
public $allowed_to_login;
/**
* Is this the primary email for this contact and location.
*
- * @var boolean
+ * @var bool
*/
public $is_primary;
*
* Generated from xml/schema/CRM/Core/OptionGroup.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:2437cfeb4ae146ce21397bb38dfa08e1)
+ * (GenCodeChecksum:c9ed24515dcc4ce676fb21518bd90791)
*/
/**
/**
* Option Group ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this a predefined system option group (i.e. it can not be deleted)?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* Is this option group active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* A lock to remove the ability to add new options via the UI.
*
- * @var boolean
+ * @var bool
*/
public $is_locked;
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Utils_Type::dataTypes',
- ]
+ ],
],
'is_reserved' => [
'name' => 'is_reserved',
*
* Generated from xml/schema/CRM/Core/OptionValue.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:356278f04173ed064fa82cacafa7edbe)
+ * (GenCodeChecksum:803748252a3d5c50be80b18ccdb3132c)
*/
/**
/**
* Option ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Group which this option belongs to.
*
- * @var int unsigned
+ * @var int
*/
public $option_group_id;
/**
* Bitwise logic can be used to create subsets of options within an option_group for different uses.
*
- * @var int unsigned
+ * @var int
*/
public $filter;
/**
* Is this the default option for the group?
*
- * @var boolean
+ * @var bool
*/
public $is_default;
/**
* Controls display sort order.
*
- * @var int unsigned
+ * @var int
*/
public $weight;
/**
* Is this row simply a display header? Expected usage is to render these as OPTGROUP tags within a SELECT field list of options?
*
- * @var boolean
+ * @var bool
*/
public $is_optgroup;
/**
* Is this a predefined system object?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* Is this option active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Component that this option value belongs/caters to.
*
- * @var int unsigned
+ * @var int
*/
public $component_id;
/**
* Which Domain is this option value for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
- * @var int unsigned
+ * @var int
*/
public $visibility_id;
'table' => 'civicrm_option_group',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'label' => [
'name' => 'label',
'table' => 'civicrm_component',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'domain_id' => [
'name' => 'domain_id',
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'visibility_id' => [
'name' => 'visibility_id',
'pseudoconstant' => [
'optionGroupName' => 'visibility',
'optionEditPath' => 'civicrm/admin/options/visibility',
- ]
+ ],
],
'icon' => [
'name' => 'icon',
*
* Generated from xml/schema/CRM/Core/Persistent.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0c52f813dd1e954e1709b819128790f3)
+ * (GenCodeChecksum:4044954800a1201a4e3c376d48342f4c)
*/
/**
/**
* Persistent Record Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Config Settings
*
- * @var boolean
+ * @var bool
*/
public $is_config;
*
* Generated from xml/schema/CRM/Core/Phone.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a3b4aba6b896154133688f4318ea866b)
+ * (GenCodeChecksum:ac451e083bb4bbf26f53556086b266bf)
*/
/**
/**
* Unique Phone ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Which Location does this phone belong to.
*
- * @var int unsigned
+ * @var int
*/
public $location_type_id;
/**
* Is this the primary phone for this contact and location.
*
- * @var boolean
+ * @var bool
*/
public $is_primary;
/**
* Is this the billing?
*
- * @var boolean
+ * @var bool
*/
public $is_billing;
/**
* Which Mobile Provider does this phone belong to.
*
- * @var int unsigned
+ * @var int
*/
public $mobile_provider_id;
/**
* Which type of phone does this number belongs.
*
- * @var int unsigned
+ * @var int
*/
public $phone_type_id;
'table' => 'civicrm_location_type',
'keyColumn' => 'id',
'labelColumn' => 'display_name',
- ]
+ ],
],
'is_primary' => [
'name' => 'is_primary',
'pseudoconstant' => [
'optionGroupName' => 'phone_type',
'optionEditPath' => 'civicrm/admin/options/phone_type',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Core/PreferencesDate.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:46e5c6a6ea6b21e1966679f41782c340)
+ * (GenCodeChecksum:18663ed2b585f1598a26a5a491c67ea6)
*/
/**
public static $_log = TRUE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
*
* Generated from xml/schema/CRM/Core/PrevNextCache.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ec5d04442cf8976a3163cabeb3ba433c)
+ * (GenCodeChecksum:dba140c3d2ece863c512ed688df2ebcb)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to entity table specified in entity_table column.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id1;
/**
* FK to entity table specified in entity_table column.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id2;
public $data;
/**
- * @var boolean
+ * @var bool
*/
public $is_selected;
*
* Generated from xml/schema/CRM/Core/PrintLabel.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ca56833ea757bf1363d618add294960d)
+ * (GenCodeChecksum:2bf1df61a7093242ac2cde0d4d8ef1e0)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Implicit FK to civicrm_option_value row in NEW label_type option group
*
- * @var int unsigned
+ * @var int
*/
public $label_type_id;
/**
* Is this default?
*
- * @var boolean
+ * @var bool
*/
public $is_default;
/**
* Is this option active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this reserved label?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* FK to civicrm_contact, who created this label layout
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
'pseudoconstant' => [
'optionGroupName' => 'name_badge',
'optionEditPath' => 'civicrm/admin/options/name_badge',
- ]
+ ],
],
'label_type_id' => [
'name' => 'label_type_id',
'pseudoconstant' => [
'optionGroupName' => 'label_type',
'optionEditPath' => 'civicrm/admin/options/label_type',
- ]
+ ],
],
'data' => [
'name' => 'data',
*
* Generated from xml/schema/CRM/Core/RecurringEntity.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:810f5bce8bb650c96703532242f254e8)
+ * (GenCodeChecksum:9e730db130a597de8528532d06f2ad54)
*/
/**
public static $_log = TRUE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Recurring Entity Parent ID
*
- * @var int unsigned
+ * @var int
*/
public $parent_id;
/**
* Recurring Entity Child ID
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* 1-this entity, 2-this and the following entities, 3-all the entities
*
- * @var boolean
+ * @var bool
*/
public $mode;
*
* Generated from xml/schema/CRM/Core/Setting.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:1af3984556a05189587658c306d09348)
+ * (GenCodeChecksum:7bbe096eb48d3744aa86453cccb99bfb)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which Domain is this menu item for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* FK to Contact ID if the setting is localized to a contact
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Is this setting a contact specific or site wide setting?
*
- * @var boolean
+ * @var bool
*/
public $is_domain;
/**
* Component that this menu item belongs to
*
- * @var int unsigned
+ * @var int
*/
public $component_id;
/**
* FK to civicrm_contact, who created this setting
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'contact_id' => [
'name' => 'contact_id',
'table' => 'civicrm_component',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'created_date' => [
'name' => 'created_date',
*
* Generated from xml/schema/CRM/Core/StateProvince.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:66bbfa3f81cb6baec8d7175f5f32718a)
+ * (GenCodeChecksum:38620d39135bc4e42f0cc688dff9cb5b)
*/
/**
/**
* State/Province ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* ID of Country that State/Province belong
*
- * @var int unsigned
+ * @var int
*/
public $country_id;
*
* Generated from xml/schema/CRM/Core/StatusPreference.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b30c850f5621be00f3a7e828c7fe7c61)
+ * (GenCodeChecksum:777d59b72a077ecb4d4caa60e13bb479)
*/
/**
/**
* Unique Status Preference ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which Domain is this Status Preference for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* Hush messages up to and including this severity.
*
- * @var int unsigned
+ * @var int
*/
public $ignore_severity;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'name' => [
'name' => 'name',
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Utils_Check::getSeverityList',
- ]
+ ],
],
'prefs' => [
'name' => 'prefs',
*
* Generated from xml/schema/CRM/Core/SystemLog.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:edcf9c070365c92afa56f7f3fe79acee)
+ * (GenCodeChecksum:a2276bcf3bb39a3947bf54b043fa0a05)
*/
/**
/**
* Primary key ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Optional Contact ID that created the log. Not an FK as we keep this regardless
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
*
* Generated from xml/schema/CRM/Core/Tag.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:8c816585b0863674074b4aaf5c644cab)
+ * (GenCodeChecksum:3abd98f177e35fd993b77bf08b115e4a)
*/
/**
/**
* Tag ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Optional parent id for this tag.
*
- * @var int unsigned
+ * @var int
*/
public $parent_id;
/**
* Is this tag selectable / displayed
*
- * @var boolean
+ * @var bool
*/
public $is_selectable;
/**
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
- * @var boolean
+ * @var bool
*/
public $is_tagset;
/**
* FK to civicrm_contact, who created this tag
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
'pseudoconstant' => [
'optionGroupName' => 'tag_used_for',
'optionEditPath' => 'civicrm/admin/options/tag_used_for',
- ]
+ ],
],
'created_id' => [
'name' => 'created_id',
*
* Generated from xml/schema/CRM/Core/Timezone.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:e54363ef08090c4dfbed076c842edd03)
+ * (GenCodeChecksum:7a377d04c1e9cfede74c42b155e301f5)
*/
/**
/**
* Timezone Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Country Id
*
- * @var int unsigned
+ * @var int
*/
public $country_id;
*
* Generated from xml/schema/CRM/Core/UFField.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:3acfd1d2bd5f1e54f8aee7f96328cb58)
+ * (GenCodeChecksum:4e6400ee9a0d081541d8e14366129502)
*/
/**
/**
* Unique table ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which form does this field belong to.
*
- * @var int unsigned
+ * @var int
*/
public $uf_group_id;
/**
* Is this field currently shareable? If false, hide the field for all sharing contexts.
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* the field is view only and not editable in user forms.
*
- * @var boolean
+ * @var bool
*/
public $is_view;
/**
* Is this field required when included in a user or registration form?
*
- * @var boolean
+ * @var bool
*/
public $is_required;
/**
* Is this field included as a column in the selector table?
*
- * @var boolean
+ * @var bool
*/
public $in_selector;
/**
* Is this field included search form of profile?
*
- * @var boolean
+ * @var bool
*/
public $is_searchable;
/**
* Location type of this mapping, if required
*
- * @var int unsigned
+ * @var int
*/
public $location_type_id;
/**
* Phone Type Id, if required
*
- * @var int unsigned
+ * @var int
*/
public $phone_type_id;
/**
* Website Type Id, if required
*
- * @var int unsigned
+ * @var int
*/
public $website_type_id;
/**
* Is this field reserved for use by some other CiviCRM functionality?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* Include in multi-record listing?
*
- * @var boolean
+ * @var bool
*/
public $is_multi_summary;
'table' => 'civicrm_uf_group',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'field_name' => [
'name' => 'field_name',
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Core_BAO_UFField::getAvailableFieldTitles',
- ]
+ ],
],
'is_active' => [
'name' => 'is_active',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::ufVisibility',
- ]
+ ],
],
'in_selector' => [
'name' => 'in_selector',
'pseudoconstant' => [
'optionGroupName' => 'phone_type',
'optionEditPath' => 'civicrm/admin/options/phone_type',
- ]
+ ],
],
'website_type_id' => [
'name' => 'website_type_id',
'pseudoconstant' => [
'optionGroupName' => 'website_type',
'optionEditPath' => 'civicrm/admin/options/website_type',
- ]
+ ],
],
'label' => [
'name' => 'label',
*
* Generated from xml/schema/CRM/Core/UFGroup.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0f78fb49440e1cf5d43fd3db5a43ee7e)
+ * (GenCodeChecksum:2a382dd695bc7d2ad3dca96996c5258b)
*/
/**
/**
* Unique table ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this form currently active? If false, hide all related fields for all sharing contexts.
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Group id, foreign key from civicrm_group
*
- * @var int unsigned
+ * @var int
*/
public $limit_listings_group_id;
/**
* foreign key to civicrm_group_id
*
- * @var int unsigned
+ * @var int
*/
public $add_to_group_id;
/**
* Should a CAPTCHA widget be included this Profile form.
*
- * @var boolean
+ * @var bool
*/
public $add_captcha;
/**
* Do we want to map results from this profile.
*
- * @var boolean
+ * @var bool
*/
public $is_map;
/**
* Should edit link display in profile selector
*
- * @var boolean
+ * @var bool
*/
public $is_edit_link;
/**
* Should we display a link to the website profile in profile selector
*
- * @var boolean
+ * @var bool
*/
public $is_uf_link;
/**
* Should we update the contact record if we find a duplicate
*
- * @var boolean
+ * @var bool
*/
public $is_update_dupe;
/**
* Should we create a cms user for this profile
*
- * @var boolean
+ * @var bool
*/
public $is_cms_user;
/**
* Is this group reserved for use by some other CiviCRM functionality?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* FK to civicrm_contact, who created this UF group
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
/**
* Should we include proximity search feature in this profile search form?
*
- * @var boolean
+ * @var bool
*/
public $is_proximity_search;
/**
* Should a Cancel button be included in this Profile form.
*
- * @var boolean
+ * @var bool
*/
public $add_cancel_button;
*
* Generated from xml/schema/CRM/Core/UFJoin.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:09aaa3fd826c1b3407d39966f0f11aa7)
+ * (GenCodeChecksum:00acc4bbb42aee2a24981b30456458c1)
*/
/**
/**
* Unique table ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this join currently active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Foreign key to the referenced item.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* Which form does this field belong to.
*
- * @var int unsigned
+ * @var int
*/
public $uf_group_id;
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Core_BAO_UFJoin::entityTables',
- ]
+ ],
],
'entity_id' => [
'name' => 'entity_id',
'table' => 'civicrm_uf_group',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'module_data' => [
'name' => 'module_data',
*
* Generated from xml/schema/CRM/Core/UFMatch.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:3dbbb5d21dec55536826e465629f7174)
+ * (GenCodeChecksum:b7305bf7df97967d214db393a34f740f)
*/
/**
/**
* System generated ID.
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which Domain is this match entry for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* UF ID
*
- * @var int unsigned
+ * @var int
*/
public $uf_id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'uf_id' => [
'name' => 'uf_id',
*
* Generated from xml/schema/CRM/Core/Website.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:3c7acea3980658a252658fd11578cfbe)
+ * (GenCodeChecksum:22c11a2bc194d075912df3279acc6a97)
*/
/**
/**
* Unique Website ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Which Website type does this website belong to.
*
- * @var int unsigned
+ * @var int
*/
public $website_type_id;
'pseudoconstant' => [
'optionGroupName' => 'website_type',
'optionEditPath' => 'civicrm/admin/options/website_type',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Core/WordReplacement.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:df2cde8fb1f65a25db724d35387a1342)
+ * (GenCodeChecksum:1f2d0542e46494b542dce1c0132a1643)
*/
/**
/**
* Word replacement ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this entry active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* FK to Domain ID. This is for Domain specific word replacement
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getWordReplacementMatchType',
- ]
+ ],
],
'domain_id' => [
'name' => 'domain_id',
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Core/Worldregion.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f326bc6047454a630b352baf190b0cac)
+ * (GenCodeChecksum:b607c0ba0b25b3f785779384fc6a6887)
*/
/**
/**
* Country Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
if (!empty(\Civi::$statics[__CLASS__]['userFrameworkLogging'])) {
// should call $config->userSystem->logger($message) here - but I got a situation where userSystem was not an object - not sure why
if ($config->userSystem->is_drupal and function_exists('watchdog')) {
- watchdog('civicrm', '%message', ['%message' => $message], WATCHDOG_DEBUG);
+ watchdog('civicrm', '%message', ['%message' => $message], isset($priority) ? $priority : WATCHDOG_DEBUG);
}
}
$this->assign('bltID', $this->_bltID);
}
+ /**
+ * @return int
+ */
+ public function getPaymentProcessorID() {
+ return $this->_paymentProcessorID;
+ }
+
/**
* This if a front end form function for setting the payment processor.
*
else {
$this->_paymentProcessor = [];
}
- CRM_Financial_Form_Payment::addCreditCardJs($this->_paymentProcessorID);
}
- $this->assign('paymentProcessorID', $this->_paymentProcessorID);
+
// We save the fact that the profile 'billing' is required on the payment form.
// Currently pay-later is the only 'processor' that takes notice of this - but ideally
// 1) it would be possible to select the minimum_billing_profile_id for the contribution form
/**
* Have we already done this search
*
- * @var boolean
+ * @var bool
*/
protected $_done;
* so the display routine needs to not do any work. (The
* parent object takes care of the display)
*
- * @var boolean
+ * @var bool
*/
protected $_embedded = FALSE;
* Are we in print mode? if so we need to modify the display
* functionality to do a minimal display :)
*
- * @var boolean
+ * @var bool
*/
protected $_print = FALSE;
$xml = '<txn>';
foreach ($requestFields as $key => $value) {
- $xml .= '<' . $key . '>' . self::tidyStringforXML($value, $xmlFieldLength[$key]) . '</' . $key . '>';
+ //dev/core/966 Don't send email through the urlencode.
+ if ($key == 'ssl_email') {
+ $xml .= '<' . $key . '>' . substr($value, 0, $xmlFieldLength[$key]) . '</' . $key . '>';
+ }
+ else {
+ $xml .= '<' . $key . '>' . self::tidyStringforXML($value, $xmlFieldLength[$key]) . '</' . $key . '>';
+ }
}
$xml .= '</txn>';
return $xml;
$form->assign('suppressSubmitButton', $form->_paymentObject->isSuppressSubmitButtons());
+ CRM_Financial_Form_Payment::addCreditCardJs($form->getPaymentProcessorID());
+ $form->assign('paymentProcessorID', $form->getPaymentProcessorID());
+
$form->assign('currency', $form->getCurrency());
// also set cancel subscription url
/**
* Is this user someone with access for the entire system.
*
- * @var boolean
+ * @var bool
*/
protected $_viewAdminUser = FALSE;
protected $_editAdminUser = FALSE;
/**
* Am in in view permission or edit permission?
- * @var boolean
+ *
+ * @var bool
*/
protected $_viewPermission = FALSE;
protected $_editPermission = FALSE;
/**
* Is this user someone with access for the entire system.
*
- * @var boolean
+ * @var bool
*/
protected $_viewAdminUser = FALSE;
protected $_editAdminUser = FALSE;
/**
* Am in in view permission or edit permission?
- * @var boolean
+ * @var bool
*/
protected $_viewPermission = FALSE;
protected $_editPermission = FALSE;
/**
* Is this user someone with access for the entire system.
*
- * @var boolean
+ * @var bool
*/
protected $_viewAdminUser = FALSE;
protected $_editAdminUser = FALSE;
/**
* Am in in view permission or edit permission?
- * @var boolean
+ * @var bool
*/
protected $_viewPermission = FALSE;
protected $_editPermission = FALSE;
/**
* Is this user someone with access for the entire system.
*
- * @var boolean
+ * @var bool
*/
protected $_viewAdminUser = FALSE;
protected $_editAdminUser = FALSE;
/**
* Am in in view permission or edit permission?
- * @var boolean
+ *
+ * @var bool
*/
protected $_viewPermission = FALSE;
protected $_editPermission = FALSE;
if ($options && $flip) {
$options = array_flip($options);
}
- $customField->free();
return $options;
}
// Core field: load schema
$dao = new $daoName();
$fieldSpec = $dao->getFieldSpec($fieldName);
- $dao->free();
// Ensure we have the canonical name for this field
$fieldName = CRM_Utils_Array::value('name', $fieldSpec, $fieldName);
// Get list of fields for the option table
$dao = new $daoName();
$availableFields = array_keys($dao->fieldKeys());
- $dao->free();
$select = "SELECT %1 AS id, %2 AS label";
$from = "FROM %3";
while ($dao->fetch()) {
$output[$dao->id] = $dao->label;
}
- $dao->free();
// Localize results
if (!empty($params['localize']) || $pseudoconstant['table'] == 'civicrm_country' || $pseudoconstant['table'] == 'civicrm_state_province') {
$I18nParams = [];
/**
* Whether the snippets array has been sorted
*
- * @var boolean
+ * @var bool
*/
public $_isSorted;
protected $_fileName;
/**
- * #@+
- * @var integer
- */
-
- /**
- * Imported file size
+ * Imported file size.
+ *
* @var int
*/
protected $_fileSize;
/**
* Whether the file has a column header or not
*
- * @var boolean
+ * @var bool
*/
protected $_haveColumnHeader;
*
* Generated from xml/schema/CRM/Cxn/Cxn.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:999790d380fa004a25265a1a0126fb95)
+ * (GenCodeChecksum:bd6f3b0785ec9b05984d8ad32f3b8464)
*/
/**
/**
* Connection ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is connection currently enabled?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
*
* Generated from xml/schema/CRM/Dedupe/Exception.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:1f39e9ee1f80da1b62c054f6ca4119c5)
+ * (GenCodeChecksum:eec5ad673402f603903d6f35ad1bcd06)
*/
/**
/**
* Unique dedupe exception id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id1;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id2;
*
* Generated from xml/schema/CRM/Dedupe/Rule.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:99420d466d2982510873b69c179fd9f5)
+ * (GenCodeChecksum:a7697e9d93641b3240e23f97f4f92329)
*/
/**
/**
* Unique dedupe rule id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* The id of the rule group this rule belongs to
*
- * @var int unsigned
+ * @var int
*/
public $dedupe_rule_group_id;
/**
* The length of the matching substring
*
- * @var int unsigned
+ * @var int
*/
public $rule_length;
*
* Generated from xml/schema/CRM/Dedupe/RuleGroup.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:85fc439e89d4d0dfd403efdd1cf67531)
+ * (GenCodeChecksum:a0c7d9e893a3aec240db9ec4b0e8729d)
*/
/**
/**
* Unique dedupe rule group id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this a reserved rule - a rule group that has been optimized and cannot be changed by the admin
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
'keyColumn' => 'name',
'labelColumn' => 'label',
'condition' => 'parent_id IS NULL',
- ]
+ ],
],
'threshold' => [
'name' => 'threshold',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getDedupeRuleTypes',
- ]
+ ],
],
'name' => [
'name' => 'name',
// Allow hook_civicrm_merge() to add SQL statements for the merge operation.
CRM_Utils_Hook::merge('sqls', $sqls, $mainId, $otherId, $tables);
- // call the SQL queries in one transaction
- $transaction = new CRM_Core_Transaction();
foreach ($sqls as $sql) {
CRM_Core_DAO::executeQuery($sql, [], TRUE, NULL, TRUE);
}
CRM_Dedupe_Merger::addMembershipToRealtedContacts($mainId);
- $transaction->commit();
}
/**
// explicitly set to NULL if not 1 or 0 as part of grandfathering out the mystical '2' value.
$isSelected = NULL;
}
- $dupePairs = self::getDuplicatePairs($rgid, $gid, $reloadCacheIfEmpty, $batchLimit, $isSelected, '', ($mode == 'aggressive'), $criteria, $checkPermissions);
+ $dupePairs = self::getDuplicatePairs($rgid, $gid, $reloadCacheIfEmpty, $batchLimit, $isSelected, ($mode == 'aggressive'), $criteria, $checkPermissions);
$cacheParams = [
'cache_key_string' => self::getMergeCacheKeyString($rgid, $gid, $criteria, $checkPermissions),
$main = self::getMergeContactDetails($mainId);
$other = self::getMergeContactDetails($otherId);
- $specialValues['main'] = self::getSpecialValues($main);
- $specialValues['other'] = self::getSpecialValues($other);
$compareFields = self::retrieveFields($main, $other);
// CRM-15681 don't display sub-types in UI
continue;
}
- foreach (['main', 'other'] as $moniker) {
- $contact = &$$moniker;
- $value = CRM_Utils_Array::value($field, $contact);
- if (isset($specialValues[$moniker][$field]) && is_string($specialValues[$moniker][$field])) {
- $value = CRM_Core_DAO::VALUE_SEPARATOR . trim($specialValues[$moniker][$field], CRM_Core_DAO::VALUE_SEPARATOR) . CRM_Core_DAO::VALUE_SEPARATOR;
+ foreach (['main' => $main, 'other' => $other] as $moniker => $contact) {
+ $value = $label = CRM_Utils_Array::value($field, $contact);
+ $fieldSpec = $fields[$field];
+ if (!empty($fieldSpec['serialize']) && is_array($value)) {
+ // In practice this only applies to preferred_communication_method as the sub types are skipped above
+ // and no others are serialized.
+ $labels = [];
+ foreach ($value as $individualValue) {
+ $labels[] = CRM_Core_PseudoConstant::getLabel('CRM_Contact_BAO_Contact', $field, $individualValue);
+ }
+ $label = implode(', ', $labels);
+ // We serialize this due to historic handling but it's likely that if we just left it as an
+ // array all would be well & we would have less code.
+ $value = CRM_Core_DAO::serializeField($value, $fieldSpec['serialize']);
}
- $label = isset($specialValues[$moniker]["{$field}_display"]) ? $specialValues[$moniker]["{$field}_display"] : $value;
- if (!empty($fields[$field]['type']) && $fields[$field]['type'] == CRM_Utils_Type::T_DATE) {
+ elseif (!empty($fieldSpec['type']) && $fieldSpec['type'] == CRM_Utils_Type::T_DATE) {
if ($value) {
$value = str_replace('-', '', $value);
$label = CRM_Utils_Date::customFormat($label);
$label = ts('[x]');
}
}
- elseif ($field == 'prefix_id') {
- $label = CRM_Utils_Array::value('individual_prefix', $contact);
- }
- elseif ($field == 'suffix_id') {
- $label = CRM_Utils_Array::value('individual_suffix', $contact);
- }
- elseif ($field == 'gender_id' && !empty($value)) {
- $genderOptions = civicrm_api3('contact', 'getoptions', ['field' => 'gender_id']);
- $label = $genderOptions['values'][$value];
+ elseif (!empty($fieldSpec['pseudoconstant'])) {
+ $label = CRM_Core_PseudoConstant::getLabel('CRM_Contact_BAO_Contact', $field, $value);
}
elseif ($field == 'current_employer_id' && !empty($value)) {
$label = "$value (" . CRM_Contact_BAO_Contact::displayName($value) . ")";
if (empty($migrationInfo)) {
return FALSE;
}
+ // Encapsulate in a transaction to avoid half-merges.
+ $transaction = new CRM_Core_Transaction();
$contactType = $migrationInfo['main_details']['contact_type'];
$relTables = CRM_Dedupe_Merger::relTables();
CRM_Contact_BAO_Contact::createProfileContact($submitted, CRM_Core_DAO::$_nullArray, $mainId);
}
-
+ $transaction->commit();
CRM_Utils_Hook::post('merge', 'Contact', $mainId);
self::createMergeActivities($mainId, $otherId);
* @param int $batchLimit
* @param bool $isSelected
* Limit to selected pairs.
- * @param array|string $orderByClause
* @param bool $includeConflicts
* @param array $criteria
* Additional criteria to narrow down the merge group.
*
* @return array
* Array of matches meeting the criteria.
+ *
+ * @throws \CRM_Core_Exception
+ * @throws \CiviCRM_API3_Exception
*/
- public static function getDuplicatePairs($rule_group_id, $group_id, $reloadCacheIfEmpty, $batchLimit, $isSelected, $orderByClause = '', $includeConflicts = TRUE, $criteria = [], $checkPermissions = TRUE, $searchLimit = 0) {
+ public static function getDuplicatePairs($rule_group_id, $group_id, $reloadCacheIfEmpty, $batchLimit, $isSelected, $includeConflicts = TRUE, $criteria = [], $checkPermissions = TRUE, $searchLimit = 0) {
$where = self::getWhereString($isSelected);
$cacheKeyString = self::getMergeCacheKeyString($rule_group_id, $group_id, $criteria, $checkPermissions);
$join = self::getJoinOnDedupeTable();
- $dupePairs = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString, $join, $where, 0, $batchLimit, [], $orderByClause, $includeConflicts);
+ $dupePairs = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString, $join, $where, 0, $batchLimit, [], '', $includeConflicts);
if (empty($dupePairs) && $reloadCacheIfEmpty) {
// If we haven't found any dupes, probably cache is empty.
// Try filling cache and give another try. We don't need to specify include conflicts here are there will not be any
// until we have done some processing.
CRM_Core_BAO_PrevNextCache::refillCache($rule_group_id, $group_id, $cacheKeyString, $criteria, $checkPermissions, $searchLimit);
- $dupePairs = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString, $join, $where, 0, $batchLimit, [], $orderByClause, $includeConflicts);
+ $dupePairs = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString, $join, $where, 0, $batchLimit, [], '', $includeConflicts);
return $dupePairs;
}
return $dupePairs;
return $cacheKeyString;
}
- /**
- * @param array $contact
- * @return array
- * $specialValues
- */
- public static function getSpecialValues($contact) {
- $preferred_communication_method = CRM_Utils_Array::value('preferred_communication_method', $contact);
- $value = empty($preferred_communication_method) ? [] : $preferred_communication_method;
- $specialValues = [
- 'preferred_communication_method' => $value,
- 'communication_style_id' => $value,
- ];
-
- if (!empty($contact['preferred_communication_method'])) {
- // api 3 returns pref_comm_method as an array, which breaks the lookup; so we reconstruct
- $prefCommList = is_array($specialValues['preferred_communication_method']) ? implode(CRM_Core_DAO::VALUE_SEPARATOR, $specialValues['preferred_communication_method']) : $specialValues['preferred_communication_method'];
- $specialValues['preferred_communication_method'] = CRM_Core_DAO::VALUE_SEPARATOR . $prefCommList . CRM_Core_DAO::VALUE_SEPARATOR;
- }
- $names = [
- 'preferred_communication_method' => [
- 'newName' => 'preferred_communication_method_display',
- 'groupName' => 'preferred_communication_method',
- ],
- ];
- CRM_Core_OptionGroup::lookupValues($specialValues, $names);
-
- if (!empty($contact['communication_style'])) {
- $specialValues['communication_style_id_display'] = $contact['communication_style'];
- }
- return $specialValues;
- }
-
/**
* Get the metadata for the merge fields.
*
CRM_Core_BAO_PrevNextCache::markConflict($mainId, $otherId, $cacheKeyString, $conflicts);
}
else {
- // delete entry from PrevNextCache table so we don't consider the pair next time
- // pair may have been flipped, so make sure we delete using both orders
- CRM_Core_BAO_PrevNextCache::deletePair($mainId, $otherId, $cacheKeyString, TRUE);
+ CRM_Core_BAO_PrevNextCache::deletePair($mainId, $otherId, $cacheKeyString);
}
}
$sql = "SELECT entity_id, {$columnName} AS file_id FROM {$tableName} WHERE entity_id IN ({$mainId}, {$otherId})";
$dao = CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
+ // @todo - this is actually broken - fix & or remove - see testMergeCustomFields
$fileIds[$dao->entity_id] = $dao->file_id;
if ($dao->entity_id == $mainId) {
CRM_Core_BAO_File::deleteFileReferences($fileIds[$mainId], $mainId, $customId);
*
* @return array
* Array of event summary values
+ *
+ * @throws \CiviCRM_API3_Exception
*/
public static function getEventSummary() {
$eventSummary = $eventIds = [];
// get permission and include them here
// does not scale, but rearranging code for now
// FIXME in a future release
- $permissions = CRM_Event_BAO_Event::checkPermission();
+ $permissions = self::getAllPermissions();
$validEventIDs = '';
if (empty($permissions[CRM_Core_Permission::VIEW])) {
$eventSummary['total_events'] = 0;
['entity_value' => $id, 'mapping_id' => $oldMapping->getId()],
['entity_value' => $copyEvent->id, 'mapping_id' => $copyMapping->getId()]
);
- self::copyCustomFields($id, $copyEvent->id);
$copyEvent->save();
return $copyEvent;
}
- /**
- * Method that copies custom fields values from an old event to a new one. Fixes bug CRM-19302,
- * where if a custom field of File type was present, left both events using the same file,
- * breaking download URL's for the old event.
- *
- * @param int $oldEventID
- * @param int $newCopyID
- */
- public static function copyCustomFields($oldEventID, $newCopyID) {
- // Obtain custom values for old event
- $customParams = $htmlType = [];
- $customValues = CRM_Core_BAO_CustomValueTable::getEntityValues($oldEventID, 'Event');
-
- // If custom values present, we copy them
- if (!empty($customValues)) {
- // Get Field ID's and identify File type attributes, to handle file copying.
- $fieldIds = implode(', ', array_keys($customValues));
- $sql = "SELECT id FROM civicrm_custom_field WHERE html_type = 'File' AND id IN ( {$fieldIds} )";
- $result = CRM_Core_DAO::executeQuery($sql);
-
- // Build array of File type fields
- while ($result->fetch()) {
- $htmlType[] = $result->id;
- }
-
- // Build params array of custom values
- foreach ($customValues as $field => $value) {
- if ($value !== NULL) {
- // Handle File type attributes
- if (in_array($field, $htmlType)) {
- $fileValues = CRM_Core_BAO_File::path($value, $oldEventID);
- $customParams["custom_{$field}_-1"] = [
- 'name' => CRM_Utils_File::duplicate($fileValues[0]),
- 'type' => $fileValues[1],
- ];
- }
- // Handle other types
- else {
- $customParams["custom_{$field}_-1"] = $value;
- }
- }
- }
-
- // Save Custom Fields for new Event
- CRM_Core_BAO_CustomValueTable::postProcess($customParams, 'civicrm_event', $newCopyID, 'Event');
- }
-
- // copy activity attachments ( if any )
- CRM_Core_BAO_File::copyEntityFile('civicrm_event', $oldEventID, 'civicrm_event', $newCopyID);
- }
-
/**
* This is sometimes called in a loop (during event search).
*
*
* Generated from xml/schema/CRM/Event/Cart/Cart.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:480e2fc6225765f7ff4930376c1ed70f)
+ * (GenCodeChecksum:71454cbda07a2fefd75041815b95ed0c)
*/
/**
/**
* Cart Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to civicrm_contact who created this cart
*
- * @var int unsigned
+ * @var int
*/
public $user_id;
/**
- * @var boolean
+ * @var bool
*/
public $completed;
*
* Generated from xml/schema/CRM/Event/Cart/EventInCart.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0f1e8db14667dfe6351ce2610d4431bd)
+ * (GenCodeChecksum:b9da5d3acb0b71b79cc3f8d2f7e5ec50)
*/
/**
/**
* Event In Cart Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Event ID
*
- * @var int unsigned
+ * @var int
*/
public $event_id;
/**
* FK to Event Cart ID
*
- * @var int unsigned
+ * @var int
*/
public $event_cart_id;
*
* Generated from xml/schema/CRM/Event/Event.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:950e07f412225a94ad11a8220a8f2f19)
+ * (GenCodeChecksum:887208d4102061a0f26eda2a6f84ea09)
*/
/**
/**
* Event
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Event Type ID.Implicit FK to civicrm_option_value where option_group = event_type.
*
- * @var int unsigned
+ * @var int
*/
public $event_type_id;
/**
* Should we expose the participant list? Implicit FK to civicrm_option_value where option_group = participant_listing.
*
- * @var int unsigned
+ * @var int
*/
public $participant_listing_id;
/**
* Public events will be included in the iCal feeds. Access to private event information may be limited using ACLs.
*
- * @var boolean
+ * @var bool
*/
public $is_public;
/**
* If true, include registration link on Event Info page.
*
- * @var boolean
+ * @var bool
*/
public $is_online_registration;
/**
* Maximum number of registered participants to allow. After max is reached, a custom Event Full message is displayed. If NULL, allow unlimited number of participants.
*
- * @var int unsigned
+ * @var int
*/
public $max_participants;
/**
* If true, one or more fee amounts must be set and a Payment Processor must be configured for Online Event Registration.
*
- * @var boolean
+ * @var bool
*/
public $is_monetary;
/**
* Financial type assigned to paid event registrations for this event. Required if is_monetary is true.
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
/**
* Include a map block on the Event Information page when geocode info is available and a mapping provider has been specified?
*
- * @var boolean
+ * @var bool
*/
public $is_map;
/**
* Is this Event enabled or disabled/cancelled?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* If true, show event location.
*
- * @var boolean
+ * @var bool
*/
public $is_show_location;
/**
* FK to Location Block ID
*
- * @var int unsigned
+ * @var int
*/
public $loc_block_id;
/**
* Participant role ID. Implicit FK to civicrm_option_value where option_group = participant_role.
*
- * @var int unsigned
+ * @var int
*/
public $default_role_id;
/**
* If true, confirmation is automatically emailed to contact on successful registration.
*
- * @var boolean
+ * @var bool
*/
public $is_email_confirm;
/**
* FK to civicrm_option_value.
*
- * @var int unsigned
+ * @var int
*/
public $default_fee_id;
/**
* FK to civicrm_option_value.
*
- * @var int unsigned
+ * @var int
*/
public $default_discount_fee_id;
/**
* if true - allows the user to send payment directly to the org later
*
- * @var boolean
+ * @var bool
*/
public $is_pay_later;
/**
* is partial payment enabled for this event
*
- * @var boolean
+ * @var bool
*/
public $is_partial_payment;
/**
* if true - allows the user to register multiple participants for event
*
- * @var boolean
+ * @var bool
*/
public $is_multiple_registrations;
/**
* Maximum number of additional participants that can be registered on a single booking
*
- * @var int unsigned
+ * @var int
*/
public $max_additional_participants;
/**
* if true - allows the user to register multiple registrations from same email address.
*
- * @var boolean
+ * @var bool
*/
public $allow_same_participant_emails;
/**
* Whether the event has waitlist support.
*
- * @var boolean
+ * @var bool
*/
public $has_waitlist;
/**
* Whether participants require approval before they can finish registering.
*
- * @var boolean
+ * @var bool
*/
public $requires_approval;
/**
* Expire pending but unconfirmed registrations after this many hours.
*
- * @var int unsigned
+ * @var int
*/
public $expiration_time;
/**
* Allow self service cancellation or transfer for event?
*
- * @var boolean
+ * @var bool
*/
public $allow_selfcancelxfer;
/**
* Number of hours prior to event start date to allow self-service cancellation or transfer.
*
- * @var int unsigned
+ * @var int
*/
public $selfcancelxfer_time;
/**
* whether the event has template
*
- * @var boolean
+ * @var bool
*/
public $is_template;
/**
* FK to civicrm_contact, who created this event
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
/**
* The campaign for which this event has been created.
*
- * @var int unsigned
+ * @var int
*/
public $campaign_id;
/**
* Can people share the event through social media?
*
- * @var boolean
+ * @var bool
*/
public $is_share;
/**
* If false, the event booking confirmation screen gets skipped
*
- * @var boolean
+ * @var bool
*/
public $is_confirm_enabled;
/**
* Implicit FK to civicrm_event: parent event
*
- * @var int unsigned
+ * @var int
*/
public $parent_event_id;
/**
* Subevent slot label. Implicit FK to civicrm_option_value where option_group = conference_slot.
*
- * @var int unsigned
+ * @var int
*/
public $slot_label_id;
/**
* Rule to use when matching registrations for this event
*
- * @var int unsigned
+ * @var int
*/
public $dedupe_rule_group_id;
/**
* if true than billing block is required this event
*
- * @var boolean
+ * @var bool
*/
public $is_billing_required;
'pseudoconstant' => [
'optionGroupName' => 'event_type',
'optionEditPath' => 'civicrm/admin/options/event_type',
- ]
+ ],
],
'participant_listing_id' => [
'name' => 'participant_listing_id',
'pseudoconstant' => [
'optionGroupName' => 'participant_listing',
'optionEditPath' => 'civicrm/admin/options/participant_listing',
- ]
+ ],
],
'is_public' => [
'name' => 'is_public',
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'payment_processor' => [
'name' => 'payment_processor',
'table' => 'civicrm_payment_processor',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'is_map' => [
'name' => 'is_map',
'pseudoconstant' => [
'optionGroupName' => 'participant_role',
'optionEditPath' => 'civicrm/admin/options/participant_role',
- ]
+ ],
],
'intro_text' => [
'name' => 'intro_text',
'description' => ts('Minimum initial amount for partial payment'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_event.min_initial_amount',
'table_name' => 'civicrm_event',
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'campaign_id' => [
'name' => 'campaign_id',
'table' => 'civicrm_campaign',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'is_share' => [
'name' => 'is_share',
'keyColumn' => 'id',
'labelColumn' => 'title',
'nameColumn' => 'name',
- ]
+ ],
],
'is_billing_required' => [
'name' => 'is_billing_required',
*
* Generated from xml/schema/CRM/Event/Participant.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:07eafc5db4afa9fe7ca200110727d42f)
+ * (GenCodeChecksum:2c9fa9a933df6d5c4ec745b8031f9297)
*/
/**
/**
* Participant Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* FK to Event ID
*
- * @var int unsigned
+ * @var int
*/
public $event_id;
/**
* Participant status ID. FK to civicrm_participant_status_type. Default of 1 should map to status = Registered.
*
- * @var int unsigned
+ * @var int
*/
public $status_id;
/**
* Populate with the label (text) associated with a fee level for paid events with multiple levels. Note that
- we store the label value and not the key
+ * we store the label value and not the key
*
* @var text
*/
public $fee_level;
/**
- * @var boolean
+ * @var bool
*/
public $is_test;
/**
- * @var boolean
+ * @var bool
*/
public $is_pay_later;
/**
* FK to Participant ID
*
- * @var int unsigned
+ * @var int
*/
public $registered_by_id;
/**
* FK to Discount ID
*
- * @var int unsigned
+ * @var int
*/
public $discount_id;
/**
* The campaign for which this participant has been registered.
*
- * @var int unsigned
+ * @var int
*/
public $campaign_id;
/**
* Discount Amount
*
- * @var int unsigned
+ * @var int
*/
public $discount_amount;
/**
* FK to civicrm_event_carts
*
- * @var int unsigned
+ * @var int
*/
public $cart_id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $transferred_to_contact_id;
'table' => 'civicrm_participant_status_type',
'keyColumn' => 'id',
'labelColumn' => 'label',
- ]
+ ],
],
'participant_role_id' => [
'name' => 'role_id',
'pseudoconstant' => [
'optionGroupName' => 'participant_role',
'optionEditPath' => 'civicrm/admin/options/participant_role',
- ]
+ ],
],
'participant_register_date' => [
'name' => 'register_date',
'type' => CRM_Utils_Type::T_TEXT,
'title' => ts('Fee level'),
'description' => ts('Populate with the label (text) associated with a fee level for paid events with multiple levels. Note that
- we store the label value and not the key
- '),
+ we store the label value and not the key'),
'import' => TRUE,
'where' => 'civicrm_participant.fee_level',
'headerPattern' => '/^(f(ee\s)?level)$/i',
'description' => ts('actual processor fee if known - may be 0.'),
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_participant.fee_amount',
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'participant_campaign_id' => [
'name' => 'campaign_id',
'table' => 'civicrm_campaign',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'discount_amount' => [
'name' => 'discount_amount',
*
* Generated from xml/schema/CRM/Event/ParticipantPayment.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:33976e80c23c2f9eeaa844c812004b42)
+ * (GenCodeChecksum:26f5438e86ca3500888b49650bc6d9e8)
*/
/**
/**
* Participant Payment Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Participant Id (FK)
*
- * @var int unsigned
+ * @var int
*/
public $participant_id;
/**
* FK to contribution table.
*
- * @var int unsigned
+ * @var int
*/
public $contribution_id;
*
* Generated from xml/schema/CRM/Event/ParticipantStatusType.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:8279655ecdaf4a9ca6a0a3a76e945644)
+ * (GenCodeChecksum:a42abc9dbf891aa6cbb6513ca18067b9)
*/
/**
/**
* unique participant status type id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* whether this is a status type required by the system
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* whether this status type is active
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* whether this status type is counted against event size limit
*
- * @var boolean
+ * @var bool
*/
public $is_counted;
/**
* controls sort order
*
- * @var int unsigned
+ * @var int
*/
public $weight;
/**
* whether the status type is visible to the public, an implicit foreign key to option_value.value related to the `visibility` option_group
*
- * @var int unsigned
+ * @var int
*/
public $visibility_id;
],
'pseudoconstant' => [
'callback' => 'CRM_Event_PseudoConstant::participantStatusClassOptions',
- ]
+ ],
],
'is_reserved' => [
'name' => 'is_reserved',
'pseudoconstant' => [
'optionGroupName' => 'visibility',
'optionEditPath' => 'civicrm/admin/options/visibility',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
/**
* Is this the first page?
*
- * @var boolean
+ * @var bool
*/
protected $_first = FALSE;
/**
* Are we in single form mode or wizard mode?
*
- * @var boolean
+ * @var bool
*/
protected $_single;
/**
* Are we actually managing an event template?
- * @var boolean
+ * @var bool
*/
protected $_isTemplate = FALSE;
/**
- * Pre-populate fields based on this template event_id
- * @var integer
+ * Pre-populate fields based on this template event_id.
+ *
+ * @var int
*/
protected $_templateId;
$this->addElement('submit', $this->getButtonName('submit'), ts('Add Discount Set to Fee Table'),
['class' => 'crm-form-submit cancel']
);
- if (CRM_Contribute_BAO_Contribution::checkContributeSettings('deferred_revenue_enabled')) {
+ if (Civi::settings()->get('deferred_revenue_enabled')) {
$deferredFinancialType = CRM_Financial_BAO_FinancialAccount::getDeferredFinancialType();
$this->assign('deferredFinancialType', array_keys($deferredFinancialType));
}
/**
* The values for the quickconfig for priceset.
*
- * @var boolean
+ * @var bool
*/
public $_quickConfig = NULL;
* Are we operating in "single mode", i.e. adding / editing only
* one participant record, or is this a batch add operation
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
$contributionParams = ['skipCleanMoney' => TRUE];
$lineItem = [];
$additionalParticipantDetails = [];
- if (CRM_Contribute_BAO_Contribution::checkContributeSettings('deferred_revenue_enabled')) {
+ if (Civi::settings()->get('deferred_revenue_enabled')) {
$eventStartDate = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $this->_eventId, 'start_date');
if (strtotime($eventStartDate) > strtotime(date('Ymt'))) {
$contributionParams['revenue_recognition_date'] = date('Ymd', strtotime($eventStartDate));
/**
* Is participant able to walk registration wizard.
*
- * @var Boolean
+ * @var bool
*/
public $_allowConfirmation;
/**
* Is participant requires approval.
*
- * @var Boolean
+ * @var bool
*/
public $_requireApproval;
/**
* Is event configured for waitlist.
*
- * @var Boolean
+ * @var bool
*/
public $_allowWaitlist;
/**
* Is event already full.
*
- * @var boolean
+ * @var bool
*
*/
);
}
- if (CRM_Contribute_BAO_Contribution::checkContributeSettings('deferred_revenue_enabled')) {
+ if (Civi::settings()->get('deferred_revenue_enabled')) {
$eventStartDate = CRM_Utils_Array::value(
'start_date',
CRM_Utils_Array::value(
/**
* Show fee block or not.
*
- * @var boolean determines if fee block should be shown or hidden
+ * @var bool
*/
public $_noFees;
/**
- * @var array Fee Block
+ * Fee Block.
+ *
+ * @var array
*/
public $_feeBlock;
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
* return @void
*/
public function transferParticipant($params) {
- $isBackOfficeArg = $this->isBackoffice ? '&is_backoffice=1' : '';
CRM_Utils_System::redirect(CRM_Utils_System::url(
'civicrm/event/selfsvctransfer',
[
'action' => 'add',
'pid' => $this->_participant_id,
'cs' => $this->_userChecksum,
+ 'is_backoffice' => $this->isBackoffice,
]
));
}
* Are we operating in "single mode", i.e. sending email to one
* specific contact?
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
* Are we operating in "single mode", i.e. deleting one
* specific participation?
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
* Are we operating in "single mode", i.e. sending email to one
* specific contact?
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
* Are we operating in "single mode", i.e. sending email to one
* specific contact?
*
- * @var boolean
+ * @var bool
*/
public $_noEmails = FALSE;
* Are we operating in "single mode", i.e. printing letter to one
* specific participant?
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
protected $_fileName;
/**
- * #@+
- * @var integer
- */
-
- /**
- * Imported file size
+ * Imported file size.
+ *
* @var int
*/
protected $_fileSize;
/**
- * Seperator being used
+ * Separator being used.
+ *
* @var string
*/
protected $_seperator;
/**
- * Total number of lines in file
+ * Total number of lines in file.
+ *
* @var int
*/
protected $_lineCount;
/**
* Whether the file has a column header or not
*
- * @var boolean
+ * @var bool
*/
protected $_haveColumnHeader;
$this->_searchResult = CRM_Utils_Request::retrieve('searchResult', 'Boolean', $this);
$whereClause = $this->whereClause($params, FALSE, $this->_force);
- $this->pagerAToZ($whereClause, $params);
+
+ if (CRM_Core_Config::singleton()->includeAlphabeticalPager) {
+ $this->pagerAToZ($whereClause, $params);
+ }
$params = [];
$whereClause = $this->whereClause($params, TRUE, $this->_force);
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
*/
public static function createTempTable($sqlColumns) {
//creating a temporary table for the search result that need be exported
- $exportTempTable = CRM_Utils_SQL_TempTable::build()->setDurable()->setCategory('export')->setUtf8();
+ $exportTempTable = CRM_Utils_SQL_TempTable::build()->setDurable()->setCategory('export');
// also create the sql table
$exportTempTable->drop();
/**
* Download Exported file.
- * @var boolean
+ * @var bool
*/
public $_isDownloadFile;
'currency' => $this->format($itemDAO->currency),
];
} // end items loop
- $itemDAO->free();
}
else {
// In this case, split record just uses the FROM account from the trxn, and there's only one record here
*
*/
public static function checkFinancialTypeHasDeferred($params, $contributionID = NULL, $priceSetFields = NULL) {
- if (!CRM_Contribute_BAO_Contribution::checkContributeSettings('deferred_revenue_enabled')) {
+ if (!Civi::settings()->get('deferred_revenue_enabled')) {
return FALSE;
}
$recognitionDate = CRM_Utils_Array::value('revenue_recognition_date', $params);
*
* @throws \API_Exception
* @throws \CRM_Core_Exception
+ * @throws \CiviCRM_API3_Exception
*/
public static function create($params) {
$contribution = civicrm_api3('Contribution', 'getsingle', ['id' => $params['contribution_id']]);
}
if ($isPaymentCompletesContribution) {
- civicrm_api3('Contribution', 'completetransaction', ['id' => $contribution['id']]);
- // Get the trxn
- $trxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($contribution['id'], 'DESC');
- $ftParams = ['id' => $trxnId['financialTrxnId']];
- $trxn = CRM_Core_BAO_FinancialTrxn::retrieve($ftParams, CRM_Core_DAO::$_nullArray);
+ if ($contributionStatus == 'Pending refund') {
+ // Ideally we could still call completetransaction as non-payment related actions should
+ // be outside this class. However, for now we just update the contribution here.
+ // Unit test cover in CRM_Event_BAO_AdditionalPaymentTest::testTransactionInfo.
+ civicrm_api3('Contribution', 'create',
+ [
+ 'id' => $contribution['id'],
+ 'contribution_status_id' => 'Completed',
+ ]
+ );
+ }
+ else {
+ civicrm_api3('Contribution', 'completetransaction', ['id' => $contribution['id']]);
+ // Get the trxn
+ $trxnId = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($contribution['id'], 'DESC');
+ $ftParams = ['id' => $trxnId['financialTrxnId']];
+ $trxn = CRM_Core_BAO_FinancialTrxn::retrieve($ftParams, CRM_Core_DAO::$_nullArray);
+ }
}
elseif ($contributionStatus === 'Pending') {
civicrm_api3('Contribution', 'create',
*
* Generated from xml/schema/CRM/Financial/Currency.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:19729d25ea5ad98f3fc2551acab9fa7a)
+ * (GenCodeChecksum:5490d115dbd495ebb39ce46a4149cbc2)
*/
/**
/**
* Currency Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
*
* Generated from xml/schema/CRM/Financial/EntityFinancialAccount.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f0a99b56fe094d649cc56eb930b4ae23)
+ * (GenCodeChecksum:3e195b6b8f9a99b338219723c2b509a7)
*/
/**
/**
* ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Links to an id in the entity_table, such as vid in civicrm_financial_type
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* FK to a new civicrm_option_value (account_relationship)
*
- * @var int unsigned
+ * @var int
*/
public $account_relationship;
/**
* FK to the financial_account_id
*
- * @var int unsigned
+ * @var int
*/
public $financial_account_id;
'pseudoconstant' => [
'optionGroupName' => 'account_relationship',
'optionEditPath' => 'civicrm/admin/options/account_relationship',
- ]
+ ],
],
'financial_account_id' => [
'name' => 'financial_account_id',
'table' => 'civicrm_financial_account',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Financial/EntityFinancialTrxn.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b7687297d632a4658b6686a5b540f974)
+ * (GenCodeChecksum:14582d82c08fe5e2c4242e4bafc146d4)
*/
/**
/**
* ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
public $entity_table;
/**
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
- * @var int unsigned
+ * @var int
*/
public $financial_trxn_id;
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_entity_financial_trxn.amount',
*
* Generated from xml/schema/CRM/Financial/FinancialAccount.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:99e6943d33c4b4081a8d74e611589dd7)
+ * (GenCodeChecksum:be1c13919aa1ff84b28ef61832132842)
*/
/**
/**
* ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID that is responsible for the funds in this account
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* pseudo FK into civicrm_option_value.
*
- * @var int unsigned
+ * @var int
*/
public $financial_account_type_id;
/**
* Parent ID in account hierarchy
*
- * @var int unsigned
+ * @var int
*/
public $parent_id;
/**
* Is this a header account which does not allow transactions to be posted against it directly, but only to its sub-accounts?
*
- * @var boolean
+ * @var bool
*/
public $is_header_account;
/**
* Is this account tax-deductible?
*
- * @var boolean
+ * @var bool
*/
public $is_deductible;
/**
* Is this account for taxes?
*
- * @var boolean
+ * @var bool
*/
public $is_tax;
/**
* Is this a predefined system object?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* Is this property active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this account the default one (or default tax one) for its financial_account_type?
*
- * @var boolean
+ * @var bool
*/
public $is_default;
'pseudoconstant' => [
'optionGroupName' => 'financial_account_type',
'optionEditPath' => 'civicrm/admin/options/financial_account_type',
- ]
+ ],
],
'accounting_code' => [
'name' => 'accounting_code',
'description' => ts('The percentage of the total_amount that is due for this tax.'),
'precision' => [
10,
- 8
+ 8,
],
'where' => 'civicrm_financial_account.tax_rate',
'table_name' => 'civicrm_financial_account',
*
* Generated from xml/schema/CRM/Financial/FinancialItem.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:8ebea76ed5ae2b3e7fe0ddafa55a4aed)
+ * (GenCodeChecksum:49a455dafedd73005f06e17dcc99c365)
*/
/**
public static $_log = TRUE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID of contact the item is from
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* FK to civicrm_financial_account
*
- * @var int unsigned
+ * @var int
*/
public $financial_account_id;
/**
* Payment status: test, paid, part_paid, unpaid (if empty assume unpaid)
*
- * @var int unsigned
+ * @var int
*/
public $status_id;
/**
* The specific source item that is responsible for the creation of this financial_item
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_financial_item.amount',
'headerPattern' => '/unit?.?amoun/i',
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'financial_account_id' => [
'name' => 'financial_account_id',
'table' => 'civicrm_financial_account',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'status_id' => [
'name' => 'status_id',
'pseudoconstant' => [
'optionGroupName' => 'financial_item_status',
'optionEditPath' => 'civicrm/admin/options/financial_item_status',
- ]
+ ],
],
'entity_table' => [
'name' => 'entity_table',
*
* Generated from xml/schema/CRM/Financial/FinancialTrxn.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:d30cfdb7f54eac46852246cf30654a97)
+ * (GenCodeChecksum:e130935b88e96b99dc58cb9003666e18)
*/
/**
public static $_log = TRUE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to financial_account table.
*
- * @var int unsigned
+ * @var int
*/
public $from_financial_account_id;
/**
* FK to financial_financial_account table.
*
- * @var int unsigned
+ * @var int
*/
public $to_financial_account_id;
/**
* Is this entry either a payment or a reversal of a payment?
*
- * @var boolean
+ * @var bool
*/
public $is_payment;
/**
* pseudo FK to civicrm_option_value of contribution_status_id option_group
*
- * @var int unsigned
+ * @var int
*/
public $status_id;
/**
* Payment Processor for this financial transaction
*
- * @var int unsigned
+ * @var int
*/
public $payment_processor_id;
/**
* FK to payment_instrument option group values
*
- * @var int unsigned
+ * @var int
*/
public $payment_instrument_id;
/**
* FK to accept_creditcard option group values
*
- * @var int unsigned
+ * @var int
*/
public $card_type_id;
'table' => 'civicrm_financial_account',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'to_financial_account_id' => [
'name' => 'to_financial_account_id',
'table' => 'civicrm_financial_account',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'trxn_date' => [
'name' => 'trxn_date',
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_financial_trxn.total_amount',
'table_name' => 'civicrm_financial_trxn',
'description' => ts('actual processor fee if known - may be 0.'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_financial_trxn.fee_amount',
'table_name' => 'civicrm_financial_trxn',
'description' => ts('actual funds transfer amount. total less fees. if processor does not report actual fee during transaction, this is set to total_amount.'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_financial_trxn.net_amount',
'table_name' => 'civicrm_financial_trxn',
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'is_payment' => [
'name' => 'is_payment',
'pseudoconstant' => [
'optionGroupName' => 'contribution_status',
'optionEditPath' => 'civicrm/admin/options/contribution_status',
- ]
+ ],
],
'payment_processor_id' => [
'name' => 'payment_processor_id',
'pseudoconstant' => [
'optionGroupName' => 'payment_instrument',
'optionEditPath' => 'civicrm/admin/options/payment_instrument',
- ]
+ ],
],
'financial_trxn_card_type_id' => [
'name' => 'card_type_id',
'pseudoconstant' => [
'optionGroupName' => 'accept_creditcard',
'optionEditPath' => 'civicrm/admin/options/accept_creditcard',
- ]
+ ],
],
'financial_trxn_check_number' => [
'name' => 'check_number',
*
* Generated from xml/schema/CRM/Financial/FinancialType.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:760550280aaa0da48232ebdfb11170f9)
+ * (GenCodeChecksum:9395c8fe3d749ad60136065301a5c44f)
*/
/**
/**
* ID of original financial_type so you can search this table by the financial_type.id and then select the relevant version based on the timestamp
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this financial type tax-deductible? If true, contributions of this type may be fully OR partially deductible - non-deductible amount is stored in the Contribution record.
*
- * @var boolean
+ * @var bool
*/
public $is_deductible;
/**
* Is this a predefined system object?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* Is this property active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
*
* Generated from xml/schema/CRM/Financial/PaymentProcessor.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:83f0467b531d70e84945e9c55a8824b6)
+ * (GenCodeChecksum:2d3189beedf083b35929eded03907d9f)
*/
/**
/**
* Payment Processor ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which Domain is this match entry for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
public $description;
/**
- * @var int unsigned
+ * @var int
*/
public $payment_processor_type_id;
/**
* Is this processor active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this processor the default?
*
- * @var boolean
+ * @var bool
*/
public $is_default;
/**
* Is this processor for a test site?
*
- * @var boolean
+ * @var bool
*/
public $is_test;
/**
* Billing Mode (deprecated)
*
- * @var int unsigned
+ * @var int
*/
public $billing_mode;
/**
* Can process recurring contributions
*
- * @var boolean
+ * @var bool
*/
public $is_recur;
/**
* Payment Type: Credit or Debit (deprecated)
*
- * @var int unsigned
+ * @var int
*/
public $payment_type;
/**
* Payment Instrument ID
*
- * @var int unsigned
+ * @var int
*/
public $payment_instrument_id;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'name' => [
'name' => 'name',
'table' => 'civicrm_payment_processor_type',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'is_active' => [
'name' => 'is_active',
'pseudoconstant' => [
'optionGroupName' => 'payment_instrument',
'optionEditPath' => 'civicrm/admin/options/payment_instrument',
- ]
+ ],
],
'accepted_credit_cards' => [
'name' => 'accepted_credit_cards',
*
* Generated from xml/schema/CRM/Financial/PaymentProcessorType.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b8290611e8abcbd771b1006fd34e3ec5)
+ * (GenCodeChecksum:f412f0beac8a6387450f8fe19279d0ce)
*/
/**
/**
* Payment Processor Type ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this processor active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this processor the default?
*
- * @var boolean
+ * @var bool
*/
public $is_default;
/**
* Billing Mode (deprecated)
*
- * @var int unsigned
+ * @var int
*/
public $billing_mode;
/**
* Can process recurring contributions
*
- * @var boolean
+ * @var bool
*/
public $is_recur;
/**
* Payment Type: Credit or Debit (deprecated)
*
- * @var int unsigned
+ * @var int
*/
public $payment_type;
/**
* Payment Instrument ID
*
- * @var int unsigned
+ * @var int
*/
public $payment_instrument_id;
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::billingMode',
- ]
+ ],
],
'is_recur' => [
'name' => 'is_recur',
'pseudoconstant' => [
'optionGroupName' => 'payment_instrument',
'optionEditPath' => 'civicrm/admin/options/payment_instrument',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Financial/PaymentToken.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:13e09ccc4d4ae2dade53c251d4345ed2)
+ * (GenCodeChecksum:9ef72f3d1fba1b5b89841d36382c3eb6)
*/
/**
/**
* Payment Token ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID for the owner of the token
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
- * @var int unsigned
+ * @var int
*/
public $payment_processor_id;
/**
* Contact ID of token creator
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
/**
* Flag if its a AR account type.
*
- * @var boolean
+ * @var bool
*/
protected $_isARFlag = FALSE;
/**
* Flag if its a AR account type.
*
- * @var boolean
+ * @var bool
*/
protected $_isARFlag = FALSE;
public $isBackOffice = FALSE;
/**
- * @var String
+ * @var string
*/
public $_formName = '';
CRM_Core_Payment_ProcessorForm::preProcess($this);
- self::addCreditCardJs($this->_paymentProcessorID);
-
- $this->assign('paymentProcessorID', $this->_paymentProcessorID);
- $this->assign('currency', $this->currency);
-
$this->assign('suppressForm', TRUE);
$this->controller->_generateQFKey = FALSE;
}
*
* Generated from xml/schema/CRM/Friend/Friend.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a0a82714195ed8bafcbb12ef6c829521)
+ * (GenCodeChecksum:a662628e986758095dcbfa2e56597acb)
*/
/**
/**
* Friend ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign key to the referenced item.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
public $thankyou_text;
/**
- * @var boolean
+ * @var bool
*/
public $is_active;
*
* Generated from xml/schema/CRM/Grant/Grant.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ea60d8cd875ca924d3cc34b4282c8a8a)
+ * (GenCodeChecksum:46934eeb5b7cc864460135cbbf1679ca)
*/
/**
/**
* Unique Grant id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Contact ID of contact record given grant belongs to.
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* Yes/No field stating whether grant report was received by donor.
*
- * @var boolean
+ * @var bool
*/
public $grant_report_received;
/**
* Type of grant. Implicit FK to civicrm_option_value in grant_type option_group.
*
- * @var int unsigned
+ * @var int
*/
public $grant_type_id;
/**
* Id of Grant status.
*
- * @var int unsigned
+ * @var int
*/
public $status_id;
/**
* FK to Financial Type.
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
'pseudoconstant' => [
'optionGroupName' => 'grant_type',
'optionEditPath' => 'civicrm/admin/options/grant_type',
- ]
+ ],
],
'amount_total' => [
'name' => 'amount_total',
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_grant.amount_total',
'description' => ts('Requested grant amount, in original currency (optional).'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_grant.amount_requested',
'dataPattern' => '/^\d+(\.\d{2})?$/',
'description' => ts('Granted amount, in default currency.'),
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_grant.amount_granted',
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'rationale' => [
'name' => 'rationale',
'pseudoconstant' => [
'optionGroupName' => 'grant_status',
'optionEditPath' => 'civicrm/admin/options/grant_status',
- ]
+ ],
],
'financial_type_id' => [
'name' => 'financial_type_id',
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
* Are we operating in "single mode", i.e. deleting one
* specific participation?
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
$config = CRM_Core_Config::singleton();
}
- if (property_exists($mailing, 'language') && $mailing->language && $mailing->language != 'en_US') {
+ if (property_exists($mailing, 'language') && $mailing->language && $mailing->language != CRM_Core_I18n::getLocale()) {
$swapLang = CRM_Utils_AutoClean::swap('global://dbLocale?getter', 'call://i18n/setLocale', $mailing->language);
}
*
* Generated from xml/schema/CRM/Mailing/BouncePattern.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4c704cc977e01082612050ebc367ce1a)
+ * (GenCodeChecksum:767f24673857e91d2b76de45fce55649)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Type of bounce
*
- * @var int unsigned
+ * @var int
*/
public $bounce_type_id;
*
* Generated from xml/schema/CRM/Mailing/BounceType.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:317021d6e37d4d4d6fd91e15aaef8f93)
+ * (GenCodeChecksum:32b467be869aa9e4539fe7f0824f96b3)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Number of bounces of this type required before the email address is put on bounce hold
*
- * @var int unsigned
+ * @var int
*/
public $hold_threshold;
*
* Generated from xml/schema/CRM/Mailing/Mailing.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:5a53b90adc8124a3af37701d7a50b822)
+ * (GenCodeChecksum:c6f26fcb49da86f49a4a1ac885070ed6)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which site is this mailing for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* FK to the header component.
*
- * @var int unsigned
+ * @var int
*/
public $header_id;
/**
* FK to the footer component.
*
- * @var int unsigned
+ * @var int
*/
public $footer_id;
/**
* FK to the auto-responder component.
*
- * @var int unsigned
+ * @var int
*/
public $reply_id;
/**
* FK to the unsubscribe component.
*
- * @var int unsigned
+ * @var int
*/
public $unsubscribe_id;
/**
- * @var int unsigned
+ * @var int
*/
public $resubscribe_id;
/**
* FK to the opt-out component.
*
- * @var int unsigned
+ * @var int
*/
public $optout_id;
/**
* Should we track URL click-throughs for this mailing?
*
- * @var boolean
+ * @var bool
*/
public $url_tracking;
/**
* Should we forward replies back to the author?
*
- * @var boolean
+ * @var bool
*/
public $forward_replies;
/**
* Should we enable the auto-responder?
*
- * @var boolean
+ * @var bool
*/
public $auto_responder;
/**
* Should we track when recipients open/read this mailing?
*
- * @var boolean
+ * @var bool
*/
public $open_tracking;
/**
* Has at least one job associated with this mailing finished?
*
- * @var boolean
+ * @var bool
*/
public $is_completed;
/**
* FK to the message template.
*
- * @var int unsigned
+ * @var int
*/
public $msg_template_id;
/**
* Should we overrite VERP address in Reply-To
*
- * @var boolean
+ * @var bool
*/
public $override_verp;
/**
* FK to Contact ID who first created this mailing
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
/**
* FK to Contact ID who scheduled this mailing
*
- * @var int unsigned
+ * @var int
*/
public $scheduled_id;
/**
* FK to Contact ID who approved this mailing
*
- * @var int unsigned
+ * @var int
*/
public $approver_id;
/**
* The status of this mailing. Values: none, approved, rejected
*
- * @var int unsigned
+ * @var int
*/
public $approval_status_id;
/**
* Is this mailing archived?
*
- * @var boolean
+ * @var bool
*/
public $is_archived;
/**
* The campaign for which this mailing has been initiated.
*
- * @var int unsigned
+ * @var int
*/
public $campaign_id;
/**
* Remove duplicate emails?
*
- * @var boolean
+ * @var bool
*/
public $dedupe_email;
/**
- * @var int unsigned
+ * @var int
*/
public $sms_provider_id;
/**
* With email_selection_method, determines which email address to use
*
- * @var int unsigned
+ * @var int
*/
public $location_type_id;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'header_id' => [
'name' => 'header_id',
],
'pseudoconstant' => [
'callback' => 'CRM_Mailing_PseudoConstant::mailingTypes',
- ]
+ ],
],
'from_name' => [
'name' => 'from_name',
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Mailing_BAO_Mailing::getTemplateTypeNames',
- ]
+ ],
],
'template_options' => [
'name' => 'template_options',
'pseudoconstant' => [
'optionGroupName' => 'mail_approval_status',
'optionEditPath' => 'civicrm/admin/options/mail_approval_status',
- ]
+ ],
],
'approval_note' => [
'name' => 'approval_note',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::groupVisibility',
- ]
+ ],
],
'campaign_id' => [
'name' => 'campaign_id',
'table' => 'civicrm_campaign',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'dedupe_email' => [
'name' => 'dedupe_email',
'table' => 'civicrm_location_type',
'keyColumn' => 'id',
'labelColumn' => 'display_name',
- ]
+ ],
],
'email_selection_method' => [
'name' => 'email_selection_method',
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::emailSelectMethods',
- ]
+ ],
],
'language' => [
'name' => 'language',
'optionGroupName' => 'languages',
'keyColumn' => 'name',
'optionEditPath' => 'civicrm/admin/options/languages',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Mailing/MailingAB.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:507182363032ab7340b7d1e7383ce1dd)
+ * (GenCodeChecksum:a45895256f23784bb86ae1b4659abbe6)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* The first experimental mailing ("A" condition)
*
- * @var int unsigned
+ * @var int
*/
public $mailing_id_a;
/**
* The second experimental mailing ("B" condition)
*
- * @var int unsigned
+ * @var int
*/
public $mailing_id_b;
/**
* The final, general mailing (derived from A or B)
*
- * @var int unsigned
+ * @var int
*/
public $mailing_id_c;
/**
* Which site is this mailing for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
public $declare_winning_time;
/**
- * @var int unsigned
+ * @var int
*/
public $group_percentage;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Mailing_PseudoConstant::abStatus',
- ]
+ ],
],
'mailing_id_a' => [
'name' => 'mailing_id_a',
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Mailing_PseudoConstant::abTestCriteria',
- ]
+ ],
],
'winner_criteria' => [
'name' => 'winner_criteria',
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Mailing_PseudoConstant::abWinnerCriteria',
- ]
+ ],
],
'specific_url' => [
'name' => 'specific_url',
*
* Generated from xml/schema/CRM/Mailing/MailingComponent.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:955923daf1ea29949123b9b76bab36da)
+ * (GenCodeChecksum:e3b5498354f50a2badfa4425958511af)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Is this the default component for this component_type?
*
- * @var boolean
+ * @var bool
*/
public $is_default;
/**
* Is this property active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::mailingComponents',
- ]
+ ],
],
'subject' => [
'name' => 'subject',
*
* Generated from xml/schema/CRM/Mailing/MailingGroup.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f39d14e245f10652e2fcea603ebc7610)
+ * (GenCodeChecksum:22f18bdbfea712ba8a6e1f0220ffb016)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* The ID of a previous mailing to include/exclude recipients.
*
- * @var int unsigned
+ * @var int
*/
public $mailing_id;
/**
* Foreign key to the referenced item.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getMailingGroupTypes',
- ]
+ ],
],
'entity_table' => [
'name' => 'entity_table',
'localizable' => 0,
'pseudoconstant' => [
'callback' => 'CRM_Mailing_BAO_Mailing::mailingGroupEntityTables',
- ]
+ ],
],
'entity_id' => [
'name' => 'entity_id',
*
* Generated from xml/schema/CRM/Mailing/MailingJob.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:e362d1178fb0ca6293b31660e24ea375)
+ * (GenCodeChecksum:e7dbe1ca234cec93cb54192911b87297)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* The ID of the mailing this Job will send.
*
- * @var int unsigned
+ * @var int
*/
public $mailing_id;
/**
* Is this job for a test mail?
*
- * @var boolean
+ * @var bool
*/
public $is_test;
/**
* Parent job id
*
- * @var int unsigned
+ * @var int
*/
public $parent_id;
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::getMailingJobStatus',
- ]
+ ],
],
'is_test' => [
'name' => 'is_test',
*
* Generated from xml/schema/CRM/Mailing/Recipients.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:321767aa3e7c0ea7aac652b973d9603d)
+ * (GenCodeChecksum:006015b0e117746e7c97d656150badc3)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* The ID of the mailing this Job will send.
*
- * @var int unsigned
+ * @var int
*/
public $mailing_id;
/**
* FK to Contact
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* FK to Email
*
- * @var int unsigned
+ * @var int
*/
public $email_id;
/**
* FK to Phone
*
- * @var int unsigned
+ * @var int
*/
public $phone_id;
*
* Generated from xml/schema/CRM/Mailing/Spool.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:db7871e2d5313c106f01f1516beaf898)
+ * (GenCodeChecksum:55c696d855ff602c9e097bd9ccff0971)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* The ID of the Job .
*
- * @var int unsigned
+ * @var int
*/
public $job_id;
*
* Generated from xml/schema/CRM/Mailing/TrackableURL.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:e0280e1322178bb6d56a8104589c1415)
+ * (GenCodeChecksum:36f444ad863c1eae8db4e8e1c768eb27)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to the mailing
*
- * @var int unsigned
+ * @var int
*/
public $mailing_id;
*
* Generated from xml/schema/CRM/Mailing/Event/Bounce.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:5243c65d5b727e60e1fdedb9fa3e84e2)
+ * (GenCodeChecksum:0b39ada8498cdc95e5eab7a4f060686a)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to EventQueue
*
- * @var int unsigned
+ * @var int
*/
public $event_queue_id;
/**
* What type of bounce was it?
*
- * @var int unsigned
+ * @var int
*/
public $bounce_type_id;
'table' => 'civicrm_mailing_bounce_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'bounce_reason' => [
'name' => 'bounce_reason',
*
* Generated from xml/schema/CRM/Mailing/Event/Confirm.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:627a4d86b1b115a52592e04270eadc78)
+ * (GenCodeChecksum:dd5f6d9d5ca3115b92e9f87a1d5bf503)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to civicrm_mailing_event_subscribe
*
- * @var int unsigned
+ * @var int
*/
public $event_subscribe_id;
*
* Generated from xml/schema/CRM/Mailing/Event/Delivered.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0bdd626b315c4ad541239662d6c52a82)
+ * (GenCodeChecksum:6327ad9e20e94a06bd9609fd3f56a3b4)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to EventQueue
*
- * @var int unsigned
+ * @var int
*/
public $event_queue_id;
*
* Generated from xml/schema/CRM/Mailing/Event/Forward.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:73d4b00ff9ea00d604d5e83963ba5597)
+ * (GenCodeChecksum:b178f318b31d833f478b236f268cbcec)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to EventQueue
*
- * @var int unsigned
+ * @var int
*/
public $event_queue_id;
/**
* FK to EventQueue for destination
*
- * @var int unsigned
+ * @var int
*/
public $dest_queue_id;
*
* Generated from xml/schema/CRM/Mailing/Event/Opened.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:226ec9ccc51c88320e1b4108d5a85bf3)
+ * (GenCodeChecksum:77cca50f0bb75aecfc26f8e62037b93d)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to EventQueue
*
- * @var int unsigned
+ * @var int
*/
public $event_queue_id;
*
* Generated from xml/schema/CRM/Mailing/Event/Queue.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:2b873b4e3dae5279b8b63b6e4de5adc0)
+ * (GenCodeChecksum:6ce46b44932d8dcdbf39af7d91a57a03)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Job
*
- * @var int unsigned
+ * @var int
*/
public $job_id;
/**
* FK to Email
*
- * @var int unsigned
+ * @var int
*/
public $email_id;
/**
* FK to Contact
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* FK to Phone
*
- * @var int unsigned
+ * @var int
*/
public $phone_id;
*
* Generated from xml/schema/CRM/Mailing/Event/Reply.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:651380df4cde36fdfc999b5570cac1f9)
+ * (GenCodeChecksum:0ddff564744f8da4c3d5030ceb692b9c)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to EventQueue
*
- * @var int unsigned
+ * @var int
*/
public $event_queue_id;
*
* Generated from xml/schema/CRM/Mailing/Event/Subscribe.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a18362fb8ab1b7cd9b6f5450fcf367f5)
+ * (GenCodeChecksum:3f9398df2e81f38e0a24330928f85b47)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Group
*
- * @var int unsigned
+ * @var int
*/
public $group_id;
/**
* FK to Contact
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
'table' => 'civicrm_group',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
'contact_id' => [
'name' => 'contact_id',
*
* Generated from xml/schema/CRM/Mailing/Event/TrackableURLOpen.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:1dd0644af19360b30531b6f23dde78c1)
+ * (GenCodeChecksum:ed0344e6d9483abfca366a5ba9735e56)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to EventQueue
*
- * @var int unsigned
+ * @var int
*/
public $event_queue_id;
/**
* FK to TrackableURL
*
- * @var int unsigned
+ * @var int
*/
public $trackable_url_id;
*
* Generated from xml/schema/CRM/Mailing/Event/Unsubscribe.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:e2a14fa1a63bd3f7b4e4fb4864a8560e)
+ * (GenCodeChecksum:f3f2e48cc72b5cacff2aad1e146e70f8)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to EventQueue
*
- * @var int unsigned
+ * @var int
*/
public $event_queue_id;
/**
* Unsubscribe at org- or group-level
*
- * @var boolean
+ * @var bool
*/
public $org_unsubscribe;
/**
* Scheduled mailing.
*
- * @var boolean
+ * @var bool
*/
public $_scheduled;
class CRM_Mailing_Page_View extends CRM_Core_Page {
/**
- * @var Signal to Flexmailer that this version of the class is usable.
+ * Signal to Flexmailer that this version of the class is usable.
+ *
+ * @var bool
*/
const USES_MAILING_PREVIEW_API = 1;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
*
* Generated from xml/schema/CRM/Member/Membership.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f292ac185330c17ffa8c647359ab07b4)
+ * (GenCodeChecksum:458e89b098dbf4f91369a293406c38ba)
*/
/**
/**
* Membership Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* FK to Membership Type
*
- * @var int unsigned
+ * @var int
*/
public $membership_type_id;
/**
* FK to Membership Status
*
- * @var int unsigned
+ * @var int
*/
public $status_id;
/**
* Admin users may set a manual status which overrides the calculated status. When this flag is true, automated status update scripts should NOT modify status for the record.
*
- * @var boolean
+ * @var bool
*/
public $is_override;
/**
* Optional FK to Parent Membership.
*
- * @var int unsigned
+ * @var int
*/
public $owner_membership_id;
public $max_related;
/**
- * @var boolean
+ * @var bool
*/
public $is_test;
/**
- * @var boolean
+ * @var bool
*/
public $is_pay_later;
/**
* Conditional foreign key to civicrm_contribution_recur id. Each membership in connection with a recurring contribution carries a foreign key to the recurring contribution record. This assumes we can track these processor initiated events.
*
- * @var int unsigned
+ * @var int
*/
public $contribution_recur_id;
/**
* The campaign for which this membership is attached.
*
- * @var int unsigned
+ * @var int
*/
public $campaign_id;
'table' => 'civicrm_membership_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'join_date' => [
'name' => 'join_date',
'table' => 'civicrm_membership_status',
'keyColumn' => 'id',
'labelColumn' => 'label',
- ]
+ ],
],
'is_override' => [
'name' => 'is_override',
'table' => 'civicrm_campaign',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Member/MembershipBlock.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:00a04451a5cee7da1ae6a4c255f40481)
+ * (GenCodeChecksum:0e7f3965fe1382ec1f850a9489b3f236)
*/
/**
/**
* Membership Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to civicrm_contribution_page.id
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* Optional foreign key to membership_type
*
- * @var int unsigned
+ * @var int
*/
public $membership_type_default;
/**
* Display minimum membership fee
*
- * @var boolean
+ * @var bool
*/
public $display_min_fee;
/**
* Should membership transactions be processed separately
*
- * @var boolean
+ * @var bool
*/
public $is_separate_payment;
/**
* Is membership sign up optional
*
- * @var boolean
+ * @var bool
*/
public $is_required;
/**
* Is this membership_block enabled
*
- * @var boolean
+ * @var bool
*/
public $is_active;
*
* Generated from xml/schema/CRM/Member/MembershipLog.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:2ae50fe99b0c911fbe971e12e2bed7ce)
+ * (GenCodeChecksum:82b26091e0c62f81060ae15de5a4a010)
*/
/**
public static $_log = TRUE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Membership table
*
- * @var int unsigned
+ * @var int
*/
public $membership_id;
/**
* New status assigned to membership by this action. FK to Membership Status
*
- * @var int unsigned
+ * @var int
*/
public $status_id;
/**
* FK to Contact ID of person under whose credentials this data modification was made.
*
- * @var int unsigned
+ * @var int
*/
public $modified_id;
/**
* FK to Membership Type.
*
- * @var int unsigned
+ * @var int
*/
public $membership_type_id;
*
* Generated from xml/schema/CRM/Member/MembershipPayment.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:1296687b8bc4acb0b1db07fdd131d7ea)
+ * (GenCodeChecksum:63aaccfeac39fe31a88f69693e8b4302)
*/
/**
public static $_log = TRUE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Membership table
*
- * @var int unsigned
+ * @var int
*/
public $membership_id;
/**
* FK to contribution table.
*
- * @var int unsigned
+ * @var int
*/
public $contribution_id;
*
* Generated from xml/schema/CRM/Member/MembershipStatus.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:125e59b6c34bc9ea478a12c18a66af01)
+ * (GenCodeChecksum:0cb23348cde6fff261da37c8cb309da1)
*/
/**
/**
* Membership Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Does this status aggregate to current members (e.g. New, Renewed, Grace might all be TRUE... while Unrenewed, Lapsed, Inactive would be FALSE).
*
- * @var boolean
+ * @var bool
*/
public $is_current_member;
/**
* Is this status for admin/manual assignment only.
*
- * @var boolean
+ * @var bool
*/
public $is_admin;
/**
* Assign this status to a membership record if no other status match is found.
*
- * @var boolean
+ * @var bool
*/
public $is_default;
/**
* Is this membership_status enabled.
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this membership_status reserved.
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::eventDate',
- ]
+ ],
],
'start_event_adjust_unit' => [
'name' => 'start_event_adjust_unit',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::unitList',
- ]
+ ],
],
'start_event_adjust_interval' => [
'name' => 'start_event_adjust_interval',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::eventDate',
- ]
+ ],
],
'end_event_adjust_unit' => [
'name' => 'end_event_adjust_unit',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::unitList',
- ]
+ ],
],
'end_event_adjust_interval' => [
'name' => 'end_event_adjust_interval',
*
* Generated from xml/schema/CRM/Member/MembershipType.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:6652513077f7dc2a13004ef30408a051)
+ * (GenCodeChecksum:371e68c0fca2803c9b273bb25991a060)
*/
/**
/**
* Membership Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which Domain is this match entry for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* Owner organization for this membership type. FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $member_of_contact_id;
/**
* If membership is paid by a contribution - what financial type should be used. FK to civicrm_financial_type.id
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
/**
* 0 = No auto-renew option; 1 = Give option, but not required; 2 = Auto-renew required;
*
- * @var boolean
+ * @var bool
*/
public $auto_renew;
/**
* Is this membership_type enabled
*
- * @var boolean
+ * @var bool
*/
public $is_active;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'membership_type' => [
'name' => 'name',
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'minimum_fee' => [
'name' => 'minimum_fee',
'description' => ts('Minimum fee for this membership (0 for free/complimentary memberships).'),
'precision' => [
18,
- 9
+ 9,
],
'where' => 'civicrm_membership_type.minimum_fee',
'default' => '0',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::membershipTypeUnitList',
- ]
+ ],
],
'duration_interval' => [
'name' => 'duration_interval',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::periodType',
- ]
+ ],
],
'fixed_period_start_day' => [
'name' => 'fixed_period_start_day',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::memberVisibility',
- ]
+ ],
],
'weight' => [
'name' => 'weight',
],
'pseudoconstant' => [
'callback' => 'CRM_Core_SelectValues::memberAutoRenew',
- ]
+ ],
],
'is_active' => [
'name' => 'is_active',
$this->assign('membershipTypeId', $this->_id);
- if (CRM_Contribute_BAO_Contribution::checkContributeSettings('deferred_revenue_enabled')) {
+ if (Civi::settings()->get('deferred_revenue_enabled')) {
$deferredFinancialType = CRM_Financial_BAO_FinancialAccount::getDeferredFinancialType();
$this->assign('deferredFinancialType', array_keys($deferredFinancialType));
}
* Are we operating in "single mode", i.e. deleting one
* specific membership?
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
* Are we operating in "single mode", i.e. sending email to one
* specific contact?
*
- * @var boolean
+ * @var bool
*/
public $_single = FALSE;
* Are we operating in "single mode", i.e. sending email to one
* specific contact?
*
- * @var boolean
+ * @var bool
*/
public $_noEmails = FALSE;
/**
* Is this field required
- * @var boolean
+ * @var bool
*/
public $_required;
protected $_fileName;
- /**
- * #@+
- * @var integer
- */
-
/**
* Imported file size
* @var int
/**
* Whether the file has a column header or not
*
- * @var boolean
+ * @var bool
*/
protected $_haveColumnHeader;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
*
* Generated from xml/schema/CRM/PCP/PCP.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4585e6f51f50242cba89fe9325c44c44)
+ * (GenCodeChecksum:e130d04d9fad8bcec628fac504ff9da7)
*/
/**
/**
* Personal Campaign Page ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Contact ID
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
- * @var int unsigned
+ * @var int
*/
public $status_id;
/**
* The Contribution or Event Page which triggered this pcp
*
- * @var int unsigned
+ * @var int
*/
public $page_id;
/**
* The pcp block that this pcp page was created from
*
- * @var int unsigned
+ * @var int
*/
public $pcp_block_id;
/**
- * @var int unsigned
+ * @var int
*/
public $is_thermometer;
/**
- * @var int unsigned
+ * @var int
*/
public $is_honor_roll;
/**
* Is Personal Campaign Page enabled/active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Notify owner via email when someone donates to page?
*
- * @var boolean
+ * @var bool
*/
public $is_notify;
'pseudoconstant' => [
'optionGroupName' => 'pcp_status',
'optionEditPath' => 'civicrm/admin/options/pcp_status',
- ]
+ ],
],
'title' => [
'name' => 'title',
'description' => ts('Goal amount of this Personal Campaign Page.'),
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_pcp.goal_amount',
'table_name' => 'civicrm_pcp',
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'is_active' => [
'name' => 'is_active',
*
* Generated from xml/schema/CRM/PCP/PCPBlock.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:7cd542a1105ef4cf3ca8596869042754)
+ * (GenCodeChecksum:deacae800c52be5e0de763f8bccf4578)
*/
/**
/**
* PCP block Id
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to civicrm_contribution_page.id OR civicrm_event.id
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* The entity that this pcp targets
*
- * @var int unsigned
+ * @var int
*/
public $target_entity_id;
/**
* FK to civicrm_uf_group.id. Does Personal Campaign Page require manual activation by administrator? (is inactive by default after setup)?
*
- * @var int unsigned
+ * @var int
*/
public $supporter_profile_id;
/**
* FK to civicrm_option_group with name = PCP owner notifications
*
- * @var int unsigned
+ * @var int
*/
public $owner_notify_id;
/**
* Does Personal Campaign Page require manual activation by administrator? (is inactive by default after setup)?
*
- * @var boolean
+ * @var bool
*/
public $is_approval_needed;
/**
* Does Personal Campaign Page allow using tell a friend?
*
- * @var boolean
+ * @var bool
*/
public $is_tellfriend_enabled;
/**
* Maximum recipient fields allowed in tell a friend
*
- * @var int unsigned
+ * @var int
*/
public $tellfriend_limit;
/**
* Is Personal Campaign Page Block enabled/active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
'pseudoconstant' => [
'optionGroupName' => 'pcp_owner_notify',
'optionEditPath' => 'civicrm/admin/options/pcp_owner_notify',
- ]
+ ],
],
'is_approval_needed' => [
'name' => 'is_approval_needed',
/**
* Are we in single form mode or wizard mode?
*
- * @var boolean
+ * @var bool
*/
public $_single;
*
* Generated from xml/schema/CRM/Pledge/Pledge.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4c4aab1d03d146815017589777121bbb)
+ * (GenCodeChecksum:877e6098c175e69f385b22f61958b70c)
*/
/**
/**
* Pledge ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Foreign key to civicrm_contact.id .
*
- * @var int unsigned
+ * @var int
*/
public $contact_id;
/**
* FK to Financial Type
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
/**
* The Contribution Page which triggered this contribution
*
- * @var int unsigned
+ * @var int
*/
public $contribution_page_id;
/**
* Number of time units for recurrence of pledge payments.
*
- * @var int unsigned
+ * @var int
*/
public $frequency_interval;
/**
* Day in the period when the pledge payment is due e.g. 1st of month, 15th etc. Use this to set the scheduled dates for pledge payments.
*
- * @var int unsigned
+ * @var int
*/
public $frequency_day;
/**
* Total number of payments to be made.
*
- * @var int unsigned
+ * @var int
*/
public $installments;
/**
* The maximum number of payment reminders to send for any given payment.
*
- * @var int unsigned
+ * @var int
*/
public $max_reminders;
/**
* Send initial reminder this many days prior to the payment due date.
*
- * @var int unsigned
+ * @var int
*/
public $initial_reminder_day;
/**
* Send additional reminder this many days after last one sent, up to maximum number of reminders.
*
- * @var int unsigned
+ * @var int
*/
public $additional_reminder_day;
/**
* Implicit foreign key to civicrm_option_values in the pledge_status option group.
*
- * @var int unsigned
+ * @var int
*/
public $status_id;
/**
- * @var boolean
+ * @var bool
*/
public $is_test;
/**
* The campaign for which this pledge has been initiated.
*
- * @var int unsigned
+ * @var int
*/
public $campaign_id;
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'pledge_contribution_page_id' => [
'name' => 'contribution_page_id',
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_pledge.amount',
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_pledge.original_installment_amount',
'export' => TRUE,
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'pledge_frequency_unit' => [
'name' => 'frequency_unit',
'optionGroupName' => 'recur_frequency_units',
'keyColumn' => 'name',
'optionEditPath' => 'civicrm/admin/options/recur_frequency_units',
- ]
+ ],
],
'pledge_frequency_interval' => [
'name' => 'frequency_interval',
'pseudoconstant' => [
'optionGroupName' => 'pledge_status',
'optionEditPath' => 'civicrm/admin/options/pledge_status',
- ]
+ ],
],
'pledge_is_test' => [
'name' => 'is_test',
'table' => 'civicrm_campaign',
'keyColumn' => 'id',
'labelColumn' => 'title',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Pledge/PledgeBlock.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:cdc529b617a76a84e18455737f4e7a03)
+ * (GenCodeChecksum:0ba3eca2bf0f4b6ebd0f9b3617d5bef0)
*/
/**
/**
* Pledge ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to entity table specified in entity_table column.
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* Is frequency interval exposed on the contribution form.
*
- * @var boolean
+ * @var bool
*/
public $is_pledge_interval;
/**
* The maximum number of payment reminders to send for any given payment.
*
- * @var int unsigned
+ * @var int
*/
public $max_reminders;
/**
* Send initial reminder this many days prior to the payment due date.
*
- * @var int unsigned
+ * @var int
*/
public $initial_reminder_day;
/**
* Send additional reminder this many days after last one sent, up to maximum number of reminders.
*
- * @var int unsigned
+ * @var int
*/
public $additional_reminder_day;
/**
* If true - recurring start date is shown.
*
- * @var boolean
+ * @var bool
*/
public $is_pledge_start_date_visible;
/**
* If true - recurring start date is editable.
*
- * @var boolean
+ * @var bool
*/
public $is_pledge_start_date_editable;
*
* Generated from xml/schema/CRM/Pledge/PledgePayment.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:79875dd118415179172c3ac425758b29)
+ * (GenCodeChecksum:afb095a766df0f45f3aed1ff3b24e852)
*/
/**
public static $_log = TRUE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to Pledge table
*
- * @var int unsigned
+ * @var int
*/
public $pledge_id;
/**
* FK to contribution table.
*
- * @var int unsigned
+ * @var int
*/
public $contribution_id;
/**
* The number of payment reminders sent.
*
- * @var int unsigned
+ * @var int
*/
public $reminder_count;
/**
- * @var int unsigned
+ * @var int
*/
public $status_id;
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_pledge_payment.scheduled_amount',
'description' => ts('Actual amount that is paid as the Pledged installment amount.'),
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_pledge_payment.actual_amount',
'keyColumn' => 'name',
'labelColumn' => 'full_name',
'nameColumn' => 'name',
- ]
+ ],
],
'pledge_payment_scheduled_date' => [
'name' => 'scheduled_date',
'pseudoconstant' => [
'optionGroupName' => 'contribution_status',
'optionEditPath' => 'civicrm/admin/options/contribution_status',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact.
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
* Are we operating in "single mode", i.e. deleting one
* specific pledge?
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_single = FALSE;
/**
* Are we restricting ourselves to a single contact
*
- * @var boolean
+ * @var bool
*/
protected $_limit = NULL;
CRM_Price_BAO_PriceSet::addTo($baoName, $newId, $copyPriceSet->id);
}
else {
- $copyPriceSet = &CRM_Core_DAO::copyGeneric('CRM_Price_DAO_PriceSetEntity',
+ $copyPriceSet = CRM_Core_DAO::copyGeneric('CRM_Price_DAO_PriceSetEntity',
[
'entity_id' => $id,
'entity_table' => $baoName,
*
* Generated from xml/schema/CRM/Price/LineItem.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:efca4ce3a24803ffca3180f7a81ea6f2)
+ * (GenCodeChecksum:6345c550c1c0605c0c25be1cc0382183)
*/
/**
/**
* Line Item
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* entry in table
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* FK to civicrm_contribution
*
- * @var int unsigned
+ * @var int
*/
public $contribution_id;
/**
* FK to civicrm_price_field
*
- * @var int unsigned
+ * @var int
*/
public $price_field_id;
/**
* Participant count for field
*
- * @var int unsigned
+ * @var int
*/
public $participant_count;
/**
* FK to civicrm_price_field_value
*
- * @var int unsigned
+ * @var int
*/
public $price_field_value_id;
/**
* FK to Financial Type.
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_line_item.qty',
'table_name' => 'civicrm_line_item',
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_line_item.unit_price',
'table_name' => 'civicrm_line_item',
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_line_item.line_total',
'table_name' => 'civicrm_line_item',
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'non_deductible_amount' => [
'name' => 'non_deductible_amount',
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_line_item.non_deductible_amount',
'headerPattern' => '/non?.?deduct/i',
'description' => ts('tax of each item'),
'precision' => [
20,
- 2
+ 2,
],
'import' => TRUE,
'where' => 'civicrm_line_item.tax_amount',
*
* Generated from xml/schema/CRM/Price/PriceField.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:e9ff5a22489167a421efd2f415ba4f58)
+ * (GenCodeChecksum:ccea318a7e83c8fd6d03734e20798b15)
*/
/**
/**
* Price Field
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to civicrm_price_set
*
- * @var int unsigned
+ * @var int
*/
public $price_set_id;
/**
* Enter a quantity for this field?
*
- * @var boolean
+ * @var bool
*/
public $is_enter_qty;
/**
* Should the price be displayed next to the label for each option?
*
- * @var boolean
+ * @var bool
*/
public $is_display_amounts;
/**
* number of options per line for checkbox and radio
*
- * @var int unsigned
+ * @var int
*/
public $options_per_line;
/**
* Is this price field active
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Is this price field required (value must be > 1)
*
- * @var boolean
+ * @var bool
*/
public $is_required;
/**
* Implicit FK to civicrm_option_group with name = 'visibility'
*
- * @var int unsigned
+ * @var int
*/
public $visibility_id;
],
'pseudoconstant' => [
'callback' => 'CRM_Price_BAO_PriceField::htmlTypes',
- ]
+ ],
],
'is_enter_qty' => [
'name' => 'is_enter_qty',
'pseudoconstant' => [
'optionGroupName' => 'visibility',
'optionEditPath' => 'civicrm/admin/options/visibility',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Price/PriceFieldValue.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a3de204f039daa85984316fae2c60975)
+ * (GenCodeChecksum:6c2bd575335eeb9915683296952b2c3e)
*/
/**
/**
* Price Field Value
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* FK to civicrm_price_field
*
- * @var int unsigned
+ * @var int
*/
public $price_field_id;
/**
* Number of participants per field option
*
- * @var int unsigned
+ * @var int
*/
public $count;
/**
* Max number of participants per field options
*
- * @var int unsigned
+ * @var int
*/
public $max_value;
/**
* FK to Membership Type
*
- * @var int unsigned
+ * @var int
*/
public $membership_type_id;
/**
* Number of terms for this membership
*
- * @var int unsigned
+ * @var int
*/
public $membership_num_terms;
/**
* Is this default price field option
*
- * @var boolean
+ * @var bool
*/
public $is_default;
/**
* Is this price field value active
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* FK to Financial Type.
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
/**
* Implicit FK to civicrm_option_group with name = 'visibility'
*
- * @var int unsigned
+ * @var int
*/
public $visibility_id;
'required' => TRUE,
'precision' => [
18,
- 9
+ 9,
],
'where' => 'civicrm_price_field_value.amount',
'table_name' => 'civicrm_price_field_value',
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'non_deductible_amount' => [
'name' => 'non_deductible_amount',
'required' => TRUE,
'precision' => [
20,
- 2
+ 2,
],
'where' => 'civicrm_price_field_value.non_deductible_amount',
'headerPattern' => '/non?.?deduct/i',
'pseudoconstant' => [
'optionGroupName' => 'visibility',
'optionEditPath' => 'civicrm/admin/options/visibility',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
*
* Generated from xml/schema/CRM/Price/PriceSet.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a66d639b335e9df4c3133ade2aa16a9b)
+ * (GenCodeChecksum:5dcf30888df8309f20fa347780f16f4d)
*/
/**
/**
* Price Set
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which Domain is this price-set for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* Is this price set active
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* FK to Financial Type(for membership price sets only).
*
- * @var int unsigned
+ * @var int
*/
public $financial_type_id;
/**
* Is set if edited on Contribution or Event Page rather than through Manage Price Sets
*
- * @var boolean
+ * @var bool
*/
public $is_quick_config;
/**
* Is this a predefined system price set (i.e. it can not be deleted, edited)?
*
- * @var boolean
+ * @var bool
*/
public $is_reserved;
/**
* Minimum Amount required for this set.
*
- * @var int unsigned
+ * @var int
*/
public $min_amount;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'name' => [
'name' => 'name',
'table' => 'civicrm_component',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'financial_type_id' => [
'name' => 'financial_type_id',
'table' => 'civicrm_financial_type',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'is_quick_config' => [
'name' => 'is_quick_config',
*
* Generated from xml/schema/CRM/Price/PriceSetEntity.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ba2a78bcd5c6c34e2a81d1bcef776ca3)
+ * (GenCodeChecksum:8bd26effd43fe4ee752addf11e6a4769)
*/
/**
/**
* Price Set Entity
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Item in table
*
- * @var int unsigned
+ * @var int
*/
public $entity_id;
/**
* price set being used
*
- * @var int unsigned
+ * @var int
*/
public $price_set_id;
/**
* The price set is reserved or not.
*
- * @var boolean
+ * @var bool
*/
protected $_isSetReserved = FALSE;
/**
* The price set is reserved or not.
*
- * @var boolean
+ * @var bool
*/
protected $_isSetReserved = FALSE;
/**
* Should we bypass permissions.
*
- * @var boolean
+ * @var bool
*/
protected $_skipPermission;
/**
* Do we enable mapping of users.
*
- * @var boolean
+ * @var bool
*/
protected $_map;
/**
* Do we enable edit link.
*
- * @var boolean
+ * @var bool
*/
protected $_editLink;
/**
* Should we link to the UF Profile.
*
- * @var boolean
+ * @var bool
*/
protected $_linkToUF;
*
* Generated from xml/schema/CRM/Queue/QueueItem.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c9e273e55020d73d90150ef7d6e04312)
+ * (GenCodeChecksum:375c90f10f805de0cc712cad771cf15e)
*/
/**
public static $_log = FALSE;
/**
- * @var int unsigned
+ * @var int
*/
public $id;
*
* Generated from xml/schema/CRM/Report/ReportInstance.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:08099952886e51709d4f1ecbd9feefaf)
+ * (GenCodeChecksum:22eeac140cc540874af36a422c548078)
*/
/**
/**
* Report Instance ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* Which Domain is this instance for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
/**
* Is this entry active?
*
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* FK to contact table.
*
- * @var int unsigned
+ * @var int
*/
public $created_id;
/**
* FK to contact table.
*
- * @var int unsigned
+ * @var int
*/
public $owner_id;
/**
* FK to navigation ID
*
- * @var int unsigned
+ * @var int
*/
public $navigation_id;
/**
* FK to instance ID drilldown to
*
- * @var int unsigned
+ * @var int
*/
public $drilldown_id;
/**
- * @var boolean
+ * @var bool
*/
public $is_reserved;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
'title' => [
'name' => 'title',
/**
* The id of the report instance
*
- * @var integer
+ * @var int
*/
protected $_id;
/**
* The id of the report template
*
- * @var integer;
+ * @var int
*/
protected $_templateID;
* 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.
*
- * @var integer
+ * @var int
*/
protected $_limitValue = NULL;
/**
* This can be set to specify row offset
* See notes on _limitValue
- * @var integer
+ *
+ * @var int
*/
protected $_offsetValue = NULL;
/**
/**
* Flag to indicate if result-set is to be stored in a class variable which could be retrieved using getResultSet() method.
*
- * @var boolean
+ * @var bool
*/
protected $_storeResultSet = FALSE;
/**
* When _storeResultSet Flag is set use this var to store result set in form of array
*
- * @var boolean
+ * @var bool
*/
protected $_resultSet = [];
/**
* Variables to hold the acl inner join and where clause
- * @var string|NULL
+ * @var string|null
*/
protected $_aclFrom = NULL;
protected $_aclWhere = NULL;
*
* (it's unclear if this could be merged with outputMode at this stage)
*
- * @var string|NULL
+ * @var string|null
*/
protected $_format;
public $_havingClauses = [];
/**
- * DashBoardRowCount Dashboard row count
- * @var Integer
+ * DashBoardRowCount Dashboard row count.
+ *
+ * @var int
*/
public $_dashBoardRowCount;
/**
* 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
- * @var boolean
+ * - e.g the api is retrieving the rows.
+ *
+ * @var bool
*/
public $noController = FALSE;
/**
- * Variable to hold the currency alias
- * @var string|NULL
+ * Variable to hold the currency alias.
+ *
+ * @var string|null
*/
protected $_currencyColumn = NULL;
public $_section;
/**
- * @var string Report description.
+ * Report description.
+ *
+ * @var string
*/
public $_description;
/**
- * @var bool Is an address field selected.
+ * Is an address field selected.
+ *
+ * @var bool
* This was intended to determine if the address table should be joined in
* The isTableSelected function is now preferred for this purpose
*/
protected $_addressField;
/**
- * @var bool Is an email field selected.
+ * Is an email field selected.
+ *
+ * @var bool
* This was intended to determine if the email table should be joined in
* The isTableSelected function is now preferred for this purpose
*/
protected $_emailField;
/**
- * @var bool Is a phone field selected.
+ * Is a phone field selected.
+ *
+ * @var bool
* This was intended to determine if the phone table should be joined in
* The isTableSelected function is now preferred for this purpose
*/
protected $_phoneField;
/**
- * @var bool Create new report instance? (or update existing) on save.
+ * Create new report instance? (or update existing) on save.
+ *
+ * @var bool
*/
protected $_createNew;
* When a grand total row has calculated the status we pop it off to here.
*
* This allows us to access it from the stats function and avoid recalculating.
+ *
* @var array
*/
protected $rollupRow = [];
/**
- * @var string Database attributes - character set and collation
+ * Database attributes - character set and collation.
+ *
+ * @var string
*/
protected $_databaseAttributes = ' DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci';
* @return string
*/
public function createTemporaryTable($identifier, $sql, $isColumns = FALSE, $isMemory = FALSE) {
- $tempTable = CRM_Utils_SQL_TempTable::build()->setUtf8();
+ $tempTable = CRM_Utils_SQL_TempTable::build();
if ($isMemory) {
$tempTable->setMemory();
}
$fieldValueMap[$responseField->option_group_id][$responseField->value] = $value;
}
}
- $responseField->free();
//actual data formatting.
$hasData = FALSE;
'required' => TRUE,
'no_display' => TRUE,
),
+ 'contribution_page_id' => array(
+ 'title' => ts('Contribution Page'),
+ ),
'total_amount' => array(
'title' => ts('Contribution Amount Stats'),
'default' => TRUE,
'default' => array(1),
'type' => CRM_Utils_Type::T_INT,
),
+ 'contribution_page_id' => array(
+ 'title' => ts('Contribution Page'),
+ 'operatorType' => CRM_Report_Form::OP_MULTISELECT,
+ 'options' => CRM_Contribute_PseudoConstant::contributionPage(),
+ 'type' => CRM_Utils_Type::T_INT,
+ ),
'currency' => array(
'title' => ts('Currency'),
'operatorType' => CRM_Report_Form::OP_MULTISELECT,
'default' => array(1),
'type' => CRM_Utils_Type::T_INT,
),
+ 'contribution_page_id' => array(
+ 'title' => ts('Contribution Page'),
+ 'operatorType' => CRM_Report_Form::OP_MULTISELECT,
+ 'options' => CRM_Contribute_PseudoConstant::contributionPage(),
+ 'type' => CRM_Utils_Type::T_INT,
+ ),
),
),
'civicrm_financial_trxn' => array(
$contriSQL = "SELECT {$contriQuery} {$group} {$this->_having}";
$contriDAO = CRM_Core_DAO::executeQuery($contriSQL);
-
+ $this->addToDeveloperTab($contriSQL);
$totalAmount = $average = $mode = $median = $softTotalAmount = $softAverage = array();
$count = $softCount = 0;
while ($contriDAO->fetch()) {
if ($softCredit) {
$softDAO = CRM_Core_DAO::executeQuery($softSQL);
+ $this->addToDeveloperTab($softSQL);
while ($softDAO->fetch()) {
$softTotalAmount[]
= CRM_Utils_Money::format($softDAO->civicrm_contribution_soft_soft_amount_sum, $softDAO->currency) .
*/
public function buildRows($sql, &$rows) {
$dao = CRM_Core_DAO::executeQuery($sql);
+ $this->addToDeveloperTab($sql);
if (!is_array($rows)) {
$rows = array();
}
$this->customDataFrom();
$contriSQL = "{$this->_select} {$this->_from} {$this->_where} {$this->_groupBy} {$this->_having} {$this->_orderBy} {$this->_limit}";
$contriDAO = CRM_Core_DAO::executeQuery($contriSQL);
+ $this->addToDeveloperTab($contriSQL);
$contriFields = array(
'civicrm_contribution_total_amount_sum',
'civicrm_contribution_total_amount_avg',
public function alterDisplay(&$rows) {
$entryFound = FALSE;
$contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus();
+ $contributionPages = CRM_Contribute_PseudoConstant::contributionPage();
foreach ($rows as $rowNum => $row) {
// make count columns point to detail report
$entryFound = TRUE;
}
+ if ($value = CRM_Utils_Array::value('civicrm_contribution_contribution_page_id', $row)) {
+ $rows[$rowNum]['civicrm_contribution_contribution_page_id'] = $contributionPages[$value];
+ $entryFound = TRUE;
+ }
+
// If using campaigns, convert campaign_id to campaign title
if (array_key_exists('civicrm_contribution_campaign_id', $row)) {
if ($value = $row['civicrm_contribution_campaign_id']) {
while ($dao->fetch()) {
$contactIds[] = $dao->cid;
}
- $dao->free();
$this->setPager();
}
$contributionSum = 0;
}
}
- $dao->free();
}
// format result set.
$this->formatDisplay($rows, FALSE);
*
* Generated from xml/schema/CRM/SMS/Provider.xml
* DO NOT EDIT. Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a24ea48b652eba8827a5275a127df61e)
+ * (GenCodeChecksum:73f7f33374bc59a6251529cd2ba704cf)
*/
/**
/**
* SMS Provider ID
*
- * @var int unsigned
+ * @var int
*/
public $id;
/**
* points to value in civicrm_option_value for group sms_api_type
*
- * @var int unsigned
+ * @var int
*/
public $api_type;
public $api_params;
/**
- * @var boolean
+ * @var bool
*/
public $is_default;
/**
- * @var boolean
+ * @var bool
*/
public $is_active;
/**
* Which Domain is this sms provider for
*
- * @var int unsigned
+ * @var int
*/
public $domain_id;
'table' => 'civicrm_domain',
'keyColumn' => 'id',
'labelColumn' => 'name',
- ]
+ ],
],
];
CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
class CRM_SMS_Message {
/**
- * @var String
* What address is this SMS message coming from.
+ *
+ * @var string
*/
public $from = '';
/**
- * @var String
* What address is this SMS message going to.
+ *
+ * @var string
*/
public $to = '';
/**
- * @var Integer
- * Contact ID that is matched to the From address
+ * Contact ID that is matched to the From address.
+ *
+ * @var int
*/
public $fromContactID = NULL;
/**
- * @var Integer
- * Contact ID that is matched to the To address
+ * Contact ID that is matched to the To address.
+ *
+ * @var int
*/
public $toContactID = NULL;
/**
- * @var String
- * Body content of the message
+ * Body content of the message.
+ *
+ * @var string
*/
public $body = '';
/**
- * @var Integer
- * Trackable ID in the system to match to
+ * Trackable ID in the system to match to.
+ *
+ * @var int
*/
public $trackID = NULL;
* Is this profile has searchable field.
* or is any field having in selector true.
*
- * @var boolean.
+ * @var bool
*/
protected $_hasSearchableORInSelector;
/**
* Upgrade for multilingual.
*
- * @var boolean
+ * @var bool
*/
public $multilingual = FALSE;
* @param string $column
* @param string $properties
* @param bool $localizable is this a field that should be localized
- * @param string|NULL $version CiviCRM version to use if rebuilding multilingual schema
+ * @param string|null $version CiviCRM version to use if rebuilding multilingual schema
+ *
* @return bool
*/
public static function addColumn($ctx, $table, $column, $properties, $localizable = FALSE, $version = NULL) {
}
+ /**
+ * Re-save any valid values from contribute settings into the normal setting
+ * format.
+ *
+ * We render the array of contribution_invoice_settings and any that have
+ * metadata defined we add to the correct key. This is safe to run even if no
+ * settings are to be converted, per the test in
+ * testConvertUpgradeContributeSettings.
+ *
+ * @param $ctx
+ *
+ * @return bool
+ */
+ public static function updateContributeSettings($ctx) {
+ $settings = Civi::settings()->get('contribution_invoice_settings');
+ $metadata = \Civi\Core\SettingsMetadata::getMetadata();
+ $conversions = array_intersect_key((array) $settings, $metadata);
+ foreach ($conversions as $key => $conversion) {
+ Civi::settings()->set($key, $conversion);
+ }
+ return TRUE;
+ }
+
/**
* Do any relevant smart group updates.
*
/**
* Rebuild Multilingual Schema.
* @param CRM_Queue_TaskContext $ctx
- * @param string|NULL $version CiviCRM version to use if rebuilding multilingual schema
+ * @param string|null $version CiviCRM version to use if rebuilding multilingual schema
+ *
* @return bool
*/
public static function rebuildMultilingalSchema($ctx, $version = NULL) {
--- /dev/null
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5 |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019 |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM. |
+ | |
+ | CiviCRM is free software; you can copy, modify, and distribute it |
+ | under the terms of the GNU Affero General Public License |
+ | Version 3, 19 November 2007. |
+ | |
+ | CiviCRM is distributed in the hope that it will be useful, but |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
+ | See the GNU Affero General Public License for more details. |
+ | |
+ | You should have received a copy of the GNU Affero General Public |
+ | License along with this program; if not, contact CiviCRM LLC |
+ | at info[AT]civicrm[DOT]org. If you have questions about the |
+ | GNU Affero General Public License or the licensing of CiviCRM, |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ * Upgrade logic for FiveFifteen */
+class CRM_Upgrade_Incremental_php_FiveFifteen extends CRM_Upgrade_Incremental_Base {
+
+ /**
+ * Compute any messages which should be displayed beforeupgrade.
+ *
+ * Note: This function is called iteratively for each upcoming
+ * revision to the database.
+ *
+ * @param string $preUpgradeMessage
+ * @param string $rev
+ * a version number, e.g. '4.4.alpha1', '4.4.beta3', '4.4.0'.
+ * @param null $currentVer
+ */
+ public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) {
+ // Example: Generate a pre-upgrade message.
+ // if ($rev == '5.12.34') {
+ // $preUpgradeMessage .= '<p>' . ts('A new permission, "%1", has been added. This permission is now used to control access to the Manage Tags screen.', array(1 => ts('manage tags'))) . '</p>';
+ // }
+ }
+
+ /**
+ * Compute any messages which should be displayed after upgrade.
+ *
+ * @param string $postUpgradeMessage
+ * alterable.
+ * @param string $rev
+ * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs.
+ */
+ public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) {
+ // Example: Generate a post-upgrade message.
+ // if ($rev == '5.12.34') {
+ // $postUpgradeMessage .= '<br /><br />' . ts("By default, CiviCRM now disables the ability to import directly from SQL. To use this feature, you must explicitly grant permission 'import SQL datasource'.");
+ // }
+ }
+
+ /*
+ * Important! All upgrade functions MUST add a 'runSql' task.
+ * Uncomment and use the following template for a new upgrade version
+ * (change the x in the function name):
+ */
+
+ /**
+ * Upgrade function.
+ *
+ * @param string $rev
+ */
+ public function upgrade_5_15_alpha1($rev) {
+ $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev);
+ $this->addTask('Fix errant deferred revenue settings', 'updateContributeSettings');
+ }
+
+}
--- /dev/null
+{* file to handle db changes in 5.15.alpha1 during upgrade *}
*
* Example 3: Create an empty temp table with list of columns.
*
- * $tmpTbl = CRM_Utils_SQL_TempTable::build()->setDurable()->setUtf8()->createWithColumns('id int(10, name varchar(64)');
+ * $tmpTbl = CRM_Utils_SQL_TempTable::build()->setDurable()->createWithColumns('id int(10, name varchar(64)');
*
* Example 4: Drop a table that you previously created.
*
$t->id = md5(uniqid('', TRUE));
// The constant CIVICRM_TEMP_FORCE_DURABLE is for local debugging.
$t->durable = CRM_Utils_Constant::value('CIVICRM_TEMP_FORCE_DURABLE', FALSE);
- // @deprecated This constant is deprecated and will be removed.
- $t->utf8 = CRM_Utils_Constant::value('CIVICRM_TEMP_FORCE_UTF8', TRUE);
+ $t->utf8 = TRUE;
$t->autodrop = FALSE;
$t->memory = FALSE;
return $t;
/**
* Set table collation to UTF8.
*
- * This would make sense as a default but cautiousness during phasing in has made it opt-in.
+ * @deprecated This method is deprecated as tables should be assumed to have
+ * UTF-8 as the default character set and collation; some other character set
+ * or collation may be specified in the column definition.
*
* @param bool $value
*
$print = FALSE,
$maintenance = FALSE
) {
- $config = &CRM_Core_Config::singleton();
- return $config->userSystem->theme($content, $print, $maintenance);
+ return CRM_Core_Config::singleton()->userSystem->theme($content, $print, $maintenance);
}
/**
$addLanguagePart = TRUE,
$removeLanguagePart = FALSE
) {
- $config = &CRM_Core_Config::singleton();
- return $config->userSystem->languageNegotiationURL($url, $addLanguagePart, $removeLanguagePart);
+ return CRM_Core_Config::singleton()->userSystem->languageNegotiationURL($url, $addLanguagePart, $removeLanguagePart);
}
/**
}
$out = $content;
- $config = &CRM_Core_Config::singleton();
if (
!$print &&
- $config->userFramework == 'WordPress'
+ CRM_Core_Config::singleton()->userFramework == 'WordPress'
) {
if (!function_exists('is_admin')) {
throw new \Exception('Function "is_admin()" is missing, even though WordPress is the user framework.');
) {
$query = html_entity_decode($query);
+ $config = CRM_Core_Config::singleton();
+ $base = $absolute ? $config->userFrameworkBaseURL : 'internal:/';
+
$url = \Drupal\civicrm\CivicrmHelper::parseURL("{$path}?{$query}");
// Not all links that CiviCRM generates are Drupal routes, so we use the weaker ::fromUri method.
try {
- $url = \Drupal\Core\Url::fromUri("base:{$url['path']}", [
+ $url = \Drupal\Core\Url::fromUri("{$base}{$url['path']}", array(
'query' => $url['query'],
'fragment' => $fragment,
'absolute' => $absolute,
- ])->toString();
+ ))->toString();
}
catch (Exception $e) {
- // @Todo: log to watchdog
- $url = '';
+ \Drupal::logger('civicrm')->error($e->getMessage());
}
// Special case: CiviCRM passes us "*path*?*query*" as a skeleton, but asterisks
*/
public function getCurrentLanguage() {
// Drupal might not be bootstrapped if being called by the REST API.
- if (!class_exists('Drupal')) {
+ if (!class_exists('Drupal') || !\Drupal::hasContainer()) {
return NULL;
}
$e->list[] = 'js/crm.drupal8.js';
}
+ /**
+ * @inheritDoc
+ */
+ public function setUFLocale($civicrm_language) {
+ $langcode = substr(str_replace('_', '', $civicrm_language), 0, 2);
+ $languageManager = \Drupal::languageManager();
+ $languages = $languageManager->getLanguages();
+
+ if (isset($languages[$langcode])) {
+ $languageManager->setConfigOverrideLanguage($languages[$langcode]);
+
+ // Config must be re-initialized to reset the base URL
+ // otherwise links will have the wrong language prefix/domain.
+ $config = CRM_Core_Config::singleton();
+ $config->free();
+
+ return TRUE;
+ }
+
+ return FALSE;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function languageNegotiationURL($url, $addLanguagePart = TRUE, $removeLanguagePart = FALSE) {
+ if (empty($url)) {
+ return $url;
+ }
+
+ // Drupal might not be bootstrapped if being called by the REST API.
+ if (!class_exists('Drupal') || !\Drupal::hasContainer()) {
+ return NULL;
+ }
+
+ $language = $this->getCurrentLanguage();
+ if (\Drupal::service('module_handler')->moduleExists('language')) {
+ $config = \Drupal::config('language.negotiation')->get('url');
+
+ //does user configuration allow language
+ //support from the URL (Path prefix or domain)
+ $enabledLanguageMethods = \Drupal::config('language.types')->get('negotiation.language_interface.enabled') ?: [];
+ if (array_key_exists(\Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl::METHOD_ID, $enabledLanguageMethods)) {
+ $urlType = $config['source'];
+
+ //url prefix
+ if ($urlType == \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl::CONFIG_PATH_PREFIX) {
+ if (!empty($language)) {
+ if ($addLanguagePart && !empty($config['prefixes'][$language])) {
+ $url .= $config['prefixes'][$language] . '/';
+ }
+ if ($removeLanguagePart) {
+ $url = str_replace("/" . $config['prefixes'][$language] . "/", '/', $url);
+ }
+ }
+ }
+ //domain
+ if ($urlType == \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl::CONFIG_DOMAIN) {
+ if (isset($language->domain) && $language->domain) {
+ if ($addLanguagePart) {
+ $url = (CRM_Utils_System::isSSL() ? 'https' : 'http') . '://' . $config['domains'][$language] . base_path();
+ }
+ if ($removeLanguagePart && defined('CIVICRM_UF_BASEURL')) {
+ $url = str_replace('\\', '/', $url);
+ $parseUrl = parse_url($url);
+
+ //kinda hackish but not sure how to do it right
+ //hope http_build_url() will help at some point.
+ if (is_array($parseUrl) && !empty($parseUrl)) {
+ $urlParts = explode('/', $url);
+ $hostKey = array_search($parseUrl['host'], $urlParts);
+ $ufUrlParts = parse_url(CIVICRM_UF_BASEURL);
+ $urlParts[$hostKey] = $ufUrlParts['host'];
+ $url = implode('/', $urlParts);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return $url;
+ }
+
}
return strtolower(\CRM_Utils_String::munge($action));
}
+ public static function getNextId() {
+ return self::$nextId++;
+ }
+
}
/**
* Date filter -- the field name.
- * @var string|NULL
+ * @var string|null
* Ex: 'event_start_date'
*/
private $entity_date_start;
/**
* Date filter -- the field name.
- * @var string|NULL
+ * @var string|null
* Ex: 'event_end_date'.
*/
private $entity_date_end;
protected $modules;
/**
- * @var array|NULL
+ * @var array|null
*/
protected $crmApp = NULL;
protected $res = NULL;
/**
- * @var array|NULL
+ * Modules.
+ *
+ * @var array|null
* Each item has some combination of these keys:
* - ext: string
* The Civi extension which defines the Angular module.
/**
* The region of the page into which JavaScript will be loaded.
*
- * @var String
+ * @var string
* @deprecated
*/
public $region;
* The result of combining default values, mandatory
* values, and user values.
*
- * @var array|NULL
+ * @var array|null
* Array(string $settingName => mixed $value).
*/
protected $combined;
protected $bagsByContact = [];
/**
- * @var array|NULL
+ * @var array|null
* Array(string $entity => array(string $settingName => mixed $value)).
* Ex: $mandatory['domain']['uploadDir'].
* NULL means "autoload from $civicrm_setting".
*/
class SettingsMetadata {
- const ALL = 'all';
-
/**
* WARNING: This interface may change.
*
*
* @param array $filters
* @param int $domainID
+ * @param bool $loadOptions
*
* @return array
* the following information as appropriate for each setting
* - is_contact
* - description
* - help_text
+ * - options
+ * - pseudoconstant
*/
- public static function getMetadata($filters = [], $domainID = NULL) {
+ public static function getMetadata($filters = [], $domainID = NULL, $loadOptions = FALSE) {
if ($domainID === NULL) {
$domainID = \CRM_Core_Config::domainID();
}
$cache = \Civi::cache('settings');
$cacheString = 'settingsMetadata_' . $domainID . '_';
- // the caching into 'All' seems to be a duplicate of caching to
- // settingsMetadata__ - I think the reason was to cache all settings as defined & then those altered by a hook
$settingsMetadata = $cache->get($cacheString);
- $cached = is_array($settingsMetadata);
-
- if (!$cached) {
- $settingsMetadata = $cache->get(self::ALL);
- if (empty($settingsMetadata)) {
- global $civicrm_root;
- $metaDataFolders = [$civicrm_root . '/settings'];
- \CRM_Utils_Hook::alterSettingsFolders($metaDataFolders);
- $settingsMetadata = self::loadSettingsMetaDataFolders($metaDataFolders);
- $cache->set(self::ALL, $settingsMetadata);
- }
- }
-
- \CRM_Utils_Hook::alterSettingsMetaData($settingsMetadata, $domainID, NULL);
- if (!$cached) {
+ if (!is_array($settingsMetadata)) {
+ global $civicrm_root;
+ $metaDataFolders = [$civicrm_root . '/settings'];
+ \CRM_Utils_Hook::alterSettingsFolders($metaDataFolders);
+ $settingsMetadata = self::loadSettingsMetaDataFolders($metaDataFolders);
+ \CRM_Utils_Hook::alterSettingsMetaData($settingsMetadata, $domainID, NULL);
$cache->set($cacheString, $settingsMetadata);
}
self::_filterSettingsSpecification($filters, $settingsMetadata);
+ if ($loadOptions) {
+ self::loadOptions($settingsMetadata);
+ }
return $settingsMetadata;
}
* Metadata to filter.
*/
protected static function _filterSettingsSpecification($filters, &$settingSpec) {
- if (empty($filters)) {
- return;
- }
- elseif (array_keys($filters) == ['name']) {
- $settingSpec = [$filters['name'] => \CRM_Utils_Array::value($filters['name'], $settingSpec, '')];
- return;
+ if (!empty($filters['name'])) {
+ $settingSpec = array_intersect_key($settingSpec, array_flip((array) $filters['name']));
+ // FIXME: This is a workaround for settingsBag::setDb() called by unit tests with settings names that don't exist
+ $settingSpec += array_fill_keys((array) $filters['name'], []);
+ unset($filters['name']);
}
- else {
+ if (!empty($filters)) {
foreach ($settingSpec as $field => $fieldValues) {
if (array_intersect_assoc($fieldValues, $filters) != $filters) {
unset($settingSpec[$field]);
}
}
- return;
+ }
+ }
+
+ /**
+ * Retrieve options from settings metadata
+ *
+ * @param array $settingSpec
+ */
+ protected static function loadOptions(&$settingSpec) {
+ foreach ($settingSpec as &$spec) {
+ if (empty($spec['pseudoconstant'])) {
+ continue;
+ }
+ // It would be nice if we could leverage CRM_Core_PseudoConstant::get() somehow,
+ // but it's tightly coupled to DAO/field. However, if you really need to support
+ // more pseudoconstant types, then probably best to refactor it. For now, KISS.
+ if (!empty($spec['pseudoconstant']['callback'])) {
+ $spec['options'] = Resolver::singleton()->call($spec['pseudoconstant']['callback'], []);
+ }
+ elseif (!empty($spec['pseudoconstant']['optionGroupName'])) {
+ $keyColumn = \CRM_Utils_Array::value('keyColumn', $spec['pseudoconstant'], 'value');
+ $spec['options'] = \CRM_Core_OptionGroup::values($spec['pseudoconstant']['optionGroupName'], FALSE, FALSE, TRUE, NULL, 'label', TRUE, FALSE, $keyColumn);
+ }
}
}
/**
* The name of the output file.
*
- * @var string|NULL
+ * @var string|null
*/
private $file = NULL;
private $steps = [];
/**
- * @var string|NULL
+ * @var string|null
* A digest of the values in $steps.
*/
private $targetSignature = NULL;
*
* @return int
* id of Household created
+ * @throws \Exception
*/
public function householdCreate($params = array(), $seq = 0) {
$params = array_merge($this->sampleContact('Household', $seq), $params);
registerGlobalListener($injector);
options.format = options.format || 'json';
- var fmt = formats[options.format];
+ var fmt = _.clone(formats[options.format]);
if (options.deep) {
fmt.watcher = '$watch';
}
if (options.default === undefined) {
options.default = fmt.default;
}
- var _scope = this;
+ var value,
+ _scope = this,
+ $route = $injector.get('$route'),
+ $timeout = $injector.get('$timeout');
- var $route = $injector.get('$route'), $timeout = $injector.get('$timeout');
-
- var value;
if (options.param in $route.current.params) {
value = fmt.decode($route.current.params[options.param]);
}
// Keep the URL bar up-to-date.
_scope[fmt.watcher](options.expr, function (newValue) {
var encValue = fmt.encode(newValue);
- if ($route.current.params[options.param] === encValue) return;
+ if (!_.isEqual(newValue, options.default) && $route.current.params[options.param] === encValue) {
+ return;
+ }
pendingUpdates = pendingUpdates || {};
pendingUpdates[options.param] = encValue;
var p = angular.extend({}, $route.current.params, pendingUpdates);
- angular.forEach(ignorable, function(v,k){ if (p[k] === v) delete p[k]; });
+
+ angular.forEach(ignorable, function(v, k) {
+ if (p[k] === v) {
+ delete p[k];
+ }
+ });
+
+ // Remove params from url if they equal their defaults
+ if (_.isEqual(newValue, options.default)) {
+ p[options.param] = null;
+ }
+
$route.updateParams(p);
if (activeTimer) $timeout.cancel(activeTimer);
* @throws \API_Exception
*/
function civicrm_api3_setting_getoptions($params) {
- $specs = CRM_Core_BAO_Setting::getSettingSpecification();
+ $domainId = CRM_Utils_Array::value('domain_id', $params);
+ $specs = \Civi\Core\SettingsMetadata::getMetadata(['name' => $params['field']], $domainId, TRUE);
- if (empty($specs[$params['field']]) || empty($specs[$params['field']]['pseudoconstant'])) {
+ if (empty($specs[$params['field']]) || !is_array(CRM_Utils_Array::value('options', $specs[$params['field']]))) {
throw new API_Exception("The field '" . $params['field'] . "' has no associated option list.");
}
- $pseudoconstant = $specs[$params['field']]['pseudoconstant'];
-
- // It would be nice if we could leverage CRM_Core_PseudoConstant::get() somehow,
- // but it's tightly coupled to DAO/field. However, if you really need to support
- // more pseudoconstant types, then probably best to refactor it. For now, KISS.
- if (!empty($pseudoconstant['callback'])) {
- $values = Civi\Core\Resolver::singleton()->call($pseudoconstant['callback'], []);
- return civicrm_api3_create_success($values, $params, 'Setting', 'getoptions');
- }
- elseif (!empty($pseudoconstant['optionGroupName'])) {
- $keyColumn = 'value';
- if (!empty($pseudoconstant['keyColumn'])) {
- $keyColumn = $pseudoconstant['keyColumn'];
- }
- return civicrm_api3_create_success(
- CRM_Core_OptionGroup::values($pseudoconstant['optionGroupName'], FALSE, FALSE, TRUE, NULL, 'label', TRUE, FALSE, $keyColumn),
- $params, 'Setting', 'getoptions'
- );
- }
-
- throw new API_Exception("The field '" . $params['field'] . "' uses an unsupported option list.");
+ return civicrm_api3_create_success($specs[$params['field']]['options'], $params, 'Setting', 'getoptions');
}
/**
- github : demeritcowboy
name : Dave D
- jira : demeritcowboy
+ jira : Dave D
- github : dereklewis123
name : Derek Lewis
* @package CRM
* @copyright CiviCRM LLC (c) 2004-2019
* $Id$
+ *
+ * This script processes "Instant Payment Notifications" (IPNs). Modern
+ * Payment Processors use the /civicrm/payment/ipn/123 endpoint instead (where
+ * 123 is the payment processor ID), however a quirk in the way PayPal works
+ * means that we need to maintain this script.
+ *
+ * Note on PayPal.
+ *
+ * Using PayPal Website Standard (which uses the old PayPal button API) the IPN
+ * endpoint is passed to PayPal with every transaction, and it is then stored
+ * by PayPal who unhelpfully do not give you any way to retrieve or change
+ * this.
+ *
+ * This means that if you provide URL1 when setting up a recurring
+ * contribution, then you will always need to maintain URL1 because all
+ * recurring payments against that will be sent to URL1.
+ *
+ * Note that this also affects you if you were to move your CiviCRM instance to
+ * another domain (if you do, get the webserver at the original domain to emit
+ * a 307 redirect to the new one, PayPal will re-send).
+ *
+ * Therefore, for the sake of these old recurring contributions, CiviCRM should
+ * maintain this script as part of core.
*/
if (defined('PANTHEON_ENVIRONMENT')) {
// @todo upgrade standard per Pro
}
try {
- //CRM-18245
- if ($config->userFramework == 'Joomla') {
- CRM_Utils_System::loadBootStrap();
+ switch ($config->userFramework) {
+ case 'Joomla':
+ // CRM-18245
+ CRM_Utils_System::loadBootStrap();
+ break;
+
+ case 'Drupal':
+ case 'Backdrop':
+ // Gitlab issue: #973
+ CRM_Utils_System::loadBootStrap([], FALSE);
+ break;
+
}
$paypalIPN->main();
}
# Release Notes
-These release notes are manually compiled from pull requests and Jira issues
+These release notes are manually compiled from pull requests, GitLab and Jira issues
starting with CiviCRM 4.7.14.
Other resources for identifying changes are:
+* The CiviCRM GitLab project management system at https://lab.civicrm.org/groups/dev/-/issues
* The Jira project management system at https://issues.civicrm.org
* The following GitHub projects:
* https://github.com/civicrm/civicrm-core
LOCK TABLES `civicrm_domain` WRITE;
/*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */;
-INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `config_backend`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES (1,'Default Domain Name',NULL,NULL,'5.14.beta1',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
+INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `config_backend`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES (1,'Default Domain Name',NULL,NULL,'5.15.alpha1',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
/*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */;
UNLOCK TABLES;
<p>{ts 1=$docLink}ACLs (Access Control Lists) allow you control access to CiviCRM data. An ACL consists of an <strong>Operation</strong> (e.g. 'View' or 'Edit'), a <strong>set of Data</strong> that the operation can be performed on (e.g. a group of contacts), and a <strong>Role</strong> that has permission to do this operation. Refer to the %1 for more info.{/ts}
{if $config->userSystem->is_drupal EQ '1'}{ts}Note that a CiviCRM ACL Role is not related to the Drupal Role.{/ts}{/if}</p>
<p>{ts}<strong>EXAMPLE:</strong> 'Team Leaders' (<em>ACL Role</em>) can 'Edit' (<em>Operation</em>) all contacts in the 'Active Volunteers Group' (<em>Data</em>).{/ts}</p>
- {if $config->userSystem->is_drupal EQ '1'}
- <p>{ts 1=$ufAccessURL}Use <a href='%1'>Drupal Access Control</a> to manage basic access to CiviCRM components and menu items. Use CiviCRM ACLs to control access to specific CiviCRM contact groups. You can also configure ACLs to grant or deny access to specific Events Profiles, and/or Custom Data Fields.{/ts}</p>
- {elseif $config->userFramework EQ 'Joomla'}
- <p>{ts 1=$ufAccessURL 2=$jAccessParams}Use <a href='%1' %2>Joomla Access Control</a> to manage basic access to CiviCRM components and menu items. Use CiviCRM ACLs to control access to specific CiviCRM contact groups. You can also configure ACLs to grant or deny access to specific Events, Profiles, and/or Custom Data Fields.{/ts}</p>
- {elseif $config->userFramework EQ 'WordPress'}
- <p>{ts 1=$ufAccessURL}Use <a href='%1'>WordPress Access Control</a> to manage basic access to CiviCRM components and menu items. Use CiviCRM ACLs to control access to specific CiviCRM contact groups. You can also configure ACLs to grant or deny access to specific Events, Profiles, and/or Custom Data Fields.{/ts}</p>
- {/if}
+ <p>{ts 1=$ufAccessURL 2=$jAccessParams 3=$config->userFramework}Use <a href='%1' %2>%3 Access Control</a> to manage basic access to CiviCRM components and menu items. Use CiviCRM ACLs to control access to specific CiviCRM contact groups. You can also configure ACLs to grant or deny access to specific Events, Profiles, and/or Custom Data Fields.{/ts}</p>
<p>{ts 1=$config->userFramework}Note that %1 Access Control permissions take precedence over CiviCRM ACLs. If you wish to use CiviCRM ACLs, first disable the related permission in %1 Access control for a user role, and then gradually add ACLs to replace that permission for certain groups of contacts.{/ts}
</div>
<table class="report">
<tr>
- {if $config->userSystem->is_drupal EQ '1'}
- <td class="nowrap"><a href="{$ufAccessURL}" id="adminAccess">» {ts}Drupal Access Control{/ts}</a></td>
+ <td class="nowrap"><a href="{$ufAccessURL}" {$jAccessParams} id="adminAccess">» {ts 1=$config->userFramework}%1 Access Control{/ts}</a></td>
<td>{ts}Grant access to CiviCRM components and other CiviCRM permissions.{/ts}</td>
- {elseif $config->userFramework EQ 'Joomla'}
- <td class="nowrap"><a href="{$ufAccessURL}" {$jAccessParams} id="adminAccess">» {ts}Joomla Access Control{/ts}</a></td>
- <td>{ts}Grant access to CiviCRM components and other CiviCRM permissions.{/ts}</td>
- {elseif $config->userFramework EQ 'WordPress'}
- <td class="nowrap"><a href="{$ufAccessURL}" id="adminAccess">» {ts}WordPress Access Control{/ts}</a></td>
- <td>{ts}Grant access to CiviCRM components and other CiviCRM permissions.{/ts}</td>
- {/if}
</tr>
<tr><td colspan="2" class="separator"><strong>{ts}Use following steps if you need to control View and/or Edit permissions for specific contact groups, specific profiles or specific custom data fields.{/ts}</strong></td></tr>
<tr>
});
$(".crm-dedupe-flip-selections").on('click', function(e) {
+ e.preventDefault();
var ids = [];
$('.crm-row-selected').each(function() {
var ele = CRM.$('input.crm-dedupe-select', this);
});
if (ids.length > 0) {
var dataUrl = {/literal}"{crmURL p='civicrm/ajax/flipDupePairs' h=0 q='snippet=4'}"{literal};
- CRM.$.post(dataUrl, {pnid: ids}, function (response) {
+ var request = $.post(dataUrl, {pnid: ids});
+ request.done(function(dt) {
var mapper = {1:3, 2:4, 5:6, 7:8, 9:10}
$('.crm-row-selected').each(function() {
var idx = $('table#dupePairs').DataTable().row(this).index();
// keep the checkbox checked if needed
$('input.crm-dedupe-select', this).prop('checked', $(this).hasClass('crm-row-selected'));
});
- }, 'json');
+ });
}
});
});
parent::tearDown();
}
- /**
- * Setup or clean up SMS tests
- * @param bool $teardown
- *
- * @throws \CiviCRM_API3_Exception
- */
- public function setupForSmsTests($teardown = FALSE) {
- require_once 'CiviTest/CiviTestSMSProvider.php';
-
- // Option value params for CiviTestSMSProvider
- $groupID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'sms_provider_name', 'id', 'name');
- $params = array(
- 'option_group_id' => $groupID,
- 'label' => 'unittestSMS',
- 'value' => 'unit.test.sms',
- 'name' => 'CiviTestSMSProvider',
- 'is_default' => 1,
- 'is_active' => 1,
- 'version' => 3,
- );
-
- if ($teardown) {
- // Test completed, delete provider
- $providerOptionValueResult = civicrm_api3('option_value', 'get', $params);
- civicrm_api3('option_value', 'delete', array('id' => $providerOptionValueResult['id']));
- return;
- }
-
- // Create an SMS provider "CiviTestSMSProvider". Civi handles "CiviTestSMSProvider" as a special case and allows it to be instantiated
- // in CRM/Sms/Provider.php even though it is not an extension.
- civicrm_api3('option_value', 'create', $params);
- }
-
/**
* Test case for create() method.
*/
public function testSendSMSWithoutPermission() {
$dummy = NULL;
$session = CRM_Core_Session::singleton();
- $config = &CRM_Core_Config::singleton();
- $config->userPermissionClass->permissions = array('access CiviCRM');
+ CRM_Core_Config::singleton()->userPermissionClass->permissions = array('access CiviCRM');
CRM_Activity_BAO_Activity::sendSMS(
$dummy,
}
protected function createTestActivities() {
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/activities_for_dashboard_count.xml'
- )
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/activities_for_dashboard_count.xml');
// Make changes to improve variation in php since the xml method is brittle & relies on option values being unchanged.
$this->callAPISuccess('Activity', 'create', ['id' => 12, 'activity_type_id' => 'Bulk Email']);
}
/**
* Membership type name used in test function.
- * @var String
+ *
+ * @var string
*/
protected $_membershipTypeName = NULL;
/**
* Membership type id used in test function.
- * @var String
+ *
+ * @var string
*/
protected $_membershipTypeID = NULL;
/**
* Contact id used in test function.
- * @var String
+ *
+ * @var string
*/
protected $_contactID = NULL;
/**
* Contact id used in test function.
- * @var String
+ *
+ * @var string
*/
protected $_contactID2 = NULL;
/**
* Contact id used in test function.
- * @var String
+ *
+ * @var string
*/
protected $_contactID3 = NULL;
/**
* Contact id used in test function.
- * @var String
+ *
+ * @var string
*/
protected $_contactID4 = NULL;
/**
* Create and return case object of given Client ID.
* @param $clientId
+ * @param $loggedInUser
* @return CRM_Case_BAO_Case
*/
- private function createCase($clientId) {
+ private function createCase($clientId, $loggedInUser = NULL) {
+ if (empty($loggedInUser)) {
+ // backwards compatibility - but it's more typical that the creator is a different person than the client
+ $loggedInUser = $clientId;
+ }
$caseParams = array(
'activity_subject' => 'Case Subject',
'client_id' => $clientId,
'activity_details' => '',
);
$form = new CRM_Case_Form_Case();
- $caseObj = $form->testSubmit($caseParams, "OpenCase", $clientId, "standalone");
+ $caseObj = $form->testSubmit($caseParams, "OpenCase", $loggedInUser, "standalone");
return $caseObj;
}
* }
*/
+ /**
+ * Test various things after a case is closed.
+ *
+ * This annotation is not ideal, but without it there is some kind of
+ * messup that happens to quickform that persists between tests, e.g.
+ * it can't add maxfilesize validation rules.
+ * @runInSeparateProcess
+ * @preserveGlobalState disabled
+ */
+ public function testCaseClosure() {
+ $loggedInUser = $this->createLoggedInUser();
+ $client_id = $this->individualCreate();
+ $caseObj = $this->createCase($client_id, $loggedInUser);
+ $case_id = $caseObj->id;
+
+ // Get the case status option value for "Resolved" (name="Closed").
+ $closed_status = $this->callAPISuccess('OptionValue', 'getValue', [
+ 'return' => 'value',
+ 'option_group_id' => 'case_status',
+ 'name' => 'Closed',
+ ]);
+ $this->assertNotEmpty($closed_status);
+
+ // Get the activity status option value for "Completed"
+ $completed_status = $this->callAPISuccess('OptionValue', 'getValue', [
+ 'return' => 'value',
+ 'option_group_id' => 'activity_status',
+ 'name' => 'Completed',
+ ]);
+ $this->assertNotEmpty($completed_status);
+
+ // Get the value for the activity type id we need to create
+ $atype = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Change Case Status');
+
+ // Now it gets weird. There doesn't seem to be a good way to test this, so we simulate a form and the various bits that go with it.
+
+ // HTTP vars needed because that's how the form determines stuff
+ $oldMETHOD = empty($_SERVER['REQUEST_METHOD']) ? NULL : $_SERVER['REQUEST_METHOD'];
+ $oldGET = empty($_GET) ? [] : $_GET;
+ $oldREQUEST = empty($_REQUEST) ? [] : $_REQUEST;
+ $_SERVER['REQUEST_METHOD'] = 'GET';
+ $_GET['caseid'] = $case_id;
+ $_REQUEST['caseid'] = $case_id;
+ $_GET['cid'] = $client_id;
+ $_REQUEST['cid'] = $client_id;
+ $_GET['action'] = 'add';
+ $_REQUEST['action'] = 'add';
+ $_GET['reset'] = 1;
+ $_REQUEST['reset'] = 1;
+ $_GET['atype'] = $atype;
+ $_REQUEST['atype'] = $atype;
+
+ $form = new CRM_Case_Form_Activity();
+ $form->controller = new CRM_Core_Controller_Simple('CRM_Case_Form_Activity', 'Case Activity');
+ $form->_activityTypeId = $atype;
+ $form->_activityTypeName = 'Change Case Status';
+ $form->_activityTypeFile = 'ChangeCaseStatus';
+
+ $form->preProcess();
+ $form->buildQuickForm();
+ $form->setDefaultValues();
+
+ // Now submit the form. Store the date used so we can check it later.
+
+ $t = time();
+ $now_date = date('Y-m-d H:i:s', $t);
+ $now_date_date_only = date('Y-m-d', $t);
+ $actParams = [
+ 'is_unittest' => TRUE,
+ 'case_status_id' => $closed_status,
+ 'activity_date_time' => $now_date,
+ 'target_contact_id' => $client_id,
+ 'source_contact_id' => $loggedInUser,
+ 'subject' => 'null', // yeah this is extra weird, but without it you get the wrong subject
+ ];
+
+ $form->postProcess($actParams);
+
+ // Ok now let's check some things
+
+ $result = $this->callAPISuccess('Case', 'get', [
+ 'sequential' => 1,
+ 'id' => $case_id,
+ ]);
+ $caseData = array_shift($result['values']);
+
+ $this->assertEquals($caseData['end_date'], $now_date_date_only);
+ $this->assertEquals($caseData['status_id'], $closed_status);
+
+ // now get the latest activity and check some things for it
+
+ $actId = max($caseData['activities']);
+ $this->assertNotEmpty($actId);
+
+ $result = $this->callAPISuccess('Activity', 'get', [
+ 'sequential' => 1,
+ 'id' => $actId,
+ ]);
+ $activity = array_shift($result['values']);
+
+ $this->assertEquals($activity['subject'], 'Case status changed from Ongoing to Resolved');
+ $this->assertEquals($activity['activity_date_time'], $now_date);
+ $this->assertEquals($activity['status_id'], $completed_status);
+
+ // Now replace old globals
+ if (is_null($oldMETHOD)) {
+ unset($_SERVER['REQUEST_METHOD']);
+ }
+ else {
+ $_SERVER['REQUEST_METHOD'] = $oldMETHOD;
+ }
+ $_GET = $oldGET;
+ $_REQUEST = $oldREQUEST;
+ }
+
}
parent::setUp();
}
+ /**
+ * Clean up after test.
+ *
+ * @throws \Exception
+ */
public function tearDown() {
$this->quickCleanUpFinancialEntities();
- $tablesToTruncate = array(
+ $tablesToTruncate = [
'civicrm_group_contact',
'civicrm_group',
'civicrm_saved_search',
'civicrm_tag',
'civicrm_contact',
'civicrm_address',
- );
+ ];
$this->quickCleanup($tablesToTruncate);
}
* @param $full
*/
public function testSearch($fv, $count, $ids, $full) {
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/queryDataset.xml'
- )
- );
+ $this->callAPISuccess('SavedSearch', 'create', ['form_values' => 'a:9:{s:5:"qfKey";s:32:"0123456789abcdef0123456789abcdef";s:13:"includeGroups";a:1:{i:0;s:1:"3";}s:13:"excludeGroups";a:0:{}s:11:"includeTags";a:0:{}s:11:"excludeTags";a:0:{}s:4:"task";s:2:"14";s:8:"radio_ts";s:6:"ts_all";s:14:"customSearchID";s:1:"4";s:17:"customSearchClass";s:36:"CRM_Contact_Form_Search_Custom_Group";}']);
+ $this->callAPISuccess('SavedSearch', 'create', ['form_values' => 'a:9:{s:5:"qfKey";s:32:"0123456789abcdef0123456789abcdef";s:13:"includeGroups";a:1:{i:0;s:1:"3";}s:13:"excludeGroups";a:0:{}s:11:"includeTags";a:0:{}s:11:"excludeTags";a:0:{}s:4:"task";s:2:"14";s:8:"radio_ts";s:6:"ts_all";s:14:"customSearchID";s:1:"4";s:17:"customSearchClass";s:36:"CRM_Contact_Form_Search_Custom_Group";}']);
+
+ $tag7 = $this->ids['Tag'][7] = $this->tagCreate(['name' => 'Test Tag 7', 'description' => 'Test Tag 7'])['id'];
+ $tag9 = $this->ids['Tag'][9] = $this->tagCreate(['name' => 'Test Tag 9', 'description' => 'Test Tag 9'])['id'];
+ $this->tagCreate(['name' => 'Test Tag 10']);
+ $groups = [
+ 3 => ['name' => 'Test Group 3'],
+ 4 => ['name' => 'Test Smart Group 4', 'saved_search_id' => 1],
+ 5 => ['name' => 'Test Group 5'],
+ 6 => ['name' => 'Test Smart Group 6', 'saved_search_id' => 2],
+ ];
+
+ foreach ($groups as $id => $group) {
+ $this->ids['Group'][$id] = $this->groupCreate(array_merge($group, ['title' => $group['name']]));
+ }
+ $individuals = [
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 9', 'gender_id' => 1, 'prefix_id' => 1, 'suffix_id' => 1],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 10', 'gender_id' => 2, 'prefix_id' => 2, 'suffix_id' => 2, 'api.entity_tag.create' => ['tag_id' => $tag9]],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 11', 'gender_id' => 3, 'prefix_id' => 3, 'suffix_id' => 3, 'api.entity_tag.create' => ['tag_id' => $tag7]],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 12', 'gender_id' => 3, 'prefix_id' => 4, 'suffix_id' => 4, 'api.entity_tag.create' => ['tag_id' => $tag9], 'api.entity_tag.create.2' => ['tag_id' => $tag7]],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 13', 'gender_id' => 2, 'prefix_id' => 2, 'suffix_id' => 2],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 14', 'gender_id' => 3, 'prefix_id' => 4, 'suffix_id' => 4, 'api.entity_tag.create' => ['tag_id' => $tag9]],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 15', 'gender_id' => 3, 'prefix_id' => 4, 'suffix_id' => 5, 'api.entity_tag.create' => ['tag_id' => $tag7]],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 16', 'gender_id' => 3, 'prefix_id' => 4, 'suffix_id' => 6, 'api.entity_tag.create' => ['tag_id' => $tag9], 'api.entity_tag.create.2' => ['tag_id' => $tag7]],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 17', 'gender_id' => 2, 'prefix_id' => 4, 'suffix_id' => 7],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 18', 'gender_id' => 2, 'prefix_id' => 4, 'suffix_id' => 4, 'api.entity_tag.create' => ['tag_id' => $tag9]],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 19', 'gender_id' => 2, 'prefix_id' => 4, 'suffix_id' => 6, 'api.entity_tag.create.2' => ['tag_id' => $tag7]],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 20', 'gender_id' => 1, 'prefix_id' => 4, 'suffix_id' => 6, 'api.entity_tag.create' => ['tag_id' => $tag9], 'api.entity_tag.create.2' => ['tag_id' => $tag7]],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 21', 'gender_id' => 3, 'prefix_id' => 1, 'suffix_id' => 6],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 22', 'gender_id' => 1, 'prefix_id' => 1, 'suffix_id' => 1, 'api.entity_tag.create' => ['tag_id' => $tag9]],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 23', 'gender_id' => 3, 'prefix_id' => 1, 'suffix_id' => 1, 'api.entity_tag.create' => ['tag_id' => $tag7]],
+ ['first_name' => 'Test', 'last_name' => 'Test Contact 24', 'gender_id' => 3, 'prefix_id' => 3, 'suffix_id' => 2, 'api.entity_tag.create' => ['tag_id' => $tag9], 'api.entity_tag.create.2' => ['tag_id' => $tag7]],
+ ];
+ foreach ($individuals as $individual) {
+ $this->ids['Contact'][$individual['last_name']] = $this->individualCreate($individual);
+ }
+ $groupContacts = [
+ [5 => 13],
+ [5 => 14],
+ [5 => 15],
+ [5 => 16],
+ [5 => 21],
+ [5 => 22],
+ [5 => 23],
+ [5 => 24],
+ [3 => 17],
+ [3 => 18],
+ [3 => 19],
+ [3 => 20],
+ [3 => 21],
+ [3 => 22],
+ [3 => 23],
+ [3 => 24],
+ ];
+ foreach ($groupContacts as $group) {
+ $groupID = $this->ids['Group'][key($group)];
+ $contactID = $this->ids['Contact']['Test Contact ' . reset($group)];
+ $this->callAPISuccess('GroupContact', 'create', ['group_id' => $groupID, 'contact_id' => $contactID, 'status' => 'Added']);
+ }
+
+ // We have migrated from a hard-coded dataset to a dynamic one but are still working with the same
+ // dataprovider at this stage -> wrangle.
+ foreach ($fv as $key => $value) {
+ $entity = ucfirst($key);
+ if (!array_key_exists($entity, $this->ids)) {
+ continue;
+ }
+ if (is_numeric($value)) {
+ $fv[$key] = $this->ids[$entity][$value];
+ }
+ elseif (!empty($value[0])) {
+ foreach ($value as $index => $oldGroup) {
+ $fv[$key][$index] = $this->ids[$entity][$oldGroup];
+ }
+ }
+ else {
+ foreach (array_keys($value) as $index) {
+ unset($fv[$key][$index]);
+ $fv[$key][$this->ids[$entity][$index]] = 1;
+ }
+ }
+ }
$params = CRM_Contact_BAO_Query::convertFormValues($fv);
$obj = new CRM_Contact_BAO_Query($params);
$dao = $obj->searchQuery();
- $contacts = array();
+ $contacts = [];
while ($dao->fetch()) {
$contacts[] = $dao->contact_id;
}
sort($contacts, SORT_NUMERIC);
- $this->assertEquals($ids, $contacts);
+ $expectedIDs = [];
+ foreach ($ids as $id) {
+ $expectedIDs[] = $this->ids['Contact']['Test Contact ' . $id];
+ }
+ $this->assertEquals($expectedIDs, $contacts);
}
/**
$this->assertEquals($where2, $sql5[2]);
}
+ /**
+ * Test we can narrow a group get by status.
+ */
+ public function testGetByGroupWithStatus() {
+ $groupID = $this->groupCreate();
+ $this->groupContactCreate($groupID, 3);
+ $groupContactID = $this->callAPISuccessGetSingle('GroupContact', ['group_id' => $groupID, 'options' => ['limit' => 1]])['id'];
+ $this->callAPISuccess('GroupContact', 'create', ['id' => $groupContactID, 'status' => 'Removed']);
+ $queryObj = new CRM_Contact_BAO_Query([['group', '=', $groupID, 0, 0], ['group_contact_status', 'IN', ['Removed' => 1], 0, 0]]);
+ $resultDAO = $queryObj->searchQuery();
+ $this->assertEquals(1, $resultDAO->N);
+
+ $queryObj = new CRM_Contact_BAO_Query([['group', '=', $groupID, 0, 0], ['group_contact_status', 'IN', ['Added' => 1], 0, 0]]);
+ $resultDAO = $queryObj->searchQuery();
+ $this->assertEquals(2, $resultDAO->N);
+
+ $queryObj = new CRM_Contact_BAO_Query([['group', '=', $groupID, 0, 0]]);
+ $resultDAO = $queryObj->searchQuery();
+ $this->assertEquals(2, $resultDAO->N);
+ }
+
/**
* Test the group contact clause does not contain an OR.
*
class CRM_Contact_BAO_QueryTestDataProvider implements Iterator {
/**
- * @var integer
+ * Current count.
+ *
+ * @var int
*/
private $i = 0;
public function testCount($fv, $count, $ids, $full) {
$this->quickCleanup($this->_tablesToTruncate);
- // echo "testCount\n";
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/datasets/group-dataset.xml'
- )
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/datasets/group-dataset.xml');
$obj = new CRM_Contact_Form_Search_Custom_Group($fv);
* echo "{$dao->contact_id}, {$dao->contact_type}, {$dao->sort_name}, {$dao->group_names}\n";
* }
**/
- $this->assertEquals($count, $obj->count(),
- 'In line ' . __LINE__
- );
+ $this->assertEquals($count, $obj->count());
}
/**
public function testAll($fv, $count, $ids, $full) {
// Truncate affected tables
$this->quickCleanup($this->_tablesToTruncate);
+ $this->loadXMLDataSet(dirname(__FILE__) . '/datasets/group-dataset.xml');
- // echo "testAll\n";
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/datasets/group-dataset.xml'
- )
- );
$obj = new CRM_Contact_Form_Search_Custom_Group($fv);
$sql = $obj->all();
$this->assertTrue(is_string($sql));
// Truncate affected tables
$this->quickCleanup($this->_tablesToTruncate);
- // echo "testContactIDs\n";
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/datasets/group-dataset.xml'
- )
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/datasets/group-dataset.xml');
+
$obj = new CRM_Contact_Form_Search_Custom_Group($fv);
$sql = $obj->contactIDs();
$this->assertTrue(is_string($sql));
class CRM_Contact_Form_Search_Custom_GroupTestDataProvider implements Iterator {
/**
- * @var integer
+ * Current count.
+ *
+ * @var int
*/
private $i = 0;
public function testCount($fv, $count, $ids, $full) {
$this->quickCleanup($this->_tablesToTruncate);
- // echo "testCount\n";
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/datasets/sample-dataset.xml'
- )
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/datasets/sample-dataset.xml');
$obj = new CRM_Contact_Form_Search_Custom_Sample($fv);
- $this->assertEquals($count, $obj->count(),
- 'In line ' . __LINE__
- );
+ $this->assertEquals($count, $obj->count());
}
/**
// Truncate affected tables
$this->quickCleanup($this->_tablesToTruncate);
- // echo "testAll\n";
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/datasets/sample-dataset.xml'
- )
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/datasets/sample-dataset.xml');
+
$obj = new CRM_Contact_Form_Search_Custom_Sample($fv);
$sql = $obj->all(0, 0, 'contact_id');
$this->assertTrue(is_string($sql));
// Truncate affected tables
$this->quickCleanup($this->_tablesToTruncate);
- // echo "testContactIDs\n";
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/datasets/sample-dataset.xml'
- )
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/datasets/sample-dataset.xml');
$obj = new CRM_Contact_Form_Search_Custom_Sample($fv);
$sql = $obj->contactIDs();
$this->assertTrue(is_string($sql));
public function testSavedSearch() {
$this->quickCleanup($this->_tablesToTruncate);
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/datasets/sample-dataset.xml'
- )
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/datasets/sample-dataset.xml');
$dataset[1] = array('id' => array(12));
$dataset[2] = array('id' => array(10, 11));
class CRM_Contact_Form_Search_Custom_SampleTestDataProvider implements Iterator {
/**
- * @var integer
+ * Current count.
+ *
+ * @var int
*/
private $i = 0;
$this->assertEquals("$ 200.00 - STUDENT", $activity->subject, 'Check for total amount in activity.');
}
- /**
- * Test checkContributeSettings.
- */
- public function testCheckContributeSettings() {
- $settings = CRM_Contribute_BAO_Contribution::checkContributeSettings('deferred_revenue_enabled');
- $this->assertNull($settings);
- $params = array(
- 'contribution_invoice_settings' => array(
- 'deferred_revenue_enabled' => '1',
- ),
- );
- $this->callAPISuccess('Setting', 'create', $params);
- $settings = CRM_Contribute_BAO_Contribution::checkContributeSettings('deferred_revenue_enabled');
- $this->assertEquals($settings, 1, 'Check for settings has failed');
- }
-
/**
* Test allowUpdateRevenueRecognitionDate.
*/
), $checkAgainst);
}
+ /**
+ * https://lab.civicrm.org/dev/financial/issues/56
+ * Changing financial type on a contribution records correct financial items
+ */
+ public function testChangingFinancialTypeWithoutTax() {
+ $ids = $values = [];
+ $contactId = $this->individualCreate();
+ $params = array(
+ 'contact_id' => $contactId,
+ 'receive_date' => date('YmdHis'),
+ 'total_amount' => 100.00,
+ 'financial_type_id' => 'Donation',
+ 'contribution_status_id' => 'Completed',
+ );
+ /* first test the scenario when sending an email */
+ $contributionId = $this->callAPISuccess(
+ 'contribution',
+ 'create',
+ $params
+ )['id'];
+
+ // Update Financial Type.
+ $this->callAPISuccess('contribution', 'create', [
+ 'id' => $contributionId,
+ 'financial_type_id' => 'Event Fee',
+ ]);
+
+ // Get line item
+ $lineItem = $this->callAPISuccessGetSingle('LineItem', [
+ 'contribution_id' => $contributionId,
+ 'return' => ["financial_type_id.name", "line_total"],
+ ]);
+
+ $this->assertEquals(
+ $lineItem['line_total'],
+ 100.00,
+ 'Invalid line amount.'
+ );
+
+ $this->assertEquals(
+ $lineItem['financial_type_id.name'],
+ 'Event Fee',
+ 'Invalid Financial Type stored.'
+ );
+
+ // Get Financial Items.
+ $financialItems = $this->callAPISuccess('FinancialItem', 'get', [
+ 'entity_id' => $lineItem['id'],
+ 'sequential' => 1,
+ 'entity_table' => 'civicrm_line_item',
+ 'options' => ['sort' => "id"],
+ 'return' => ["financial_account_id.name", "amount", "description"],
+ ]);
+
+ $this->assertEquals($financialItems['count'], 3, 'Count mismatch.');
+
+ $toCheck = [
+ ['Donation', 100.00],
+ ['Donation', -100.00],
+ ['Event Fee', 100.00],
+ ];
+
+ foreach ($financialItems['values'] as $key => $values) {
+ $this->assertEquals(
+ $values['financial_account_id.name'],
+ $toCheck[$key][0],
+ 'Invalid Financial Account stored.'
+ );
+ $this->assertEquals(
+ $values['amount'],
+ $toCheck[$key][1],
+ 'Amount mismatch.'
+ );
+ $this->assertEquals(
+ $values['description'],
+ 'Contribution Amount',
+ 'Description mismatch.'
+ );
+ }
+
+ // Check transactions.
+ $financialTransactions = $this->callAPISuccess('EntityFinancialTrxn', 'get', [
+ 'return' => ["financial_trxn_id"],
+ 'entity_table' => "civicrm_contribution",
+ 'entity_id' => $contributionId,
+ 'sequential' => 1,
+ ]);
+ $this->assertEquals($financialTransactions['count'], 3, 'Count mismatch.');
+
+ foreach ($financialTransactions['values'] as $key => $values) {
+ $this->callAPISuccessGetCount('EntityFinancialTrxn', [
+ 'financial_trxn_id' => $values['financial_trxn_id'],
+ 'amount' => $toCheck[$key][1],
+ 'financial_trxn_id.total_amount' => $toCheck[$key][1],
+ ], 2);
+ }
+ }
+
/**
* CRM-21424 Check if the receipt update is set after composing the receipt message
*/
/**
* Test the submit function that completes the partially paid Contribution with multiple payments.
*/
- public function testMultiplePaymentForPartialyPaidContribution() {
+ public function testMultiplePaymentForPartiallyPaidContribution() {
$this->createContribution('Partially paid');
// pay additional amount
// pay additional amount
$this->submitPayment(20);
$this->checkResults(array(30, 50, 20), 3);
+ $activities = $this->callAPISuccess('Activity', 'get', [
+ 'source_record_id' => $this->_contributionId,
+ 'activity_type_id' => 'Payment',
+ 'options' => ['sort' => 'id'],
+ 'sequential' => 1,
+ 'return' => ['target_contact_id', 'assignee_contact_id', 'subject'],
+ ])['values'];
+ $this->assertEquals(2, count($activities));
+ $this->assertEquals('$ 50.00 - Offline Payment for Contribution', $activities[0]['subject']);
+ $this->assertEquals('$ 20.00 - Offline Payment for Contribution', $activities[1]['subject']);
+ $this->assertEquals(CRM_Core_Session::singleton()->getLoggedInContactID(), $activities[0]['source_contact_id']);
+ $this->assertEquals([$this->_individualId], $activities[0]['target_contact_id']);
+ $this->assertEquals([], $activities[0]['assignee_contact_id']);
}
/**
* AllIMs() method - get all IMs for our contact, with primary IM first
*/
public function testAllIMs() {
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute(
- $this->_dbconn,
- $this->createFlatXMLDataSet(dirname(__FILE__) . '/dataset/im_test.xml')
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/dataset/im_test.xml');
$contactId = 69;
$IMs = CRM_Core_BAO_IM::allIMs($contactId);
$this->assertDBCompareValues('CRM_Friend_DAO_Friend', $searchActParams, $compareActParams);
}
+ /**
+ * Testing Activity Generation through Entity Recursion with Custom Data and Tags.
+ */
+ public function testRecurringEntityGenerationWithCustomDataAndTags() {
+
+ // Create custom group and field
+ $customGroup = $this->customGroupCreate([
+ 'extends' => 'Activity',
+ ]);
+ $customField = $this->customFieldCreate([
+ 'custom_group_id' => $customGroup['id'],
+ 'default_value' => '',
+ ]
+ );
+
+ // Create activity Tag
+ $tag = $this->tagCreate([
+ 'used_for' => 'Activities',
+ ]);
+
+ // Create original activity
+ $customFieldValue = 'Custom Value';
+ $activityDateTime = date('YmdHis');
+ $activityId = $this->activityCreate([
+ 'activity_date_time' => $activityDateTime,
+ 'custom_' . $customField['id'] => $customFieldValue,
+ ]);
+
+ $activityId = $activityId['id'];
+
+ // Assign tag to a activity.
+ $this->callAPISuccess('EntityTag', 'create', [
+ 'entity_table' => 'civicrm_activity',
+ 'entity_id' => $activityId,
+ 'tag_id' => $tag['id'],
+ ]);
+
+ // Create recurring activities.
+ $recursion = new CRM_Core_BAO_RecurringEntity();
+ $recursion->entity_id = $activityId;
+ $recursion->entity_table = 'civicrm_activity';
+ $recursion->dateColumns = ['activity_date_time'];
+ $recursion->schedule = [
+ 'entity_value' => $activityId,
+ 'start_action_date' => $activityDateTime,
+ 'entity_status' => 'fourth saturday',
+ 'repetition_frequency_unit' => 'month',
+ 'repetition_frequency_interval' => 3,
+ 'start_action_offset' => 3,
+ 'used_for' => 'activity',
+ ];
+
+ $generatedEntities = $recursion->generate();
+ $generatedActivities = $generatedEntities['civicrm_activity'];
+
+ $this->assertEquals(3, count($generatedActivities), "Check if number of iterations are 3");
+
+ foreach ($generatedActivities as $generatedActivityId) {
+
+ /* Validate tag in recurring activity
+ // @todo - refer https://github.com/civicrm/civicrm-core/pull/13470
+ $this->callAPISuccess('EntityTag', 'getsingle', [
+ 'entity_table' => 'civicrm_activity',
+ 'entity_id' => $generatedActivityId,
+ ]);
+ */
+
+ // Validate custom data in recurring activity
+ $activity = $this->callAPISuccess('activity', 'getsingle', [
+ 'return' => [
+ 'custom_' . $customField['id'],
+ ],
+ 'id' => $generatedActivityId,
+ ]);
+
+ $this->assertEquals($customFieldValue, $activity['custom_' . $customField['id']], 'Custom field value should be ' . $customFieldValue);
+
+ }
+ }
+
}
/**
* Class CRM_Dedupe_DedupeMergerTest
+ *
* @group headless
*/
class CRM_Dedupe_MergerTest extends CiviUnitTestCase {
protected $_groupId;
- protected $_contactIds = array();
+ protected $_contactIds = [];
+
+ /**
+ * Tear down.
+ *
+ * @throws \Exception
+ */
public function tearDown() {
- $this->quickCleanup(array('civicrm_contact', 'civicrm_group_contact', 'civicrm_group'));
+ $this->quickCleanup([
+ 'civicrm_contact',
+ 'civicrm_group_contact',
+ 'civicrm_group',
+ ]);
parent::tearDown();
}
public function createDupeContacts() {
// create a group to hold contacts, so that dupe checks don't consider any other contacts in the DB
- $params = array(
- 'name' => 'Test Dupe Merger Group',
- 'title' => 'Test Dupe Merger Group',
- 'domain_id' => 1,
- 'is_active' => 1,
+ $params = [
+ 'name' => 'Test Dupe Merger Group',
+ 'title' => 'Test Dupe Merger Group',
+ 'domain_id' => 1,
+ 'is_active' => 1,
'visibility' => 'Public Pages',
- );
+ ];
$result = $this->callAPISuccess('group', 'create', $params);
$this->_groupId = $result['id'];
// will - dale - dale@example.com
// will - dale - will@example.com
// will - dale - will@example.com
- $params = array(
- array(
+ $params = [
+ [
'first_name' => 'robin',
'last_name' => 'hood',
'email' => 'robin@example.com',
'contact_type' => 'Individual',
- ),
- array(
+ ],
+ [
'first_name' => 'robin',
'last_name' => 'hood',
'email' => 'robin@example.com',
'contact_type' => 'Individual',
- ),
- array(
+ ],
+ [
'first_name' => 'robin',
'last_name' => 'hood',
'email' => 'hood@example.com',
'contact_type' => 'Individual',
- ),
- array(
+ ],
+ [
'first_name' => 'robin',
'last_name' => 'dale',
'email' => 'robin@example.com',
'contact_type' => 'Individual',
- ),
- array(
+ ],
+ [
'first_name' => 'little',
'last_name' => 'dale',
'email' => 'dale@example.com',
'contact_type' => 'Individual',
- ),
- array(
+ ],
+ [
'first_name' => 'little',
'last_name' => 'dale',
'email' => 'dale@example.com',
'contact_type' => 'Individual',
- ),
- array(
+ ],
+ [
'first_name' => 'will',
'last_name' => 'dale',
'email' => 'dale@example.com',
'contact_type' => 'Individual',
- ),
- array(
+ ],
+ [
'first_name' => 'will',
'last_name' => 'dale',
'email' => 'will@example.com',
'contact_type' => 'Individual',
- ),
- array(
+ ],
+ [
'first_name' => 'will',
'last_name' => 'dale',
'email' => 'will@example.com',
'contact_type' => 'Individual',
- ),
- );
+ ],
+ ];
$count = 1;
foreach ($params as $param) {
$contact = civicrm_api('contact', 'create', $param);
$this->_contactIds[$count++] = $contact['id'];
- $grpParams = array(
+ $grpParams = [
'contact_id' => $contact['id'],
- 'group_id' => $this->_groupId,
- 'version' => 3,
- );
+ 'group_id' => $this->_groupId,
+ 'version' => 3,
+ ];
$this->callAPISuccess('group_contact', 'create', $grpParams);
}
}
@$object->run();
// Retrieve pairs from prev next cache table
- $select = array('pn.is_selected' => 'is_selected');
+ $select = ['pn.is_selected' => 'is_selected'];
$cacheKeyString = CRM_Dedupe_Merger::getMergeCacheKeyString($dao->id, $this->_groupId);
$pnDupePairs = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString, NULL, NULL, 0, 0, $select);
@$object->run();
// Retrieve pairs from prev next cache table
- $select = array('pn.is_selected' => 'is_selected');
+ $select = ['pn.is_selected' => 'is_selected'];
$cacheKeyString = CRM_Dedupe_Merger::getMergeCacheKeyString($dao->id, $this->_groupId);
$pnDupePairs = CRM_Core_BAO_PrevNextCache::retrieve($cacheKeyString, NULL, NULL, 0, 0, $select);
* @return array
*/
public function getHackedInCIDRef() {
- return array(
- 'civicrm_entity_tag' => array(
+ return [
+ 'civicrm_entity_tag' => [
0 => 'entity_id',
- ),
- );
+ ],
+ ];
}
/**
* Test function that gets duplicate pairs.
*
- * It turns out there are 2 code paths retrieving this data so my initial focus is on ensuring
- * they match.
+ * It turns out there are 2 code paths retrieving this data so my initial
+ * focus is on ensuring they match.
*/
public function testGetMatches() {
$this->setupMatchData();
FALSE
);
- $this->assertEquals(array(
- 0 => array(
+ $this->assertEquals([
+ 0 => [
'srcID' => $this->contacts[1]['id'],
'srcName' => 'Mr. Mickey Mouse II',
'dstID' => $this->contacts[0]['id'],
'dstName' => 'Mr. Mickey Mouse II',
'weight' => 20,
'canMerge' => TRUE,
- ),
- 1 => array(
+ ],
+ 1 => [
'srcID' => $this->contacts[3]['id'],
'srcName' => 'Mr. Minnie Mouse II',
'dstID' => $this->contacts[2]['id'],
'dstName' => 'Mr. Minnie Mouse II',
'weight' => 20,
'canMerge' => TRUE,
- ),
- ), $pairs);
+ ],
+ ], $pairs);
}
/**
* Test function that gets organization pairs.
*
- * Note the rule will match on organization_name OR email - hence lots of matches.
+ * Note the rule will match on organization_name OR email - hence lots of
+ * matches.
+ *
+ * @throws \Exception
*/
public function testGetOrganizationMatches() {
$this->setupMatchData();
- $ruleGroups = $this->callAPISuccessGetSingle('RuleGroup', array('contact_type' => 'Organization', 'used' => 'Supervised'));
+ $ruleGroups = $this->callAPISuccessGetSingle('RuleGroup', [
+ 'contact_type' => 'Organization',
+ 'used' => 'Supervised',
+ ]);
$pairs = CRM_Dedupe_Merger::getDuplicatePairs(
$ruleGroups['id'],
FALSE
);
- $expectedPairs = array(
- 0 => array(
+ $expectedPairs = [
+ 0 => [
'srcID' => $this->contacts[5]['id'],
'srcName' => 'Walt Disney Ltd',
'dstID' => $this->contacts[4]['id'],
'dstName' => 'Walt Disney Ltd',
'weight' => 20,
'canMerge' => TRUE,
- ),
- 1 => array(
+ ],
+ 1 => [
'srcID' => $this->contacts[7]['id'],
'srcName' => 'Walt Disney',
'dstID' => $this->contacts[6]['id'],
'dstName' => 'Walt Disney',
'weight' => 10,
'canMerge' => TRUE,
- ),
- 2 => array(
+ ],
+ 2 => [
'srcID' => $this->contacts[6]['id'],
'srcName' => 'Walt Disney',
'dstID' => $this->contacts[4]['id'],
'dstName' => 'Walt Disney Ltd',
'weight' => 10,
'canMerge' => TRUE,
- ),
- 3 => array(
+ ],
+ 3 => [
'srcID' => $this->contacts[6]['id'],
'srcName' => 'Walt Disney',
'dstID' => $this->contacts[5]['id'],
'dstName' => 'Walt Disney Ltd',
'weight' => 10,
'canMerge' => TRUE,
- ),
- );
- usort($pairs, array(__CLASS__, 'compareDupes'));
- usort($expectedPairs, array(__CLASS__, 'compareDupes'));
+ ],
+ ];
+ usort($pairs, [__CLASS__, 'compareDupes']);
+ usort($expectedPairs, [__CLASS__, 'compareDupes']);
$this->assertEquals($expectedPairs, $pairs);
}
*
* @param array $a
* @param array $b
+ *
* @return int
*/
public static function compareDupes($a, $b) {
- foreach (array('srcName', 'dstName', 'srcID', 'dstID') as $field) {
+ foreach (['srcName', 'dstName', 'srcID', 'dstID'] as $field) {
if ($a[$field] != $b[$field]) {
return ($a[$field] < $b[$field]) ? 1 : -1;
}
/**
* Test function that gets organization duplicate pairs.
+ *
+ * @throws \Exception
*/
public function testGetOrganizationMatchesInGroup() {
$this->setupMatchData();
- $ruleGroups = $this->callAPISuccessGetSingle('RuleGroup', array('contact_type' => 'Organization', 'used' => 'Supervised'));
+ $ruleGroups = $this->callAPISuccessGetSingle('RuleGroup', [
+ 'contact_type' => 'Organization',
+ 'used' => 'Supervised',
+ ]);
- $groupID = $this->groupCreate(array('title' => 'she-mice'));
+ $groupID = $this->groupCreate(['title' => 'she-mice']);
- $this->callAPISuccess('GroupContact', 'create', array('group_id' => $groupID, 'contact_id' => $this->contacts[4]['id']));
+ $this->callAPISuccess('GroupContact', 'create', [
+ 'group_id' => $groupID,
+ 'contact_id' => $this->contacts[4]['id'],
+ ]);
$pairs = CRM_Dedupe_Merger::getDuplicatePairs(
$ruleGroups['id'],
FALSE
);
- $this->assertEquals(array(
- 0 => array(
+ $this->assertEquals([
+ 0 => [
'srcID' => $this->contacts[5]['id'],
'srcName' => 'Walt Disney Ltd',
'dstID' => $this->contacts[4]['id'],
'dstName' => 'Walt Disney Ltd',
'weight' => 20,
'canMerge' => TRUE,
- ),
- 1 => array(
+ ],
+ 1 => [
'srcID' => $this->contacts[6]['id'],
'srcName' => 'Walt Disney',
'dstID' => $this->contacts[4]['id'],
'dstName' => 'Walt Disney Ltd',
'weight' => 10,
'canMerge' => TRUE,
- ),
- ), $pairs);
+ ],
+ ], $pairs);
- $this->callAPISuccess('GroupContact', 'create', array('group_id' => $groupID, 'contact_id' => $this->contacts[5]['id']));
+ $this->callAPISuccess('GroupContact', 'create', [
+ 'group_id' => $groupID,
+ 'contact_id' => $this->contacts[5]['id'],
+ ]);
CRM_Core_DAO::executeQuery("DELETE FROM civicrm_prevnext_cache");
$pairs = CRM_Dedupe_Merger::getDuplicatePairs(
$ruleGroups['id'],
FALSE
);
- $this->assertEquals(array(
- 0 => array(
+ $this->assertEquals([
+ 0 => [
'srcID' => $this->contacts[5]['id'],
'srcName' => 'Walt Disney Ltd',
'dstID' => $this->contacts[4]['id'],
'dstName' => 'Walt Disney Ltd',
'weight' => 20,
'canMerge' => TRUE,
- ),
- 1 => array(
+ ],
+ 1 => [
'srcID' => $this->contacts[6]['id'],
'srcName' => 'Walt Disney',
'dstID' => $this->contacts[4]['id'],
'dstName' => 'Walt Disney Ltd',
'weight' => 10,
'canMerge' => TRUE,
- ),
- 2 => array(
+ ],
+ 2 => [
'srcID' => $this->contacts[6]['id'],
'srcName' => 'Walt Disney',
'dstID' => $this->contacts[5]['id'],
'dstName' => 'Walt Disney Ltd',
'weight' => 10,
'canMerge' => TRUE,
- ),
- ), $pairs);
+ ],
+ ], $pairs);
}
/**
* Test function that gets duplicate pairs.
*
- * It turns out there are 2 code paths retrieving this data so my initial focus is on ensuring
- * they match.
+ * It turns out there are 2 code paths retrieving this data so my initial
+ * focus is on ensuring they match.
*/
public function testGetMatchesInGroup() {
$this->setupMatchData();
- $groupID = $this->groupCreate(array('title' => 'she-mice'));
+ $groupID = $this->groupCreate(['title' => 'she-mice']);
- $this->callAPISuccess('GroupContact', 'create', array('group_id' => $groupID, 'contact_id' => $this->contacts[3]['id']));
+ $this->callAPISuccess('GroupContact', 'create', [
+ 'group_id' => $groupID,
+ 'contact_id' => $this->contacts[3]['id'],
+ ]);
$pairs = CRM_Dedupe_Merger::getDuplicatePairs(
1,
FALSE
);
- $this->assertEquals(array(
- 0 => array(
+ $this->assertEquals([
+ 0 => [
'srcID' => $this->contacts[3]['id'],
'srcName' => 'Mr. Minnie Mouse II',
'dstID' => $this->contacts[2]['id'],
'dstName' => 'Mr. Minnie Mouse II',
'weight' => 20,
'canMerge' => TRUE,
- ),
- ), $pairs);
+ ],
+ ], $pairs);
+ }
+
+ /**
+ * Test the special info handling is unchanged after cleanup.
+ *
+ * Note the handling is silly - we are testing to lock in over short term
+ * changes not to imply any contract on the function.
+ */
+ public function testGetRowsElementsAndInfoSpecialInfo() {
+ $contact1 = $this->individualCreate([
+ 'preferred_communication_method' => [],
+ 'communication_style_id' => 'Familiar',
+ 'prefix_id' => 'Mrs.',
+ 'suffix_id' => 'III',
+ ]);
+ $contact2 = $this->individualCreate([
+ 'preferred_communication_method' => [
+ 'SMS',
+ 'Fax',
+ ],
+ 'communication_style_id' => 'Formal',
+ 'gender_id' => 'Female',
+ ]);
+ $rowsElementsAndInfo = CRM_Dedupe_Merger::getRowsElementsAndInfo($contact1, $contact2);
+ $rows = $rowsElementsAndInfo['rows'];
+ $this->assertEquals([
+ 'main' => 'Mrs.',
+ 'other' => 'Mr.',
+ 'title' => 'Individual Prefix',
+ ], $rows['move_prefix_id']);
+ $this->assertEquals([
+ 'main' => 'III',
+ 'other' => 'II',
+ 'title' => 'Individual Suffix',
+ ], $rows['move_suffix_id']);
+ $this->assertEquals([
+ 'main' => '',
+ 'other' => 'Female',
+ 'title' => 'Gender',
+ ], $rows['move_gender_id']);
+ $this->assertEquals([
+ 'main' => 'Familiar',
+ 'other' => 'Formal',
+ 'title' => 'Communication Style',
+ ], $rows['move_communication_style_id']);
+ $this->assertEquals(1, $rowsElementsAndInfo['migration_info']['move_communication_style_id']);
+ $this->assertEquals([
+ 'main' => '',
+ 'other' => 'SMS, Fax',
+ 'title' => 'Preferred Communication Method',
+ ], $rows['move_preferred_communication_method']);
+ $this->assertEquals('\ 14\ 15\ 1', $rowsElementsAndInfo['migration_info']['move_preferred_communication_method']);
}
/**
//Add Membership for the duplicate contact.
$memTypeId = $this->membershipTypeCreate();
- $membership = $this->callAPISuccess('Membership', 'create', [
+ $this->callAPISuccess('Membership', 'create', [
'membership_type_id' => $memTypeId,
'contact_id' => $duplicateContactID,
]);
*/
public function testCustomDataOverwrite() {
// Create Custom Field
- $createGroup = $this->setupCustomGroupForIndividual();
+ $createGroup = $this->setupCustomGroupForIndividual();
$createField = $this->setupCustomField('Graduation', $createGroup);
$customFieldName = "custom_" . $createField['id'];
$duplicateContactID2 = $this->contacts[2]['id'];
// update the text custom field for original contact with value 'abc'
- $this->callAPISuccess('Contact', 'create', array(
+ $this->callAPISuccess('Contact', 'create', [
'id' => $originalContactID,
"{$customFieldName}" => 'abc',
- ));
+ ]);
$this->assertCustomFieldValue($originalContactID, 'abc', $customFieldName);
// update the text custom field for duplicate contact 1 with value 'def'
- $this->callAPISuccess('Contact', 'create', array(
+ $this->callAPISuccess('Contact', 'create', [
'id' => $duplicateContactID1,
"{$customFieldName}" => 'def',
- ));
+ ]);
$this->assertCustomFieldValue($duplicateContactID1, 'def', $customFieldName);
// update the text custom field for duplicate contact 2 with value 'ghi'
- $this->callAPISuccess('Contact', 'create', array(
+ $this->callAPISuccess('Contact', 'create', [
'id' => $duplicateContactID2,
"{$customFieldName}" => 'ghi',
- ));
+ ]);
$this->assertCustomFieldValue($duplicateContactID2, 'ghi', $customFieldName);
/*** USE-CASE 1: DO NOT OVERWRITE CUSTOM FIELD VALUE **/
- $this->mergeContacts($originalContactID, $duplicateContactID1, array(
+ $this->mergeContacts($originalContactID, $duplicateContactID1, [
"move_{$customFieldName}" => NULL,
- ));
+ ]);
$this->assertCustomFieldValue($originalContactID, 'abc', $customFieldName);
/*** USE-CASE 2: OVERWRITE CUSTOM FIELD VALUE **/
- $this->mergeContacts($originalContactID, $duplicateContactID2, array(
+ $this->mergeContacts($originalContactID, $duplicateContactID2, [
"move_{$customFieldName}" => 'ghi',
- ));
+ ]);
$this->assertCustomFieldValue($originalContactID, 'ghi', $customFieldName);
// cleanup created custom set
- $this->callAPISuccess('CustomField', 'delete', array('id' => $createField['id']));
- $this->callAPISuccess('CustomGroup', 'delete', array('id' => $createGroup['id']));
+ $this->callAPISuccess('CustomField', 'delete', ['id' => $createField['id']]);
+ $this->callAPISuccess('CustomGroup', 'delete', ['id' => $createGroup['id']]);
}
/**
*/
public function testMigrationOfUnselectedCustomDataOnEmptyCustomRecord() {
// Create Custom Fields
- $createGroup = $this->setupCustomGroupForIndividual();
+ $createGroup = $this->setupCustomGroupForIndividual();
$customField1 = $this->setupCustomField('TestField', $createGroup);
// Create multi-value custom field
$multiGroup = $this->CustomGroupMultipleCreateByParams();
- $multiField = $this->customFieldCreate(array(
+ $multiField = $this->customFieldCreate([
'custom_group_id' => $multiGroup['id'],
'label' => 'field_1' . $multiGroup['id'],
'in_selector' => 1,
- ));
+ ]);
// Contacts setup
$this->setupMatchData();
$duplicateContactID = $this->contacts[1]['id'];
// Update the text custom fields for duplicate contact
- $this->callAPISuccess('Contact', 'create', array(
+ $this->callAPISuccess('Contact', 'create', [
'id' => $duplicateContactID,
"custom_{$customField1['id']}" => 'abc',
"custom_{$multiField['id']}" => 'def',
- ));
+ ]);
$this->assertCustomFieldValue($duplicateContactID, 'abc', "custom_{$customField1['id']}");
$this->assertCustomFieldValue($duplicateContactID, 'def', "custom_{$multiField['id']}");
// Merge, and ensure that no value was migrated
- $this->mergeContacts($originalContactID, $duplicateContactID, array(
+ $this->mergeContacts($originalContactID, $duplicateContactID, [
"move_custom_{$customField1['id']}" => NULL,
"move_rel_table_custom_{$multiGroup['id']}" => NULL,
- ));
+ ]);
$this->assertCustomFieldValue($originalContactID, '', "custom_{$customField1['id']}");
$this->assertCustomFieldValue($originalContactID, '', "custom_{$multiField['id']}");
// cleanup created custom set
- $this->callAPISuccess('CustomField', 'delete', array('id' => $customField1['id']));
- $this->callAPISuccess('CustomGroup', 'delete', array('id' => $createGroup['id']));
- $this->callAPISuccess('CustomField', 'delete', array('id' => $multiField['id']));
- $this->callAPISuccess('CustomGroup', 'delete', array('id' => $multiGroup['id']));
+ $this->callAPISuccess('CustomField', 'delete', ['id' => $customField1['id']]);
+ $this->callAPISuccess('CustomGroup', 'delete', ['id' => $createGroup['id']]);
+ $this->callAPISuccess('CustomField', 'delete', ['id' => $multiField['id']]);
+ $this->callAPISuccess('CustomGroup', 'delete', ['id' => $multiGroup['id']]);
}
/**
*/
public function testMigrationOfSomeCustomDataOnEmptyCustomRecord() {
// Create Custom Fields
- $createGroup = $this->setupCustomGroupForIndividual();
+ $createGroup = $this->setupCustomGroupForIndividual();
$customField1 = $this->setupCustomField('Test1', $createGroup);
$customField2 = $this->setupCustomField('Test2', $createGroup);
// Create multi-value custom field
$multiGroup = $this->CustomGroupMultipleCreateByParams();
- $multiField = $this->customFieldCreate(array(
+ $multiField = $this->customFieldCreate([
'custom_group_id' => $multiGroup['id'],
'label' => 'field_1' . $multiGroup['id'],
'in_selector' => 1,
- ));
+ ]);
// Contacts setup
$this->setupMatchData();
$duplicateContactID = $this->contacts[1]['id'];
// Update the text custom fields for duplicate contact
- $this->callAPISuccess('Contact', 'create', array(
+ $this->callAPISuccess('Contact', 'create', [
'id' => $duplicateContactID,
"custom_{$customField1['id']}" => 'abc',
"custom_{$customField2['id']}" => 'def',
"custom_{$multiField['id']}" => 'ghi',
- ));
+ ]);
$this->assertCustomFieldValue($duplicateContactID, 'abc', "custom_{$customField1['id']}");
$this->assertCustomFieldValue($duplicateContactID, 'def', "custom_{$customField2['id']}");
$this->assertCustomFieldValue($duplicateContactID, 'ghi', "custom_{$multiField['id']}");
// Perform merge
- $this->mergeContacts($originalContactID, $duplicateContactID, array(
+ $this->mergeContacts($originalContactID, $duplicateContactID, [
"move_custom_{$customField1['id']}" => NULL,
"move_custom_{$customField2['id']}" => 'def',
"move_rel_table_custom_{$multiGroup['id']}" => '1',
- ));
+ ]);
$this->assertCustomFieldValue($originalContactID, '', "custom_{$customField1['id']}");
$this->assertCustomFieldValue($originalContactID, 'def', "custom_{$customField2['id']}");
$this->assertCustomFieldValue($originalContactID, 'ghi', "custom_{$multiField['id']}");
// cleanup created custom set
- $this->callAPISuccess('CustomField', 'delete', array('id' => $customField1['id']));
- $this->callAPISuccess('CustomField', 'delete', array('id' => $customField2['id']));
- $this->callAPISuccess('CustomGroup', 'delete', array('id' => $createGroup['id']));
- $this->callAPISuccess('CustomField', 'delete', array('id' => $multiField['id']));
- $this->callAPISuccess('CustomGroup', 'delete', array('id' => $multiGroup['id']));
+ $this->callAPISuccess('CustomField', 'delete', ['id' => $customField1['id']]);
+ $this->callAPISuccess('CustomField', 'delete', ['id' => $customField2['id']]);
+ $this->callAPISuccess('CustomGroup', 'delete', ['id' => $createGroup['id']]);
+ $this->callAPISuccess('CustomField', 'delete', ['id' => $multiField['id']]);
+ $this->callAPISuccess('CustomGroup', 'delete', ['id' => $multiGroup['id']]);
}
/**
* @param $params
* Array of fields to be merged from source into target contact, of the form
* ['move_<fieldName>' => <fieldValue>]
+ *
+ * @throws \CRM_Core_Exception
+ * @throws \CiviCRM_API3_Exception
*/
private function mergeContacts($originalContactID, $duplicateContactID, $params) {
$rowsElementsAndInfo = CRM_Dedupe_Merger::getRowsElementsAndInfo($originalContactID, $duplicateContactID);
- $migrationData = array(
+ $migrationData = [
'main_details' => $rowsElementsAndInfo['main_details'],
'other_details' => $rowsElementsAndInfo['other_details'],
- );
+ ];
// Migrate data of duplicate contact
CRM_Dedupe_Merger::moveAllBelongings($originalContactID, $duplicateContactID, array_merge($migrationData, $params));
* @param $customFieldName
*/
private function assertCustomFieldValue($contactID, $expectedValue, $customFieldName) {
- $data = $this->callAPISuccess('Contact', 'getsingle', array(
+ $data = $this->callAPISuccess('Contact', 'getsingle', [
'id' => $contactID,
- 'return' => array($customFieldName),
- ));
+ 'return' => [$customFieldName],
+ ]);
$this->assertEquals($expectedValue, $data[$customFieldName], "Custom field value was supposed to be '{$expectedValue}', '{$data[$customFieldName]}' found.");
}
* Data for the created custom group record
*/
private function setupCustomGroupForIndividual() {
- $customGroup = $this->callAPISuccess('custom_group', 'get', array(
+ $customGroup = $this->callAPISuccess('custom_group', 'get', [
'name' => 'test_group',
- ));
+ ]);
if ($customGroup['count'] > 0) {
- $this->callAPISuccess('CustomGroup', 'delete', array('id' => $customGroup['id']));
+ $this->callAPISuccess('CustomGroup', 'delete', ['id' => $customGroup['id']]);
}
- $customGroup = $this->callAPISuccess('custom_group', 'create', array(
+ $customGroup = $this->callAPISuccess('custom_group', 'create', [
'title' => 'Test_Group',
'name' => 'test_group',
- 'extends' => array('Individual'),
+ 'extends' => ['Individual'],
'style' => 'Inline',
'is_multiple' => FALSE,
'is_active' => 1,
- ));
+ ]);
return $customGroup;
}
* Data for the created custom field record
*/
private function setupCustomField($fieldLabel, $createGroup) {
- return $this->callAPISuccess('custom_field', 'create', array(
+ return $this->callAPISuccess('custom_field', 'create', [
'label' => $fieldLabel,
'data_type' => 'Alphanumeric',
'html_type' => 'Text',
'custom_group_id' => $createGroup['id'],
- ));
+ ]);
}
/**
* Set up some contacts for our matching.
*/
public function setupMatchData() {
- $fixtures = array(
- array(
+ $fixtures = [
+ [
'first_name' => 'Mickey',
'last_name' => 'Mouse',
'email' => 'mickey@mouse.com',
- ),
- array(
+ ],
+ [
'first_name' => 'Mickey',
'last_name' => 'Mouse',
'email' => 'mickey@mouse.com',
- ),
- array(
+ ],
+ [
'first_name' => 'Minnie',
'last_name' => 'Mouse',
'email' => 'mickey@mouse.com',
- ),
- array(
+ ],
+ [
'first_name' => 'Minnie',
'last_name' => 'Mouse',
'email' => 'mickey@mouse.com',
- ),
- );
+ ],
+ ];
foreach ($fixtures as $fixture) {
$contactID = $this->individualCreate($fixture);
- $this->contacts[] = array_merge($fixture, array('id' => $contactID));
+ $this->contacts[] = array_merge($fixture, ['id' => $contactID]);
}
- $organizationFixtures = array(
- array(
+ $organizationFixtures = [
+ [
'organization_name' => 'Walt Disney Ltd',
'email' => 'walt@disney.com',
- ),
- array(
+ ],
+ [
'organization_name' => 'Walt Disney Ltd',
'email' => 'walt@disney.com',
- ),
- array(
+ ],
+ [
'organization_name' => 'Walt Disney',
'email' => 'walt@disney.com',
- ),
- array(
+ ],
+ [
'organization_name' => 'Walt Disney',
'email' => 'walter@disney.com',
- ),
- );
+ ],
+ ];
foreach ($organizationFixtures as $fixture) {
$contactID = $this->organizationCreate($fixture);
- $this->contacts[] = array_merge($fixture, array('id' => $contactID));
+ $this->contacts[] = array_merge($fixture, ['id' => $contactID]);
}
}
*
* This is a statically maintained (in this test list).
*
- * There is also a check against an automated list but having both seems to add extra stability to me. They do
- * not change often.
+ * There is also a check against an automated list but having both seems to
+ * add extra stability to me. They do not change often.
*/
public function getStaticCIDRefs() {
- return array(
- 'civicrm_acl_cache' => array(
+ return [
+ 'civicrm_acl_cache' => [
0 => 'contact_id',
- ),
- 'civicrm_acl_contact_cache' => array(
+ ],
+ 'civicrm_acl_contact_cache' => [
0 => 'contact_id',
- ),
- 'civicrm_action_log' => array(
+ ],
+ 'civicrm_action_log' => [
0 => 'contact_id',
- ),
- 'civicrm_activity_contact' => array(
+ ],
+ 'civicrm_activity_contact' => [
0 => 'contact_id',
- ),
- 'civicrm_address' => array(
+ ],
+ 'civicrm_address' => [
0 => 'contact_id',
- ),
- 'civicrm_batch' => array(
+ ],
+ 'civicrm_batch' => [
0 => 'created_id',
1 => 'modified_id',
- ),
- 'civicrm_campaign' => array(
+ ],
+ 'civicrm_campaign' => [
0 => 'created_id',
1 => 'last_modified_id',
- ),
- 'civicrm_case_contact' => array(
+ ],
+ 'civicrm_case_contact' => [
0 => 'contact_id',
- ),
- 'civicrm_contact' => array(
+ ],
+ 'civicrm_contact' => [
0 => 'primary_contact_id',
1 => 'employer_id',
- ),
- 'civicrm_contribution' => array(
+ ],
+ 'civicrm_contribution' => [
0 => 'contact_id',
- ),
- 'civicrm_contribution_page' => array(
+ ],
+ 'civicrm_contribution_page' => [
0 => 'created_id',
- ),
- 'civicrm_contribution_recur' => array(
+ ],
+ 'civicrm_contribution_recur' => [
0 => 'contact_id',
- ),
- 'civicrm_contribution_soft' => array(
+ ],
+ 'civicrm_contribution_soft' => [
0 => 'contact_id',
- ),
- 'civicrm_custom_group' => array(
+ ],
+ 'civicrm_custom_group' => [
0 => 'created_id',
- ),
- 'civicrm_dashboard_contact' => array(
+ ],
+ 'civicrm_dashboard_contact' => [
0 => 'contact_id',
- ),
- 'civicrm_dedupe_exception' => array(
+ ],
+ 'civicrm_dedupe_exception' => [
0 => 'contact_id1',
1 => 'contact_id2',
- ),
- 'civicrm_domain' => array(
+ ],
+ 'civicrm_domain' => [
0 => 'contact_id',
- ),
- 'civicrm_email' => array(
+ ],
+ 'civicrm_email' => [
0 => 'contact_id',
- ),
- 'civicrm_event' => array(
+ ],
+ 'civicrm_event' => [
0 => 'created_id',
- ),
- 'civicrm_event_carts' => array(
+ ],
+ 'civicrm_event_carts' => [
0 => 'user_id',
- ),
- 'civicrm_financial_account' => array(
+ ],
+ 'civicrm_financial_account' => [
0 => 'contact_id',
- ),
- 'civicrm_financial_item' => array(
+ ],
+ 'civicrm_financial_item' => [
0 => 'contact_id',
- ),
- 'civicrm_grant' => array(
+ ],
+ 'civicrm_grant' => [
0 => 'contact_id',
- ),
- 'civicrm_group' => array(
+ ],
+ 'civicrm_group' => [
0 => 'created_id',
1 => 'modified_id',
- ),
- 'civicrm_group_contact' => array(
+ ],
+ 'civicrm_group_contact' => [
0 => 'contact_id',
- ),
- 'civicrm_group_contact_cache' => array(
+ ],
+ 'civicrm_group_contact_cache' => [
0 => 'contact_id',
- ),
- 'civicrm_group_organization' => array(
+ ],
+ 'civicrm_group_organization' => [
0 => 'organization_id',
- ),
- 'civicrm_im' => array(
+ ],
+ 'civicrm_im' => [
0 => 'contact_id',
- ),
- 'civicrm_log' => array(
+ ],
+ 'civicrm_log' => [
0 => 'modified_id',
- ),
- 'civicrm_mailing' => array(
+ ],
+ 'civicrm_mailing' => [
0 => 'created_id',
1 => 'scheduled_id',
2 => 'approver_id',
- ),
- 'civicrm_file' => array(
+ ],
+ 'civicrm_file' => [
'created_id',
- ),
- 'civicrm_mailing_abtest' => array(
+ ],
+ 'civicrm_mailing_abtest' => [
0 => 'created_id',
- ),
- 'civicrm_mailing_event_queue' => array(
+ ],
+ 'civicrm_mailing_event_queue' => [
0 => 'contact_id',
- ),
- 'civicrm_mailing_event_subscribe' => array(
+ ],
+ 'civicrm_mailing_event_subscribe' => [
0 => 'contact_id',
- ),
- 'civicrm_mailing_recipients' => array(
+ ],
+ 'civicrm_mailing_recipients' => [
0 => 'contact_id',
- ),
- 'civicrm_membership' => array(
+ ],
+ 'civicrm_membership' => [
0 => 'contact_id',
- ),
- 'civicrm_membership_log' => array(
+ ],
+ 'civicrm_membership_log' => [
0 => 'modified_id',
- ),
- 'civicrm_membership_type' => array(
+ ],
+ 'civicrm_membership_type' => [
0 => 'member_of_contact_id',
- ),
- 'civicrm_note' => array(
+ ],
+ 'civicrm_note' => [
0 => 'contact_id',
- ),
- 'civicrm_openid' => array(
+ ],
+ 'civicrm_openid' => [
0 => 'contact_id',
- ),
- 'civicrm_participant' => array(
+ ],
+ 'civicrm_participant' => [
0 => 'contact_id',
//CRM-16761
1 => 'transferred_to_contact_id',
- ),
- 'civicrm_payment_token' => array(
+ ],
+ 'civicrm_payment_token' => [
0 => 'contact_id',
1 => 'created_id',
- ),
- 'civicrm_pcp' => array(
+ ],
+ 'civicrm_pcp' => [
0 => 'contact_id',
- ),
- 'civicrm_phone' => array(
+ ],
+ 'civicrm_phone' => [
0 => 'contact_id',
- ),
- 'civicrm_pledge' => array(
+ ],
+ 'civicrm_pledge' => [
0 => 'contact_id',
- ),
- 'civicrm_print_label' => array(
+ ],
+ 'civicrm_print_label' => [
0 => 'created_id',
- ),
- 'civicrm_relationship' => array(
+ ],
+ 'civicrm_relationship' => [
0 => 'contact_id_a',
1 => 'contact_id_b',
- ),
- 'civicrm_report_instance' => array(
+ ],
+ 'civicrm_report_instance' => [
0 => 'created_id',
1 => 'owner_id',
- ),
- 'civicrm_setting' => array(
+ ],
+ 'civicrm_setting' => [
0 => 'contact_id',
1 => 'created_id',
- ),
- 'civicrm_subscription_history' => array(
+ ],
+ 'civicrm_subscription_history' => [
0 => 'contact_id',
- ),
- 'civicrm_survey' => array(
+ ],
+ 'civicrm_survey' => [
0 => 'created_id',
1 => 'last_modified_id',
- ),
- 'civicrm_tag' => array(
+ ],
+ 'civicrm_tag' => [
0 => 'created_id',
- ),
- 'civicrm_uf_group' => array(
+ ],
+ 'civicrm_uf_group' => [
0 => 'created_id',
- ),
- 'civicrm_uf_match' => array(
+ ],
+ 'civicrm_uf_match' => [
0 => 'contact_id',
- ),
- 'civicrm_value_testgetcidref_1' => array(
+ ],
+ 'civicrm_value_testgetcidref_1' => [
0 => 'entity_id',
- ),
- 'civicrm_website' => array(
+ ],
+ 'civicrm_website' => [
0 => 'contact_id',
- ),
- );
+ ],
+ ];
}
/**
* Get a list of CIDs that is calculated off the schema.
*
- * Note this is an expensive and table locking query. Should be safe in tests though.
+ * Note this is an expensive and table locking query. Should be safe in tests
+ * though.
*/
public function getCalculatedCIDRefs() {
- $cidRefs = array();
+ $cidRefs = [];
$sql = "
SELECT
table_name,
$result = $this->addParticipantWithPayment($feeAmt, $amtPaid);
$contributionID = $result['contribution']['id'];
- //Complete the partial payment.
- $submittedValues = array(
+ $this->callAPISuccess('Payment', 'create', [
+ 'contribution_id' => $contributionID,
'total_amount' => 20,
'payment_instrument_id' => 3,
- );
- CRM_Contribute_BAO_Contribution::recordAdditionalPayment($contributionID, $submittedValues, 'owed', $result['participant']['id']);
+ 'participant_id' => $result['participant']['id'],
+ ]);
//Change selection to a lower amount.
$params['price_2'] = 50;
CRM_Price_BAO_LineItem::changeFeeSelections($params, $result['participant']['id'], 'participant', $contributionID, $result['feeBlock'], $result['lineItem']);
- //Record a refund of the remaining amount.
- $submittedValues['total_amount'] = 50;
- CRM_Contribute_BAO_Contribution::recordAdditionalPayment($contributionID, $submittedValues, 'refund', $result['participant']['id']);
+ $this->callAPISuccess('Payment', 'create', [
+ 'total_amount' => -50,
+ 'contribution_id' => $contributionID,
+ 'participant_id' => $result['participant']['id'],
+ 'payment_instrument_id' => 3,
+ ]);
$paymentInfo = CRM_Contribute_BAO_Contribution::getPaymentInfo($result['participant']['id'], 'event', TRUE);
$transaction = $paymentInfo['transaction'];
$contributionBalance = ($this->_cheapFee - $actualPaidAmount);
$this->assertEquals($contributionBalance, CRM_Contribute_BAO_Contribution::getContributionBalance($this->_contributionId));
- //Complete the refund payment.
- $submittedValues = array(
- 'total_amount' => 120,
+ $this->callAPISuccess('Payment', 'create', [
+ 'contribution_id' => $this->_contributionId,
+ 'total_amount' => -120,
'payment_instrument_id' => 3,
- );
- CRM_Contribute_BAO_Contribution::recordAdditionalPayment($this->_contributionId, $submittedValues, 'refund', $this->_participantId);
+ 'participant_id' => $this->_participantId,
+ ]);
$contributionBalance += 120;
$this->assertEquals($contributionBalance, CRM_Contribute_BAO_Contribution::getContributionBalance($this->_contributionId));
* Test for validating financial type has deferred revenue account relationship.
*/
public function testcheckFinancialTypeHasDeferred() {
- Civi::settings()->set('contribution_invoice_settings', array('deferred_revenue_enabled' => '1'));
- $params = array();
+ Civi::settings()->set('deferred_revenue_enabled', 1);
+ $params = [];
$valid = CRM_Financial_BAO_FinancialAccount::checkFinancialTypeHasDeferred($params);
$this->assertFalse($valid, "This should have been false");
$cid = $this->individualCreate();
class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
/**
* Permissioned group is used both as an active group the contact can see and as a group that allows
- * logged in user to see contacts
- * @var integer
+ * logged in user to see contacts.
+ *
+ * @var int
*/
protected $_permissionedGroup;
/**
* @param $full
*/
public function testSearch($fv, $count, $ids, $full) {
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/queryDataset.xml'
- )
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/queryDataset.xml');
$params = CRM_Contact_BAO_Query::convertFormValues($fv);
$obj = new CRM_Contact_BAO_Query($params);
* CRM-20412: Test accurate count for unique open details
*/
public function testOpenedMailingQuery() {
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/queryDataset.xml'
- )
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/queryDataset.xml');
// ensure that total unique opened mail count is same while
// fetching rows and row count for mailing_id = 14
$totalOpenedMailCount = CRM_Mailing_Event_BAO_Opened::getTotalCount(14, NULL, TRUE);
* CRM-21194: Test accurate count for unique trackable URLs
*/
public function testTrackableUrlMailingQuery() {
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/queryDataset.xml'
- )
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/queryDataset.xml');
// ensure that total unique clicked mail count is same while
// fetching rows and row count for mailing_id = 14 and
class CRM_Mailing_BAO_QueryTestDataProvider implements Iterator {
/**
- * @var integer
+ * @var int
*/
private $i = 0;
protected $_individualId;
protected $_contribution;
protected $_financialTypeId = 1;
- protected $_apiversion;
protected $_entity = 'Membership';
protected $_params;
- protected $_ids = array();
protected $_paymentProcessorID;
/**
*
* @var array
*/
- protected $_processorParams = array();
+ protected $_processorParams = [];
/**
* ID of created membership.
*
* @var array
*/
- protected $paymentInstruments = array();
+ protected $paymentInstruments = [];
/**
* and redirect stdin to a temporary file.
*/
public function setUp() {
- $this->_apiversion = 3;
parent::setUp();
$this->_individualId = $this->individualCreate();
$this->_paymentProcessorID = $this->processorCreate();
- // Insert test data.
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/dataset/data.xml'
- )
- );
+
+ $this->loadXMLDataSet(dirname(__FILE__) . '/dataset/data.xml');
$membershipTypeAnnualFixed = $this->callAPISuccess('membership_type', 'create', array(
'domain_id' => 1,
'name' => "AnnualFixed",
));
$this->_membershipID = $membership['id'];
- $instruments = $this->callAPISuccess('contribution', 'getoptions', array('field' => 'payment_instrument_id'));
+ $instruments = $this->callAPISuccess('contribution', 'getoptions', ['field' => 'payment_instrument_id']);
$this->paymentInstruments = $instruments['values'];
}
public function testSubmit() {
$form = $this->getForm();
$this->createLoggedInUser();
- $params = array(
+ $params = [
'cid' => $this->_individualId,
'join_date' => date('m/d/Y', time()),
'start_date' => '',
'billing_state_province_id-5' => '1003',
'billing_postal_code-5' => '90210',
'billing_country_id-5' => '1228',
- );
+ ];
$form->_contactID = $this->_individualId;
$form->testSubmit($params);
$this->_individualId = $this->individualCreate();
$this->_paymentProcessorID = $this->processorCreate();
- // Insert test data.
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/dataset/data.xml'
- )
- );
+
+ $this->loadXMLDataSet(dirname(__FILE__) . '/dataset/data.xml');
+
$membershipTypeAnnualFixed = $this->callAPISuccess('membership_type', 'create', array(
'domain_id' => 1,
'name' => "AnnualFixed",
class CRM_Member_Import_Parser_MembershipTest extends CiviUnitTestCase {
/**
* Membership type name used in test function.
- * @var String
+ *
+ * @var string
*/
protected $_membershipTypeName = NULL;
/**
* Membership type id used in test function.
- * @var String
+ *
+ * @var string
*/
protected $_membershipTypeID = NULL;
/**
* Test renaming multiple fields.
+ *
+ * @throws Exception
*/
public function testRenameFields() {
$this->callAPISuccess('SavedSearch', 'create', [
$this->assertEquals('activity_date_time_relative', $savedSearch['form_values'][1][0]);
}
+ /**
+ * Test that a mis-saved variable in 'contribute settings' can be converted to a
+ * 'proper' setting.
+ */
+ public function testConvertUpgradeContributeSettings() {
+ Civi::settings()->set('contribution_invoice_settings', ['foo' => 'bar', 'deferred_revenue_enabled' => 1]);
+ $this->assertEquals(0, Civi::settings()->get('deferred_revenue_enabled'));
+ CRM_Upgrade_Incremental_Base::updateContributeSettings(NULL, 5.1);
+ $this->assertEquals(1, Civi::settings()->get('deferred_revenue_enabled'));
+ }
+
}
* and request the error in array format
*/
public function testCheckParamsWithDuplicateContact2() {
- // Insert a row in civicrm_contact creating individual contact
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/../../api/v3/dataset/contact_17.xml'
- )
- );
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/../../api/v3/dataset/email_contact_17.xml'
- )
- );
+ $this->individualCreate(['first_name' => 'Test', 'last_name' => 'Contact', 'email' => 'TestContact@example.com']);
- $params = array(
+ $params = [
'first_name' => 'Test',
'last_name' => 'Contact',
'email' => 'TestContact@example.com',
'contact_type' => 'Individual',
- );
+ ];
$contact = _civicrm_api3_deprecated_contact_check_params($params, TRUE);
$this->assertEquals(1, $contact['is_error']);
- $this->assertRegexp("/matching contacts.*17/s",
+ $this->assertRegexp("/matching contacts.*1/s",
$contact['error_message']['message']
);
}
--- /dev/null
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5 |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019 |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM. |
+ | |
+ | CiviCRM is free software; you can copy, modify, and distribute it |
+ | under the terms of the GNU Affero General Public License |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
+ | |
+ | CiviCRM is distributed in the hope that it will be useful, but |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
+ | See the GNU Affero General Public License for more details. |
+ | |
+ | You should have received a copy of the GNU Affero General Public |
+ | License and the CiviCRM Licensing Exception along |
+ | with this program; if not, contact CiviCRM LLC |
+ | at info[AT]civicrm[DOT]org. If you have questions about the |
+ | GNU Affero General Public License or the licensing of CiviCRM, |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ * Trait Custom Data trait.
+ *
+ * Trait for setting up custom data in tests.
+ */
+trait CRMTraits_Custom_CustomDataTrait {
+
+ /**
+ * Create a custom group with fields of multiple types.
+ *
+ * @param array $groupParams
+ */
+ public function createCustomGroupWithFieldsOfAllTypes($groupParams = []) {
+ $this->createCustomGroup($groupParams);
+ $this->ids['CustomField'] = $this->createCustomFieldsOfAllTypes();
+ }
+
+ /**
+ * Create a custom group.
+ *
+ * @param array $params
+ *
+ * @return int
+ */
+ public function createCustomGroup($params = []) {
+ $params = array_merge([
+ 'title' => 'Custom Group',
+ 'extends' => [$this->entity],
+ 'weight' => 5,
+ 'style' => 'Inline',
+ 'max_multiple' => 0,
+ ], $params);
+ $this->ids['CustomGroup'][$params['title']] = $this->callAPISuccess('CustomGroup', 'create', $params)['id'];
+ return $this->ids['CustomGroup'][$params['title']];
+ }
+
+ /**
+ * @return array
+ */
+ public function createCustomFieldsOfAllTypes() {
+ $customGroupID = $this->ids['CustomGroup']['Custom Group'];
+ $ids = [];
+ $params = [
+ 'custom_group_id' => $customGroupID,
+ 'label' => 'Enter text here',
+ 'html_type' => 'Text',
+ 'data_type' => 'String',
+ 'default_value' => 'xyz',
+ 'weight' => 1,
+ 'is_required' => 1,
+ ];
+
+ $customField = $this->callAPISuccess('CustomField', 'create', $params);
+ $ids['text'] = $customField['id'];
+
+ $optionValue[] = [
+ 'label' => 'Red',
+ 'value' => 'R',
+ 'weight' => 1,
+ 'is_active' => 1,
+ ];
+ $optionValue[] = [
+ 'label' => 'Yellow',
+ 'value' => 'Y',
+ 'weight' => 2,
+ 'is_active' => 1,
+ ];
+ $optionValue[] = [
+ 'label' => 'Green',
+ 'value' => 'G',
+ 'weight' => 3,
+ 'is_active' => 1,
+ ];
+
+ $params = [
+ 'label' => 'Pick Color',
+ 'html_type' => 'Select',
+ 'data_type' => 'String',
+ 'weight' => 2,
+ 'is_required' => 1,
+ 'is_searchable' => 0,
+ 'is_active' => 1,
+ 'option_values' => $optionValue,
+ 'custom_group_id' => $customGroupID,
+ ];
+
+ $customField = $this->callAPISuccess('custom_field', 'create', $params);
+ $ids['select_string'] = $customField['id'];
+
+ $params = [
+ 'custom_group_id' => $customGroupID,
+ 'name' => 'test_date',
+ 'label' => 'test_date',
+ 'html_type' => 'Select Date',
+ 'data_type' => 'Date',
+ 'default_value' => '20090711',
+ 'weight' => 3,
+ 'time_format' => 1,
+ ];
+
+ $customField = $this->callAPISuccess('custom_field', 'create', $params);
+
+ $ids['select_date'] = $customField['id'];
+ $params = [
+ 'custom_group_id' => $customGroupID,
+ 'name' => 'test_link',
+ 'label' => 'test_link',
+ 'html_type' => 'Link',
+ 'data_type' => 'Link',
+ 'default_value' => 'http://civicrm.org',
+ 'weight' => 4,
+ 'is_required' => 1,
+ 'is_searchable' => 0,
+ 'is_active' => 1,
+ ];
+
+ $customField = $this->callAPISuccess('custom_field', 'create', $params);
+
+ $ids['link'] = $customField['id'];
+ $fileField = $this->customFieldCreate([
+ 'custom_group_id' => $customGroupID,
+ 'data_type' => 'File',
+ 'html_type' => 'File',
+ 'default_value' => '',
+ ]);
+
+ $ids['file'] = $fileField['id'];
+ $ids['country'] = $this->customFieldCreate([
+ 'custom_group_id' => $customGroupID,
+ 'data_type' => 'Int',
+ 'html_type' => 'Select Country',
+ 'default_value' => '',
+ 'label' => 'Country',
+ 'option_type' => 0,
+ ])['id'];
+
+ return $ids;
+ }
+
+ /**
+ * Get the custom field name for the relevant key.
+ *
+ * e.g returns 'custom_5' where 5 is the id of the field using the key.
+ *
+ * Generally keys map to data types.
+ *
+ * @param string $key
+ *
+ * @return string
+ */
+ protected function getCustomFieldName($key) {
+ $linkField = 'custom_' . $this->ids['CustomField'][$key];
+ return $linkField;
+ }
+
+}
/**
* Database has been initialized.
*
- * @var boolean
+ * @var bool
*/
private static $dbInit = FALSE;
protected $tempDirs;
/**
- * @var boolean populateOnce allows to skip db resets in setUp
+ * @var bool populateOnce allows to skip db resets in setUp
*
* WARNING! USE WITH CAUTION - IT'LL RENDER DATA DEPENDENCIES
* BETWEEN TESTS WHEN RUN IN SUITE. SUITABLE FOR LOCAL, LIMITED
public static $populateOnce = FALSE;
/**
- * @var boolean DBResetRequired allows skipping DB reset
+ * @var bool DBResetRequired allows skipping DB reset
* in specific test case. If you still need
* to reset single test (method) of such case, call
* $this->cleanDB() in the first line of this
*/
private $tx = NULL;
+ /**
+ * Array of IDs created to support the test.
+ *
+ * e.g
+ * $this->ids = ['Contact' => ['descriptive_key' => $contactID], 'Group' => [$groupID]];
+ *
+ * @var array
+ */
+ protected $ids = [];
+
/**
* Class used for hooks during tests.
*
// disable any left-over test extensions
CRM_Core_DAO::executeQuery('DELETE FROM civicrm_extension WHERE full_name LIKE "test.%"');
+ $extensions = \CRM_Extension_System::singleton()->getManager();
+ $api4Status = $extensions->getStatus('org.civicrm.api4');
+ if ($api4Status != $extensions::STATUS_INSTALLED && $api4Status != $extensions::STATUS_UNKNOWN) {
+ $extensions->enable(['org.civicrm.api4']);
+ }
+
// reset all the caches
CRM_Utils_System::flushCache();
$this->getConnection()->getConnection()->query("SET FOREIGN_KEY_CHECKS = 0;");
- $xmlFiles = glob($fixturesDir . '/*.xml');
- foreach ($xmlFiles as $xmlFixture) {
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $dataset = $this->createXMLDataSet($xmlFixture);
- $this->_tablesToTruncate = array_merge($this->_tablesToTruncate, $dataset->getTableNames());
- $op->execute($this->_dbconn, $dataset);
- }
-
$yamlFiles = glob($fixturesDir . '/*.yaml');
foreach ($yamlFiles as $yamlFixture) {
$op = new PHPUnit_Extensions_Database_Operation_Insert();
$this->getConnection()->getConnection()->query("SET FOREIGN_KEY_CHECKS = 1;");
}
+ /**
+ * Load the data that used to be handled by the discontinued dbunit class.
+ *
+ * This could do with further tidy up - the initial priority is simply to get rid of
+ * the dbunity package which is no longer supported.
+ *
+ * @param string $fileName
+ */
+ protected function loadXMLDataSet($fileName) {
+ CRM_Core_DAO::executeQuery('SET FOREIGN_KEY_CHECKS = 0');
+ $xml = json_decode(json_encode(simplexml_load_file($fileName)), TRUE);
+ foreach ($xml as $tableName => $element) {
+ if (!empty($element)) {
+ foreach ($element as $row) {
+ $keys = $values = [];
+ if (isset($row['@attributes'])) {
+ foreach ($row['@attributes'] as $key => $value) {
+ $keys[] = $key;
+ $values[] = is_numeric($value) ? $value : "'{$value}'";
+ }
+ }
+ elseif (!empty($row)) {
+ // cos we copied it & it is inconsistent....
+ foreach ($row as $key => $value) {
+ $keys[] = $key;
+ $values[] = is_numeric($value) ? $value : "'{$value}'";
+ }
+ }
+
+ if (!empty($values)) {
+ CRM_Core_DAO::executeQuery("
+ INSERT INTO $tableName (" . implode(',', $keys) . ') VALUES(' . implode(',', $values) . ')'
+ );
+ }
+ }
+ }
+ }
+ CRM_Core_DAO::executeQuery('SET FOREIGN_KEY_CHECKS = 1');
+ }
+
/**
* Create default domain contacts for the two domains added during test class.
* database population.
$params = array_merge($defaults, $params);
- //have a crack @ deleting it first in the hope this will prevent derailing our tests
- $this->callAPISuccess('custom_group', 'get', array(
- 'title' => $params['title'],
- array('api.custom_group.delete' => 1),
- ));
-
return $this->callAPISuccess('custom_group', 'create', $params);
}
* @return void
*/
public function setMockSettingsMetaData($extras) {
- Civi::service('settings_manager')->flush();
-
CRM_Utils_Hook::singleton()
->setHook('civicrm_alterSettingsMetaData', function (&$metadata, $domainId, $profile) use ($extras) {
$metadata = array_merge($metadata, $extras);
});
+ Civi::service('settings_manager')->flush();
+
$fields = $this->callAPISuccess('setting', 'getfields', array());
foreach ($extras as $key => $spec) {
$this->assertNotEmpty($spec['title']);
$dbLocale = '_en_US';
}
+ /**
+ * Setup or clean up SMS tests
+ * @param bool $teardown
+ *
+ * @throws \CiviCRM_API3_Exception
+ */
+ public function setupForSmsTests($teardown = FALSE) {
+ require_once 'CiviTest/CiviTestSMSProvider.php';
+
+ // Option value params for CiviTestSMSProvider
+ $groupID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'sms_provider_name', 'id', 'name');
+ $params = array(
+ 'option_group_id' => $groupID,
+ 'label' => 'unittestSMS',
+ 'value' => 'unit.test.sms',
+ 'name' => 'CiviTestSMSProvider',
+ 'is_default' => 1,
+ 'is_active' => 1,
+ 'version' => 3,
+ );
+
+ if ($teardown) {
+ // Test completed, delete provider
+ $providerOptionValueResult = civicrm_api3('option_value', 'get', $params);
+ civicrm_api3('option_value', 'delete', array('id' => $providerOptionValueResult['id']));
+ return;
+ }
+
+ // Create an SMS provider "CiviTestSMSProvider". Civi handles "CiviTestSMSProvider" as a special case and allows it to be instantiated
+ // in CRM/Sms/Provider.php even though it is not an extension.
+ return civicrm_api3('option_value', 'create', $params);
+ }
+
}
}
/**
- * View all activities is required unless id is passed in, in which case ACLs are used.
+ * Check the error message is not a permission error.
*/
- public function testGetActivityAccessCiviCRMNotEnough() {
+ public function testGetActivityAccessCiviCRMEnough() {
$activity = $this->activityCreate();
$this->setPermissions(['access CiviCRM']);
$this->callAPIFailure('Activity', 'getsingle', [
'check_permissions' => 1,
'id' => $activity['id'],
- ]);
+ ], 'Expected one Activity but found 0');
+ $this->callAPISuccessGetCount('Activity', [
+ 'check_permissions' => 1,
+ 'id' => $activity['id'],
+ ], 0);
}
/**
* @group headless
*/
class api_v3_ContactTest extends CiviUnitTestCase {
+ use CRMTraits_Custom_CustomDataTrait;
+
public $DBResetRequired = FALSE;
protected $_apiversion;
protected $_entity;
protected $_contactID;
protected $_financialTypeId = 1;
+
+ /**
+ * Entity to be extended.
+ *
+ * @var string
+ */
+ protected $entity = 'Contact';
+
/**
* Test setup for every test.
*
* Verify successful update of individual contact.
*/
public function testUpdateIndividualWithAll() {
- // Insert a row in civicrm_contact creating individual contact.
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/contact_ind.xml'
- )
- );
+ $contactID = $this->individualCreate();
- $params = array(
- 'id' => 23,
+ $params = [
+ 'id' => $contactID,
'first_name' => 'abcd',
'contact_type' => 'Individual',
'nick_name' => 'This is nickname first',
'external_identifier' => '1928837465',
'image_URL' => 'http://some.url.com/image.jpg',
'home_url' => 'http://www.example.org',
-
- );
+ ];
$this->callAPISuccess('Contact', 'Update', $params);
$getResult = $this->callAPISuccess('Contact', 'Get', $params);
//reducing this test partially back to api v2 level to get it through
unset($params['home_url']);
foreach ($params as $key => $value) {
- $this->assertEquals($value, $getResult['values'][23][$key]);
+ $this->assertEquals($value, $getResult['values'][$contactID][$key]);
}
- // Check updated civicrm_contact against expected.
- $expected = $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/contact_ind_upd.xml'
- );
- $actual = new PHPUnit_Extensions_Database_DataSet_QueryDataSet(
- $this->_dbconn
- );
- $actual->addTable('civicrm_contact');
- $expected->matches($actual);
}
/**
* Verify successful update of organization contact.
+ *
+ * @throws \Exception
*/
public function testUpdateOrganizationWithAll() {
- // Insert a row in civicrm_contact creating organization contact
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/contact_org.xml'
- )
- );
+ $contactID = $this->organizationCreate();
- $params = array(
- 'id' => 24,
+ $params = [
+ 'id' => $contactID,
'organization_name' => 'WebAccess India Pvt Ltd',
'legal_name' => 'WebAccess',
'sic_code' => 'ABC12DEF',
'contact_type' => 'Organization',
- );
+ ];
$this->callAPISuccess('Contact', 'Update', $params);
-
- // Check updated civicrm_contact against expected.
- $expected = $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/contact_org_upd.xml'
- );
- $actual = new PHPUnit_Extensions_Database_DataSet_QueryDataSet(
- $this->_dbconn
- );
- $actual->addTable('civicrm_contact');
- $expected->matches($actual);
+ $this->getAndCheck($params, $contactID, 'Contact');
}
/**
* Verify successful update of household contact.
*/
public function testUpdateHouseholdWithAll() {
- // Insert a row in civicrm_contact creating household contact
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/contact_hld.xml'
- )
- );
+ $contactID = $this->householdCreate();
- $params = array(
- 'id' => 25,
+ $params = [
+ 'id' => $contactID ,
'household_name' => 'ABC household',
'nick_name' => 'ABC House',
'contact_type' => 'Household',
- );
+ ];
$result = $this->callAPISuccess('Contact', 'Update', $params);
- $expected = array(
+ $expected = [
'contact_type' => 'Household',
'is_opt_out' => 0,
'sort_name' => 'ABC household',
'display_name' => 'ABC household',
'nick_name' => 'ABC House',
- );
+ ];
$this->getAndCheck($expected, $result['id'], 'contact');
}
* CRM-7645.
*/
public function testUpdateCreateWithID() {
- // Insert a row in civicrm_contact creating individual contact.
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/contact_ind.xml'
- )
- );
-
- $params = array(
- 'id' => 23,
+ $contactID = $this->individualCreate();
+ $this->callAPISuccess('Contact', 'Update', [
+ 'id' => $contactID,
'first_name' => 'abcd',
'last_name' => 'wxyz',
- );
- $this->callAPISuccess('Contact', 'Update', $params);
+ ]);
}
/**
* Test civicrm_contact_getquick() with empty name param.
*/
public function testContactGetQuick() {
- // Insert a row in civicrm_contact creating individual contact.
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/contact_17.xml'
- )
- );
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/email_contact_17.xml'
- )
- );
- $params = array(
- 'name' => "T",
- );
+ $contactID = $this->individualCreate(['first_name' => 'Test', 'last_name' => 'Contact', 'email' => 'TestContact@example.com']);
- $result = $this->callAPISuccess('contact', 'getquick', $params);
- $this->assertEquals(17, $result['values'][0]['id']);
- $params = array(
+ $result = $this->callAPISuccess('contact', 'getquick', ['name' => 'T']);
+ $this->assertEquals($contactID, $result['values'][0]['id']);
+ $params = [
'name' => "TestContact@example.com",
'field_name' => 'sort_name',
- );
+ ];
$result = $this->callAPISuccess('contact', 'getquick', $params);
- $this->assertEquals(17, $result['values'][0]['id']);
+ $this->assertEquals($contactID, $result['values'][0]['id']);
}
/**
* Test civicrm_contact_get) with empty params.
*/
public function testContactGetEmptyParams() {
- $this->callAPISuccess('contact', 'get', array());
+ $this->callAPISuccess('contact', 'get', []);
}
/**
* Test civicrm_contact_get(,true) with no matches.
*/
public function testContactGetOldParamsNoMatches() {
- // Insert a row in civicrm_contact creating contact 17.
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/contact_17.xml'
- )
- );
-
- $params = array(
- 'first_name' => 'Fred',
- );
- $result = $this->callAPISuccess('contact', 'get', $params);
+ $this->individualCreate();
+ $result = $this->callAPISuccess('contact', 'get', ['first_name' => 'Fred']);
$this->assertEquals(0, $result['count']);
}
* Test civicrm_contact_get(,true) with one match.
*/
public function testContactGetOldParamsOneMatch() {
- // Insert a row in civicrm_contact creating contact 17
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(dirname(__FILE__) . '/dataset/contact_17.xml'
- )
- );
+ $contactID = $this->individualCreate(['first_name' => 'Test', 'last_name' => 'Contact']);
- $params = array(
- 'first_name' => 'Test',
- );
- $result = $this->callAPISuccess('contact', 'get', $params);
- $this->assertEquals(17, $result['values'][17]['contact_id']);
- $this->assertEquals(17, $result['id']);
+ $result = $this->callAPISuccess('contact', 'get', ['first_name' => 'Test']);
+ $this->assertEquals($contactID, $result['values'][$contactID]['contact_id']);
+ $this->assertEquals($contactID, $result['id']);
}
/**
* Test TrueFalse format - I couldn't come up with an easy way to get an error on Get.
*/
public function testContactGetFormatIsSuccessTrue() {
- $this->createContactFromXML();
+ $contactID = $this->individualCreate(['first_name' => 'Test', 'last_name' => 'Contact']);
$description = "This demonstrates use of the 'format.is_success' param.
This param causes only the success or otherwise of the function to be returned as BOOLEAN";
$subfile = "FormatIsSuccess_True";
- $params = array('id' => 17, 'format.is_success' => 1);
+ $params = ['id' => $contactID, 'format.is_success' => 1];
$result = $this->callAPIAndDocument('Contact', 'Get', $params, __FUNCTION__, __FILE__, $description, $subfile);
$this->assertEquals(1, $result);
$this->callAPISuccess('Contact', 'Delete', $params);
* Test Single Entity format.
*/
public function testContactGetSingleEntityArray() {
- $this->createContactFromXML();
+ $contactID = $this->individualCreate(['first_name' => 'Test', 'last_name' => 'Contact']);
$description = "This demonstrates use of the 'format.single_entity_array' param.
This param causes the only contact to be returned as an array without the other levels.
It will be ignored if there is not exactly 1 result";
$subfile = "GetSingleContact";
- $params = array('id' => 17);
- $result = $this->callAPIAndDocument('Contact', 'GetSingle', $params, __FUNCTION__, __FILE__, $description, $subfile);
- $this->assertEquals('Test Contact', $result['display_name']);
- $this->callAPISuccess('Contact', 'Delete', $params);
+ $result = $this->callAPIAndDocument('Contact', 'GetSingle', ['id' => $contactID], __FUNCTION__, __FILE__, $description, $subfile);
+ $this->assertEquals('Mr. Test Contact II', $result['display_name']);
+ $this->callAPISuccess('Contact', 'Delete', ['id' => $contactID]);
}
/**
* Test Single Entity format.
*/
public function testContactGetFormatCountOnly() {
- $this->createContactFromXML();
+ $contactID = $this->individualCreate(['first_name' => 'Test', 'last_name' => 'Contact']);
$description = "This demonstrates use of the 'getCount' action.
This param causes the count of the only function to be returned as an integer.";
- $params = array('id' => 17);
+ $params = ['id' => $contactID];
$result = $this->callAPIAndDocument('Contact', 'GetCount', $params, __FUNCTION__, __FILE__, $description,
'GetCountContact');
$this->assertEquals('1', $result);
* Test id only format.
*/
public function testContactGetFormatIDOnly() {
- $this->createContactFromXML();
+ $contactID = $this->individualCreate(['first_name' => 'Test', 'last_name' => 'Contact']);
$description = "This demonstrates use of the 'format.id_only' param.
This param causes the id of the only entity to be returned as an integer.
It will be ignored if there is not exactly 1 result";
$subfile = "FormatOnlyID";
- $params = array('id' => 17, 'format.only_id' => 1);
+ $params = ['id' => $contactID, 'format.only_id' => 1];
$result = $this->callAPIAndDocument('Contact', 'Get', $params, __FUNCTION__, __FILE__, $description, $subfile);
- $this->assertEquals('17', $result);
+ $this->assertEquals($contactID, $result);
$this->callAPISuccess('Contact', 'Delete', $params);
}
* Test id only format.
*/
public function testContactGetFormatSingleValue() {
- $this->createContactFromXML();
+ $contactID = $this->individualCreate(['first_name' => 'Test', 'last_name' => 'Contact']);
$description = "This demonstrates use of the 'format.single_value' param.
This param causes only a single value of the only entity to be returned as an string.
It will be ignored if there is not exactly 1 result";
$subFile = "FormatSingleValue";
- $params = array('id' => 17, 'return' => 'display_name');
+ $params = ['id' => $contactID, 'return' => 'display_name'];
$result = $this->callAPIAndDocument('Contact', 'getvalue', $params, __FUNCTION__, __FILE__, $description, $subFile);
- $this->assertEquals('Test Contact', $result);
+ $this->assertEquals('Mr. Test Contact II', $result);
$this->callAPISuccess('Contact', 'Delete', $params);
}
$this->callAPISuccess('contact', 'update', $params);
}
- /**
- * Set up helper to create a contact.
- */
- public function createContactFromXML() {
- // Insert a row in civicrm_contact creating contact 17.
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/contact_17.xml'
- )
- );
- }
-
/**
* Test contact proximity api.
*/
}
+ /**
+ * Test merging 2 contacts with custom fields.
+ *
+ * @throws \Exception
+ */
+ public function testMergeCustomFields() {
+ $contact1 = $this->individualCreate();
+ /* Not sure this is quite right but it does get it into the file table
+ $file = $this->callAPISuccess('Attachment', 'create', [
+ 'name' => 'header.txt',
+ 'mime_type' => 'text/plain',
+ 'description' => 'My test description',
+ 'content' => 'My test content',
+ 'entity_table' => 'civicrm_contact',
+ 'entity_id' => $contact1,
+ ]);
+ */
+
+ $this->createCustomGroupWithFieldsOfAllTypes();
+ $fileField = $this->getCustomFieldName('file');
+ $linkField = $this->getCustomFieldName('link');
+ $dateField = $this->getCustomFieldName('select_date');
+ $selectField = $this->getCustomFieldName('select_string');
+ $countryField = $this->getCustomFieldName('country');
+
+ $countriesByName = array_flip(CRM_Core_PseudoConstant::country(FALSE, FALSE));
+ $customFieldValues = [
+ // @todo fix the fatal bug on this & uncomment - see dev/core#723
+ // $fileField => $file['id'],
+ $linkField => 'http://example.org',
+ $dateField => '2018-01-01 17:10:56',
+ $selectField => 'G',
+ // Currently broken.
+ //$countryField => $countriesByName['New Zealand'],
+ ];
+ $this->callAPISuccess('Contact', 'create', array_merge([
+ 'id' => $contact1,
+ ], $customFieldValues));
+
+ $contact2 = $this->individualCreate();
+ $this->callAPISuccess('contact', 'merge', [
+ 'to_keep_id' => $contact2,
+ 'to_remove_id' => $contact1,
+ 'auto_flip' => FALSE,
+ ]);
+ $contact = $this->callAPISuccessGetSingle('Contact', ['id' => $contact2, 'return' => array_keys($customFieldValues)]);
+ foreach ($customFieldValues as $key => $value) {
+ $this->assertEquals($value, $contact[$key]);
+ }
+ }
+
/**
* Test retrieving merged contacts.
*
*/
class api_v3_CustomValueTest extends CiviUnitTestCase {
protected $_apiversion = 3;
- protected $ids;
+
protected $optionGroup;
public $DBResetRequired = FALSE;
$this->addFinancialAclPermissions([['view', 'Donation']]);
$this->callAPISuccessGetSingle('contribution', $params);
$this->callAPISuccessGetCount('contribution', ['financial_type_id' => 'Member Dues', 'check_permissions' => 1], 0);
- $this->markTestIncomplete('check_permissions = 0 should be respected but is not - I have added a todo at the right place but not changed it as yet');
$this->callAPISuccessGetCount('contribution', ['financial_type_id' => 'Member Dues'], 1);
}
* @group headless
*/
class api_v3_GroupNestingTest extends CiviUnitTestCase {
- protected $_apiversion;
/**
* Sets up the fixture, for example, opens a network connection.
+ *
* This method is called before a test is executed.
*/
protected function setUp() {
- $this->_apiversion = 3;
parent::setUp();
- // Insert a row in civicrm_group creating option group
- // from_email_address group
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/group_admins.xml'
- )
- );
-
- // Insert a row in civicrm_group creating option group
- // from_email_address group
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/group_subscribers.xml'
- )
- );
+ $this->ids['Group'] = [];
+ $this->ids['Group']['parent'] = $this->callAPISuccess('Group', 'create', [
+ 'name' => 'Administrators',
+ 'title' => 'Administrators',
+ ])['id'];
+ $this->ids['Group']['child'] = $this->callAPISuccess('Group', 'create', [
+ 'name' => 'Newsletter Subscribers',
+ 'title' => 'Newsletter Subscribers',
+ 'parents' => $this->ids['Group']['parent'],
+ ])['id'];
+ $this->ids['Group']['child2'] = $this->callAPISuccess('Group', 'create', [
+ 'name' => 'Another Newsletter Subscribers',
+ 'title' => 'Another Newsletter Subscribers',
+ 'parents' => $this->ids['Group']['parent'],
+ ])['id'];
+ $this->ids['Group']['child3'] = $this->callAPISuccess('Group', 'create', [
+ 'name' => 'Super Special Newsletter Subscribers',
+ 'title' => 'Super Special Newsletter Subscribers',
+ 'parents' => [$this->ids['Group']['parent'], $this->ids['Group']['child']],
+ ])['id'];
- // Insert a row in civicrm_group creating option group
- // from_email_address group
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/group_nesting.xml'
- )
- );
}
/**
- * Tears down the fixture, for example, closes a network connection.
+ * Tears down the fixture.
+ *
* This method is called after a test is executed.
+ *
+ * @throws \Exception
*/
protected function tearDown() {
- // Truncate the tables
$this->quickCleanup(
- array(
+ [
'civicrm_group',
'civicrm_group_nesting',
'civicrm_contact',
'civicrm_uf_group',
'civicrm_uf_join',
'civicrm_uf_match',
- )
+ ]
);
}
- ///////////////// civicrm_group_nesting_get methods
-
/**
* Test civicrm_group_nesting_get.
*/
public function testGet() {
- $params = array(
- 'parent_group_id' => 1,
- 'child_group_id' => 2,
- );
+ $params = [
+ 'parent_group_id' => $this->ids['Group']['parent'],
+ 'child_group_id' => $this->ids['Group']['child'],
+ ];
$result = $this->callAPIAndDocument('group_nesting', 'get', $params, __FUNCTION__, __FILE__);
- // expected data loaded in setUp
- $expected = array(
- 1 => array(
+ $expected = [
+ 1 => [
'id' => 1,
- 'child_group_id' => 2,
- 'parent_group_id' => 1,
- ),
- );
+ 'child_group_id' => $this->ids['Group']['child'],
+ 'parent_group_id' => $this->ids['Group']['parent'],
+ ],
+ ];
$this->assertEquals($expected, $result['values']);
}
/**
- * Test civicrm_group_nesting_get with just one
- * param (child_group_id).
+ * Test civicrm_group_nesting_get with just one param (child_group_id).
*/
public function testGetWithChildGroupId() {
- $params = array(
- 'child_group_id' => 4,
- );
+ $params = [
+ 'child_group_id' => $this->ids['Group']['child3'],
+ ];
$result = $this->callAPISuccess('group_nesting', 'get', $params);
// expected data loaded in setUp
- $expected = array(
- 3 => array(
+ $expected = [
+ 3 => [
'id' => 3,
- 'child_group_id' => 4,
- 'parent_group_id' => 1,
- ),
- 4 => array(
+ 'child_group_id' => $this->ids['Group']['child3'],
+ 'parent_group_id' => $this->ids['Group']['parent'],
+ ],
+ 4 => [
'id' => 4,
- 'child_group_id' => 4,
- 'parent_group_id' => 2,
- ),
- );
+ 'child_group_id' => $this->ids['Group']['child3'],
+ 'parent_group_id' => $this->ids['Group']['child'],
+ ],
+ ];
$this->assertEquals($expected, $result['values']);
}
/**
- * Test civicrm_group_nesting_get with just one
- * param (parent_group_id).
+ * Test civicrm_group_nesting_get with just one param (parent_group_id).
*/
public function testGetWithParentGroupId() {
- $params = array(
- 'parent_group_id' => 1,
- );
+ $params = [
+ 'parent_group_id' => $this->ids['Group']['parent'],
+ ];
$result = $this->callAPISuccess('group_nesting', 'get', $params);
// expected data loaded in setUp
- $expected = array(
- 1 => array(
+ $expected = [
+ 1 => [
'id' => 1,
- 'child_group_id' => 2,
- 'parent_group_id' => 1,
- ),
- 2 => array(
+ 'child_group_id' => $this->ids['Group']['child'],
+ 'parent_group_id' => $this->ids['Group']['parent'],
+ ],
+ 2 => [
'id' => 2,
- 'child_group_id' => 3,
- 'parent_group_id' => 1,
- ),
- 3 => array(
+ 'child_group_id' => $this->ids['Group']['child2'],
+ 'parent_group_id' => $this->ids['Group']['parent'],
+ ],
+ 3 => [
'id' => 3,
- 'child_group_id' => 4,
- 'parent_group_id' => 1,
- ),
- );
+ 'child_group_id' => $this->ids['Group']['child3'],
+ 'parent_group_id' => $this->ids['Group']['parent'],
+ ],
+ ];
$this->assertEquals($expected, $result['values']);
}
/**
* Test civicrm_group_nesting_get for no records results.
+ *
* Success expected. (these tests are of marginal value as are in syntax conformance,
* don't copy & paste
*/
public function testGetEmptyResults() {
- $params = array(
- 'parent_group_id' => 1,
+ $params = [
+ 'parent_group_id' => $this->ids['Group']['parent'],
'child_group_id' => 700,
- );
+ ];
$this->callAPISuccess('group_nesting', 'get', $params);
}
- ///////////////// civicrm_group_nesting_create methods
-
/**
* Test civicrm_group_nesting_create.
+ *
+ * @throws \Exception
*/
public function testCreate() {
- // groups id=1 and id=2 loaded in setUp
- $params = array(
- 'parent_group_id' => 1,
- 'child_group_id' => 3,
- );
+ $params = [
+ 'parent_group_id' => $this->ids['Group']['parent'],
+ 'child_group_id' => $this->ids['Group']['child2'],
+ ];
$this->callAPIAndDocument('group_nesting', 'create', $params, __FUNCTION__, __FILE__);
$this->callAPISuccessGetCount('GroupNesting', $params, 1);
* Test civicrm_group_nesting_remove.
*/
public function testDelete() {
- // groups id=1 and id=2 loaded in setUp
- $getparams = array(
- 'parent_group_id' => 1,
- 'child_group_id' => 2,
- );
+ $params = [
+ 'parent_group_id' => $this->ids['Group']['parent'],
+ 'child_group_id' => $this->ids['Group']['child'],
+ ];
- $result = $this->callAPISuccess('group_nesting', 'get', $getparams);
- $params = array('id' => $result['id']);
+ $result = $this->callAPISuccess('group_nesting', 'get', $params);
+ $params = ['id' => $result['id']];
$this->callAPIAndDocument('group_nesting', 'delete', $params, __FUNCTION__, __FILE__);
- $this->assertEquals(0, $this->callAPISuccess('group_nesting', 'getcount', $getparams));
+ $this->assertEquals(0, $this->callAPISuccess('group_nesting', 'getcount', $params));
}
/**
* Error expected.
*/
public function testDeleteWithEmptyParams() {
- $this->callAPIFailure('group_nesting', 'delete', array());
+ $this->callAPIFailure('group_nesting', 'delete', []);
}
}
* We create 3 contacts - 1 is in our group, 1 has our membership & the chosen one has both
* & check that only the chosen one got the reminder
*/
- public function testCallSendReminderLimitTo() {
+ public function testCallSendReminderLimitToSMS() {
$membershipTypeID = $this->membershipTypeCreate();
$this->membershipStatusCreate();
$createTotal = 3;
$groupID = $this->groupCreate(array('name' => 'Texan drawlers', 'title' => 'a...'));
for ($i = 1; $i <= $createTotal; $i++) {
$contactID = $this->individualCreate();
+ $this->callAPISuccess('Phone', 'create', [
+ 'contact_id' => $contactID,
+ 'phone' => '555 123 1234',
+ 'phone_type_id' => 'Mobile',
+ 'location_type_id' => 'Billing',
+ ]);
if ($i == 2) {
$theChosenOneID = $contactID;
}
));
}
}
+ $this->setupForSmsTests();
+ $provider = civicrm_api3('SmsProvider', 'create', array(
+ 'name' => "CiviTestSMSProvider",
+ 'api_type' => "1",
+ "username" => "1",
+ "password" => "1",
+ "api_type" => "1",
+ "api_url" => "1",
+ "api_params" => "a=1",
+ "is_default" => "1",
+ "is_active" => "1",
+ "domain_id" => "1",
+ ));
$this->callAPISuccess('action_schedule', 'create', array(
'title' => " remind all Texans",
'subject' => "drawling renewal",
'start_action_unit' => 'day',
'group_id' => $groupID,
'limit_to' => TRUE,
+ 'sms_provider_id' => $provider['id'],
+ 'mode' => 'User_Preference',
));
$this->callAPISuccess('job', 'send_reminder', array());
$successfulCronCount = CRM_Core_DAO::singleValueQuery("SELECT count(*) FROM civicrm_action_log");
$this->assertEquals($successfulCronCount, 1);
$sentToID = CRM_Core_DAO::singleValueQuery("SELECT contact_id FROM civicrm_action_log");
$this->assertEquals($sentToID, $theChosenOneID);
+ $this->assertEquals(0, CRM_Core_DAO::singleValueQuery("SELECT is_error FROM civicrm_action_log"));
+ $this->setupForSmsTests(TRUE);
}
public function testCallDisableExpiredRelationships() {
$this->contactDelete($orgID);
}
+ /**
+ * Test scheduled reminders respect limit to (since above identified addition_to handling issue).
+ *
+ * We create 3 contacts - 1 is in our group, 1 has our membership & the chosen one has both
+ * & check that only the chosen one got the reminder
+ *
+ * Also check no hard fail on cron job with running a reminder that has a deleted SMS provider
+ */
+ public function testCallSendReminderLimitToSMSWithDeletedProviderr() {
+ $membershipTypeID = $this->membershipTypeCreate();
+ $this->membershipStatusCreate();
+ $createTotal = 3;
+ $groupID = $this->groupCreate(array('name' => 'Texan drawlers', 'title' => 'a...'));
+ for ($i = 1; $i <= $createTotal; $i++) {
+ $contactID = $this->individualCreate();
+ $this->callAPISuccess('Phone', 'create', [
+ 'contact_id' => $contactID,
+ 'phone' => '555 123 1234',
+ 'phone_type_id' => 'Mobile',
+ 'location_type_id' => 'Billing',
+ ]);
+ if ($i == 2) {
+ $theChosenOneID = $contactID;
+ }
+ if ($i < 3) {
+ $this->callAPISuccess('group_contact', 'create', array(
+ 'contact_id' => $contactID,
+ 'status' => 'Added',
+ 'group_id' => $groupID,
+ ));
+ }
+ if ($i > 1) {
+ $this->callAPISuccess('membership', 'create', array(
+ 'contact_id' => $contactID,
+ 'membership_type_id' => $membershipTypeID,
+ 'join_date' => 'now',
+ 'start_date' => '+ 1 day',
+ ));
+ }
+ }
+ $this->setupForSmsTests();
+ $provider = civicrm_api3('SmsProvider', 'create', array(
+ 'name' => "CiviTestSMSProvider",
+ 'api_type' => "1",
+ "username" => "1",
+ "password" => "1",
+ "api_type" => "1",
+ "api_url" => "1",
+ "api_params" => "a=1",
+ "is_default" => "1",
+ "is_active" => "1",
+ "domain_id" => "1",
+ ));
+ $this->callAPISuccess('action_schedule', 'create', array(
+ 'title' => " remind all Texans",
+ 'subject' => "drawling renewal",
+ 'entity_value' => $membershipTypeID,
+ 'mapping_id' => 4,
+ 'start_action_date' => 'membership_start_date',
+ 'start_action_offset' => 1,
+ 'start_action_condition' => 'before',
+ 'start_action_unit' => 'day',
+ 'group_id' => $groupID,
+ 'limit_to' => TRUE,
+ 'sms_provider_id' => $provider['id'],
+ 'mode' => 'SMS',
+ ));
+ $this->callAPISuccess('SmsProvider', 'delete', ['id' => $provider['id']]);
+ $this->callAPISuccess('job', 'send_reminder', array());
+ $cronCount = CRM_Core_DAO::singleValueQuery("SELECT count(*) FROM civicrm_action_log");
+ $this->assertEquals($cronCount, 1);
+ $sentToID = CRM_Core_DAO::singleValueQuery("SELECT contact_id FROM civicrm_action_log");
+ $this->assertEquals($sentToID, $theChosenOneID);
+ $cronlog = CRM_Core_DAO::executeQuery("SELECT * FROM civicrm_action_log")->fetchAll()[0];
+ $this->assertEquals(1, $cronlog['is_error']);
+ $this->assertEquals('SMS reminder cannot be sent because the SMS provider has been deleted.', $cronlog['message']);
+ $this->setupForSmsTests(TRUE);
+ }
+
/**
* Test the batch merge function.
*
* @group headless
*/
class api_v3_MailingContactTest extends CiviUnitTestCase {
- protected $_apiversion = 3;
protected $_entity = 'mailing';
public function setUp() {
parent::setUp();
- $params = array(
+ $params = [
'first_name' => 'abc1',
'contact_type' => 'Individual',
'last_name' => 'xyz1',
- );
+ ];
$this->_contact = $this->callAPISuccess("contact", "create", $params);
}
public function tearDown() {
- $this->callAPISuccess("contact", "delete", array('id' => $this->_contact['id']));
+ $this->callAPISuccess("contact", "delete", ['id' => $this->_contact['id']]);
parent::tearDown();
}
* belongs in the SyntaxConformance class
*/
public function testMailingNoContactID() {
- $params = array(
- 'something' => 'This is not a real field',
- );
- $this->callAPIFailure('MailingContact', 'get', $params);
+ $this->callAPIFailure('MailingContact', 'get', ['something' => 'This is not a real field']);
}
/**
* belongs in the SyntaxConformance class
*/
public function testMailingContactInvalidContactID() {
- $params = array('contact_id' => 'This is not a number');
- $this->callAPIFailure('MailingContact', 'get', $params);
+ $this->callAPIFailure('MailingContact', 'get', ['contact_id' => 'This is not a number']);
}
/**
* Test that the API returns a mailing properly when there is only one.
*/
public function testMailingContactDelivered() {
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- //Create the User
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/mailing_contact.xml'
- )
- );
- // Create the Mailing and connections to the user.
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/mailing_delivered.xml'
- )
- );
+ list($contactID, $mailingID, $eventQueueID) = $this->setupEventQueue();
+ CRM_Core_DAO::executeQuery("INSERT INTO civicrm_mailing_event_delivered (event_queue_id) VALUES(%1)", [1 => [$eventQueueID, 'Integer']]);
- $params = array(
- 'contact_id' => 23,
+ $params = [
+ 'contact_id' => $contactID,
'type' => 'Delivered',
- );
+ ];
$result = $this->callAPISuccess('MailingContact', 'get', $params);
$count = $this->callAPISuccess('MailingContact', 'getcount', $params);
$this->assertFalse(empty($result['values']));
$this->assertEquals($result['values'][1]['mailing_id'], 1);
$this->assertEquals($result['values'][1]['subject'], "Some Subject");
- $this->assertEquals($result['values'][1]['creator_id'], 3);
- $this->assertEquals($result['values'][1]['creator_name'], "xyz1, abc1");
+ $this->assertEquals(CRM_Core_Session::getLoggedInContactID(), $result['values'][1]['creator_id']);
}
/**
- * Test that the API returns only the "Bounced" mailings when instructed to do so.
+ * Test that the API returns only the "Bounced" mailings when instructed to
+ * do so.
+ *
+ * @throws \Exception
*/
public function testMailingContactBounced() {
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- // Create the User.
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/mailing_contact.xml'
- )
- );
- // Create the Mailing and connections to the user.
- $op->execute($this->_dbconn,
- $this->createXMLDataSet(
- dirname(__FILE__) . '/dataset/mailing_bounced.xml'
- )
- );
+ list($contactID, $mailingID, $eventQueueID) = $this->setupEventQueue();
+ CRM_Core_DAO::executeQuery("INSERT INTO civicrm_mailing_event_bounce (event_queue_id, bounce_type_id) VALUES(%1, 6)", [1 => [$eventQueueID, 'Integer']]);
- $params = array(
- 'contact_id' => 23,
+ $params = [
+ 'contact_id' => $contactID,
'type' => 'Bounced',
- );
+ ];
- $result = $this->callAPISuccess('MailingContact', 'get', $params);
- $this->assertEquals($result['count'], 1);
- $this->assertFalse(empty($result['values']));
- $this->assertEquals($result['values'][2]['mailing_id'], 2);
- $this->assertEquals($result['values'][2]['subject'], "Some Subject");
- $this->assertEquals($result['values'][2]['creator_id'], 3);
- $this->assertEquals($result['values'][2]['creator_name'], "xyz1, abc1");
+ $result = $this->callAPISuccess('MailingContact', 'get', $params)['values'];
+ $this->assertEquals(1, count($result));
+ $this->assertEquals($mailingID, $result[$mailingID]['mailing_id']);
+ $this->assertEquals('Some Subject', $result[$mailingID]['subject']);
+ $this->assertEquals(CRM_Core_Session::getLoggedInContactID(), $result[$mailingID]['creator_id'], 3);
+ }
+
+ /**
+ * @return array
+ * @throws \Exception
+ */
+ public function setupEventQueue() {
+ $contactID = $this->individualCreate(['first_name' => 'Test']);
+ $emailID = $this->callAPISuccessGetValue('Email', [
+ 'return' => 'id',
+ 'contact_id' => $contactID,
+ ]);
+ $this->createLoggedInUser();
+ $mailingID = $this->callAPISuccess('Mailing', 'create', [
+ 'name' => 'Test Mailing',
+ 'subject' => 'Some Subject',
+ ])['id'];
+ $mailingJobID = $this->callAPISuccess('MailingJob', 'create', ['mailing_id' => $mailingID])['id'];
+ $eventQueueID = $this->callAPISuccess('MailingEventQueue', 'create', [
+ 'contact_id' => $contactID,
+ 'mailing_id' => $mailingID,
+ 'email_id' => $emailID,
+ 'job_id' => $mailingJobID,
+ ])['id'];
+ return [$contactID, $mailingID, $eventQueueID];
}
}
* @group headless
*/
class api_v3_ProfileTest extends CiviUnitTestCase {
- protected $_apiversion;
+
protected $_profileID = 0;
+
protected $_membershipTypeID;
+
protected $_contactID;
+ /**
+ * Set up for test.
+ */
public function setUp() {
- $this->_apiversion = 3;
parent::setUp();
$config = CRM_Core_Config::singleton();
$countryLimit = $config->countryLimit;
$this->_membershipTypeID = $this->membershipTypeCreate();
}
+ /**
+ * Cleanup after test.
+ *
+ * @throws \Exception
+ */
public function tearDown() {
- $this->quickCleanup(array(
+ $this->quickCleanup([
'civicrm_contact',
'civicrm_phone',
'civicrm_address',
'civicrm_membership',
'civicrm_contribution',
'civicrm_uf_match',
- ), TRUE);
- $this->callAPISuccess('membership_type', 'delete', array('id' => $this->_membershipTypeID));
- // ok can't be bothered wring an api to do this & truncating is crazy
- CRM_Core_DAO::executeQuery(" DELETE FROM civicrm_uf_group WHERE id IN ($this->_profileID, 26)");
+ ], TRUE);
+ $this->callAPISuccess('membership_type', 'delete', ['id' => $this->_membershipTypeID]);
+ CRM_Core_DAO::executeQuery(" DELETE FROM civicrm_uf_group WHERE id = $this->_profileID OR name = 'test_contact_activity_profile'");
+ parent::tearDown();
}
/**
* Check Without ProfileId.
*/
public function testProfileGetWithoutProfileId() {
- $this->callAPIFailure('profile', 'get', array('contact_id' => 1),
+ $this->callAPIFailure('profile', 'get', ['contact_id' => 1],
'Mandatory key(s) missing from params array: profile_id'
);
}
* Check with no invalid profile Id.
*/
public function testProfileGetInvalidProfileId() {
- $this->callAPIFailure('profile', 'get', array('contact_id' => 1, 'profile_id' => 1000));
+ $this->callAPIFailure('profile', 'get', [
+ 'contact_id' => 1,
+ 'profile_id' => 1000,
+ ]);
}
/**
$profileFieldValues = $this->_createIndividualContact();
$expected = reset($profileFieldValues);
$contactId = key($profileFieldValues);
- $params = array(
+ $params = [
'profile_id' => $this->_profileID,
'contact_id' => $contactId,
- );
- $result = $this->callAPISuccess('profile', 'get', $params);
+ ];
+ $result = $this->callAPISuccess('profile', 'get', $params)['values'];
foreach ($expected as $profileField => $value) {
- $this->assertEquals($value, CRM_Utils_Array::value($profileField, $result['values']));
+ $this->assertEquals($value, CRM_Utils_Array::value($profileField, $result));
}
}
+ /**
+ * Test getting multiple profiles.
+ */
public function testProfileGetMultiple() {
$profileFieldValues = $this->_createIndividualContact();
$expected = reset($profileFieldValues);
$contactId = key($profileFieldValues);
- $params = array(
- 'profile_id' => array($this->_profileID, 1, 'Billing'),
+ $params = [
+ 'profile_id' => [$this->_profileID, 1, 'Billing'],
'contact_id' => $contactId,
- );
+ ];
- $result = $this->callAPIAndDocument('profile', 'get', $params, __FUNCTION__, __FILE__);
+ $result = $this->callAPIAndDocument('profile', 'get', $params, __FUNCTION__, __FILE__)['values'];
foreach ($expected as $profileField => $value) {
- $this->assertEquals($value, CRM_Utils_Array::value($profileField, $result['values'][$this->_profileID]), " error message: " . "missing/mismatching value for {$profileField}");
+ $this->assertEquals($value, CRM_Utils_Array::value($profileField, $result[$this->_profileID]), " error message: " . "missing/mismatching value for {$profileField}");
}
- $this->assertEquals('abc1', $result['values'][1]['first_name'], " error message: " . "missing/mismatching value for {$profileField}");
- $this->assertFalse(array_key_exists('email-Primary', $result['values'][1]), 'profile 1 doesn not include email');
- $this->assertEquals($result['values']['Billing'], array(
+ $this->assertEquals('abc1', $result[1]['first_name'], " error message: " . "missing/mismatching value for first name");
+ $this->assertFalse(array_key_exists('email-Primary', $result[1]), 'profile 1 does not include email');
+ $this->assertEquals($result['Billing'], [
'billing_first_name' => 'abc1',
'billing_middle_name' => 'J.',
'billing_last_name' => 'xyz1',
'billing_postal_code-5' => '90210',
'billing-email-5' => 'abc1.xyz1@yahoo.com',
'email-5' => 'abc1.xyz1@yahoo.com',
- ));
+ ]);
}
+ /**
+ * Test getting billing profile filled using is_billing.
+ */
public function testProfileGetBillingUseIsBillingLocation() {
$individual = $this->_createIndividualContact();
$contactId = key($individual);
- $this->callAPISuccess('address', 'create', array(
+ $this->callAPISuccess('address', 'create', [
'is_billing' => 1,
'street_address' => 'is billing st',
'location_type_id' => 2,
'contact_id' => $contactId,
- ));
+ ]);
- $params = array(
- 'profile_id' => array($this->_profileID, 1, 'Billing'),
+ $params = [
+ 'profile_id' => [$this->_profileID, 1, 'Billing'],
'contact_id' => $contactId,
- );
+ ];
- $result = $this->callAPISuccess('profile', 'get', $params);
- $this->assertEquals('abc1', $result['values'][1]['first_name']);
- $this->assertEquals(array(
+ $result = $this->callAPISuccess('profile', 'get', $params)['values'];
+ $this->assertEquals('abc1', $result[1]['first_name']);
+ $this->assertEquals([
'billing_first_name' => 'abc1',
'billing_middle_name' => 'J.',
'billing_last_name' => 'xyz1',
'billing-email-5' => 'abc1.xyz1@yahoo.com',
'email-5' => 'abc1.xyz1@yahoo.com',
'billing_postal_code-5' => '',
- ), $result['values']['Billing']);
+ ], $result['Billing']);
}
+ /**
+ * Test getting multiple profiles, including billing.
+ */
public function testProfileGetMultipleHasBillingLocation() {
$individual = $this->_createIndividualContact();
$contactId = key($individual);
- $this->callAPISuccess('address', 'create', array(
+ $this->callAPISuccess('address', 'create', [
'contact_id' => $contactId,
'street_address' => '25 Big Street',
'city' => 'big city',
'location_type_id' => 5,
- ));
- $this->callAPISuccess('email', 'create', array(
+ ]);
+ $this->callAPISuccess('email', 'create', [
'contact_id' => $contactId,
'email' => 'big@once.com',
'location_type_id' => 2,
'is_billing' => 1,
- ));
+ ]);
- $params = array(
- 'profile_id' => array($this->_profileID, 1, 'Billing'),
+ $params = [
+ 'profile_id' => [$this->_profileID, 1, 'Billing'],
'contact_id' => $contactId,
- );
+ ];
$result = $this->callAPISuccess('profile', 'get', $params);
$this->assertEquals('abc1', $result['values'][1]['first_name']);
- $this->assertEquals($result['values']['Billing'], array(
+ $this->assertEquals($result['values']['Billing'], [
'billing_first_name' => 'abc1',
'billing_middle_name' => 'J.',
'billing_last_name' => 'xyz1',
'billing-email-5' => 'big@once.com',
'email-5' => 'big@once.com',
'billing_postal_code-5' => '',
- ));
+ ]);
}
/**
- * Get Billing empty contact - this will return generic defaults
+ * Get Billing empty contact - this will return generic defaults.
*/
public function testProfileGetBillingEmptyContact() {
$this->callAPISuccess('Setting', 'create', ['defaultContactCountry' => 1228]);
- $params = array(
- 'profile_id' => array('Billing'),
- );
+ $params = [
+ 'profile_id' => ['Billing'],
+ ];
- $result = $this->callAPISuccess('profile', 'get', $params);
- $this->assertEquals(array(
+ $result = $this->callAPISuccess('profile', 'get', $params)['values'];
+ $this->assertEquals([
'billing_first_name' => '',
'billing_middle_name' => '',
'billing_last_name' => '',
'billing_email-5' => '',
'email-5' => '',
'billing_postal_code-5' => '',
- ), $result['values']['Billing']);
+ ], $result['Billing']);
}
/**
/**
* Check contact activity profile with wrong activity type.
+ *
+ * @throws \Exception
*/
public function testContactActivityGetWrongActivityType() {
- //flush cache by calling with reset
- $activityTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, TRUE, 'name', TRUE);
-
- $sourceContactId = $this->householdCreate();
-
- $activityparams = array(
- 'source_contact_id' => $sourceContactId,
+ $activity = $this->callAPISuccess('activity', 'create', [
+ 'source_contact_id' => $this->householdCreate(),
'activity_type_id' => '2',
'subject' => 'Test activity',
'activity_date_time' => '20110316',
'duration' => '120',
- 'location' => 'Pensulvania',
+ 'location' => 'Pennsylvania',
'details' => 'a test activity',
'status_id' => '1',
'priority_id' => '1',
- );
-
- $activity = $this->callAPISuccess('activity', 'create', $activityparams);
+ ])['values'];
- $activityValues = array_pop($activity['values']);
+ $activityValues = array_pop($activity);
list($params) = $this->_createContactWithActivity();
public function testGetFields() {
$this->_createIndividualProfile();
$this->_addCustomFieldToProfile($this->_profileID);
- $result = $this->callAPIAndDocument('profile', 'getfields', array(
+ $result = $this->callAPIAndDocument('profile', 'getfields', [
'action' => 'submit',
'profile_id' => $this->_profileID,
- ), __FUNCTION__, __FILE__,
+ ], __FUNCTION__, __FILE__,
'demonstrates retrieving profile fields passing in an id');
$this->assertArrayKeyExists('first_name', $result['values']);
$this->assertEquals('2', $result['values']['first_name']['type']);
}
/**
- * Check getfields works & gives us our fields - partipant profile
+ * Check getfields works & gives us our fields - participant profile
*/
public function testGetFieldsParticipantProfile() {
- $result = $this->callAPISuccess('profile', 'getfields', array(
+ $result = $this->callAPISuccess('profile', 'getfields', [
'action' => 'submit',
'profile_id' => 'participant_status',
'get_options' => 'all',
- ));
+ ]);
$this->assertTrue(array_key_exists('participant_status_id', $result['values']));
$this->assertEquals('Attended', $result['values']['participant_status_id']['options'][2]);
- $this->assertEquals(array('participant_status'), $result['values']['participant_status_id']['api.aliases']);
+ $this->assertEquals(['participant_status'], $result['values']['participant_status_id']['api.aliases']);
}
/**
* (getting to the end with no e-notices is pretty good evidence it's working)
*/
public function testGetFieldsMembershipBatchProfile() {
- $result = $this->callAPISuccess('profile', 'getfields', array(
+ $result = $this->callAPISuccess('profile', 'getfields', [
'action' => 'submit',
'profile_id' => 'membership_batch_entry',
'get_options' => 'all',
- ));
+ ]);
$this->assertTrue(array_key_exists('total_amount', $result['values']));
$this->assertTrue(array_key_exists('financial_type_id', $result['values']));
- $this->assertEquals(array(
+ $this->assertEquals([
'contribution_type_id',
'contribution_type',
'financial_type',
- ), $result['values']['financial_type_id']['api.aliases']);
+ ], $result['values']['financial_type_id']['api.aliases']);
$this->assertTrue(!array_key_exists('financial_type', $result['values']));
$this->assertEquals(12, $result['values']['receive_date']['type']);
}
* (getting to the end with no e-notices is pretty good evidence it's working)
*/
public function testGetFieldsAllProfiles() {
- $result = $this->callAPISuccess('uf_group', 'get', array('return' => 'id'));
- $profileIDs = array_keys($result['values']);
+ $result = $this->callAPISuccess('uf_group', 'get', ['return' => 'id'])['values'];
+ $profileIDs = array_keys($result);
foreach ($profileIDs as $profileID) {
- $this->callAPISuccess('profile', 'getfields', array(
+ $this->callAPISuccess('profile', 'getfields', [
'action' => 'submit',
'profile_id' => $profileID,
'get_options' => 'all',
- ));
+ ]);
}
}
* Check Without ProfileId.
*/
public function testProfileSubmitWithoutProfileId() {
- $params = array(
+ $params = [
'contact_id' => 1,
- );
+ ];
$this->callAPIFailure('profile', 'submit', $params,
'Mandatory key(s) missing from params array: profile_id'
);
* Check with no invalid profile Id.
*/
public function testProfileSubmitInvalidProfileId() {
- $params = array(
+ $params = [
'contact_id' => 1,
'profile_id' => 1000,
- );
- $result = $this->callAPIFailure('profile', 'submit', $params);
+ ];
+ $this->callAPIFailure('profile', 'submit', $params);
}
/**
public function testProfileSubmitCheckProfileRequired() {
$profileFieldValues = $this->_createIndividualContact();
$contactId = key($profileFieldValues);
- $updateParams = array(
+ $updateParams = [
'first_name' => 'abc2',
'last_name' => 'xyz2',
'phone-1-1' => '022 321 826',
'country-1' => '1013',
'state_province-1' => '1000',
- );
+ ];
- $params = array_merge(array('profile_id' => $this->_profileID, 'contact_id' => $contactId),
+ $params = array_merge([
+ 'profile_id' => $this->_profileID,
+ 'contact_id' => $contactId,
+ ],
$updateParams
);
$profileFieldValues = $this->_createIndividualContact();
$contactId = key($profileFieldValues);
- $updateParams = array(
+ $updateParams = [
'first_name' => 'abc2',
'last_name' => 'xyz2',
'email-primary' => 'abc2.xyz2@gmail.com',
'phone-1-1' => '022 321 826',
'country-1' => '1013',
'state_province-1' => '1000',
- );
+ ];
- $params = array_merge(array(
+ $params = array_merge([
'profile_id' => $this->_profileID,
'contact_id' => $contactId,
- ), $updateParams);
+ ], $updateParams);
$this->callAPIAndDocument('profile', 'submit', $params, __FUNCTION__, __FILE__);
- $getParams = array(
+ $getParams = [
'profile_id' => $this->_profileID,
'contact_id' => $contactId,
- );
+ ];
$profileDetails = $this->callAPISuccess('profile', 'get', $getParams);
foreach ($updateParams as $profileField => $value) {
/**
* Ensure caches are being cleared so we don't get into a debugging trap because of cached metadata
- * First we delete & create to increment the version & then check for caching probs
+ * First we delete & create to increment the version & then check for caching problems.
*/
public function testProfileSubmitCheckCaching() {
- $this->callAPISuccess('membership_type', 'delete', array('id' => $this->_membershipTypeID));
+ $this->callAPISuccess('membership_type', 'delete', ['id' => $this->_membershipTypeID]);
$this->_membershipTypeID = $this->membershipTypeCreate();
- $membershipTypes = $this->callAPISuccess('membership_type', 'get', array());
- $profileFields = $this->callAPISuccess('profile', 'getfields', array(
+ $membershipTypes = $this->callAPISuccess('membership_type', 'get', []);
+ $profileFields = $this->callAPISuccess('profile', 'getfields', [
'get_options' => 'all',
'action' => 'submit',
'profile_id' => 'membership_batch_entry',
- ));
- $getoptions = $this->callAPISuccess('membership', 'getoptions', array(
+ ]);
+ $getoptions = $this->callAPISuccess('membership', 'getoptions', [
'field' => 'membership_type',
'context' => 'validate',
- ));
+ ]);
$this->assertEquals(array_keys($membershipTypes['values']), array_keys($getoptions['values']));
$this->assertEquals(array_keys($membershipTypes['values']), array_keys($profileFields['values']['membership_type_id']['options']));
* Test that the fields are returned in the right order despite the faffing around that goes on.
*/
public function testMembershipGetFieldsOrder() {
- $result = $this->callAPISuccess('profile', 'getfields', array(
+ $result = $this->callAPISuccess('profile', 'getfields', [
'action' => 'submit',
'profile_id' => 'membership_batch_entry',
- ));
+ ])['values'];
$weight = 1;
- foreach ($result['values'] as $fieldName => $field) {
+ foreach ($result as $fieldName => $field) {
if ($fieldName == 'profile_id') {
continue;
}
*/
public function testProfileSubmitMembershipBatch() {
$this->_contactID = $this->individualCreate();
- $this->callAPISuccess('profile', 'submit', array(
+ $this->callAPISuccess('profile', 'submit', [
'profile_id' => 'membership_batch_entry',
'financial_type_id' => 1,
'membership_type' => $this->_membershipTypeID,
'contribution_status_id' => 1,
'receive_date' => 'now',
'contact_id' => $this->_contactID,
- ));
+ ]);
}
/**
$profileFieldValues = $this->_createIndividualContact();
$contactId = key($profileFieldValues);
- $updateParams = array(
+ $updateParams = [
'first_name' => 'abc2',
'last_name' => 'xyz2',
'email-Primary' => 'abc2.xyz2@gmail.com',
'phone-1-1' => '022 321 826',
'country-1' => '1013',
'state_province-1' => '1000',
- );
+ ];
- $params = array_merge(array(
+ $params = array_merge([
'profile_id' => $this->_profileID,
'contact_id' => $contactId,
- ), $updateParams);
+ ], $updateParams);
$result = $this->callAPISuccess('profile', 'set', $params);
$this->assertArrayKeyExists('values', $result);
- $getParams = array(
+ $getParams = [
'profile_id' => $this->_profileID,
'contact_id' => $contactId,
- );
+ ];
$profileDetails = $this->callAPISuccess('profile', 'get', $getParams);
foreach ($updateParams as $profileField => $value) {
$params = array_merge($params, $expected);
unset($params['activity_id']);
- $result = $this->callAPIFailure('profile', 'submit', $params);
- $this->assertEquals($result['error_message'], 'Mandatory key(s) missing from params array: activity_id');
+ $this->callAPIFailure('profile', 'submit', $params, 'Mandatory key(s) missing from params array: activity_id');
}
/**
list($params, $expected) = $this->_createContactWithActivity();
$params = array_merge($params, $expected);
$params['activity_id'] = 100001;
- $result = $this->callAPIFailure('profile', 'submit', $params);
- $this->assertEquals($result['error_message'], 'Invalid Activity Id (aid).');
+ $this->callAPIFailure('profile', 'submit', $params, 'Invalid Activity Id (aid).');
}
/**
* Check contact activity profile with wrong activity type.
+ *
+ * @throws \Exception
*/
public function testContactActivitySubmitWrongActivityType() {
- //flush cache by calling with reset
- CRM_Core_PseudoConstant::activityType(TRUE, TRUE, TRUE, 'name', TRUE);
$sourceContactId = $this->householdCreate();
- $activityparams = array(
+ $activityParams = [
'source_contact_id' => $sourceContactId,
'activity_type_id' => '2',
'subject' => 'Test activity',
'activity_date_time' => '20110316',
'duration' => '120',
- 'location' => 'Pensulvania',
+ 'location' => 'Pennsylvania',
'details' => 'a test activity',
'status_id' => '1',
'priority_id' => '1',
- );
+ ];
- $activity = $this->callAPISuccess('activity', 'create', $activityparams);
+ $activity = $this->callAPISuccess('activity', 'create', $activityParams);
$activityValues = array_pop($activity['values']);
public function testContactActivitySubmitSuccess() {
list($params) = $this->_createContactWithActivity();
- $updateParams = array(
+ $updateParams = [
'first_name' => 'abc2',
'last_name' => 'xyz2',
'email-Primary' => 'abc2.xyz2@yahoo.com',
'activity_duration' => '100',
'activity_date_time' => '2010-03-08 00:00:00',
'activity_status_id' => '2',
- );
+ ];
$profileParams = array_merge($params, $updateParams);
$this->callAPISuccess('profile', 'submit', $profileParams);
- $result = $this->callAPISuccess('profile', 'get', $params);
+ $result = $this->callAPISuccess('profile', 'get', $params)['values'];
foreach ($updateParams as $profileField => $value) {
- $this->assertEquals($value, CRM_Utils_Array::value($profileField, $result['values']), " error message: " . "missing/mismatching value for {$profileField}"
+ $this->assertEquals($value, CRM_Utils_Array::value($profileField, $result), " error message: " . "missing/mismatching value for {$profileField}"
);
}
}
* Check profile apply Without ProfileId.
*/
public function testProfileApplyWithoutProfileId() {
- $params = array(
+ $params = [
'contact_id' => 1,
- );
+ ];
$this->callAPIFailure('profile', 'apply', $params,
'Mandatory key(s) missing from params array: profile_id');
}
* Check profile apply with no invalid profile Id.
*/
public function testProfileApplyInvalidProfileId() {
- $params = array(
+ $params = [
'contact_id' => 1,
'profile_id' => 1000,
- );
+ ];
$this->callAPIFailure('profile', 'apply', $params);
}
current($profileFieldValues);
$contactId = key($profileFieldValues);
- $params = array(
+ $params = [
'profile_id' => $this->_profileID,
'contact_id' => $contactId,
'first_name' => 'abc2',
'phone-1-1' => '022 321 826',
'country-1' => '1013',
'state_province-1' => '1000',
- );
+ ];
$result = $this->callAPIAndDocument('profile', 'apply', $params, __FUNCTION__, __FILE__);
// Expected field values
- $expected['contact'] = array(
+ $expected['contact'] = [
'contact_id' => $contactId,
'contact_type' => 'Individual',
'first_name' => 'abc2',
'last_name' => 'xyz2',
- );
- $expected['email'] = array(
+ ];
+ $expected['email'] = [
'location_type_id' => 1,
'is_primary' => 1,
'email' => 'abc2.xyz2@gmail.com',
- );
+ ];
- $expected['phone'] = array(
+ $expected['phone'] = [
'location_type_id' => 1,
'is_primary' => 1,
'phone_type_id' => 1,
'phone' => '022 321 826',
- );
- $expected['address'] = array(
+ ];
+ $expected['address'] = [
'location_type_id' => 1,
'is_primary' => 1,
'country_id' => 1013,
'state_province_id' => 1000,
- );
+ ];
foreach ($expected['contact'] as $field => $value) {
- $this->assertEquals($value, CRM_Utils_Array::value($field, $result['values']), "In line " . __LINE__ . " error message: " . "missing/mismatching value for {$field}"
+ $this->assertEquals($value, CRM_Utils_Array::value($field, $result['values']), "missing/mismatching value for {$field}"
);
}
- foreach (array(
- 'email',
- 'phone',
- 'address',
- ) as $fieldType) {
+ foreach (['email', 'phone', 'address'] as $fieldType) {
$typeValues = array_pop($result['values'][$fieldType]);
foreach ($expected[$fieldType] as $field => $value) {
- $this->assertEquals($value, CRM_Utils_Array::value($field, $typeValues), "In line " . __LINE__ . " error message: " . "missing/mismatching value for {$field} ({$fieldType})"
+ $this->assertEquals($value, CRM_Utils_Array::value($field, $typeValues), "missing/mismatching value for {$field} ({$fieldType})"
);
}
}
$params['profile_id'] = $this->_profileID;
$params['contact_id'] = $contactId;
- $this->callAPISuccess('ufField', 'create', array(
+ $this->callAPISuccess('ufField', 'create', [
'uf_group_id' => $this->_profileID,
'field_name' => 'tag',
'visibility' => 'Public Pages and Listings',
'field_type' => 'Contact',
'label' => 'Tags',
- ));
+ ]);
$tag_1 = $this->callAPISuccess('tag', 'create', ['name' => 'abc'])['id'];
$tag_2 = $this->callAPISuccess('tag', 'create', ['name' => 'def'])['id'];
$params['tag'] = "$tag_1,$tag_2";
- $result = $this->callAPISuccess('profile', 'submit', $params);
+ $this->callAPISuccess('profile', 'submit', $params);
$tags = $this->callAPISuccess('entityTag', 'get', ['entity_id' => $contactId]);
$this->assertEquals(2, $tags['count']);
$params['tag'] = [$tag_1];
- $result = $this->callAPISuccess('profile', 'submit', $params);
+ $this->callAPISuccess('profile', 'submit', $params);
$tags = $this->callAPISuccess('entityTag', 'get', ['entity_id' => $contactId]);
$this->assertEquals(1, $tags['count']);
$params['tag'] = '';
- $result = $this->callAPISuccess('profile', 'submit', $params);
+ $this->callAPISuccess('profile', 'submit', $params);
$tags = $this->callAPISuccess('entityTag', 'get', ['entity_id' => $contactId]);
$this->assertEquals(0, $tags['count']);
/**
* Check success with a note.
+ *
+ * @throws \Exception
*/
public function testSubmitWithNote() {
$profileFieldValues = $this->_createIndividualContact();
$params['profile_id'] = $this->_profileID;
$params['contact_id'] = $contactId;
- $this->callAPISuccess('ufField', 'create', array(
+ $this->callAPISuccess('ufField', 'create', [
'uf_group_id' => $this->_profileID,
'field_name' => 'note',
'visibility' => 'Public Pages and Listings',
'field_type' => 'Contact',
'label' => 'Note',
- ));
+ ]);
$params['note'] = "Hello 123";
$this->callAPISuccess('profile', 'submit', $params);
/**
* Check handling a custom greeting.
+ *
+ * @throws \CiviCRM_API3_Exception
*/
public function testSubmitGreetingFields() {
$profileFieldValues = $this->_createIndividualContact();
$params['profile_id'] = $this->_profileID;
$params['contact_id'] = $contactId;
- $this->callAPISuccess('ufField', 'create', array(
+ $this->callAPISuccess('ufField', 'create', [
'uf_group_id' => $this->_profileID,
'field_name' => 'email_greeting',
'visibility' => 'Public Pages and Listings',
'field_type' => 'Contact',
'label' => 'Email Greeting',
- ));
+ ]);
$emailGreetings = array_column(civicrm_api3('OptionValue', 'get', ['option_group_id' => "email_greeting"])['values'], NULL, 'name');
/**
* Helper function to create an Individual with address/email/phone info. Import UF Group and UF Fields
+ *
* @param array $params
*
* @return mixed
*/
- public function _createIndividualContact($params = array()) {
- $contactParams = array_merge(array(
+ public function _createIndividualContact($params = []) {
+ $contactParams = array_merge([
'first_name' => 'abc1',
'last_name' => 'xyz1',
'email' => 'abc1.xyz1@yahoo.com',
- 'api.address.create' => array(
+ 'api.address.create' => [
'location_type_id' => 1,
'is_primary' => 1,
'street_address' => '5 Saint Helier St',
'postal_code' => '90210',
'city' => 'Gotham City',
'is_billing' => 0,
- ),
- 'api.phone.create' => array(
+ ],
+ 'api.phone.create' => [
'location_type_id' => '1',
'phone' => '021 512 755',
'phone_type_id' => '1',
'is_primary' => '1',
- ),
- ), $params);
+ ],
+ ], $params);
$this->_contactID = $this->individualCreate($contactParams);
$this->_createIndividualProfile();
// expected result of above created profile with contact Id $contactId
- $profileData[$this->_contactID] = array(
+ $profileData[$this->_contactID] = [
'first_name' => 'abc1',
'last_name' => 'xyz1',
'email-primary' => 'abc1.xyz1@yahoo.com',
'phone-1-1' => '021 512 755',
'country-1' => '1228',
'state_province-1' => '1021',
- );
+ ];
return $profileData;
}
* @return array
*/
public function _createContactWithActivity() {
- // @TODO: Create profile with custom fields
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/dataset/uf_group_contact_activity_26.xml'
- )
- );
- // hack: xml data set do not accept \ 1 (CRM_Core_DAO::VALUE_SEPARATOR)
- CRM_Core_DAO::setFieldValue('CRM_Core_DAO_UFGroup', '26', 'group_type', 'Individual,Contact,Activity' . CRM_Core_DAO::VALUE_SEPARATOR . 'ActivityType:1');
+ $ufGroupID = $this->callAPISuccess('UFGroup', 'create', [
+ 'group_type' => 'Individual,Contact,Activity',
+ 'title' => 'Test Contact-Activity Profile',
+ 'name' => 'test_contact_activity_profile',
+ ])['id'];
+ $this->callAPISuccess('UFField', 'create', [
+ 'uf_group_id' => $ufGroupID,
+ 'field_name' => 'first_name',
+ 'is_required' => TRUE,
+ 'visibility' => 'Public Pages and Listings',
+ 'label' => 'First Name',
+ 'field_type' => 'Individual',
+ ]);
+ $this->callAPISuccess('UFField', 'create', [
+ 'uf_group_id' => $ufGroupID,
+ 'field_name' => 'last_name',
+ 'is_required' => TRUE,
+ 'visibility' => 'Public Pages and Listings',
+ 'label' => 'Last Name',
+ 'field_type' => 'Individual',
+ ]);
+ $this->callAPISuccess('UFField', 'create', [
+ 'uf_group_id' => $ufGroupID,
+ 'field_name' => 'email',
+ 'is_required' => TRUE,
+ 'visibility' => 'Public Pages and Listings',
+ 'label' => 'Email',
+ 'field_type' => 'Contact',
+ ]);
+ $this->callAPISuccess('UFField', 'create', [
+ 'uf_group_id' => $ufGroupID,
+ 'field_name' => 'activity_subject',
+ 'is_required' => TRUE,
+ 'visibility' => 'Public Pages and Listings',
+ 'label' => 'Activity Subject',
+ 'is_searchable' => TRUE,
+ 'field_type' => 'Activity',
+ ]);
+ $this->callAPISuccess('UFField', 'create', [
+ 'uf_group_id' => $ufGroupID,
+ 'field_name' => 'activity_details',
+ 'is_required' => TRUE,
+ 'visibility' => 'Public Pages and Listings',
+ 'label' => 'Activity Details',
+ 'is_searchable' => TRUE,
+ 'field_type' => 'Activity',
+ ]);
+ $this->callAPISuccess('UFField', 'create', [
+ 'uf_group_id' => $ufGroupID,
+ 'field_name' => 'activity_duration',
+ 'is_required' => TRUE,
+ 'visibility' => 'Public Pages and Listings',
+ 'label' => 'Activity Duration',
+ 'is_searchable' => TRUE,
+ 'field_type' => 'Activity',
+ ]);
+ $this->callAPISuccess('UFField', 'create', [
+ 'uf_group_id' => $ufGroupID,
+ 'field_name' => 'activity_date_time',
+ 'is_required' => TRUE,
+ 'visibility' => 'Public Pages and Listings',
+ 'label' => 'Activity Date',
+ 'is_searchable' => TRUE,
+ 'field_type' => 'Activity',
+ ]);
+ $this->callAPISuccess('UFField', 'create', [
+ 'uf_group_id' => $ufGroupID,
+ 'field_name' => 'activity_status_id',
+ 'is_required' => TRUE,
+ 'visibility' => 'Public Pages and Listings',
+ 'label' => 'Activity Status',
+ 'is_searchable' => TRUE,
+ 'field_type' => 'Activity',
+ ]);
+
+ // hack: xml data set did not accept \ 1 (CRM_Core_DAO::VALUE_SEPARATOR) - should be possible
+ // to unhack now we use the api.
+ CRM_Core_DAO::setFieldValue('CRM_Core_DAO_UFGroup', $ufGroupID, 'group_type', 'Individual,Contact,Activity' . CRM_Core_DAO::VALUE_SEPARATOR . 'ActivityType:1');
$sourceContactId = $this->individualCreate();
- $contactParams = array(
+ $contactParams = [
'first_name' => 'abc1',
'last_name' => 'xyz1',
'contact_type' => 'Individual',
'email' => 'abc1.xyz1@yahoo.com',
- 'api.address.create' => array(
+ 'api.address.create' => [
'location_type_id' => 1,
'is_primary' => 1,
'name' => 'Saint Helier St',
'supplemental_address_1' => 'Hallmark Ct',
'supplemental_address_2' => 'Jersey Village',
'supplemental_address_3' => 'My Town',
- ),
- );
+ ],
+ ];
$contact = $this->callAPISuccess('contact', 'create', $contactParams);
$this->assertEquals(0, $contact['values'][$contactId]['api.address.create']['is_error'], " error message: " . CRM_Utils_Array::value('error_message', $contact['values'][$contactId]['api.address.create'])
);
- $activityParams = array(
+ $activityParams = [
'source_contact_id' => $sourceContactId,
'assignee_contact_id' => $contactId,
'activity_type_id' => '1',
'subject' => 'Make-it-Happen Meeting',
'activity_date_time' => '2011-03-16 00:00:00',
'duration' => '120',
- 'location' => 'Pensulvania',
+ 'location' => 'Pennsylvania',
'details' => 'a test activity',
'status_id' => '1',
'priority_id' => '1',
- );
+ ];
$activity = $this->callAPISuccess('activity', 'create', $activityParams);
$activityValues = array_pop($activity['values']);
// valid parameters for above profile
- $profileParams = array(
- 'profile_id' => 26,
+ $profileParams = [
+ 'profile_id' => $ufGroupID,
'contact_id' => $contactId,
'activity_id' => $activityValues['id'],
- );
+ ];
// expected result of above created profile
- $expected = array(
+ $expected = [
'first_name' => 'abc1',
'last_name' => 'xyz1',
'email-Primary' => 'abc1.xyz1@yahoo.com',
'activity_duration' => '120',
'activity_date_time' => '2011-03-16 00:00:00',
'activity_status_id' => '1',
- );
+ ];
- return array($profileParams, $expected);
+ return [$profileParams, $expected];
}
/**
* Create a profile.
*/
public function _createIndividualProfile() {
- $ufGroupParams = array(
+ $ufGroupParams = [
'group_type' => 'Individual,Contact',
// really we should remove this & test the ufField create sets it
'name' => 'test_individual_contact_profile',
'title' => 'Flat Coffee',
- 'api.uf_field.create' => array(
- array(
+ 'api.uf_field.create' => [
+ [
'field_name' => 'first_name',
'is_required' => 1,
'visibility' => 'Public Pages and Listings',
'field_type' => 'Individual',
'label' => 'First Name',
- ),
- array(
+ ],
+ [
'field_name' => 'last_name',
'is_required' => 1,
'visibility' => 'Public Pages and Listings',
'field_type' => 'Individual',
'label' => 'Last Name',
- ),
- array(
+ ],
+ [
'field_name' => 'email',
'is_required' => 1,
'visibility' => 'Public Pages and Listings',
'field_type' => 'Contact',
'label' => 'Email',
- ),
- array(
+ ],
+ [
'field_name' => 'phone',
'is_required' => 1,
'visibility' => 'Public Pages and Listings',
'location_type_id' => 1,
'phone_type_id' => 1,
'label' => 'Phone',
- ),
- array(
+ ],
+ [
'field_name' => 'country',
'is_required' => 1,
'visibility' => 'Public Pages and Listings',
'field_type' => 'Contact',
'location_type_id' => 1,
'label' => 'Country',
- ),
- array(
+ ],
+ [
'field_name' => 'state_province',
'is_required' => 1,
'visibility' => 'Public Pages and Listings',
'field_type' => 'Contact',
'location_type_id' => 1,
'label' => 'State Province',
- ),
- array(
+ ],
+ [
'field_name' => 'postal_code',
'is_required' => 0,
'field_type' => 'Contact',
'location_type_id' => 1,
'label' => 'State Province',
- ),
- ),
- );
+ ],
+ ],
+ ];
$profile = $this->callAPISuccess('uf_group', 'create', $ufGroupParams);
$this->_profileID = $profile['id'];
}
*/
public function _addCustomFieldToProfile($profileID) {
$ids = $this->entityCustomGroupWithSingleFieldCreate(__FUNCTION__, '');
- $this->uFFieldCreate(array(
+ $this->uFFieldCreate([
'uf_group_id' => $profileID,
'field_name' => 'custom_' . $ids['custom_field_id'],
'contact_type' => 'Contact',
- ));
+ ]);
}
}
* @group headless
*/
class api_v3_RelationshipTest extends CiviUnitTestCase {
+
+ use CRMTraits_Custom_CustomDataTrait;
+
protected $_apiversion = 3;
protected $_cId_a;
/**
* Second individual.
- * @var integer
+ *
+ * @var int
*/
protected $_cId_a_2;
protected $_cId_b;
*/
protected $_cId_b2;
protected $_relTypeID;
- protected $_ids = array();
- protected $_customGroupId = NULL;
+ protected $_ids = [];
protected $_customFieldId = NULL;
protected $_params;
- protected $_entity;
+ protected $entity;
/**
* Set up function.
));
$this->_cId_b = $this->organizationCreate();
$this->_cId_b2 = $this->organizationCreate(array('organization_name' => ' Org 2'));
- $this->_entity = 'relationship';
+ $this->entity = 'Relationship';
//Create a relationship type.
$relTypeParams = array(
'name_a_b' => 'Relation 1 for delete',
* Check relationship creation with custom data.
*/
public function testRelationshipCreateEditWithCustomData() {
- $this->createCustomGroup();
- $this->_ids = $this->createCustomField();
+ $this->createCustomGroupWithFieldsOfAllTypes();
//few custom Values for comparing
- $custom_params = array(
- "custom_{$this->_ids[0]}" => 'Hello! this is custom data for relationship',
- "custom_{$this->_ids[1]}" => 'Y',
- "custom_{$this->_ids[2]}" => '2009-07-11 00:00:00',
- "custom_{$this->_ids[3]}" => 'http://example.com',
- );
-
- $params = array(
+ $custom_params = [
+ $this->getCustomFieldName('text') => 'Hello! this is custom data for relationship',
+ $this->getCustomFieldName('select_string') => 'Y',
+ $this->getCustomFieldName('select_date') => '2009-07-11 00:00:00',
+ $this->getCustomFieldName('link') => 'http://example.com',
+ ];
+
+ $params = [
'contact_id_a' => $this->_cId_a,
'contact_id_b' => $this->_cId_b,
'relationship_type_id' => $this->_relTypeID,
'start_date' => '2008-12-20',
'is_active' => 1,
- );
+ ];
$params = array_merge($params, $custom_params);
$result = $this->callAPISuccess('relationship', 'create', $params);
- $relationParams = array(
- 'id' => $result['id'],
- );
+ $relationParams = ['id' => $result['id']];
$this->assertDBState('CRM_Contact_DAO_Relationship', $result['id'], $relationParams);
//Test Edit of custom field from the form.
$getParams = array('id' => $result['id']);
$updateParams = array_merge($getParams, array(
- "custom_{$this->_ids[0]}" => 'Edited Text Value',
+ $this->getCustomFieldName('text') => 'Edited Text Value',
'relationship_type_id' => $this->_relTypeID . '_b_a',
'related_contact_id' => $this->_cId_a,
));
$reln->submit($updateParams);
$check = $this->callAPISuccess('relationship', 'get', $getParams);
- $this->assertEquals("Edited Text Value", $check['values'][$check['id']]["custom_{$this->_ids[0]}"]);
+ $this->assertEquals("Edited Text Value", $check['values'][$check['id']][$this->getCustomFieldName('text')]);
$params['id'] = $result['id'];
$this->callAPISuccess('relationship', 'delete', $params);
$params = $this->_params;
$params['custom_' . $ids['custom_field_id']] = "custom string";
- $result = $this->callAPISuccess($this->_entity, 'create', $params);
+ $result = $this->callAPISuccess($this->entity, 'create', $params);
$this->assertEquals($result['id'], $result['values'][$result['id']]['id']);
$getParams = array('id' => $result['id']);
- $check = $this->callAPIAndDocument($this->_entity, 'get', $getParams, __FUNCTION__, __FILE__);
+ $check = $this->callAPIAndDocument($this->entity, 'get', $getParams, __FUNCTION__, __FILE__);
$this->assertEquals("custom string", $check['values'][$check['id']]['custom_' . $ids['custom_field_id']], ' in line ' . __LINE__);
$this->customFieldDelete($ids['custom_field_id']);
$this->customGroupDelete($ids['custom_group_id']);
}
- /**
- * @return mixed
- */
- public function createCustomGroup() {
- $params = array(
- 'title' => 'Custom Group',
- 'extends' => array('Relationship'),
- 'weight' => 5,
- 'style' => 'Inline',
- 'is_active' => 1,
- 'max_multiple' => 0,
- );
- $customGroup = $this->callAPISuccess('custom_group', 'create', $params);
- $this->_customGroupId = $customGroup['id'];
- return $customGroup['id'];
- }
-
- /**
- * @return array
- */
- public function createCustomField() {
- $ids = array();
- $params = array(
- 'custom_group_id' => $this->_customGroupId,
- 'label' => 'Enter text about relationship',
- 'html_type' => 'Text',
- 'data_type' => 'String',
- 'default_value' => 'xyz',
- 'weight' => 1,
- 'is_required' => 1,
- 'is_searchable' => 0,
- 'is_active' => 1,
- );
-
- $customField = $this->callAPISuccess('CustomField', 'create', $params);
- $ids[] = $customField['id'];
-
- $optionValue[] = array(
- 'label' => 'Red',
- 'value' => 'R',
- 'weight' => 1,
- 'is_active' => 1,
- );
- $optionValue[] = array(
- 'label' => 'Yellow',
- 'value' => 'Y',
- 'weight' => 2,
- 'is_active' => 1,
- );
- $optionValue[] = array(
- 'label' => 'Green',
- 'value' => 'G',
- 'weight' => 3,
- 'is_active' => 1,
- );
-
- $params = array(
- 'label' => 'Pick Color',
- 'html_type' => 'Select',
- 'data_type' => 'String',
- 'weight' => 2,
- 'is_required' => 1,
- 'is_searchable' => 0,
- 'is_active' => 1,
- 'option_values' => $optionValue,
- 'custom_group_id' => $this->_customGroupId,
- );
-
- $customField = $this->callAPISuccess('custom_field', 'create', $params);
- $ids[] = $customField['id'];
-
- $params = array(
- 'custom_group_id' => $this->_customGroupId,
- 'name' => 'test_date',
- 'label' => 'test_date',
- 'html_type' => 'Select Date',
- 'data_type' => 'Date',
- 'default_value' => '20090711',
- 'weight' => 3,
- 'is_required' => 1,
- 'is_searchable' => 0,
- 'is_active' => 1,
- );
-
- $customField = $this->callAPISuccess('custom_field', 'create', $params);
-
- $ids[] = $customField['id'];
- $params = array(
- 'custom_group_id' => $this->_customGroupId,
- 'name' => 'test_link',
- 'label' => 'test_link',
- 'html_type' => 'Link',
- 'data_type' => 'Link',
- 'default_value' => 'http://civicrm.org',
- 'weight' => 4,
- 'is_required' => 1,
- 'is_searchable' => 0,
- 'is_active' => 1,
- );
-
- $customField = $this->callAPISuccess('custom_field', 'create', $params);
- $ids[] = $customField['id'];
- return $ids;
- }
-
/**
* Check with empty array.
*/
* should be OK if the custom field values differ.
*/
public function testRelationshipCreateDuplicateWithCustomFields() {
- $this->createCustomGroup();
- $this->_ids = $this->createCustomField();
+ $this->createCustomGroupWithFieldsOfAllTypes();
$custom_params_1 = array(
- "custom_{$this->_ids[0]}" => 'Hello! this is custom data for relationship',
- "custom_{$this->_ids[1]}" => 'Y',
- "custom_{$this->_ids[2]}" => '2009-07-11 00:00:00',
- "custom_{$this->_ids[3]}" => 'http://example.com',
+ $this->getCustomFieldName('text') => 'Hello! this is custom data for relationship',
+ $this->getCustomFieldName('select_string') => 'Y',
+ $this->getCustomFieldName('select_date') => '2009-07-11 00:00:00',
+ $this->getCustomFieldName('link') => 'http://example.com',
);
$custom_params_2 = array(
- "custom_{$this->_ids[0]}" => 'Hello! this is other custom data',
- "custom_{$this->_ids[1]}" => 'Y',
- "custom_{$this->_ids[2]}" => '2009-07-11 00:00:00',
- "custom_{$this->_ids[3]}" => 'http://example.org',
+ $this->getCustomFieldName('text') => 'Hello! this is other custom data',
+ $this->getCustomFieldName('select_string') => 'Y',
+ $this->getCustomFieldName('select_date') => '2009-07-11 00:00:00',
+ $this->getCustomFieldName('link') => 'http://example.org',
);
$params = array(
* does.
*/
public function testRelationshipCreateDuplicateWithCustomFields2() {
- $this->createCustomGroup();
- $this->_ids = $this->createCustomField();
+ $this->createCustomGroupWithFieldsOfAllTypes();
$custom_params_2 = array(
- "custom_{$this->_ids[0]}" => 'Hello! this is other custom data',
- "custom_{$this->_ids[1]}" => 'Y',
- "custom_{$this->_ids[2]}" => '2009-07-11 00:00:00',
- "custom_{$this->_ids[3]}" => 'http://example.org',
+ $this->getCustomFieldName('text') => 'Hello! this is other custom data',
+ $this->getCustomFieldName('select_string') => 'Y',
+ $this->getCustomFieldName('select_date') => '2009-07-11 00:00:00',
+ $this->getCustomFieldName('link') => 'http://example.org',
);
- $params_1 = array(
+ $params_1 = [
'contact_id_a' => $this->_cId_a,
'contact_id_b' => $this->_cId_b,
'relationship_type_id' => $this->_relTypeID,
'start_date' => '2008-12-20',
'is_active' => 1,
- );
+ ];
$params_2 = array_merge($params_1, $custom_params_2);
* does not.
*/
public function testRelationshipCreateDuplicateWithCustomFields3() {
- $this->createCustomGroup();
- $this->_ids = $this->createCustomField();
+ $this->createCustomGroupWithFieldsOfAllTypes();
- $custom_params_1 = array(
- "custom_{$this->_ids[0]}" => 'Hello! this is other custom data',
- "custom_{$this->_ids[1]}" => 'Y',
- "custom_{$this->_ids[2]}" => '2009-07-11 00:00:00',
- "custom_{$this->_ids[3]}" => 'http://example.org',
- );
+ $custom_params_1 = [
+ $this->getCustomFieldName('text') => 'Hello! this is other custom data',
+ $this->getCustomFieldName('select_string') => 'Y',
+ $this->getCustomFieldName('select_date') => '2009-07-11 00:00:00',
+ $this->getCustomFieldName('link') => 'http://example.org',
+ ];
$params_2 = array(
'contact_id_a' => $this->_cId_a,
* an incorrect one
*/
public function testGetRelationshipByTypeReciprocal() {
- $created = $this->callAPISuccess($this->_entity, 'create', $this->_params);
- $result = $this->callAPISuccess($this->_entity, 'get', array(
+ $created = $this->callAPISuccess($this->entity, 'create', $this->_params);
+ $result = $this->callAPISuccess($this->entity, 'get', array(
'contact_id' => $this->_cId_a,
'relationship_type_id' => $this->_relTypeID,
));
$this->assertEquals(1, $result['count']);
- $result = $this->callAPISuccess($this->_entity, 'get', array(
+ $result = $this->callAPISuccess($this->entity, 'get', array(
'contact_id' => $this->_cId_a,
'relationship_type_id' => $this->_relTypeID + 1,
));
$this->assertEquals(0, $result['count']);
- $this->callAPISuccess($this->_entity, 'delete', array('id' => $created['id']));
+ $this->callAPISuccess($this->entity, 'delete', array('id' => $created['id']));
}
/**
* an incorrect one
*/
public function testGetRelationshipByTypeDAO() {
- $this->_ids['relationship'] = $this->callAPISuccess($this->_entity, 'create', array('format.only_id' => TRUE) +
+ $this->_ids['relationship'] = $this->callAPISuccess($this->entity, 'create', array('format.only_id' => TRUE) +
$this->_params);
- $this->callAPISuccess($this->_entity, 'getcount', array(
+ $this->callAPISuccess($this->entity, 'getcount', array(
'contact_id_a' => $this->_cId_a,
), 1);
- $result = $this->callAPISuccess($this->_entity, 'get', array(
+ $result = $this->callAPISuccess($this->entity, 'get', array(
'contact_id_a' => $this->_cId_a,
'relationship_type_id' => $this->_relTypeID,
));
$this->assertEquals(1, $result['count']);
- $result = $this->callAPISuccess($this->_entity, 'get', array(
+ $result = $this->callAPISuccess($this->entity, 'get', array(
'contact_id_a' => $this->_cId_a,
'relationship_type_id' => $this->_relTypeID + 1,
));
* an incorrect one
*/
public function testGetRelationshipByTypeArrayDAO() {
- $this->callAPISuccess($this->_entity, 'create', $this->_params);
+ $this->callAPISuccess($this->entity, 'create', $this->_params);
$org3 = $this->organizationCreate();
// lets just assume built in ones aren't being messed with!
$relType2 = 5;
$relType3 = 6;
// Relationship 2.
- $this->callAPISuccess($this->_entity, 'create',
+ $this->callAPISuccess($this->entity, 'create',
array_merge($this->_params, array(
'relationship_type_id' => $relType2,
'contact_id_b' => $this->_cId_b2,
);
// Relationship 3.
- $this->callAPISuccess($this->_entity, 'create',
+ $this->callAPISuccess($this->entity, 'create',
array_merge($this->_params, array(
'relationship_type_id' => $relType3,
'contact_id_b' => $org3,
))
);
- $result = $this->callAPISuccess($this->_entity, 'get', array(
+ $result = $this->callAPISuccess($this->entity, 'get', array(
'contact_id_a' => $this->_cId_a,
'relationship_type_id' => array('IN' => array($this->_relTypeID, $relType3)),
));
* an incorrect one
*/
public function testGetRelationshipByTypeArrayReciprocal() {
- $this->callAPISuccess($this->_entity, 'create', $this->_params);
+ $this->callAPISuccess($this->entity, 'create', $this->_params);
$org3 = $this->organizationCreate();
// lets just assume built in ones aren't being messed with!
$relType2 = 5;
$relType3 = 6;
// Relationship 2.
- $this->callAPISuccess($this->_entity, 'create',
+ $this->callAPISuccess($this->entity, 'create',
array_merge($this->_params, array(
'relationship_type_id' => $relType2,
'contact_id_b' => $this->_cId_b2,
);
// Relationship 3.
- $this->callAPISuccess($this->_entity, 'create',
+ $this->callAPISuccess($this->entity, 'create',
array_merge($this->_params, array(
'relationship_type_id' => $relType3,
'contact_id_b' => $org3,
))
);
- $result = $this->callAPISuccess($this->_entity, 'get', array(
+ $result = $this->callAPISuccess($this->entity, 'get', array(
'contact_id' => $this->_cId_a,
'relationship_type_id' => array('IN' => array($this->_relTypeID, $relType3)),
));
* an incorrect one
*/
public function testGetRelationshipByMembershipTypeDAO() {
- $this->callAPISuccess($this->_entity, 'create', $this->_params);
+ $this->callAPISuccess($this->entity, 'create', $this->_params);
$org3 = $this->organizationCreate();
// lets just assume built in ones aren't being messed with!
));
// Relationship 2.
- $this->callAPISuccess($this->_entity, 'create',
+ $this->callAPISuccess($this->entity, 'create',
array_merge($this->_params, array(
'relationship_type_id' => $relType2,
'contact_id_b' => $this->_cId_b2,
);
// Relationship 3.
- $this->callAPISuccess($this->_entity, 'create',
+ $this->callAPISuccess($this->entity, 'create',
array_merge($this->_params, array(
'relationship_type_id' => $relType3,
'contact_id_b' => $org3,
);
// Relationship 4 with reversal.
- $this->callAPISuccess($this->_entity, 'create',
+ $this->callAPISuccess($this->entity, 'create',
array_merge($this->_params, array(
'relationship_type_id' => $relType1,
'contact_id_a' => $this->_cId_a,
))
);
- $result = $this->callAPISuccess($this->_entity, 'get', array(
+ $result = $this->callAPISuccess($this->entity, 'get', array(
'contact_id_a' => $this->_cId_a,
'membership_type_id' => $memberType,
));
* an incorrect one
*/
public function testGetRelationshipByMembershipTypeReciprocal() {
- $this->callAPISuccess($this->_entity, 'create', $this->_params);
+ $this->callAPISuccess($this->entity, 'create', $this->_params);
$org3 = $this->organizationCreate();
// Let's just assume built in ones aren't being messed with!
));
// Relationship 2.
- $this->callAPISuccess($this->_entity, 'create',
+ $this->callAPISuccess($this->entity, 'create',
array_merge($this->_params, array(
'relationship_type_id' => $relType2,
'contact_id_b' => $this->_cId_b2,
);
// Relationship 4.
- $this->callAPISuccess($this->_entity, 'create',
+ $this->callAPISuccess($this->entity, 'create',
array_merge($this->_params, array(
'relationship_type_id' => $relType3,
'contact_id_b' => $org3,
);
// Relationship 4 with reversal.
- $this->callAPISuccess($this->_entity, 'create',
+ $this->callAPISuccess($this->entity, 'create',
array_merge($this->_params, array(
'relationship_type_id' => $relType1,
'contact_id_a' => $this->_cId_a,
))
);
- $result = $this->callAPISuccess($this->_entity, 'get', array(
+ $result = $this->callAPISuccess($this->entity, 'get', array(
'contact_id' => $this->_cId_a,
'membership_type_id' => $memberType,
));
* Check for e-notices on enable & disable as reported in CRM-14350
*/
public function testSetActive() {
- $relationship = $this->callAPISuccess($this->_entity, 'create', $this->_params);
- $this->callAPISuccess($this->_entity, 'create', array('id' => $relationship['id'], 'is_active' => 0));
- $this->callAPISuccess($this->_entity, 'create', array('id' => $relationship['id'], 'is_active' => 1));
+ $relationship = $this->callAPISuccess($this->entity, 'create', $this->_params);
+ $this->callAPISuccess($this->entity, 'create', array('id' => $relationship['id'], 'is_active' => 0));
+ $this->callAPISuccess($this->entity, 'create', array('id' => $relationship['id'], 'is_active' => 1));
}
/**
use CRMTraits_ACL_PermissionTrait;
use CRMTraits_PCP_PCPTestTrait;
- protected $_apiversion = 3;
-
protected $contactIDs = [];
/**
*/
public function testReportTemplateGetRowsContactSummary() {
$description = "Retrieve rows from a report template (optionally providing the instance_id).";
- $result = $this->callApiSuccess('report_template', 'getrows', array(
+ $result = $this->callAPISuccess('report_template', 'getrows', array(
'report_id' => 'contact/summary',
'options' => array('metadata' => array('labels', 'title')),
), __FUNCTION__, __FILE__, $description, 'Getrows');
*/
public function testReportTemplateGetRowsMailingUniqueOpened() {
$description = "Retrieve rows from a mailing opened report template.";
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute($this->_dbconn,
- $this->createFlatXMLDataSet(
- dirname(__FILE__) . '/../../CRM/Mailing/BAO/queryDataset.xml'
- )
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/../../CRM/Mailing/BAO/queryDataset.xml');
// Check total rows without distinct
global $_REQUEST;
return array(array('member/detail'));
}
+ /**
+ * Get the membership and contribution reports to test.
+ *
+ * @return array
+ */
public static function getMembershipAndContributionReportTemplatesForGroupTests() {
$templates = array_merge(self::getContributionReportTemplates(), self::getMembershipReportTemplates());
foreach ($templates as $key => $value) {
);
$c3 = $this->contributionCreate($contribution3params);
// Now the soft contribution.
- $p = array(
+ $p = [
'contribution_id' => $c3,
'pcp_id' => $pcp2->id,
'contact_id' => $pcpOwnerContact2Id,
'amount' => 200.00,
'currency' => 'USD',
'soft_credit_type_id' => $pcp_soft_credit_type_id,
- );
+ ];
$this->callAPISuccess('contribution_soft', 'create', $p);
$template = 'contribute/pcp';
*/
public function testGetAddressColumns() {
$template = 'event/participantlisting';
- $rows = $this->callAPISuccess('report_template', 'getrows', [
+ $this->callAPISuccess('report_template', 'getrows', [
'report_id' => $template,
'fields' => [
'sort_name' => '1',
public function testGetFieldsCaching() {
$settingsMetadata = array();
Civi::cache('settings')->set('settingsMetadata_' . \CRM_Core_Config::domainID() . '_', $settingsMetadata);
- Civi::cache('settings')->set(\Civi\Core\SettingsMetadata::ALL, $settingsMetadata);
$result = $this->callAPISuccess('setting', 'getfields', array());
$this->assertArrayNotHasKey('customCSSURL', $result['values']);
$this->quickCleanup(array('civicrm_cache'));
protected $ids = array();
/**
* Tag id.
- * @var integer
+ *
+ * @var int
*/
protected $tag = array();
/**
* Test class for UFGroup API - civicrm_uf_*
+ *
* @todo Split UFGroup and UFJoin tests
*
* @package CiviCRM
* @group headless
*/
class api_v3_UFFieldTest extends CiviUnitTestCase {
+
/**
* ids from the uf_group_test.xml fixture
+ *
* @var int
*/
protected $_ufGroupId = 11;
+
protected $_ufFieldId;
+
protected $_contactId = 69;
- protected $_apiversion = 3;
+
protected $_params;
+
protected $_entity = 'uf_field';
/**
protected function setUp() {
parent::setUp();
$this->quickCleanup(
- array(
+ [
'civicrm_group',
'civicrm_contact',
'civicrm_uf_group',
'civicrm_uf_field',
'civicrm_uf_join',
'civicrm_uf_match',
- )
+ ]
);
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute(
- $this->_dbconn,
- $this->createFlatXMLDataSet(dirname(__FILE__) . '/dataset/uf_group_test.xml')
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/dataset/uf_group_test.xml');
- $this->callAPISuccess('uf_field', 'getfields', array('cache_clear' => 1));
+ $this->callAPISuccess('uf_field', 'getfields', ['cache_clear' => 1]);
- $this->_params = array(
+ $this->_params = [
'field_name' => 'phone',
'field_type' => 'Contact',
'visibility' => 'Public Pages and Listings',
'location_type_id' => 1,
'phone_type_id' => 1,
'uf_group_id' => $this->_ufGroupId,
- );
+ ];
}
/**
*/
public function tearDown() {
$this->quickCleanup(
- array(
+ [
'civicrm_group',
'civicrm_contact',
'civicrm_uf_group',
'civicrm_uf_join',
'civicrm_uf_match',
- )
+ ]
);
}
* Failure test for bad parameters.
*/
public function testCreateUFFieldWithWrongParams() {
- $this->callAPIFailure('uf_field', 'create', array('field_name' => 'test field'));
- $this->callAPIFailure('uf_field', 'create', array('label' => 'name-less field'));
+ $this->callAPIFailure('uf_field', 'create', ['field_name' => 'test field']);
+ $this->callAPIFailure('uf_field', 'create', ['label' => 'name-less field']);
}
/**
$params1 = $this->_params;
$ufField1 = $this->callAPISuccess('uf_field', 'create', $params1);
$this->assertEquals(1, $ufField1['values'][$ufField1['id']]['weight']);
- $this->assertDBQuery(1, 'SELECT weight FROM civicrm_uf_field WHERE id = %1', array(
- 1 => array($ufField1['id'], 'Int'),
- ));
+ $this->assertDBQuery(1, 'SELECT weight FROM civicrm_uf_field WHERE id = %1', [
+ 1 => [$ufField1['id'], 'Int'],
+ ]);
$params2 = $this->_params;
// needs to be a different field
$params2['location_type_id'] = 2;
$ufField2 = $this->callAPISuccess('uf_field', 'create', $params2);
$this->assertEquals(1, $ufField2['values'][$ufField2['id']]['weight']);
- $this->assertDBQuery(1, 'SELECT weight FROM civicrm_uf_field WHERE id = %1', array(
- 1 => array($ufField2['id'], 'Int'),
- ));
- $this->assertDBQuery(2, 'SELECT weight FROM civicrm_uf_field WHERE id = %1', array(
- 1 => array($ufField1['id'], 'Int'),
- ));
+ $this->assertDBQuery(1, 'SELECT weight FROM civicrm_uf_field WHERE id = %1', [
+ 1 => [$ufField2['id'], 'Int'],
+ ]);
+ $this->assertDBQuery(2, 'SELECT weight FROM civicrm_uf_field WHERE id = %1', [
+ 1 => [$ufField1['id'], 'Int'],
+ ]);
}
/**
*/
public function testDeleteUFField() {
$ufField = $this->callAPISuccess('uf_field', 'create', $this->_params);
- $params = array(
+ $params = [
'field_id' => $ufField['id'],
- );
+ ];
$this->callAPIAndDocument('uf_field', 'delete', $params, __FUNCTION__, __FILE__);
}
*/
public function testGetUFFieldSuccess() {
$this->callAPISuccess($this->_entity, 'create', $this->_params);
- $result = $this->callAPIAndDocument($this->_entity, 'get', array(), __FUNCTION__, __FILE__);
+ $result = $this->callAPIAndDocument($this->_entity, 'get', [], __FUNCTION__, __FILE__);
$this->getAndCheck($this->_params, $result['id'], $this->_entity);
}
* Create / updating field.
*/
public function testReplaceUFFields() {
- $baseFields = array();
- $baseFields[] = array(
+ $baseFields = [];
+ $baseFields[] = [
'field_name' => 'first_name',
'field_type' => 'Contact',
'visibility' => 'Public Pages and Listings',
'label' => 'Test First Name',
'is_searchable' => 1,
'is_active' => 1,
- );
- $baseFields[] = array(
+ ];
+ $baseFields[] = [
'field_name' => 'country',
'field_type' => 'Contact',
'visibility' => 'Public Pages and Listings',
'is_searchable' => 1,
'is_active' => 1,
'location_type_id' => 1,
- );
- $baseFields[] = array(
+ ];
+ $baseFields[] = [
'field_name' => 'phone',
'field_type' => 'Contact',
'visibility' => 'Public Pages and Listings',
'is_active' => 1,
'location_type_id' => 1,
'phone_type_id' => 1,
- );
+ ];
- $params = array(
+ $params = [
'uf_group_id' => $this->_ufGroupId,
'option.autoweight' => FALSE,
'values' => $baseFields,
'check_permissions' => TRUE,
- );
+ ];
$result = $this->callAPIAndDocument('uf_field', 'replace', $params, __FUNCTION__, __FILE__);
- $inputsByName = CRM_Utils_Array::index(array('field_name'), $params['values']);
+ $inputsByName = CRM_Utils_Array::index(['field_name'], $params['values']);
$this->assertEquals(count($params['values']), count($result['values']));
foreach ($result['values'] as $outUfField) {
$this->assertTrue(is_string($outUfField['field_name']));
*/
public function testProfilesWithoutACL() {
$this->createLoggedInUser();
- $baseFields[] = array(
+ $baseFields[] = [
'field_name' => 'first_name',
'field_type' => 'Contact',
'visibility' => 'Public Pages and Listings',
'label' => 'Test First Name',
'is_searchable' => 1,
'is_active' => 1,
- );
- CRM_Core_Config::singleton()->userPermissionClass->permissions = array('access CiviCRM');
- $params = array(
+ ];
+ CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviCRM'];
+ $params = [
'uf_group_id' => $this->_ufGroupId,
'option.autoweight' => FALSE,
'values' => $baseFields,
'check_permissions' => TRUE,
- );
+ ];
$this->_loggedInUser = CRM_Core_Session::singleton()->get('userID');
$this->callAPIFailure('uf_field', 'replace', $params);
}
*/
public function testACLPermissionforProfiles() {
$this->createLoggedInUser();
- $this->_permissionedGroup = $this->groupCreate(array(
+ $this->_permissionedGroup = $this->groupCreate([
'title' => 'Edit Profiles',
'is_active' => 1,
'name' => 'edit-profiles',
- ));
+ ]);
$this->setupACL(TRUE);
$this->testReplaceUFFields();
}
protected $_ufGroupId = 11;
protected $_ufFieldId;
protected $_contactId = 69;
- protected $_apiversion;
protected function setUp() {
parent::setUp();
'civicrm_uf_match',
)
);
- $this->_apiversion = 3;
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute(
- $this->_dbconn,
- $this->createFlatXMLDataSet(dirname(__FILE__) . '/dataset/uf_group_test.xml')
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/dataset/uf_group_test.xml');
}
public function tearDown() {
protected $_ufGroupId = 11;
protected $_ufFieldId;
protected $_contactId;
- protected $_apiversion;
protected $_params = array();
protected function setUp() {
parent::setUp();
- $this->_apiversion = 3;
$this->quickCleanup(
array(
'civicrm_group',
)
);
$this->_contactId = $this->individualCreate();
- $op = new PHPUnit_Extensions_Database_Operation_Insert();
- $op->execute(
- $this->_dbconn,
- $this->createFlatXMLDataSet(dirname(__FILE__) . '/dataset/uf_group_test.xml')
- );
+ $this->loadXMLDataSet(dirname(__FILE__) . '/dataset/uf_group_test.xml');
$this->_params = array(
'contact_id' => $this->_contactId,
/**
* Should CiviCRM log any modifications to this table in the civicrm_log table.
*
- * @var boolean
+ * @var bool
*/
protected static $_log = FALSE;
/**
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" ?>
-<!-- $Id: email_contact_17.xml 30511 2010-11-03 11:36:36Z shot $ -->
-<dataset>
- <table name="civicrm_email">
- <column>id</column>
- <column>contact_id</column>
- <column>location_type_id</column>
- <column>email</column>
- <column>is_primary</column>
- <column>is_billing</column>
- <column>on_hold</column>
- <column>is_bulkmail</column>
- <column>hold_date</column>
- <column>reset_date</column>
- <row>
- <value>100</value> <!-- id -->
- <value>17</value> <!-- contact_id -->
- <value>1</value> <!-- location_type_id -->
- <value>TestContact@example.com</value> <!-- email -->
- <value>1</value> <!-- is_primary -->
- <value>1</value> <!-- is_billing -->
- <value>0</value> <!-- on_hold -->
- <value>0</value> <!-- is_bulkmail -->
- <null /> <!-- hold_date -->
- <null /> <!-- reset_date -->
- </row>
- </table>
-</dataset>
*/
-
-require_once ('bin/cli.php');
+require_once('bin/cli.php');
require_once 'CRM/Core/BAO/Tag.php';
/**
die("you need to profide a csv file (1st column parent name, 2nd tag name");
}
$this->file = $this->args[0];
- $this->tags = array_flip(CRM_Core_PseudoConstant::get('CRM_Core_DAO_EntityTag', 'tag_id', array('onlyActive' => FALSE)));
+ $this->tags = array_flip(CRM_Core_PseudoConstant::get('CRM_Core_DAO_EntityTag', 'tag_id', ['onlyActive' => FALSE]));
}
//format expected: parent name, tag
echo "\n- exists already: " . $param['name'];
return;
}
- $key = array('tag' => '');
+ $key = ['tag' => ''];
if ($param['parent']) {
if (array_key_exists($param['parent'], $this->tags)) {
$param['parent_id'] = $this->tags[$param['parent']];
}
- else $param['parent_id'] = $this->addTag(array(parent => '', name => $param['parent']));
+ else {
+ $param['parent_id'] = $this->addTag([
+ parent => '',
+ name => $param['parent'],
+ ]);
+ }
$tag = CRM_Core_BAO_Tag::add($param, $key);
echo "\n" . $tag->id . ": create " . $param['name'] . " below " . $param['parent'];
}
require_once 'Console/Getopt.php';
$shortOptions = "n:p:k:pre";
- $longOptions = array('name=', 'pass=', 'key=', 'prefix=');
+ $longOptions = ['name=', 'pass=', 'key=', 'prefix='];
$getopt = new Console_Getopt();
$args = $getopt->readPHPArgv();
array_shift($args);
list($valid, $dontCare) = $getopt->getopt2($args, $shortOptions, $longOptions);
- $vars = array(
+ $vars = [
'name' => 'n',
'pass' => 'p',
'key' => 'k',
'prefix' => 'pre',
- );
+ ];
foreach ($vars as $var => $short) {
$$var = NULL;
$dao = &CRM_Core_DAO::executeQuery($query);
$updateQuery = "UPDATE civicrm_phone SET phone = %1 where id = %2";
- $params = array(1 => array('', 'String'),
- 2 => array(0, 'Integer'),
- );
+ $params = [
+ 1 => ['', 'String'],
+ 2 => [0, 'Integer'],
+ ];
$totalPhone = $validPhone = $nonPrefixedPhone = 0;
while ($dao->fetch()) {
$newPhone = processPhone($dao->phone, $prefix);
* Scrape all config options from the CKEditor documentation site.
*/
$content = file_get_contents('http://docs.ckeditor.com/?print=/api/CKEDITOR.config');
-$matches = $output = array();
+$matches = $output = [];
preg_match_all("#name expandable'>([^<]+)</a>\s?:\s?(.*)<span.*'short'>([\s\S]*?)</div>#", $content, $matches);
foreach ($matches[1] as $i => $name) {
- $output[] = array(
+ $output[] = [
'id' => $name,
'type' => strip_tags($matches[2][$i]),
- 'description' => str_replace(array("\n", '. ...'), array(' ', '.'), $matches[3][$i]),
- );
+ 'description' => str_replace(["\n", '. ...'], [' ', '.'], $matches[3][$i]),
+ ];
}
if ($output) {
$location = str_replace('tools/bin/scripts', '', __DIR__);
/**
* A PHP shell script
-
- On drupal if you have a symlink to your civi module, don't forget to create a new file - settings_location.php
- Enter the following code (substitute the actual location of your <drupal root>/sites directory)
- <?php
- define( 'CIVICRM_CONFDIR', '/var/www/drupal.6/sites' );
- ?>
-
+ *
+ * On drupal if you have a symlink to your civi module, don't forget to create a new file - settings_location.php
+ * Enter the following code (substitute the actual location of your <drupal root>/sites directory)
+ * <?php
+ * define( 'CIVICRM_CONFDIR', '/var/www/drupal.6/sites' );
+ * ?>
*/
$include_path = "../packages/:" . get_include_path();
set_include_path($include_path);
// set_include_path( $include_path );
require_once 'Console/Getopt.php';
$shortOptions = "s:u:p:k:";
- $longOptions = array('site=', 'user', 'pass');
+ $longOptions = ['site=', 'user', 'pass'];
$getopt = new Console_Getopt();
$args = $getopt->readPHPArgv();
array_shift($args);
list($valid, $this->args) = $getopt->getopt2($args, $shortOptions, $longOptions);
- $vars = array(
+ $vars = [
'user' => 'u',
'pass' => 'p',
'key' => 'k',
'site' => 's',
- );
+ ];
foreach ($vars as $var => $short) {
$$var = NULL;
function authenticate($user, $pass) {
session_start();
require_once 'CRM/Core/Config.php';
-
- $config = &CRM_Core_Config::singleton();
+ // Does calling this do anything here?
+ CRM_Core_Config::singleton();
// this does not return on failure
// require_once 'CRM/Utils/System.php';
$_SERVER['PHP_SELF'] = "/index.php";
$_SERVER['HTTP_HOST'] = $this->site;
$_REQUEST['key'] = $this->key;
- require_once ("./civicrm.config.php");
+ require_once("./civicrm.config.php");
}
}
define('CIVICRM_USE_MEMCACHE', 1);
-$config = &CRM_Core_Config::singleton();
-$cache = &CRM_Utils_Cache::singleton();
+$config = CRM_Core_Config::singleton();
+$cache = CRM_Utils_Cache::singleton();
-$cache->set('CRM_Core_Config' .CRM_Core_Config::domainID(), $config);
+$cache->set('CRM_Core_Config' . CRM_Core_Config::domainID(), $config);
CRM_Core_Error::debug('get', $cache->get('CRM_Core_Config' . CRM_Core_Config::domainID()));
echo "Changing version from $oldVersion to $newVersion...\n";
$verName = makeVerName($newVersion);
-$phpFile = initFile("CRM/Upgrade/Incremental/php/{$verName}.php", function() use ($verName) {
+$phpFile = initFile("CRM/Upgrade/Incremental/php/{$verName}.php", function () use ($verName) {
ob_start();
global $camelNumber;
$camelNumber = $verName;
return ob_get_clean();
});
-$sqlFile = initFile("CRM/Upgrade/Incremental/sql/{$newVersion}.mysql.tpl", function() use ($newVersion) {
+$sqlFile = initFile("CRM/Upgrade/Incremental/sql/{$newVersion}.mysql.tpl", function () use ($newVersion) {
return "{* file to handle db changes in $newVersion during upgrade *}\n";
});
<?php
-require_once '../civicrm.config.php'; require_once 'CRM/Core/Config.php';
+require_once '../civicrm.config.php';
+require_once 'CRM/Core/Config.php';
require_once 'CRM/Core/Error.php';
$config = CRM_Core_Config::singleton();
exit();
$xmlProcessor->run(104, 1, 'Substance Abuse', '15 Day Review');
-$params = array('clientID' => 104,
+$params = [
+ 'clientID' => 104,
'creatorID' => 108,
'standardTimeline' => 1,
'activityTypeName' => 'Open Case',
'dueDateTime' => time(),
'caseID' => 1,
-);
+];
require_once 'CRM/Case/XMLProcessor/Process.php';
$xmlProcessor = new CRM_Case_XMLProcessor_Process();
*/
-
/*
* This script recaches the display_name and sort_name values
*
function __construct() {
// you can run this program either from an apache command, or from the cli
if (php_sapi_name() == "cli") {
- require_once ("cli.php");
+ require_once("cli.php");
$cli = new civicrm_cli();
//if it doesn't die, it's authenticated
}
$prefixes = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'prefix_id');
$suffixes = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'suffix_id');
- $tokens = array();
+ $tokens = [];
CRM_Utils_Hook::tokens($tokens);
- $tokenFields = array();
+ $tokenFields = [];
foreach ($tokens as $category => $catTokens) {
foreach ($catTokens as $token) {
$tokenFields[] = $token;
while ($dao->fetch()) {
$contactID = $dao->id;
- $params = array('first_name' => $dao->first_name,
+ $params = [
+ 'first_name' => $dao->first_name,
'middle_name' => $dao->middle_name,
'last_name' => $dao->last_name,
'prefix_id' => $dao->prefix_id,
'suffix_id' => $dao->suffix_id,
- );
+ ];
$params['individual_prefix'] = $prefixes[$dao->prefix_id];
$params['individual_suffix'] = $suffixes[$dao->suffix_id];
* Implementation of hook_enable
*/
function civicrm_webtest_enable() {
- user_role_grant_permissions(1, array(
+ user_role_grant_permissions(1, [
'access CiviMail subscribe/unsubscribe pages',
'access all custom data',
'access uploaded files',
'profile create',
'profile view',
'register for events',
- ));
+ ]);
$roles = user_roles();
if (!in_array('civicrm_webtest_user', $roles)) {
$role->name = 'civicrm_webtest_user';
user_role_save($role);
$rid = $role->rid;
- } else {
+ }
+ else {
$rid = array_search('civicrm_webtest_user', $roles);
}
- user_role_grant_permissions($rid, array(
+ user_role_grant_permissions($rid, [
// FIXME: whoa, why do we bother with users if both need admin rights?
- 'access AJAX API',
+ 'access AJAX API',
// 'access all cases and activities',
- 'access all custom data',
- 'access CiviContribute',
- 'access CiviCRM',
- 'access CiviEvent',
- // 'access CiviGrant',
- 'access CiviMail',
- 'access CiviMail subscribe/unsubscribe pages',
- 'access CiviMember',
- 'access CiviPledge',
- 'access CiviReport',
- 'access Contact Dashboard',
- 'access contact reference fields',
- 'access deleted contacts',
- // 'access my cases and activities',
- 'access Report Criteria',
- 'save Report Criteria',
- 'access uploaded files',
- // 'add cases',
- 'add contacts',
- // 'administer CiviCase',
- 'administer CiviCRM',
- 'administer dedupe rules',
- 'administer Reports',
- 'administer reserved groups',
- 'administer reserved reports',
- 'administer reserved tags',
- 'administer Tagsets',
- 'delete activities',
- 'delete contacts',
- // 'delete in CiviCase',
- 'delete in CiviContribute',
- 'delete in CiviEvent',
- // 'delete in CiviGrant',
- 'delete in CiviMail',
- 'delete in CiviMember',
- 'delete in CiviPledge',
- 'edit all contacts',
- 'view my contact',
- 'edit my contact',
- 'edit all events',
- 'edit contributions',
- 'edit event participants',
- 'edit message templates',
- // 'edit grants',
- 'edit groups',
- 'edit memberships',
- 'edit pledges',
- 'import contacts',
- 'make online contributions',
- 'manage tags',
- 'merge duplicate contacts',
- 'profile create',
- 'profile edit',
- 'profile listings',
- 'profile listings and forms',
- 'profile view',
- 'register for events',
- 'translate CiviCRM',
- 'view all activities',
- 'view all contacts',
- 'view all notes',
- 'view event info',
- 'view event participants',
- 'view public CiviMail content',
- 'administer payment processors',
- 'create manual batch',
- 'edit own manual batches',
- 'edit all manual batches',
- 'view own manual batches',
- 'view all manual batches',
- 'delete own manual batches',
- 'delete all manual batches',
- 'export own manual batches',
- 'export all manual batches',
- ));
+ 'access all custom data',
+ 'access CiviContribute',
+ 'access CiviCRM',
+ 'access CiviEvent',
+ // 'access CiviGrant',
+ 'access CiviMail',
+ 'access CiviMail subscribe/unsubscribe pages',
+ 'access CiviMember',
+ 'access CiviPledge',
+ 'access CiviReport',
+ 'access Contact Dashboard',
+ 'access contact reference fields',
+ 'access deleted contacts',
+ // 'access my cases and activities',
+ 'access Report Criteria',
+ 'save Report Criteria',
+ 'access uploaded files',
+ // 'add cases',
+ 'add contacts',
+ // 'administer CiviCase',
+ 'administer CiviCRM',
+ 'administer dedupe rules',
+ 'administer Reports',
+ 'administer reserved groups',
+ 'administer reserved reports',
+ 'administer reserved tags',
+ 'administer Tagsets',
+ 'delete activities',
+ 'delete contacts',
+ // 'delete in CiviCase',
+ 'delete in CiviContribute',
+ 'delete in CiviEvent',
+ // 'delete in CiviGrant',
+ 'delete in CiviMail',
+ 'delete in CiviMember',
+ 'delete in CiviPledge',
+ 'edit all contacts',
+ 'view my contact',
+ 'edit my contact',
+ 'edit all events',
+ 'edit contributions',
+ 'edit event participants',
+ 'edit message templates',
+ // 'edit grants',
+ 'edit groups',
+ 'edit memberships',
+ 'edit pledges',
+ 'import contacts',
+ 'make online contributions',
+ 'manage tags',
+ 'merge duplicate contacts',
+ 'profile create',
+ 'profile edit',
+ 'profile listings',
+ 'profile listings and forms',
+ 'profile view',
+ 'register for events',
+ 'translate CiviCRM',
+ 'view all activities',
+ 'view all contacts',
+ 'view all notes',
+ 'view event info',
+ 'view event participants',
+ 'view public CiviMail content',
+ 'administer payment processors',
+ 'create manual batch',
+ 'edit own manual batches',
+ 'edit all manual batches',
+ 'view own manual batches',
+ 'view all manual batches',
+ 'delete own manual batches',
+ 'delete all manual batches',
+ 'export own manual batches',
+ 'export all manual batches',
+ ]);
}
*/
function _angularex_civix_civicrm_config(&$config = NULL) {
static $configured = FALSE;
- if ($configured) return;
+ if ($configured) {
+ return;
+ }
$configured = TRUE;
$template =& CRM_Core_Smarty::singleton();
- $extRoot = dirname( __FILE__ ) . DIRECTORY_SEPARATOR;
+ $extRoot = dirname(__FILE__) . DIRECTORY_SEPARATOR;
$extDir = $extRoot . 'templates';
- if ( is_array( $template->template_dir ) ) {
- array_unshift( $template->template_dir, $extDir );
- } else {
- $template->template_dir = array( $extDir, $template->template_dir );
+ if (is_array($template->template_dir)) {
+ array_unshift($template->template_dir, $extDir);
+ }
+ else {
+ $template->template_dir = [$extDir, $template->template_dir];
}
- $include_path = $extRoot . PATH_SEPARATOR . get_include_path( );
- set_include_path( $include_path );
+ $include_path = $extRoot . PATH_SEPARATOR . get_include_path();
+ set_include_path($include_path);
}
/**
function _angularex_civix_civicrm_enable() {
_angularex_civix_civicrm_config();
if ($upgrader = _angularex_civix_upgrader()) {
- if (is_callable(array($upgrader, 'onEnable'))) {
+ if (is_callable([$upgrader, 'onEnable'])) {
return $upgrader->onEnable();
}
}
function _angularex_civix_civicrm_disable() {
_angularex_civix_civicrm_config();
if ($upgrader = _angularex_civix_upgrader()) {
- if (is_callable(array($upgrader, 'onDisable'))) {
+ if (is_callable([$upgrader, 'onDisable'])) {
return $upgrader->onDisable();
}
}
* @return CRM_Angularex_Upgrader
*/
function _angularex_civix_upgrader() {
- if (!file_exists(__DIR__.'/CRM/Angularex/Upgrader.php')) {
+ if (!file_exists(__DIR__ . '/CRM/Angularex/Upgrader.php')) {
return NULL;
- } else {
+ }
+ else {
return CRM_Angularex_Upgrader_Base::instance();
}
}
* @return array(string)
*/
function _angularex_civix_find_files($dir, $pattern) {
- if (is_callable(array('CRM_Utils_File', 'findFiles'))) {
+ if (is_callable(['CRM_Utils_File', 'findFiles'])) {
return CRM_Utils_File::findFiles($dir, $pattern);
}
- $todos = array($dir);
- $result = array();
+ $todos = [$dir];
+ $result = [];
while (!empty($todos)) {
$subdir = array_shift($todos);
foreach (_angularex_civix_glob("$subdir/$pattern") as $match) {
while (FALSE !== ($entry = readdir($dh))) {
$path = $subdir . DIRECTORY_SEPARATOR . $entry;
if ($entry{0} == '.') {
- } elseif (is_dir($path)) {
+ }
+ elseif (is_dir($path)) {
$todos[] = $path;
}
}
CRM_Core_Error::fatal($errorMessage);
// throw new CRM_Core_Exception($errorMessage);
}
- $caseTypes[$name] = array(
+ $caseTypes[$name] = [
'module' => 'org.civicrm.angularex',
'name' => $name,
'file' => $file,
- );
+ ];
}
}
*/
function _angularex_civix_glob($pattern) {
$result = glob($pattern);
- return is_array($result) ? $result : array();
+ return is_array($result) ? $result : [];
}
/**
// If we are done going down the path, insert menu
if (empty($path)) {
- if (!$navId) $navId = CRM_Core_DAO::singleValueQuery("SELECT max(id) FROM civicrm_navigation");
- $navId ++;
- $menu[$navId] = array (
- 'attributes' => array_merge($item, array(
- 'label' => CRM_Utils_Array::value('name', $item),
- 'active' => 1,
- 'parentID' => $parentId,
- 'navID' => $navId,
- ))
- );
- return true;
- } else {
+ if (!$navId) {
+ $navId = CRM_Core_DAO::singleValueQuery("SELECT max(id) FROM civicrm_navigation");
+ }
+ $navId++;
+ $menu[$navId] = [
+ 'attributes' => array_merge($item, [
+ 'label' => CRM_Utils_Array::value('name', $item),
+ 'active' => 1,
+ 'parentID' => $parentId,
+ 'navID' => $navId,
+ ]),
+ ];
+ return TRUE;
+ }
+ else {
// Find an recurse into the next level down
- $found = false;
+ $found = FALSE;
$path = explode('/', $path);
$first = array_shift($path);
foreach ($menu as $key => &$entry) {
if ($entry['attributes']['name'] == $first) {
- if (!$entry['child']) $entry['child'] = array();
+ if (!$entry['child']) {
+ $entry['child'] = [];
+ }
$found = _angularex_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item, $key);
}
}
*/
function _angularex_civix_civicrm_alterSettingsFolders(&$metaDataFolders = NULL) {
static $configured = FALSE;
- if ($configured) return;
+ if ($configured) {
+ return;
+ }
$configured = TRUE;
$settingsDir = __DIR__ . DIRECTORY_SEPARATOR . 'settings';
- if(is_dir($settingsDir) && !in_array($settingsDir, $metaDataFolders)) {
+ if (is_dir($settingsDir) && !in_array($settingsDir, $metaDataFolders)) {
$metaDataFolders[] = $settingsDir;
}
}
* @param $angularModule
*/
function angularex_civicrm_angularModules(&$angularModule) {
- $angularModule['example'] = array(
+ $angularModule['example'] = [
'ext' => 'org.civicrm.angularex',
- 'js' => array('js/*.js'),
- 'partials' => array('partials'),
- );
+ 'js' => ['js/*.js'],
+ 'partials' => ['partials'],
+ ];
}
const QUEUE_NAME = 'demo-queue';
function run() {
- $queue = CRM_Queue_Service::singleton()->create(array(
+ $queue = CRM_Queue_Service::singleton()->create([
'type' => 'Sql',
'name' => self::QUEUE_NAME,
'reset' => TRUE,
- ));
+ ]);
for ($i = 0; $i < 5; $i++) {
$queue->createItem(new CRM_Queue_Task(
- array('CRM_Demoqueue_Page_DemoQueue', 'doMyWork'), // callback
- array($i, "Task $i takes $i second(s)"), // arguments
+ ['CRM_Demoqueue_Page_DemoQueue', 'doMyWork'], // callback
+ [$i, "Task $i takes $i second(s)"], // arguments
"Task $i" // title
));
if ($i == 2) {
$queue->createItem(new CRM_Queue_Task(
- array('CRM_Demoqueue_Page_DemoQueue', 'addMoreWork'), // callback
- array(), // arguments
+ ['CRM_Demoqueue_Page_DemoQueue', 'addMoreWork'], // callback
+ [], // arguments
"Add More Work" // title
));
}
}
- $runner = new CRM_Queue_Runner(array(
+ $runner = new CRM_Queue_Runner([
'title' => ts('Demo Queue Runner'),
'queue' => $queue,
- 'onEnd' => array('CRM_Demoqueue_Page_DemoQueue', 'onEnd'),
+ 'onEnd' => ['CRM_Demoqueue_Page_DemoQueue', 'onEnd'],
'onEndUrl' => CRM_Utils_System::url('civicrm/demo-queue/done'),
- ));
+ ]);
$runner->runAllViaWeb(); // does not return
}
sleep(1);
for ($i = 0; $i < 5; $i++) {
$ctx->queue->createItem(new CRM_Queue_Task(
- array('CRM_Demoqueue_Page_DemoQueue', 'doMyWork'), // callback
- array($i, "Extra task $i takes $i second(s)"), // arguments
+ ['CRM_Demoqueue_Page_DemoQueue', 'doMyWork'], // callback
+ [$i, "Extra task $i takes $i second(s)"], // arguments
"Extra Task $i" // title
- ), array(
+ ), [
'weight' => -1,
- ));
+ ]);
}
return TRUE; // success
}
* Class CRM_Demoqueue_Page_DemoQueueDone
*/
class CRM_Demoqueue_Page_DemoQueueDone extends CRM_Core_Page {
- function run() {
- // Example: Set the page-title dynamically; alternatively, declare a static title in xml/Menu/*.xml
- CRM_Utils_System::setTitle(ts('DemoQueueDone'));
- parent::run();
- }
+ function run() {
+ // Example: Set the page-title dynamically; alternatively, declare a static title in xml/Menu/*.xml
+ CRM_Utils_System::setTitle(ts('DemoQueueDone'));
+ parent::run();
+ }
}
function _demoqueue_civix_civicrm_config(&$config) {
$template =& CRM_Core_Smarty::singleton();
- $extRoot = dirname( __FILE__ ) . DIRECTORY_SEPARATOR;
+ $extRoot = dirname(__FILE__) . DIRECTORY_SEPARATOR;
$extDir = $extRoot . 'templates';
- if ( is_array( $template->template_dir ) ) {
- array_unshift( $template->template_dir, $extDir );
- } else {
- $template->template_dir = array( $extDir, $template->template_dir );
+ if (is_array($template->template_dir)) {
+ array_unshift($template->template_dir, $extDir);
+ }
+ else {
+ $template->template_dir = [$extDir, $template->template_dir];
}
- $include_path = $extRoot . PATH_SEPARATOR . get_include_path( );
- set_include_path( $include_path );
+ $include_path = $extRoot . PATH_SEPARATOR . get_include_path();
+ set_include_path($include_path);
}
/**
global $civicrm_root;
$realArgs = $argv;
$diffCmd = FALSE;
-$files = array();
+$files = [];
array_shift($realArgs);
foreach ($realArgs as $arg) {
echo "File \"$file\" appears to have consistency issues. Created $newFile.\n";
file_put_contents($newFile, $newMarkup);
if ($diffCmd) {
- passthru($diffCmd . ' ' . escapeshellarg($file) . ' ' . escapeshellarg($newFile));
+ passthru($diffCmd . ' ' . escapeshellarg($file) . ' ' . escapeshellarg($newFile));
}
}
-}
\ No newline at end of file
+}
<?php
-$options = getopt('bc:ht:'); if (isset($options['h'])) {
+$options = getopt('bc:ht:');
+if (isset($options['h'])) {
print ("\nUsage: php civimail-spooler.php [-bh] [-c <config>] [-t <period>]\n");
print (" -b Run this process continuously\n");
print (" -c Path to CiviCRM civicrm.settings.php\n");
require_once "CRM/Core/Config.php";
');
-$config = &CRM_Core_Config::singleton();
+$config = CRM_Core_Config::singleton();
/* Temporary permissioning hack for now */
* process into the background and provide init.d scripts */
-
CRM_Mailing_BAO_MailingJob::runJobs();
sleep($config->mailerPeriod);
}
function &splitContactIDs(&$contactIDs) {
// contactIDs could be a real large array, so we split it up into
// smaller chunks and then general xml for each chunk
- $chunks = array();
- $current = 0;
- $chunks[$current] = array();
- $count = 0;
+ $chunks = [];
+ $current = 0;
+ $chunks[$current] = [];
+ $count = 0;
foreach ($contactIDs as $cid) {
$chunks[$current][] = $cid;
if ($count == CHUNK_SIZE) {
$current++;
- $chunks[$current] = array();
+ $chunks[$current] = [];
$count = 0;
}
}
foreach ($tokens as $n => $v) {
if (is_array($v)) {
- $str = array();
+ $str = [];
foreach ($v as $el) {
$el = escapeJsonString($el);
$str[] = "\"$el\"";
* @return mixed
*/
function escapeJsonString($value) {
- $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c");
- $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b");
+ $escapers = ["\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c"];
+ $replacements = ["\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b"];
return str_replace($escapers, $replacements, $value);
}
* @return array
*/
function getValues(&$contactIDs, &$values) {
- $values = array();
+ $values = [];
foreach ($contactIDs as $cid) {
- $values[$cid] = array();
+ $values[$cid] = [];
}
getContactInfo($contactIDs, $values);
* @param $values
*/
function getContactInfo(&$contactIDs, &$values) {
- $fields = array('sort_name' => NULL,
+ $fields = [
+ 'sort_name' => NULL,
'display_name' => NULL,
'contact_type' => NULL,
'legal_identifier' => NULL,
'organization_name' => NULL,
'legal_name' => NULL,
'job_title' => NULL,
- );
+ ];
getTableInfo($contactIDs, $values, 'civicrm_contact', $fields, 'id');
}
WHERE c.id IN ( $ids )
";
- $fields = array('location_type', 'street_address', 'supplemental_address_1',
- 'supplemental_address_2', 'supplemental_address_3', 'city', 'postal_code',
- 'state', 'country',
- );
+ $fields = [
+ 'location_type',
+ 'street_address',
+ 'supplemental_address_1',
+ 'supplemental_address_2',
+ 'supplemental_address_3',
+ 'city',
+ 'postal_code',
+ 'state',
+ 'country',
+ ];
$dao = &CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
$address = '';
else {
if (!is_array($values[$contactID][$name])) {
$save = $values[$contactID][$name];
- $values[$contactID][$name] = array();
+ $values[$contactID][$name] = [];
$values[$contactID][$name][] = $save;
}
$values[$contactID][$name][] = $value;
$chunks = &splitContactIDs($contactIDs);
foreach ($chunks as $chunk) {
- $values = array();
+ $values = [];
getValues($chunk, $values);
$xml = &generateSolrJSON($values);
echo $xml;
}
}
-$config = &CRM_Core_Config::singleton();
+$config = CRM_Core_Config::singleton();
$config->userFramework = 'Soap';
$config->userFrameworkClass = 'CRM_Utils_System_Soap';
$config->userHookClass = 'CRM_Utils_Hook_Soap';
$dao = &CRM_Core_DAO::executeQuery($sql);
-$contactIDs = array();
+$contactIDs = [];
while ($dao->fetch()) {
$contactIDs[] = $dao->id;
}
function &splitContactIDs(&$contactIDs) {
// contactIDs could be a real large array, so we split it up into
// smaller chunks and then general xml for each chunk
- $chunks = array();
- $current = 0;
- $chunks[$current] = array();
- $count = 0;
+ $chunks = [];
+ $current = 0;
+ $chunks[$current] = [];
+ $count = 0;
foreach ($contactIDs as $cid) {
$chunks[$current][] = $cid;
if ($count == CHUNK_SIZE) {
$current++;
- $chunks[$current] = array();
+ $chunks[$current] = [];
$count = 0;
}
}
* @return array
*/
function getValues(&$contactIDs, &$values) {
- $values = array();
+ $values = [];
foreach ($contactIDs as $cid) {
- $values[$cid] = array();
+ $values[$cid] = [];
}
getContactInfo($contactIDs, $values);
if (!$name) {
$name = $fld;
}
- $values[$dao->contact_id][] = array($name, $dao->$fld);
+ $values[$dao->contact_id][] = [$name, $dao->$fld];
}
}
}
* @param $values
*/
function getContactInfo(&$contactIDs, &$values) {
- $fields = array('sort_name' => NULL,
+ $fields = [
+ 'sort_name' => NULL,
'display_name' => NULL,
'contact_type' => NULL,
'legal_identifier' => NULL,
'external_identifier' => NULL,
'source' => 'contact_source',
- );
+ ];
getTableInfo($contactIDs, $values, 'civicrm_contact', $fields, 'id');
- $fields = array('first_name' => NULL,
+ $fields = [
+ 'first_name' => NULL,
'last_name' => NULL,
'middle_name' => NULL,
'job_title' => NULL,
- );
+ ];
getTableInfo($contactIDs, $values, 'civicrm_individual', $fields, 'contact_id');
- $fields = array('household_name' => NULL);
+ $fields = ['household_name' => NULL];
getTableInfo($contactIDs, $values, 'civicrm_household', $fields, 'contact_id');
- $fields = array('organization_name' => NULL,
+ $fields = [
+ 'organization_name' => NULL,
'legal_name' => NULL,
'sic_code' => NULL,
- );
+ ];
getTableInfo($contactIDs, $values, 'civicrm_organization', $fields, 'contact_id');
- $fields = array('note' => 'note_body',
+ $fields = [
+ 'note' => 'note_body',
'subject' => 'note_subject',
- );
+ ];
getTableInfo($contactIDs, $values, 'civicrm_note', $fields, 'entity_id', "entity_table = 'civicrm_contact'");
}
AND l.entity_id IN ( $ids )
";
- $fields = array('location_name', 'street_address', 'supplemental_address_1',
- 'supplemental_address_2', 'supplemental_address_3', 'city', 'postal_code', 'county', 'state',
- 'country', 'email', 'phone', 'im',
- );
+ $fields = [
+ 'location_name',
+ 'street_address',
+ 'supplemental_address_1',
+ 'supplemental_address_2',
+ 'supplemental_address_3',
+ 'city',
+ 'postal_code',
+ 'county',
+ 'state',
+ 'country',
+ 'email',
+ 'phone',
+ 'im',
+ ];
$dao = CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
foreach ($fields as $fld) {
if (empty($dao->$fld)) {
continue;
}
- $values[$dao->contact_id][] = array($fld, $dao->$fld);
+ $values[$dao->contact_id][] = [$fld, $dao->$fld];
}
}
}
$chunks = &splitContactIDs($contactIDs);
foreach ($chunks as $chunk) {
- $values = array();
+ $values = [];
getValues($chunk, $values);
$xml = &generateSolrXML($values);
echo $xml;
}
}
-$config = &CRM_Core_Config::singleton();
+$config = CRM_Core_Config::singleton();
$config->userFramework = 'Soap';
$config->userFrameworkClass = 'CRM_Utils_System_Soap';
$config->userHookClass = 'CRM_Utils_Hook_Soap';
EOT;
$dao = CRM_Core_DAO::executeQuery($sql);
-$contactIDs = array();
+$contactIDs = [];
while ($dao->fetch()) {
$contactIDs[] = $dao->id;
}
function &splitContactIDs(&$contactIDs) {
// contactIDs could be a real large array, so we split it up into
// smaller chunks and then general xml for each chunk
- $chunks = array();
- $current = 0;
- $chunks[$current] = array();
- $count = 0;
+ $chunks = [];
+ $current = 0;
+ $chunks[$current] = [];
+ $count = 0;
foreach ($contactIDs as $k => $v) {
$chunks[$current][$k] = $v;
if ($count == CHUNK_SIZE) {
$current++;
- $chunks[$current] = array();
+ $chunks[$current] = [];
$count = 0;
}
}
* @return array
*/
function getValues(&$contactIDs, &$values, &$allContactIDs, &$addditionalContactIDs) {
- $values = array();
+ $values = [];
getContactInfo($contactIDs, $values);
getAddressInfo($contactIDs, $values);
* @param bool $flat
*/
function getTableInfo(&$contactIDs, &$values, $tableName, &$fields,
- $whereField, $additionalWhereCond = NULL,
- $flat = FALSE
+ $whereField, $additionalWhereCond = NULL,
+ $flat = FALSE
) {
$selectString = implode(',', array_keys($fields));
$idString = implode(',', $contactIDs);
$dao = &CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
- $contact = array();
+ $contact = [];
foreach ($fields as $fld => $name) {
$name = $name ? $name : $fld;
if (empty($dao->$fld)) {
* @param $values
*/
function getContactInfo(&$contactIDs, &$values) {
- $fields = array('id' => NULL,
+ $fields = [
+ 'id' => NULL,
'sort_name' => NULL,
'display_name' => NULL,
'contact_type' => NULL,
'organization_name' => NULL,
'legal_name' => NULL,
'job_title' => NULL,
- );
+ ];
getTableInfo($contactIDs, $values, 'civicrm_contact', $fields, 'id', NULL, TRUE);
}
$dao = &CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
- $note = array('id' => $dao->id,
+ $note = [
+ 'id' => $dao->id,
'contact_id' => $dao->contact_id,
'subject' => empty($dao->subject) ? NULL : $dao->subject,
'note' => empty($dao->note) ? NULL : $dao->note,
- );
+ ];
appendValue($values, $dao->id, 'note', $note);
}
$dao = &CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
- $phone = array('id' => $dao->id,
+ $phone = [
+ 'id' => $dao->id,
'contact_id' => $dao->contact_id,
'location_type' => empty($dao->location_type) ? NULL : $dao->location_type,
'phone' => $dao->phone,
'phone_type' => empty($dao->phone_type) ? NULL : $dao->phone_type,
- );
+ ];
appendValue($values, $dao->id, 'phone', $phone);
}
$dao = &CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
- $email = array('id' => $dao->id,
+ $email = [
+ 'id' => $dao->id,
'contact_id' => $dao->contact_id,
'location_type' => empty($dao->location_type) ? NULL : $dao->location_type,
'email' => $dao->email,
- );
+ ];
appendValue($values, $dao->id, 'email', $email);
}
$dao->free();
WHERE c.id IN ( $ids )
";
- $fields = array('id', 'contact_id',
- 'location_type', 'street_address', 'supplemental_address_1',
- 'supplemental_address_2', 'supplemental_address_3', 'city', 'postal_code',
- 'state', 'country',
- );
+ $fields = [
+ 'id',
+ 'contact_id',
+ 'location_type',
+ 'street_address',
+ 'supplemental_address_1',
+ 'supplemental_address_2',
+ 'supplemental_address_3',
+ 'city',
+ 'postal_code',
+ 'state',
+ 'country',
+ ];
$dao = &CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
- $address = array();
+ $address = [];
foreach ($fields as $fld) {
if (empty($dao->$fld)) {
$address[$fld] = NULL;
*/
function getRelationshipInfo(&$contactIDs, &$values, &$allContactIDs, &$additionalContacts) {
// handle relationships only once
- static $_relationshipsHandled = array();
+ static $_relationshipsHandled = [];
$ids = implode(',', $contactIDs);
";
$relationshipFields = getDBFields('CRM_Contact_DAO_Relationship');
- $fields = array_keys($relationshipFields);
- $dao = &CRM_Core_DAO::executeQuery($sql);
+ $fields = array_keys($relationshipFields);
+ $dao = &CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
if (isset($_relationshipsHandled[$dao->id])) {
continue;
}
$_relationshipsHandled[$dao->id] = $dao->id;
- $relationship = array();
+ $relationship = [];
foreach ($fields as $fld) {
if (empty($dao->$fld)) {
$relationship[$fld] = NULL;
}
appendValue($values, $dao->id, 'relationship', $relationship);
- addAdditionalContacts(array($dao->contact_id_a,
- $dao->contact_id_b,
- ),
+ addAdditionalContacts([
+ $dao->contact_id_a,
+ $dao->contact_id_b,
+ ],
$allContactIDs, $additionalContacts
);
}
* @param $additionalContacts
*/
function getActivityInfo(&$contactIDs, &$values, &$allContactIDs, &$additionalContacts) {
- static $_activitiesHandled = array();
+ static $_activitiesHandled = [];
$ids = implode(',', $contactIDs);
$activityFields = &getDBFields('CRM_Activity_DAO_Activity');
$fields = array_keys($activityFields);
- $activityIDs = array();
+ $activityIDs = [];
$dao = &CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
if (isset($_activitiesHandled[$dao->id])) {
$_activitiesHandled[$dao->id] = $dao->id;
$activityIDs[] = $dao->id;
- $activity = array();
+ $activity = [];
foreach ($fields as $fld) {
if (empty($dao->$fld)) {
$activity[$fld] = NULL;
}
appendValue($values, $dao->id, 'activity', $activity);
- addAdditionalContacts(array($dao->source_contact_id),
+ addAdditionalContacts([$dao->source_contact_id],
$allContactIDs, $additionalContacts
);
}
$activityIDString = implode(",", $activityIDs);
// now get all assignee contact ids and target contact ids for this activity
- $sql = "SELECT * FROM civicrm_activity_assignment WHERE activity_id IN ($activityIDString)";
- $aaDAO = &CRM_Core_DAO::executeQuery($sql);
- $activityContacts = array();
+ $sql = "SELECT * FROM civicrm_activity_assignment WHERE activity_id IN ($activityIDString)";
+ $aaDAO = &CRM_Core_DAO::executeQuery($sql);
+ $activityContacts = [];
while ($aaDAO->fetch()) {
- $activityAssignee = array('id' => $aaDAO->id,
+ $activityAssignee = [
+ 'id' => $aaDAO->id,
'assignee_contact_id' => $aaDAO->assignee_contact_id,
'activity_id' => $aaDAO->activity_id,
- );
+ ];
appendValue($values, $aaDAO->id, 'activity_assignment', $activityAssignee);
$activityContacts[] = $aaDAO->assignee_contact_id;
}
$sql = "SELECT * FROM civicrm_activity_target WHERE activity_id IN ($activityIDString)";
$atDAO = &CRM_Core_DAO::executeQuery($sql);
while ($atDAO->fetch()) {
- $activityTarget = array('id' => $atDAO->id,
+ $activityTarget = [
+ 'id' => $atDAO->id,
'target_contact_id' => $atDAO->target_contact_id,
'activity_id' => $atDAO->activity_id,
- );
+ ];
appendValue($values, $atDAO->id, 'activity_target', $activityTarget);
$activityContacts[] = $atDAO->target_contact_id;
}
}
if (!isset($values[$name])) {
- $values[$name] = array();
+ $values[$name] = [];
$values[$name][] = array_keys($value);
}
$values[$name][] = array_values($value);
* @return mixed
*/
function getDBFields($daoName) {
- static $_fieldsRetrieved = array();
+ static $_fieldsRetrieved = [];
if (!isset($_fieldsRetrieved[$daoName])) {
- $_fieldsRetrieved[$daoName] = array();
+ $_fieldsRetrieved[$daoName] = [];
$daoFile = str_replace('_',
- DIRECTORY_SEPARATOR,
- $daoName
- ) . '.php';
- include_once ($daoFile);
+ DIRECTORY_SEPARATOR,
+ $daoName
+ ) . '.php';
+ include_once($daoFile);
$daoFields = &$daoName::fields();
require_once 'CRM/Utils/Array.php';
foreach ($daoFields as $key => & $value) {
- $_fieldsRetrieved[$daoName][$value['name']] = array('uniqueName' => $key,
+ $_fieldsRetrieved[$daoName][$value['name']] = [
+ 'uniqueName' => $key,
'type' => $value['type'],
'title' => CRM_Utils_Array::value('title', $value, NULL),
- );
+ ];
}
}
return $_fieldsRetrieved[$daoName];
function run(&$values, &$contactIDs, &$allContactIDs) {
$chunks = &splitContactIDs($contactIDs);
- $additionalContactIDs = array();
+ $additionalContactIDs = [];
foreach ($chunks as $chunk) {
getValues($chunk, $values, $allContactIDs, $additionalContactIDs);
}
}
-$config = &CRM_Core_Config::singleton();
+$config = CRM_Core_Config::singleton();
$config->userFramework = 'Soap';
$config->userFrameworkClass = 'CRM_Utils_System_Soap';
$config->userHookClass = 'CRM_Utils_Hook_Soap';
$dao = &CRM_Core_DAO::executeQuery($sql);
-$contactIDs = array();
+$contactIDs = [];
while ($dao->fetch()) {
$contactIDs[$dao->id] = $dao->id;
}
-$values = array();
+$values = [];
run($values, $contactIDs, $contactIDs);
$json = json_encode($values);
// FIXME: Make this a proper app with unit-tests
-$civi_pkgs_dir = dirname( dirname( dirname( __FILE__ ) ) ) . DIRECTORY_SEPARATOR . 'packages';
+$civi_pkgs_dir = dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'packages';
require_once $civi_pkgs_dir . DIRECTORY_SEPARATOR . 'simple_html_dom.php';
exit(main($argv));
$files = $argv;
array_shift($files); // skip program name
foreach ($files as $file) {
- check_tpl($file, function($code, $message) use ($file) {
+ check_tpl($file, function ($code, $message) use ($file) {
printf("[%s] %s\n", $file, $message);
});
}
<import>true</import>
<headerPattern>/legal\s?id/i</headerPattern>
<dataPattern>/\w+?\d{5,}/</dataPattern>
- <comment>May be used for SSN, EIN/TIN, Household ID (census) or other applicable unique legal/government ID.
- </comment>
+ <comment>May be used for SSN, EIN/TIN, Household ID (census) or other applicable unique legal/government ID.</comment>
<add>1.1</add>
<html>
<type>Text</type>
<length>32</length>
<comment>API Key for validating requests related to this contact.</comment>
<add>2.2</add>
+ <protected>true</protected>
</field>
<index>
<name>index_api_key</name>
<title>Contact Subtype A</title>
<type>varchar</type>
<length>64</length>
- <comment>If defined, contact_sub_type_a in a relationship of this type must be a specific contact_sub_type.
- </comment>
+ <comment>If defined, contact_sub_type_a in a relationship of this type must be a specific contact_sub_type.</comment>
<add>3.1</add>
<html>
<type>Select</type>
<title>Contact Subtype B</title>
<type>varchar</type>
<length>64</length>
- <comment>If defined, contact_sub_type_b in a relationship of this type must be a specific contact_sub_type.
- </comment>
+ <comment>If defined, contact_sub_type_b in a relationship of this type must be a specific contact_sub_type.</comment>
<add>3.1</add>
<html>
<type>Select</type>
<title>Relationship Type is Active</title>
<type>boolean</type>
<default>1</default>
- <comment>Is this relationship type currently active (i.e. can be used when creating or editing relationships)?
- </comment>
+ <comment>Is this relationship type currently active (i.e. can be used when creating or editing relationships)?</comment>
<html>
<type>CheckBox</type>
</html>
<dataPattern>/^(\d{1,5}( [0-9A-Za-z]+)+)$|^(P\.?O\.\? Box \d{1,5})$/i</dataPattern>
<comment>Concatenation of all routable street address components (prefix, street number, street name, suffix, unit
number OR P.O. Box). Apps should be able to determine physical location with this data (for mapping, mail
- delivery, etc.).
- </comment>
+ delivery, etc.).</comment>
<add>1.1</add>
<html>
<type>Text</type>
<type>varchar</type>
<length>8</length>
<export>true</export>
- <comment>Non-numeric portion of address number on the street, e.g. For 112A Main St, the street_number_suffix = A
- </comment>
+ <comment>Non-numeric portion of address number on the street, e.g. For 112A Main St, the street_number_suffix = A</comment>
<add>1.1</add>
<html>
<type>Text</type>
<title>Namespace reserved for component.</title>
<type>varchar</type>
<length>128</length>
- <comment>Path to components main directory in a form of a class
- namespace.
- </comment>
+ <comment>Path to components main directory in a form of a class namespace.</comment>
<add>2.0</add>
</field>
</table>
<type>int unsigned</type>
<default>1</default>
<comment>Used to group mapping_field records into related sets (e.g. for criteria sets in search builder
- mappings).
- </comment>
+ mappings).</comment>
<add>1.5</add>
</field>
<field>
<import>true</import>
<serialize>SEPARATOR_BOOKEND</serialize>
<comment>Populate with the label (text) associated with a fee level for paid events with multiple levels. Note that
- we store the label value and not the key
- </comment>
+ we store the label value and not the key</comment>
<add>1.7</add>
</field>
<field>
{foreach from=$table.fields item=field}
/**
{if $field.comment}
- * {$field.comment}
+ * {$field.comment|regex_replace:"/\n[ ]*/":"\n* "}
*
{/if}
* @var {$field.phpType}
{if $field.rule}
'rule' => '{$field.rule}',
{/if} {* field.rule *}
+{if $field.protected}
+ 'protected' => '{$field.protected}',
+{/if}
{if $field.default || $field.default === '0'}
'default' => '{if ($field.default[0]=="'" or $field.default[0]=='"')}{$field.default|substring:1:-1}{else}{$field.default}{/if}',
{/if} {* field.default *}
),
{/if}
{if $field.pseudoconstant}
- 'pseudoconstant' => {$field.pseudoconstant|@print_array}
+ 'pseudoconstant' => {$field.pseudoconstant|@print_array},
{/if} {* field.pseudoconstant *} ),
{/foreach} {* table.fields *}
);
<?xml version="1.0" encoding="iso-8859-1" ?>
<version>
- <version_no>5.14.beta1</version_no>
+ <version_no>5.15.alpha1</version_no>
</version>