CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2022-12-06T23:14:44Zhttps://lab.civicrm.org/dev/core/-/issues/1036Deprecate Tell a Friend2022-12-06T23:14:44ZAndie HuntDeprecate Tell a FriendWho tells their friends anymore? This really should be removed or deprecated.
@JonGold came up with this idea and @bgm thought it would be worth opening an issue for it.Who tells their friends anymore? This really should be removed or deprecated.
@JonGold came up with this idea and @bgm thought it would be worth opening an issue for it.https://lab.civicrm.org/dev/core/-/issues/960Proposal: Change supervised dedupe rules to name(s) OR email2023-03-18T04:52:01ZJonGoldProposal: Change supervised dedupe rules to name(s) OR emailI've done countless Civi trainings on deduping, many at CiviCamps and other "official" places. And each time, I need to explain that "yes, unsupervised rules should be more strict than supervised rules. Also yes, the default individual...I've done countless Civi trainings on deduping, many at CiviCamps and other "official" places. And each time, I need to explain that "yes, unsupervised rules should be more strict than supervised rules. Also yes, the default individual supervised rule is far more strict than the default unsupervised rule."
Surely I'm not the only one who feels the same - and yet none of us noticed, because before Civi 5.3/CRM-20565, the supervised rule was basically unused.
Now, there's a code comment that says, [CRM-20565 - Need a good default matching rule before using the dedupe engine for checking on-the-fly.](https://github.com/civicrm/civicrm-core/blob/1eca040f3f6efa0a8a43575cd0a08bae242a95f3/templates/CRM/Contact/Form/Contact.tpl#L334).
I'm proposing we fix this by changing the default supervised rule. The current on-the-fly checking is both a) a default, and b) very poor UX.
I'm also proposing that we do this as the new default for everyone. I'm mindful of the changes to existing systems, and we should probably put in an upgrade note or something - but honestly anyone who's never changed the default supervised rules isn't very likely to be using them.JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/928Membership and Auto-Renew issues2023-11-23T07:09:31Zmattwiremjw@mjwconsult.co.ukMembership and Auto-Renew issuesOverview
WORK IN PROGRESS Parts of this are gradually being extracted into smaller, easier to review PRs. Once this is fully reviewed and merged documentation will also need updating.
Ref: https://github.com/civicrm/civicrm-core/pull/123...Overview
WORK IN PROGRESS Parts of this are gradually being extracted into smaller, easier to review PRs. Once this is fully reviewed and merged documentation will also need updating.
Ref: https://github.com/civicrm/civicrm-core/pull/12315
This is mostly code cleanup and an attempt to understand exactly what happens when a membership is automatically renewed!
# Fixes (and this needs adding to Civi docs somewhere as it's currently undocumented and unclear what it does):
## Before
* Membership will be renewed when contribution is in ANY state except "Pending."
* All parameters of recurring contribution are ignored, ie installments, frequency mismatch (eg. monthly recurring, annual membership) so every new contribution will trigger a membership renewal.
* When repeattransaction is called ONLY the membership linked to the original contribution will be renewed (if the contribution is in the correct state (ie. Completed - see Before/After)). loadRelatedObjects only loads one membership but the code is expected all memberships to be loaded so does handle multiple memberships if passed in.
## After
* Membership will be renewed ONLY when contribution is in state "Completed".
* Membership will be renewed ONLY if the recurring and membership type frequencies match. Installments parameter has no effect.
* When repeattransaction is called: If the contribution has a recurring contribution ID then ALL memberships linked to that recurring contribution will be renewed. If the contribution has no recurring contribution then the membership linked to the original contribution will be renewed (if the contribution is in the correct state (ie. Completed - see Before/After) AND the other conditions are met (ie. state, frequency)).
## Documentation (After)
* Membership will be renewed ONLY when contribution is in state "Completed" - https://github.com/civicrm/civicrm-core/pull/12315 (5.5.0)
* Membership will be renewed ONLY if the recurring and membership type frequencies match (Installments are ignored).
* When repeattransaction is called any linked memberships will be renewed if the contribution is in the correct state. If there is a recurring contribution then the frequencies must also match (installments are ignored).
* A recurring contribution can be linked to multiple memberships and all memberships will be updated/renewed if all other conditions are met - https://github.com/civicrm/civicrm-core/pull/12542 (pending merge)https://lab.civicrm.org/dev/core/-/issues/902KAM keyboard shortcuts2024-03-28T15:46:04ZJoeMurrayKAM keyboard shortcutsAlthough there had been extensive testing of the KAM extension keyboard shortcuts (https://lab.civicrm.org/dev/accessibility/issues/1#note_11279), I'm not sure how extensive it was of the integration into core. This is a list of items th...Although there had been extensive testing of the KAM extension keyboard shortcuts (https://lab.civicrm.org/dev/accessibility/issues/1#note_11279), I'm not sure how extensive it was of the integration into core. This is a list of items that are needed to make the menu accessible according to WCAG 2.0 AA, so far as I can determine from various sites that provide suggestions on implementations for compliant menus, mainklyt WAI tutorials.
* [ ] The menu should receive the tab focus first, before other page elements. Currently, one has to tab through other page elements before entering the menu. On wpmaster, it takes 4 tabs, on dmaster it takes 24 tabs in order to get to QuickSearch.
* [ ] When focus is in QuickSearch, tab incorrectly moves next to browser address line. It should move forward to the menu item represented by the CiviCRM icon (I don't know its name).
Previous notes from when tabbing worked in the menu:
* [ ] When on a menu item with submenu open, space and return as well as escape should close it. Not a priority, but behaviour seems to be non-standard.
* [ ] When on an open sub-submenu (eg Contributions > Accounting Batches with Open Batches with focus), using left arrow correctly moved focus to Accounting Batches, but it did not close the sub-submenu. Not a huge priority for usability.https://lab.civicrm.org/dev/core/-/issues/863Functionality of Remove Case Role activity type is messed up2022-10-23T16:00:50ZDaveDFunctionality of Remove Case Role activity type is messed upI think it's been like this for a few years. I can look into it later but recording here for reference. Examples of stuff below, and I can reproduce on dmaster.demo.
1. In the case roles section on manage case, click the trash can icon ...I think it's been like this for a few years. I can look into it later but recording here for reference. Examples of stuff below, and I can reproduce on dmaster.demo.
1. In the case roles section on manage case, click the trash can icon at the end of a row to remove a case role. It does remove the role, but there's supposed to be a Remove Case Role activity filed on the case.
2. In the Other Relationships section on manage case, add a new relationship. It gets correctly added but adds a Remove Case Role activity to the case. Besides being the wrong activity, no activity should be added here since that add button is just a shortcut to adding a regular relationship in the usual way, that exists outside of the life of the case.https://lab.civicrm.org/dev/core/-/issues/852Provide wysiwyg editor for additional confirmation email text2023-08-05T04:15:04ZyashodhaProvide wysiwyg editor for additional confirmation email textProvide wysiwyg editor for additional confirmation email text for online and offline event registrations. (In other words, this is the text from the text area widget on the Manage Event page, not the event template itself.)
https://civi...Provide wysiwyg editor for additional confirmation email text for online and offline event registrations. (In other words, this is the text from the text area widget on the Manage Event page, not the event template itself.)
https://civicrm.stackexchange.com/questions/21255/confirmation-email-providing-a-wysiwyg-so-users-can-add-html-ified-contentyashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/719can't delete profile pre- post- field help on multilinguage sites2022-08-26T00:20:44ZJoeMurraycan't delete profile pre- post- field help on multilinguage sitesIf you add field pre and post help to profiles on a single language site, you can then delete it and save successfully. On a site with more than 1 language, trying to delete the help leads to it being resaved (I believe from the alternat...If you add field pre and post help to profiles on a single language site, you can then delete it and save successfully. On a site with more than 1 language, trying to delete the help leads to it being resaved (I believe from the alternative language's copy of the help).
Verified on dmaster 5.12.alpha1.Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/712Submiting a form to join multiple groups should send one email, not one per g...2022-09-30T18:34:42ZIan KellingSubmiting a form to join multiple groups should send one email, not one per grouphttps://docs.civicrm.org/user/en/latest/email/set-up/ says: "When users
subscribe to multiple groups at once, a confirmation email is sent for
each group separately."
This should be changed to send a single email. They entered their ema...https://docs.civicrm.org/user/en/latest/email/set-up/ says: "When users
subscribe to multiple groups at once, a confirmation email is sent for
each group separately."
This should be changed to send a single email. They entered their email
address 1 time into 1 form, then get multiple emails that ask to confirm
their email address. Some will think that it's unnecessary to click each
link since their email address is confirmed by just clicking one. Some
will think there is a bug in the system. It really just doesn't make
sense to users.https://lab.civicrm.org/dev/core/-/issues/661Membership receipts do not display Credit Card information2023-11-23T07:09:32ZcommonpikeMembership receipts do not display Credit Card informationFrom https://issues.civicrm.org/jira/browse/CRM-18027
(also https://civicrm.stackexchange.com/questions/15150)
Most of the issues mentioned there seem to be solved in 5.8.1, however, Credit Card information is still not showing up (and ...From https://issues.civicrm.org/jira/browse/CRM-18027
(also https://civicrm.stackexchange.com/questions/15150)
Most of the issues mentioned there seem to be solved in 5.8.1, however, Credit Card information is still not showing up (and leaving strange blanks in the email).
**To reproduce issue:**
1. Register as a new, paying, member, using Credit Card
2. Read the e-mail sent as 'Receipt - Membership signup'
**Details**
In the system template "Memberships - Receipt (on-line)",
in the latest default,
where the source, in the text version, says
```
===========================================================
{ts}Credit Card Information{/ts}
===========================================================
{$credit_card_type}
{$credit_card_number}
{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:''|crmDate}
{/if}
```
the generated output is
```
===========================================================
Credit Card Information
===========================================================
Expires:
```
The HTML version and the PDF have the same problem.
![Screen_Shot_2019-01-11_at_14.25.50](/uploads/95b1c84df44d3003a81cb93b8b2d79ee/Screen_Shot_2019-01-11_at_14.25.50.png)https://lab.civicrm.org/dev/core/-/issues/600Word Replacements: entering a string with HTML will reset all replacements2023-04-12T20:56:13ZbgmWord Replacements: entering a string with HTML will reset all replacementsHow to reproduce:
* On a single language site, go to Administer > Customize data and screen > Word Replacements
* Enter a few replacements, it doesn't matter if they are valid.
* Save, so far so good.
Then add a new replacement with ht...How to reproduce:
* On a single language site, go to Administer > Customize data and screen > Word Replacements
* Enter a few replacements, it doesn't matter if they are valid.
* Save, so far so good.
Then add a new replacement with html: `<p>test</p>`, and click save.
Result: word replacements table will be completely empty.
I debugged a bit and this is because `CRM_Core_BAO_WordReplacement.php::getConfigArraysAsAPIParams()` uses `unserialize` on the strings that are stored in `civicrm_domain` (ugh). The unserialize fails because of the HTML, so it returns FALSE, and the function ends up returning an empty array, which is then used to re-populate the `civicrm_word_replacement` table.https://lab.civicrm.org/dev/core/-/issues/464Disabling "Search Primary Details Only" breaks export of primary address2023-06-16T21:12:50ZmfbDisabling "Search Primary Details Only" breaks export of primary addressMigrated from https://issues.civicrm.org/jira/browse/CRM-21423
Disabling the "Search Primary Details Only"* setting switch leads to wrong export of contact primary address.
Reason is that a requested location_type is not set and Export...Migrated from https://issues.civicrm.org/jira/browse/CRM-21423
Disabling the "Search Primary Details Only"* setting switch leads to wrong export of contact primary address.
Reason is that a requested location_type is not set and Export.php's call to CRM_Contact_BAO_Query does not set the default search to use primary location.
A fix was proposed at https://github.com/civicrm/civicrm-core/pull/11274 but has been closed as more tests would need to be written.
\* My anecdotal experience is that, if the user has been merging contacts w/ multiple email addresses such that secondary email addresses are fairly common, then there's a frequent need to search across all email addresses, so this setting does need to be disabled.https://lab.civicrm.org/dev/core/-/issues/411Default currency shown on forms if payment is made with different currency2023-11-23T07:47:00ZjitendraDefault currency shown on forms if payment is made with different currencyDefault currency shown on View participant and contribution page if payment is made with different currency
Steps to reproduce -
- Create a priceset with some price fields.
- Create a contribution page with currency = EUR or any other ...Default currency shown on View participant and contribution page if payment is made with different currency
Steps to reproduce -
- Create a priceset with some price fields.
- Create a contribution page with currency = EUR or any other currency other than the default USD.
- Create a payment by submitting the contribution page.
- The payment shown on the contact summary page stated in USD even though it should have been taken in EUR.
Similarly, default currency is shown for participants registered for the event using EUR.
---
There are still 102 matches found where similar formatting is done.
```
$ grep -irn "crmMoney}" templates/ | wc -l
102
```
We need to fix all instances in core.
Ref https://github.com/civicrm/civicrm-core/pull/12875 for the first fixjitendrajitendrahttps://lab.civicrm.org/dev/core/-/issues/224Event confirmation emails do not populate guest details when payment is confi...2023-06-19T04:25:50ZJKingsnorthEvent confirmation emails do not populate guest details when payment is confirmed by IPN (API)This issue occurs with:
* Paid events, using an IPN payment gateway, or delayed payment
* On events that can have 'additional participants' (guests)
In this case, the event confirmation emails are missing:
* The names of additional part...This issue occurs with:
* Paid events, using an IPN payment gateway, or delayed payment
* On events that can have 'additional participants' (guests)
In this case, the event confirmation emails are missing:
* The names of additional participants
* Any custom 'participant' fields associated with the additional participants
Detailed steps to recreate:
* Create custom fields assigned to the 'Participant' entity, add them to a profile
* Create a free event with online registration, allowing multiple participants, and add the profile with custom fields to it, enable confirmation emails
* Register for the event, with an 'additional participant'
* Notice that the confirmation email contains the 'name' of the additional participant, and also the custom fields associated with their registration
* Create a paid event, with the 'pay later' option (otherwise the same options as above)
* Register for the event, with an 'additional participant' (pay later)
* Now use the Contribution - completetransaction API call to 'complete' the payment (this is the process that would happen if the IPN was triggered).
* Notice that the confirmation email does not contain the name of the participants, and any custom participant fields for the additional participants are NOT included.
Issue cause:
Information from the 'form' submission is passed into the email template when it is triggered for a free event. This information is not populated when the \CRM_Event_BAO_Event::sendMail method is called from the 'completetransaction' API call. Some information is assigned in \CRM_Event_Form_Registration_Confirm::buildQuickForm and includes the $part variable, which is assigned to the template, and subsequently used in the 'online event registration' email template. The custom fields for additional participants are also assigned to the template, based on the form (https://github.com/civicrm/civicrm-core/blob/694ccbf41adc31bce4d056fcc46930ba9c2e15e5/CRM/Event/Form/Registration/Confirm.php#L311), which is also missing from the 'completetransaction' route.
Our solution:
The code around this area of the system was quite spahettified, so we have solved this issue using a custom hook: https://gist.github.com/JKingsnorth/4d233df13a0f6493c44f69d81fa5f27a - although this isn't a great approach (in terms of being able to commit it back to core) - it does seem to resolve the issue.https://lab.civicrm.org/dev/core/-/issues/76Multiple roles per participant causes incorrect participant counts (was: Civi...2023-11-12T15:46:22ZUpperholmeMultiple roles per participant causes incorrect participant counts (was: CiviEvent no longer respects Max Participants)Since upgrading to 5.0 I find that events continue to allow front end registrations despite the number of counted participants exceeding the max number set on the event configuration. The on-screen alert is not displayed, and registratio...Since upgrading to 5.0 I find that events continue to allow front end registrations despite the number of counted participants exceeding the max number set on the event configuration. The on-screen alert is not displayed, and registration remains open.
as a temporary workaround I'm having to closely monitor registrations and manually turn off online registration and edit the event information to provide an 'event full' message when capacity is reached.https://lab.civicrm.org/dev/core/-/issues/31Cancelled auto-renew membership and scheduled reminders don't play nice2023-04-28T01:39:33ZkonadaveCancelled auto-renew membership and scheduled reminders don't play niceRecently upgraded a site from 4.6.21 to 4.7.27. Payment processor is iATS Payments, if that makes any difference.
When an auto-renew membership is cancelled, the contribution_recur_id field in civicrm_membership for that membership is l...Recently upgraded a site from 4.6.21 to 4.7.27. Payment processor is iATS Payments, if that makes any difference.
When an auto-renew membership is cancelled, the contribution_recur_id field in civicrm_membership for that membership is left as is.
Stated using scheduled reminders after the upgrade, and have one set up to send an email to auto-renew memberships one week in advance of their renewal so they're not surprised when their credit card is charged. Cancelled auto-renew memberships are receiving this reminder.
I honestly don't have time to do any testing or going exploring through code at the moment. For all I know this has been reported previously and is already fixed. But if it hasn't, I'm thinking that contribution_recur_id should be cleared when the recurring contribution is cancelled, or scheduled reminders should make sure the contribution_recur_id is not cancelled.https://lab.civicrm.org/dev/core/-/issues/24Passing an array for contact_id/client_id to Case.Create API when updating an...2023-06-23T17:54:22Zmattwiremjw@mjwconsult.co.ukPassing an array for contact_id/client_id to Case.Create API when updating an existing case causes case to be "reassigned"The contact_id/client_id for the case supports multiple ids. It can be passed to the case.create API either as a single value or as an array. However, the code is inconsistent in it's handling of contact_id and expects it to be both an...The contact_id/client_id for the case supports multiple ids. It can be passed to the case.create API either as a single value or as an array. However, the code is inconsistent in it's handling of contact_id and expects it to be both an array and a single value. The result is that if an array is passed in it will fail to detect that an existing case contact_id already matches and it will "reassign" the case to the default contact id (1). This issue was identified because of inconsistent behaviour when submitting case/activity updates via webform_civicrm.
The proposed solution is to ensure that contact_id is always an array, and then check the first element against the original contact id.https://lab.civicrm.org/dev/core/-/issues/20Can't place a contribution widget on a Contribution Page2023-11-23T07:47:01ZJonGoldCan't place a contribution widget on a Contribution PageWhen you attempt to place a contribution widget on its own contribution page in the "Inroductory Message" section, you get the error:
`Illegal characters in input (potential scripting attack)`
I confirmed this is a regression by replica...When you attempt to place a contribution widget on its own contribution page in the "Inroductory Message" section, you get the error:
`Illegal characters in input (potential scripting attack)`
I confirmed this is a regression by replicating the problem on the Drupal demo site (4.7) and confirming it didn't exist ion the Joomla site (4.6). I'm pretty sure it didn't happen earlier in the 4.7 cycle either.https://lab.civicrm.org/dev/core/-/issues/13rare recurring error: CiviMail will not send an empty mail body, Skipping2023-06-23T17:54:21Zmfbrare recurring error: CiviMail will not send an empty mail body, SkippingIt appears in a tiny fraction of mailing recipients (less than 0.01%), we are not sending the mailing because contact details are empty. The contact details contains custom tokens that we have added, but no actual core contact data, e.g...It appears in a tiny fraction of mailing recipients (less than 0.01%), we are not sending the mailing because contact details are empty. The contact details contains custom tokens that we have added, but no actual core contact data, e.g. preferred_mail_format (which is required to compose a message). To be clear, no contact data is present, it's not that preferred_mail_format is NULL.
Perhaps this is caused by a failed db query somewhere along the way. Will require further debugging to get to the bottom of it.https://lab.civicrm.org/dev/core/-/issues/5CiviMail Mailing Accounts allow duplicate names, but breaks processing.2023-06-23T17:54:21ZjohnffCiviMail Mailing Accounts allow duplicate names, but breaks processing.If two CiviMail Mailing Accounts have the same name, even if they have different roles, only the first will be used in either case.
The offending line of code is somewhere in the path of: CRM_Utils_Mail_EmailProcessor::_process -> CRM_M...If two CiviMail Mailing Accounts have the same name, even if they have different roles, only the first will be used in either case.
The offending line of code is somewhere in the path of: CRM_Utils_Mail_EmailProcessor::_process -> CRM_Mailing_MailStore::getStore.
To replicate (Drupal, 4.7.27):
1. Create two mailing accounts.
The first one should be "Email to Activity" and have no username / password settings
The second should be "Bounce processing" and have username / password settings
(order of creation is important, and give them both the same name)
2. Run the scheduled job "fetch bounces".
3. In watchdog, observe the error "could not connect" using the credentials of email to activity processor, even though it should use the Bounce Processing one.
4. Clear the watchdog logs.
5. Rename them to have different names, then retry
6. Check the watchdogs, and observe no error.https://lab.civicrm.org/dev/core/-/issues/4Link to css is hard-coded to the resource url link - problematic for server-s...2023-12-12T17:23:45ZeileenLink to css is hard-coded to the resource url link - problematic for server-side rendering with firewall or htaccess in playIn a few places in the code we add the print.css url with a section like this:
```
<head>
<title>{$pageTitle}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<base href="{crmURL p="" a=1}" /><!--[if IE...In a few places in the code we add the print.css url with a section like this:
```
<head>
<title>{$pageTitle}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<base href="{crmURL p="" a=1}" /><!--[if IE]></base><![endif]-->
<style type="text/css" media="screen, print">@import url({$config->userFrameworkResourceURL}css/print.css);</style>
</head>
```
That works fine from print.tpl & presumably the place in CiviCase where it is used but is problematic in CRM_Utils_PDF_Utils
When a pdf is being rendered internally & a firewall or htaccess is in play this css cannot be retrieved via http.
I also encountered someone struggling on chat the other day due to the print.css link written into a report instance being wallopped by the hard coded one when printing a CiviReport - going through that class.
@totten @bgm just trying to figure out the best way to handle this. I feel like in the pdf class it should try the file location FIRST if it does not appear to be customised - I think there might be some handy functions for that?
In the case of the report I think it's a bit trickier - we would need to figure out if a stylesheet is specified & only add one if not - or simply not add the <head> section. (I don't need to solve this but was thinking about it at the same time)
NB - this is the first issue I have logged in gitlab...