CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2022-06-11T14:55:17Zhttps://lab.civicrm.org/dev/core/-/issues/3599Test mailings create new contacts even when "Add Contacts" permission is not ...2022-06-11T14:55:17ZJonGoldTest mailings create new contacts even when "Add Contacts" permission is not present.### Overview
When sending a test mail, CiviCRM will check if the email matches an existing contact in the database. If it does, it uses that contact ID; if not, it creates a contact. However, it creates a contact without regard for wh...### Overview
When sending a test mail, CiviCRM will check if the email matches an existing contact in the database. If it does, it uses that contact ID; if not, it creates a contact. However, it creates a contact without regard for whether a user has permission to add contacts.
### Steps to replicate
* Create a user that does not have the "Add Contacts" permission.
* With that user, create a new mailing (traditional or Mosaico, doesn't matter).
* Send a test ("draft") mail to an email address that doesn't exist in the database.
### Expected behavior
No new contact is created.
### Actual behavior
A new contact is created.5.29.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3385Event cart hidden/enabled in buildkit 5.29 RC2022-04-22T16:22:30ZAndie HuntEvent cart hidden/enabled in buildkit 5.29 RCWhen viewing an event info page, there's a "Add to Cart" button. It looks like the eventcart extension is enabled (looking via the API) but it is not visible through the UI.
I don't know if this is for buildkit only or something that w...When viewing an event info page, there's a "Add to Cart" button. It looks like the eventcart extension is enabled (looking via the API) but it is not visible through the UI.
I don't know if this is for buildkit only or something that will take effect for everyone when they download the tarball, but it shouldn't be the default for buildkit to enable the event cart.5.29.0https://lab.civicrm.org/dev/core/-/issues/3379Can't meaningfully disable self-service transfer/cancellation once enabled2022-04-22T16:22:15ZJonGoldCan't meaningfully disable self-service transfer/cancellation once enabledTo replicate:
* Create an event. Enable self-service transfer/cancellation.
* Register a participant, receive the email to the self-service update page.
* Disable self-service transfer/cancellation.
* Click the self-service link. Note t...To replicate:
* Create an event. Enable self-service transfer/cancellation.
* Register a participant, receive the email to the self-service update page.
* Disable self-service transfer/cancellation.
* Click the self-service link. Note that you can still load the self-service page even though self-service has been disabled.
This is an easy fix, but given the many self-service issues, I think a refactor is in order first, so I'll submit that before proceeding.5.29.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3350Event registration form has inconsistent labelling2022-04-22T16:21:16ZJonGoldEvent registration form has inconsistent labellingFollowing on from core#1613 - [PR 16651](https://github.com/civicrm/civicrm-core/pull/16651) updated the button text but nor corresponding instructions.
Hat tip to Bryan for discovering this and [posting on Stack Exchange](https://civic...Following on from core#1613 - [PR 16651](https://github.com/civicrm/civicrm-core/pull/16651) updated the button text but nor corresponding instructions.
Hat tip to Bryan for discovering this and [posting on Stack Exchange](https://civicrm.stackexchange.com/questions/35964/misleading-instructions-in-civievent-registration-template-for-multiple-particip).
https://github.com/civicrm/civicrm-core/pull/176955.29.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3334Option to update expired memberships as part of the job.process_membership2022-04-22T16:17:32ZMichael McAndrewOption to update expired memberships as part of the job.process_membershipIt looks like *expired* memberships are excluded from job.process_membership for performance reasons.
There are (edge) cases where this is problematic. For example, lets say that I increased the grace membership period from 3 to 6 month...It looks like *expired* memberships are excluded from job.process_membership for performance reasons.
There are (edge) cases where this is problematic. For example, lets say that I increased the grace membership period from 3 to 6 months. People whose membership ended 4 months ago will not have their membership status updated from expired to grace.
The other three membership statuses that are excluded from membership updates are 'Deceased', 'Pending' and 'Cancelled'.
Not sure if there is a use case for also re-calculating these but interested in people's thoughts.
Proposed solution: add an option to process normally excluded membership statuses (maybe just expired) from job.process_membership.5.29.0https://lab.civicrm.org/dev/core/-/issues/3283Contribution Summary Report: The "general total" row does not take the curren...2022-04-22T15:53:43ZdmunioContribution Summary Report: The "general total" row does not take the currency filteredWhen the contribution summary report is used by filtering for a currency other than the site's default currency, the "grand total" row shows the sign of the default currency instead of the filtered currency.
![image](/uploads/e65afcbdde...When the contribution summary report is used by filtering for a currency other than the site's default currency, the "grand total" row shows the sign of the default currency instead of the filtered currency.
![image](/uploads/e65afcbdde35490ab7602d21161c13f0/image.png)
This issue is resolved by changing the code of the following line: https://github.com/civicrm/civicrm-core/blob/2235525e475edd2573a1ad71897cd42d2ea3cdfd/templates/CRM/Report/Form/Layout/Table.tpl#L139
By the following code:
```php
{if $currencyColumn}
{$grandStat.$field|crmMoney:$row.$currencyColumn}
{else}
{$grandStat.$field|crmMoney}
{/if}
```5.29.0https://lab.civicrm.org/dev/core/-/issues/3260Icon in status message after saving a civireport is misleading2022-04-22T15:53:01ZDaveDIcon in status message after saving a civireport is misleadingIt's the 'alert' icon instead of success.
1. Go to any CiviReport.
1. From the Actions dropdown choose Save.
1. Icon indicates a warning but it's all good.
Also for "save a copy".It's the 'alert' icon instead of success.
1. Go to any CiviReport.
1. From the Actions dropdown choose Save.
1. Icon indicates a warning but it's all good.
Also for "save a copy".5.29.0https://lab.civicrm.org/dev/core/-/issues/2705CiviCRM not wrapping long lines in emails2021-07-28T01:08:46ZSandor SemseyCiviCRM not wrapping long lines in emailsOverview
----------------------------------------
CiviMail (and FlexMailer) does not break lines in emails. The SMTP protocol only allows 1000 chars per line. So on a mailserver this wrapping is enforced and it can cause DKIM signatures ...Overview
----------------------------------------
CiviMail (and FlexMailer) does not break lines in emails. The SMTP protocol only allows 1000 chars per line. So on a mailserver this wrapping is enforced and it can cause DKIM signatures to get invalid.
Further [details](https://civicrm.stackexchange.com/questions/39172/line-wrapping-breaking-lines-longer-than-998-characters-in-civicrm-civimail).
Reproduction steps
----------------------------------------
1. Go to **Mailings >> New Mailing**
1. Create Email with a line with more than 1000 chars.
1. Send Email (you can redirect to DataBase)
1. Inspect sent email
Current behaviour
----------------------------------------
Lines are not wrapped.
Expected behaviour
----------------------------------------
Lines should be hard-wrapped (inserting a line break) after a specified number of characters (I would suggest a default for 990).
Comments
----------------------------------------
If this gets confirmed, we are to happy to jump in and implement this functionality.5.29.0Sandor SemseySandor Semseyhttps://lab.civicrm.org/dev/core/-/issues/1982Case open: doesn't respect case roles "creator" param if unset2020-09-01T22:57:35ZlcdwebCase open: doesn't respect case roles "creator" param if unsetto replicate:
1. create a new case type
2. in the list of case roles, uncheck the "assign to creator" checkbox for the default case coordinator role
3. create a new case on a contact record
**expected result:** no case roles created
*...to replicate:
1. create a new case type
2. in the list of case roles, uncheck the "assign to creator" checkbox for the default case coordinator role
3. create a new case on a contact record
**expected result:** no case roles created
**actual result:** case coordinator role is created and assigned to the logged in user5.29.0lcdweblcdwebhttps://lab.civicrm.org/dev/core/-/issues/1963Subgroup expandy triangle turns into unknown icon when clicked2020-08-22T08:16:30ZDaveDSubgroup expandy triangle turns into unknown icon when clickedOn the Contacts - Manage Groups page, if you have subgroups and you click the triangle to expand to see the subgroups, the icon becomes an unknown icon.
![1](/uploads/b258e202209abbbb9695b32ffba3a974/1.png)
**AFTER CLICKING:**
![2](/...On the Contacts - Manage Groups page, if you have subgroups and you click the triangle to expand to see the subgroups, the icon becomes an unknown icon.
![1](/uploads/b258e202209abbbb9695b32ffba3a974/1.png)
**AFTER CLICKING:**
![2](/uploads/c5e8f86ac1c7df3f958b04a58be2349c/2.png)
It's coming from [civicrm.css](https://github.com/civicrm/civicrm-core/blob/c3852f1c14a206e0218b9502f4d35110fb47e745/css/civicrm.css#L2278) and was part of https://github.com/civicrm/civicrm-core/pull/17296.
I think it's missing `font-family: "FontAwesome";`5.29.0https://lab.civicrm.org/dev/core/-/issues/1932Upgrade fails for 4.6 => 5.29 during status-check2020-08-06T22:56:32ZtottenUpgrade fails for 4.6 => 5.29 during status-checkOverview
----------------------------------------
New upgrade error when going from 4.6=>5.29.
Reproduction steps
----------------------------------------
1. Install Civi 4.6 from git. (Requires temporarily setting up PHP 5.6.)
1. Swit...Overview
----------------------------------------
New upgrade error when going from 4.6=>5.29.
Reproduction steps
----------------------------------------
1. Install Civi 4.6 from git. (Requires temporarily setting up PHP 5.6.)
1. Switch to Civi 5.29 from git. (Requires switching back to PHP 7.1+.)
1. *Note: The codepath depends on the status-check timer. It arose organically for me, but to reproduce reliably, you may need to coerece `CRM_Utils_Check::CHECK_TIMER` to a low value like `1`.*
Current behavior
----------------------------------------
The problem is that `civicrm_status_pref` didn't exist in 4.6, and we haven't run the upgrader yet.
![Screen_Shot_2020-08-06_at_12.05.47_AM](/uploads/461ae861dbffaf47f8b0216ba58b7435/Screen_Shot_2020-08-06_at_12.05.47_AM.png)
Guess: Perhaps the try/catch block from https://github.com/civicrm/civicrm-core/commit/185a0768689374ce2d2703875a855d990c197728 was also handling the case of the non-existent table?
Expected behavior
----------------------------------------
Status check fails gracefully.
Environment information
----------------------------------------
<!-- Some of the items below may not be relevant for every bug - if in doubt please include more information than you think is neccessary. -->
* __CiviCRM:__ 5.29
* __PHP:__ 7.1
* __CMS:__ WP
* __Database:__ _MySQL 5.65.29.0https://lab.civicrm.org/dev/core/-/issues/1928Collapsed custom field set for activities with a required radio makes case ac...2020-09-18T15:11:46ZDaveDCollapsed custom field set for activities with a required radio makes case activity buttons seem disabledMight be from the recent jquery radio validation update. Haven't followed it through yet. Not even sure if it's specific to radio yet.
1. Create a custom fieldset for activities.
1. Make it apply to all activity types (not relevant just...Might be from the recent jquery radio validation update. Haven't followed it through yet. Not even sure if it's specific to radio yet.
1. Create a custom fieldset for activities.
1. Make it apply to all activity types (not relevant just makes this quicker).
1. Make it collapsed by default.
1. Add a radio field.
1. Make it required.
1. Administer - Customize - Display Prefs - Turn off popups (near the bottom). (Only relevant because then you can see the issue for all case activities - when it's on you only notice it for open case/creating a case.)
1. Create a case.
1. Fill out the client, subject, and case type but leave the collapsed custom field section collapsed.
1. Click Save. It appears as though nothing happened, but if you open the custom fieldset you can see why.5.29.0https://lab.civicrm.org/dev/core/-/issues/1922Downloaded Invoice activity attaches non wkhtmltopdf invoice2020-09-02T17:39:25ZDevAppDownloaded Invoice activity attaches non wkhtmltopdf invoiceWhen using wkhtmltopdf as the PDF engine, the invoices are emailed / printed correctly.
However, when an invoice is downloaded, it creates an activity against the contact with a copy of the invoice attached to the activity. This invoic...When using wkhtmltopdf as the PDF engine, the invoices are emailed / printed correctly.
However, when an invoice is downloaded, it creates an activity against the contact with a copy of the invoice attached to the activity. This invoice appears to not use the wkhtmltopdf engine, so the copy displays wrong.
When I turned off wkhtmltopdf, the invoice then appears the same. Bug appears to be downloaded invoice activity isn't using the wkhtmltopdf engine when specified.
![invoice_-_printed_emailed](/uploads/cc3ed15c0470d91f8ba57a187221f0bc/invoice_-_printed_emailed.png)
![invoice_-_downloaded](/uploads/646eef8b8a96949d8fbafd7a1df10290/invoice_-_downloaded.png)
![invoice_downloaded_activity](/uploads/049377a00c4c67db09b6b41f75a8002d/invoice_downloaded_activity.png)5.29.0https://lab.civicrm.org/dev/core/-/issues/1919Text version of unsubscribed email is missing the link to resubscribe2020-08-02T22:12:49ZDaveDText version of unsubscribed email is missing the link to resubscribeFortunately very few people still use pine to read their emails so most people wouldn't notice anything missing.
It just says `You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {...Fortunately very few people still use pine to read their emails so most people wouldn't notice anything missing.
It just says `You have been un-subscribed from the following groups: {unsubscribe.group}. You can re-subscribe by mailing {action.resubscribe} or clicking `
Seems it's always been this way - the `ts` in the sql is just missing a parameter.5.29.0https://lab.civicrm.org/dev/core/-/issues/1918CRM_Core_Key::valid() does backwards comparison2020-07-31T04:09:47ZDaveDCRM_Core_Key::valid() does backwards comparisonhttps://lab.civicrm.org/dev/core/-/blob/15074087f6c7ea9c5327dcbd4e156b39912c2b73/CRM/Core/Key.php#L117-120
strpos params are backwards
Function is not used directly much but is used indirectly via CRM_Utils_Rule.php::qfKey() many place...https://lab.civicrm.org/dev/core/-/blob/15074087f6c7ea9c5327dcbd4e156b39912c2b73/CRM/Core/Key.php#L117-120
strpos params are backwards
Function is not used directly much but is used indirectly via CRM_Utils_Rule.php::qfKey() many places, but looking at the function it probably doesn't matter as long as the key still has a 32-digit hex code in it somewhere.
It is totally not clear why any "seq" number after an underscore has to be between 1 and 10000, and I'm guessing it never happens that it's outside that range, but of course it never gets to check that.5.29.0https://lab.civicrm.org/dev/core/-/issues/1916Case export has two fields that are not what they say they are2020-08-03T18:45:38ZDaveDCase export has two fields that are not what they say they areThere's two fields that say "Activity Actual Date" and "Activity Scheduled Date", whose underlying fields are case_recent_activity_date and case_scheduled_activity_date. It's been that way for a while but I think it must have been a misu...There's two fields that say "Activity Actual Date" and "Activity Scheduled Date", whose underlying fields are case_recent_activity_date and case_scheduled_activity_date. It's been that way for a while but I think it must have been a misunderstanding what they were.
It looks like they both return the same thing: [recent](https://github.com/civicrm/civicrm-core/blob/28251552ce746d2a21de50aed83c3a1e16cd89d6/CRM/Case/BAO/Query.php#L104) and [scheduled](https://github.com/civicrm/civicrm-core/blob/28251552ce746d2a21de50aed83c3a1e16cd89d6/CRM/Case/BAO/Query.php#L185). I'd argue to remove the recent/scheduled completely and have a regular activity activity_date_time and call it "activity date", I guess the same way it does subject. Similarly the [activity type](https://github.com/civicrm/civicrm-core/blob/28251552ce746d2a21de50aed83c3a1e16cd89d6/CRM/Case/BAO/Query.php#L192) should just be normal activity type not labelled "recent" or "actual".
I'm suggesting remove from the export instead of trying to do the same as on the [case dashboard](https://github.com/civicrm/civicrm-core/blob/28251552ce746d2a21de50aed83c3a1e16cd89d6/CRM/Case/Selector/Search.php#L358) since it's a [weird calculation](https://github.com/civicrm/civicrm-core/blob/28251552ce746d2a21de50aed83c3a1e16cd89d6/CRM/Case/BAO/Case.php#L2853) to begin with, and obviously hasn't been available in this export forever anyway.
I believe that's what they were intended to be - the most recent activity on the case and the next scheduled activity, same as what you see on the case dashboard.5.29.0https://lab.civicrm.org/dev/core/-/issues/1915Incorrect check for "soft_credit" after making pcp donation2020-07-31T02:51:53ZDaveDIncorrect check for "soft_credit" after making pcp donationPulling this out from dev/core#1909 since it might be something more.
After you make a pcp donation you get `Notice: Undefined index: soft_credit in CRM_Contribute_BAO_Contribution->_gatherMessageValues() (line 3111 of .../CRM/Contribut...Pulling this out from dev/core#1909 since it might be something more.
After you make a pcp donation you get `Notice: Undefined index: soft_credit in CRM_Contribute_BAO_Contribution->_gatherMessageValues() (line 3111 of .../CRM/Contribute/BAO/Contribution.php).`
After looking a bit I'm not sure if this is just a minor missing check against null. For pcp the soft credit array values have different indexes - see e.g. [ContributionSoft line 331](https://github.com/civicrm/civicrm-core/blob/101f1f244307b4eb1c022049ae706dd415daef13/CRM/Contribute/BAO/ContributionSoft.php#L331) vs [line 337](https://github.com/civicrm/civicrm-core/blob/101f1f244307b4eb1c022049ae706dd415daef13/CRM/Contribute/BAO/ContributionSoft.php#L337)
I'm just not sure yet if it makes any difference, but it seems like it would not get assigned to the template for pcp.5.29.0https://lab.civicrm.org/dev/core/-/issues/1914The edit smart group form does not fill the default values for tag sets2020-07-29T12:48:34ZkainukThe edit smart group form does not fill the default values for tag setsOverview
----------------------------------------
The edit smart group form does not fill the default values for tag sets.
Reproduction steps
----------------------------------------
1. Create a tag set. This can be done in the civicrm/...Overview
----------------------------------------
The edit smart group form does not fill the default values for tag sets.
Reproduction steps
----------------------------------------
1. Create a tag set. This can be done in the civicrm/tag?reset=1 form. Example:
![tagset](/uploads/bb4fc64772bf0bce3eb15bd545f1fc76/tagset.png)
1. Now the tagset shows up in the advanced search:
![Selection_025](/uploads/2af6898c42a01fb196bfeaff3f1cc1f5/Selection_025.png)
1. Create smart group from this advanced search. This smart group works fine
1. Go to the smart group settings screen (1 - Manage Smart Groups, 2 - Go to the settings form of the smart group , 3 Click _Edit Smart Group Criteria_)
1. Now you cannot see what values of the tagset are chosen.
Current behavior
----------------------------------------
![current_behavior](/uploads/57b4b02ab75c62e417d93e87e36c849e/current_behavior.png)
Expected behavior
----------------------------------------
![Selection_025](/uploads/2af6898c42a01fb196bfeaff3f1cc1f5/Selection_025.png)
This is needed to know what the _original_ selection was
Environment information
----------------------------------------
Reproduced on the master 5.29.alpha1.
Comments
----------------------------------------
Related to https://lab.civicrm.org/dev/core/-/issues/15425.29.0https://lab.civicrm.org/dev/core/-/issues/1909Miscellaneous E_NOTICES2020-07-31T04:08:57ZDaveDMiscellaneous E_NOTICESYou need to turn off popups or open in new tab to see these otherwise they get snippet'd out.
- [x] Edit a recurring contribution: `Notice: Undefined index: transaction in CRM_Contribute_Form_AbstractEditPayment->assignPaymentInfoBlock(...You need to turn off popups or open in new tab to see these otherwise they get snippet'd out.
- [x] Edit a recurring contribution: `Notice: Undefined index: transaction in CRM_Contribute_Form_AbstractEditPayment->assignPaymentInfoBlock() (line 721 of .../CRM/Contribute/Form/AbstractEditPayment.php).` \
https://github.com/civicrm/civicrm-core/pull/18006
- [x] Save a recurring contribution after enabling tax and invoicing but before setting up the tax account and assigning to the financial type: `Notice: Undefined index: tax_amount in CRM_Contribute_Form_Contribution_Confirm::processFormContribution() (line 957 of .../CRM/Contribute/Form/Contribution/Confirm.php` \
https://github.com/civicrm/civicrm-core/pull/18006 (not a typo - same PR as above)
- [x] After adding gender to profile:
`Notice: Undefined offset: 2 in CRM_UF_Form_Field->postProcess() (line 533 of /.../CRM/UF/Form/Field.php).` \
PR: https://github.com/civicrm/civicrm-core/pull/17962
- [x] After saving dummy SMS provider: \
This is sort of both the fault of the provider and core. Core should handle if it's missing, but in general providers would specify the service url and it's a required field on the form, e.g. for [twilio](https://github.com/civicrm/org.civicrm.sms.twilio/blob/c324f44365c5fc886d2564891555cd46a00c739f/org_civicrm_sms_twilio.php#L53). \
`Notice: Undefined property: io_3sd_dummysms::$_apiURL in CRM_SMS_Form_Provider->setDefaultValues() (line 117 of .../CRM/SMS/Form/Provider.php).` \
PR: https://github.com/civicrm/civicrm-core/pull/17985
- [x] Copy To Case and its relatives when activity subject is blank: \
(You can't see this in the UI since you can't get here without a popup, you need to look in drupal watchdog) \
`Notice: Undefined index: subject in CRM_Case_Form_ActivityToCase->setDefaultValues() (line 63 of .../CRM/Case/Form/ActivityToCase.php).` \
PR: https://github.com/civicrm/civicrm-core/pull/17959
- [x] After adding a payment processor: `Notice: Undefined property: CRM_Admin_Form_PaymentProcessor::$_testID in CRM_Admin_Form_PaymentProcessor->updatePaymentProcessor() (line 483 of .../CRM/Admin/Form/PaymentProcessor.php).` \
PR: https://github.com/civicrm/civicrm-core/pull/179645.29.0https://lab.civicrm.org/dev/core/-/issues/1902"Contribution Source" profile field has no effect on new contribution2020-07-25T09:32:00ZAllenShaw"Contribution Source" profile field has no effect on new contributionOverview
----------------------------------------
Profiles allow inclusion of the "Contributions :: Contribution Source" on contribution pages, but any value entered therein is disregarded when saving a new contribution.
Steps to reprod...Overview
----------------------------------------
Profiles allow inclusion of the "Contributions :: Contribution Source" on contribution pages, but any value entered therein is disregarded when saving a new contribution.
Steps to reproduce (on dmaster.demo.civicrm.org)
Reproduction steps
----------------------------------------
1. Start with the Name and Address profile, and add to this profile the field "Contributions :: Contribution Source"
2. Add this profile to a Contribution Page, e.g., "Help Support CiviCRM!"
3. Open the Contribution Page, and fill in the form to submit an online contribution; for the Contribution Source field, enter a testable value such as "test source".
4. Submit the contribution
5. Find the contribution in CiviCRM, and open it; examine the value of the "Source" field.
Current behaviour
----------------------------------------
* The "Source" field reads "Online Contribution: Help Support CiviCRM!"
Expected behaviour
----------------------------------------
* The "Source" field should read "test source"
Environment information
----------------------------------------
The above repro steps were performed today on dmaster.demo.civicrm.org.
Comments
----------------------------------------
Testing on local dev indicates that a PR like this would produce the expected behavior:
```
diff --git a/CRM/Contribute/BAO/Contribution/Utils.php b/CRM/Contribute/BAO/Contribution/Utils.php
index a9e84fa..8bbb2c5 100644
--- a/CRM/Contribute/BAO/Contribution/Utils.php
+++ b/CRM/Contribute/BAO/Contribution/Utils.php
@@ -83,6 +83,9 @@ class CRM_Contribute_BAO_Contribution_Utils {
$form->_values['amount'] = $form->_params['amount'];
}
+ if (isset($paymentParams['contribution_source'])) {
+ $paymentParams['source'] = $paymentParams['contribution_source'];
+ }
if ($isPaymentTransaction) {
$contributionParams = [
'id' => $paymentParams['contribution_id'] ?? NULL,
@@ -142,9 +145,6 @@ class CRM_Contribute_BAO_Contribution_Utils {
$paymentParams['contributionID'] = $contribution->id;
$paymentParams['contributionPageID'] = $contribution->contribution_page_id;
- if (isset($paymentParams['contribution_source'])) {
- $paymentParams['source'] = $paymentParams['contribution_source'];
- }
if (!empty($form->_params['is_recur']) && $contribution->contribution_recur_id) {
$paymentParams['contributionRecurID'] = $contribution->contribution_recur_id;
```5.29.0