CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2022-04-22T15:53:21Zhttps://lab.civicrm.org/dev/core/-/issues/3272Postal Code Suffix returns Postal Code value2022-04-22T15:53:21ZlcdwebPostal Code Suffix returns Postal Code valueWhen the postal code suffix column is displayed, it returns the postal code value instead of the suffix.When the postal code suffix column is displayed, it returns the postal code value instead of the suffix.lcdweblcdwebhttps://lab.civicrm.org/dev/core/-/issues/3542Move the cache for `CRM_Extension_Browser` out of the filesystem and use a `S...2022-06-16T02:21:42ZtiotsopMove the cache for `CRM_Extension_Browser` out of the filesystem and use a `SqlGroup` insteadThe current code in `CRM_Extension_Browser` is coded specifically for an adhoc, file-based caching logic. The recommendation standard is basically to change the backing/storage from a JSON file to the civicrm_cachetable (at least, for th...The current code in `CRM_Extension_Browser` is coded specifically for an adhoc, file-based caching logic. The recommendation standard is basically to change the backing/storage from a JSON file to the civicrm_cachetable (at least, for the typical usage).
Ref [#2](https://lab.civicrm.org/dev/cloud-native/issues/2#note_4790)5.52.0tiotsoptiotsophttps://lab.civicrm.org/dev/core/-/issues/3605"Tracking Click-Throughs" option in mailings generates 404 links when using m...2024-02-17T05:03:31Zjensschuppe"Tracking Click-Throughs" option in mailings generates 404 links when using multi-language with path prefixThis occurred in a Drupal environment with multiple languages and the following configuration:
- Languages in Drupal:
- English (activated)
- German (activated, default)
- Languages in CiviCRM:
- Default language: English
- avai...This occurred in a Drupal environment with multiple languages and the following configuration:
- Languages in Drupal:
- English (activated)
- German (activated, default)
- Languages in CiviCRM:
- Default language: English
- available: German, English
- Inherit CMS language: yes
Conditions under which the erroneous behavior can be reproduced:
- Mailing language: English
- UI language: German
- language prefix in the URL: none or "de"
or:
- Mailing language: German
- UI language: English
- language prefix in the URL: none or "en"
ergo: Using a UI language different from the mailing language and having path prefixes for language detection.
The result is links to the tracking script being prefixed with the language code of the UI language, like so:
https://example.org/de/sites/all/modules/civicrm/extern/url.php?u=123&qid=12345
which is producing a 404 as obviously the path to the script file is not valid due to the language prefix.
Apparently, this code in CRM/Mailing/BAO/TrackableURL.php:93 is where the URL is constructed, but with `userFrameworkResourceURL` being prefixed with the language code:
```
$redirect = $config->userFrameworkResourceURL . "extern/url.php?u=$id";
```https://lab.civicrm.org/dev/core/-/issues/18log tables for CiviCRM Drupal Modules can cause WSODs after running upgrades ...2023-06-23T17:54:21Zseamusleelog tables for CiviCRM Drupal Modules can cause WSODs after running upgrades when re-calculatingAfter every upgrade if you have detailed logging enabled then the log_tables are recalculated and any differences fixed up. This is to ensure that the triggers on the log tables work fine.
There is an issue with CiviCRM drupal modules ...After every upgrade if you have detailed logging enabled then the log_tables are recalculated and any differences fixed up. This is to ensure that the triggers on the log tables work fine.
There is an issue with CiviCRM drupal modules and it comes down to a miss calculation between the create schema for the intitial log table v the compare differences function.
An example is
```sql
CREATE TABLE civicrm_member_roles_rules (
rule_id int(11) NOT NULL AUTO_INCREMENT,
rid int(10) unsigned NOT NULL,
type_id int(10) unsigned NOT NULL,
status_codes text NOT NULL,
PRIMARY KEY (rule_id)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
```
When the log table for that is created the AUTO_INCREMENT is correctly handled through https://github.com/civicrm/civicrm-core/blob/master/CRM/Logging/Schema.php#L709 However when the schema diff code runs. We only exclude the column `id` https://github.com/civicrm/civicrm-core/blob/master/CRM/Logging/Schema.php#L628 as we assume that the id column will always be the AUTO_INCREMENT column whereas in the member_roles_rules example the AUTO INCREMENT column is actually `role_id`seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/3212Participant Listing report filters incorrectly on role ID2023-12-24T05:03:20ZJonGoldParticipant Listing report filters incorrectly on role IDThis issue is identical to [CRM-18803](https://issues.civicrm.org/jira/browse/CRM-18803) except that CRM-18803 affected all other CiviReports with fields that stored values separated by `CRM_Core_DAO::VALUE_SEPARATOR`. Those were fixed ...This issue is identical to [CRM-18803](https://issues.civicrm.org/jira/browse/CRM-18803) except that CRM-18803 affected all other CiviReports with fields that stored values separated by `CRM_Core_DAO::VALUE_SEPARATOR`. Those were fixed everywhere else by [this PR](https://github.com/civicrm/civicrm-core/pull/8650). However, since the `where()` in this report is overridden, it has its own copy of the regex which wasn't fixed.
I grepped and confirmed this is the only place where this needs to be fixed, and applied the same regex as the commit above.
To replicate this bug, you need at least ten participant roles. The first one's value should be `1`. Searching on this value will return any participant whose role BEGINS with a `1` (i.e. `10`, `11`, `100`, etc.) rather than just records whose participant role value IS 1.JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3522Soften messages for read-only extensionsDir2022-06-11T14:41:07ZtiotsopSoften messages for read-only extensionsDirImprove messaging when someone has a different policy for managing `extensionsDir`.This a continuation of this [PR](https://github.com/civicrm/civicrm-core/pull/11895). Most of the messaging update has already been done. There is only on...Improve messaging when someone has a different policy for managing `extensionsDir`.This a continuation of this [PR](https://github.com/civicrm/civicrm-core/pull/11895). Most of the messaging update has already been done. There is only one message ("Read-Only Extensions"). It still encourages web-writable policy, but it lowers the severity and presents it a choice ("if you want X, do Y").
Probably, changing the `warning` into a `notice` is the only thing to update:- a `warning` implies something is wrong, while a `notice` says it's merely out of the ordinary.5.9tiotsoptiotsophttps://lab.civicrm.org/dev/core/-/issues/3573Unsubscribe fails but appears to have worked for resending to previous mailin...2024-02-14T05:03:29ZRichUnsubscribe fails but appears to have worked for resending to previous mailing to search resultsRecreate with 5.2.2 (on Dupal 7)
1. create mailing group A
2. create other group B
4. add contact into group: B
5. do mailing to contacts in group B, using group A as unsubscribe. (i.e. Find » In Group B » Action: create CiviMail mailin...Recreate with 5.2.2 (on Dupal 7)
1. create mailing group A
2. create other group B
4. add contact into group: B
5. do mailing to contacts in group B, using group A as unsubscribe. (i.e. Find » In Group B » Action: create CiviMail mailing)
7. Create and send mailing: sent to recipients of mlg1
8. click unsubscribe.
## Expect
to see confirm form saying "you will be unsubscribed from A" because A was the base group used for the original mailing. (When sending to previous mailing recipients there is no option to select an unsubscribe group)
## Actual
User sees "yes you've been unsubscribed from the mailing group/list" [code ref](https://lab.civicrm.org/dev/core/blob/master/CRM/Mailing/Form/Unsubscribe.php#L71) but nothing has actually happened!https://lab.civicrm.org/dev/core/-/issues/19disabled optionvalues are not shown in participant export2023-06-23T17:54:22ZJoostdisabled optionvalues are not shown in participant exporta participant field has a custom field containing option values. Participants choose one of these option values. The option value that the participants chose gets disabled after they chose it. In a participant export containing this cust...a participant field has a custom field containing option values. Participants choose one of these option values. The option value that the participants chose gets disabled after they chose it. In a participant export containing this custom field the participants who chose for the disabled option will have a blanc space in the table on that location. Expected is having the option they chose over there, all-tough it has been disabled, and isn't available to choose any more.
to recreate this on a demo site:
1. create a participant to the fall fundraiser dinner with a soup preference
1. go to custom fields and edit the food preference custom field
1. deactivate the soup selection you chose in step 1
1. find participants to the fall fundraiser dinner
1. select all participants and export them using 'select fields to export'
1. select the fields to export:
- individual - display name to find the person you gave the food selection to
- participant - food preference: soup selection the field we are interested in
1. open the exported file. The soup selection for the disabled field isn't in there. When there are participants who chose for a soup that is still active the soup selection is in there for themhttps://lab.civicrm.org/dev/core/-/issues/3273Performance issue when exporting to CSV from reports with custom fields2022-04-22T15:53:23ZJonGoldPerformance issue when exporting to CSV from reports with custom fields### User Story
As an end user, I want to run a report of my organization's alumni. This is about 16,000 contacts, and my report contains 6 custom fields. However, this report takes about 8.5 minutes to generate, far longer than the 300...### User Story
As an end user, I want to run a report of my organization's alumni. This is about 16,000 contacts, and my report contains 6 custom fields. However, this report takes about 8.5 minutes to generate, far longer than the 300 second timeout on processes.
### Profiling
I stepped through the code until I saw that `CRM_Core_BAO_CustomField::displayValue()` was the culprit, which is called ~96,000 times (# of rows * custom fields). I used a profiler and it reported that 97% of the time was spent in the `CRM_Core_BAO_CustomField::getOptions()` method.
### Improvements
* `CRM_Core_BAO_CustomField::getOptions()` is called on every custom field - even those that don't use it (e.g. text or money fields). By moving it so it's only called when needed, I immediately got a speedup.
* `getOptions()` should only be called 6 times in my example, not 96,000 times. I'm going to put a cache into `getOptions()`.5.21.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3521Maintain "official" containerized version(s) of CiviCRM2024-02-06T05:03:28ZmfbMaintain "official" containerized version(s) of CiviCRMCiviCRM could maintain container images for development and/or production use.
This could be useful for CI purposes (e.g. if CiviCRM is eventually doing CI via GitLab), and provide a baseline for shops, developers and implementers who n...CiviCRM could maintain container images for development and/or production use.
This could be useful for CI purposes (e.g. if CiviCRM is eventually doing CI via GitLab), and provide a baseline for shops, developers and implementers who need to deploy/develop/test CiviCRM.https://lab.civicrm.org/dev/core/-/issues/57On Behalf Of fails to populate in Email Receipt2022-01-04T06:27:07ZddoligalskiOn Behalf Of fails to populate in Email ReceiptWhen a Contribution is submitted and "On Behalf Of" is specified, the section on the emailed receipt does not render the On Behalf Of profile information.
We did a little digging, and it appears that the getOnbehalfIds() function is fai...When a Contribution is submitted and "On Behalf Of" is specified, the section on the emailed receipt does not render the On Behalf Of profile information.
We did a little digging, and it appears that the getOnbehalfIds() function is failing, attempting to get the relevant contact_id from the activity record, which has not yet been written.
We have seen this in 4.7.26, 4.7.27, and 4.7.29 and 5.x with both Drupal and WordPress.5.27.0https://lab.civicrm.org/dev/core/-/issues/3278Contribution Detail Report gives incorrect results when `force=1`2022-04-22T15:53:36ZJonGoldContribution Detail Report gives incorrect results when `force=1`To replicate:
* Have at least one soft credit in your database.
* Load a Contribution Detail report instance with `force=1`. In a demo database, you can do this with: http://mysite.org/civicrm/report/instance/8?force=1.
* Note the numbe...To replicate:
* Have at least one soft credit in your database.
* Load a Contribution Detail report instance with `force=1`. In a demo database, you can do this with: http://mysite.org/civicrm/report/instance/8?force=1.
* Note the number of records returned.
* Press **View Results**.
* Note that the number of records has decreased.
As most of us know, the Contribution Detail report has several unfortunate code paths to add soft credits as a special case. [This if statement](https://github.com/civicrm/civicrm-core/blob/04d81658df2682d4cc42386554cbbfbd6cc6ba2e/CRM/Report/Form/Contribute/Detail.php#L533-L535) is one of them, and it suppresses soft credit display if the `contribution_or_soft_value` param is set to `contributions_only`, which is the default.
However, the defaults are not loaded when using `force=1` - which means that the default isn't loaded, so soft credits are displayed.
PR incoming that will ensure that if the `contribution_or_soft_value` param is empty, then we assume `contributions_only` as the default.5.26.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3527Logging improvements2024-02-07T05:03:28ZmfbLogging improvementsI ran into some issues re: CiviCRM logging:
1. Currently, in many cases, CiviCRM does not indicate a severity level when logging a message. Thus many events are logged at info level.
1. When passing log messages thru to Drupal's watchdo...I ran into some issues re: CiviCRM logging:
1. Currently, in many cases, CiviCRM does not indicate a severity level when logging a message. Thus many events are logged at info level.
1. When passing log messages thru to Drupal's watchdog() logger, debug level is typically used, even for a fatal error. There is no attempt made to map the level appropriately.
1. Some of the CRM_Core_Error methods - e.g. CRM_Core_Error::debug_var() - don't have an argument for severity level - but we could/should add one.
1. When providing a severity level to "old school" CRM_Core_Error calls, we also have the option of "upgrading" these to instead be Civi::log() calls.
I would be curious to hear anyone's thoughts, but it seems fairly straightforward to make some big improvements here.https://lab.civicrm.org/dev/core/-/issues/3557Preview screen doesn't open until recipients list is built on mail compose sc...2022-06-11T14:51:02ZMonish DebPreview screen doesn't open until recipients list is built on mail compose screenTo replicate the issue:
1. Create a new mailing and fill out everything but not the Recipients field.
2. Now select a recipients group that is either very large or is based on a complex smart group. after selecting it -- click preview...To replicate the issue:
1. Create a new mailing and fill out everything but not the Recipients field.
2. Now select a recipients group that is either very large or is based on a complex smart group. after selecting it -- click preview HTML/Text.
The preview window will not open until the recipient count query has completed. This can also be replicated by setting up a mailing with a large/complex group, saving it, then continuing it and immediately clicking preview. the window will not open until the query completes.Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/21Regression: Public-facing contribution pages appearance changes on 4.7.312023-06-23T17:54:22ZJonGoldRegression: Public-facing contribution pages appearance changes on 4.7.31This is best expressed with screenshots. The first screenshot is 4.7.29 (sorry I don't have an easy 4.7.30 pic to show). The second screenshot is 4.7.31. This is replicable on the demo and I've noted the issue on Drupal, Backdrop and ...This is best expressed with screenshots. The first screenshot is 4.7.29 (sorry I don't have an easy 4.7.30 pic to show). The second screenshot is 4.7.31. This is replicable on the demo and I've noted the issue on Drupal, Backdrop and WP sites alike.
![Selection_428](/uploads/9511293346d743e242e48c10badb9478/Selection_428.png)
![Selection_429](/uploads/88d20617d122fe578bfa3087f6aead1b/Selection_429.png)https://lab.civicrm.org/dev/core/-/issues/3209Contribution Details Statistics are multiplied under many circumstances2023-12-22T05:03:25ZJonGoldContribution Details Statistics are multiplied under many circumstancesThis bug was previously identified and fixed as core#655, but the fix only addresses the rows and not the statistics.
In addition to contribution detail rows getting multiplied by soft credits, they can be multipled by any one-to-many `...This bug was previously identified and fixed as core#655, but the fix only addresses the rows and not the statistics.
In addition to contribution detail rows getting multiplied by soft credits, they can be multipled by any one-to-many `JOIN` to the contribution table. Soft credits are one example, but it can also be to a contact's multi-record contact field group, or if you pick a field (like "Credit Card Type") that lives in the financial transaction tables ([first reported on SE](https://civicrm.stackexchange.com/a/28791/12) by @KarinG).
Given that the statistics don't concern itself with any data that's not in `civicrm_contribution`, we can replace the flawed (and potentially CPU-intensive) original query with a list of contribution IDs and only use `FROM civicrm_contribution`.JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3523Don't cache the full path of extensions so they don't break with dynamic paths2022-06-11T14:41:17ZherbdoolDon't cache the full path of extensions so they don't break with dynamic pathsExtension paths are cached as full paths, which are incompatible with cloud services that might have dynamic filepaths (such as Pantheon). Instead the full path can be determined by other means.
This is an example of what gets cached in...Extension paths are cached as full paths, which are incompatible with cloud services that might have dynamic filepaths (such as Pantheon). Instead the full path can be determined by other means.
This is an example of what gets cached in CRM_Extension_Mapper::getActiveModuleFiles:
```
a:6:{i:0;a:2:{s:6:"prefix";s:4:"iats";s:8:"filePath";s:101:"/var/www/vhosts/httpdocs/sites/all/civicrm_custom/extensions/com.iatspayments.civicrm/iats.php";}i:1;a:2:{s:6:"prefix";s:14:"extendedreport";s:8:"filePath";s:114:"/var/www/vhosts/httpdocs/sites/all/civicrm_custom/extensions/nz.co.fuzion.extendedreport/extendedreport.php";}i:2;a:2:{s:6:"prefix";s:12:"cividiscount";s:8:"filePath";s:116:"/var/www/vhosts/httpdocs/sites/all/civicrm_custom/extensions/org.civicrm.module.cividiscount/cividiscount.php";}i:3;a:2:{s:6:"prefix";s:9:"sumfields";s:8:"filePath";s:108:"/var/www/vhosts/httpdocs/sites/all/civicrm_custom/extensions/net.ourpowerbase.sumfields/sumfields.php";}i:4;a:2:{s:6:"prefix";s:4:"gdpr";s:8:"filePath";s:102:"/var/www/vhosts/httpdocs/sites/all/civicrm_custom/extensions/uk.co.vedaconsulting.gdpr/gdpr.php";}i:5;a:2:{s:6:"prefix";s:10:"l10nupdate";s:8:"filePath";s:107:"/var/www/vhosts/httpdocs/sites/all/civicrm_custom/extensions/com.cividesk.l10n.update/l10nupdate.php";}}
```
Previous solution was to use the patch in this issue https://www.drupal.org/node/2347897 but it meant there was a performance hit by always skipping cache.5.24.0https://lab.civicrm.org/dev/core/-/issues/3606send test email may create duplicate contacts2022-06-11T14:55:49Zlcdwebsend test email may create duplicate contactsto reproduce:
1. construct a new email
2. in the "send test email to:" field list two email addresses that match existing contacts. separate them with a comma and space
3. trigger the test email
the first email will match the existi...to reproduce:
1. construct a new email
2. in the "send test email to:" field list two email addresses that match existing contacts. separate them with a comma and space
3. trigger the test email
the first email will match the existing contact. the second email will result in a new duplicate contact getting created. the issue is if you have a space after the comma separating the email addresses. the values are not trimmed when parsed, causing a failed match and the creation of a duplicate.5.6lcdweblcdwebhttps://lab.civicrm.org/dev/core/-/issues/2098testMailReportForPrint outputs screeds of stuff into test log - fix2023-05-18T05:03:26ZeileentestMailReportForPrint outputs screeds of stuff into test log - fixhttps://lab.civicrm.org/dev/core/-/issues/2097Remove CIVICRM_FLEXMAILER_HACK_DELIVER2023-05-16T05:03:25ZeileenRemove CIVICRM_FLEXMAILER_HACK_DELIVERI started looking at fixing the memory leaks in MailingJob::runJobs (see #2073) - which is tested via MailingJob:;testMailerSendTest_email but the fact we pass $job out - to use memory & queries efficiently $job should be a CRM_Core_DAO:...I started looking at fixing the memory leaks in MailingJob::runJobs (see #2073) - which is tested via MailingJob:;testMailerSendTest_email but the fact we pass $job out - to use memory & queries efficiently $job should be a CRM_Core_DAO::executeQuery() object but it is a ```CRM_Mailing_BAO_MailingJob``` - there are also a couple of places that call functions on it that could be called statically if it were a $dao
Basically we should clear the mess up - or as a minimum for this ticket remove those weird constants CIVICRM_FLEXMAILER_HACK_DELIVER
@jamie @seamuslee @mattwire @tottenhttps://lab.civicrm.org/dev/core/-/issues/22Unable to delete Smart Group2023-06-23T17:54:22ZKarinGUnable to delete Smart Groupcivicrm mysqli.php(933): DB_common->raiseError(-1, NULL, NULL, "CREATE TEMPORARY TABLE civicrm_temp_group_contact_cache1416 (SELECT 565 as gr...", "1139 ** Got error 'empty (sub)expression' from regexp")
post upgrade from 4.6 -> 4.7 -> ...civicrm mysqli.php(933): DB_common->raiseError(-1, NULL, NULL, "CREATE TEMPORARY TABLE civicrm_temp_group_contact_cache1416 (SELECT 565 as gr...", "1139 ** Got error 'empty (sub)expression' from regexp")
post upgrade from 4.6 -> 4.7 -> Smart Groups with Children are broken (can't view Contacts; can't Delete; can't edit Search Criteria); relevant part of the critical Error in ConfigAndLog:
#6 /var/www/civicrm/4.7/packages/DB/mysqli.php(933): DB_common->raiseError(-1, NULL, NULL, "CREATE TEMPORARY TABLE civicrm_temp_group_contact_cache1416 (SELECT 565 as gr...", "1139 ** Got error 'empty (sub)expression' from regexp")
Have advised client to recreate these Smart Groups; raising here for awareness;https://lab.civicrm.org/dev/core/-/issues/3281Pledge Detail report fails when "Balance Due" is selected and pledge status l...2022-04-22T15:53:41ZJonGoldPledge Detail report fails when "Balance Due" is selected and pledge status labels are alteredThis is another instance of "label used instead of machine name" bug, first reported on SE here: https://civicrm.stackexchange.com/q/33419/12
The solution is a one-word change.
#### Steps to replicate:
* Change the label in the pledge ...This is another instance of "label used instead of machine name" bug, first reported on SE here: https://civicrm.stackexchange.com/q/33419/12
The solution is a one-word change.
#### Steps to replicate:
* Change the label in the pledge status option group for either "Completed" or "Cancelled".
* Open a Pledge Detail report.
* Run a report with the "Balance Due" field selected.
The report will crash.5.20.0JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3607Feature: Provide an administrative option to make unsubscribe affect all matc...2024-02-17T05:03:32ZlolcodeFeature: Provide an administrative option to make unsubscribe affect all matching email addressesOur organization would like the unsubscribe action to unsubscribe all contacts with the same email from the group. In cases of duplicate contacts they unsubscribe once but one of the duplicates will still get an email and then we get CAS...Our organization would like the unsubscribe action to unsubscribe all contacts with the same email from the group. In cases of duplicate contacts they unsubscribe once but one of the duplicates will still get an email and then we get CASL complaints. Due to CASL we are trying to be cautious by default here.
We suggest an administrative setting for Civimail: "Unsubscribe contact (radio) or unsubscribe email address (radio)"
There was some support for this option expressed in a discussion here: https://chat.civicrm.org/civicrm/pl/sxd4jpwxpbynx8y15994ua7jea
A good point is that this needs to be guarded by token access to stop attackers being able to unsubscribe prominent emails from organisational lists (for example).
A further suggestion was made to make this a user selection option on the unsubscribe page. I feel that this would be a good but separate feature request.https://lab.civicrm.org/dev/core/-/issues/3531Time zones should be in sync even if database server is set to different time...2024-02-09T05:03:19ZherbdoolTime zones should be in sync even if database server is set to different time zone from server with application (PHP)According to https://docs.civicrm.org/installation/en/latest/general/requirements/#mysql-time:
> PHP and MySQL may be running on different servers, and the clocks may be out-of-sync. Configuring automatic clock synchronization is the be...According to https://docs.civicrm.org/installation/en/latest/general/requirements/#mysql-time:
> PHP and MySQL may be running on different servers, and the clocks may be out-of-sync. Configuring automatic clock synchronization is the best solution.
It's not clear how necessary it is for CiviCRM to rely on the database server's time zone. This causes issues on Pantheon since there is no guarantee the database server is in the same location as the app server. The database server is set to use UTC. One can override it with `SET @@global.time_zone = '-04:00'` or whatever, but this is only temporary. Pantheon migrates databases between servers as upgrades are rolled out. The new server has the default settings. So we can't rely on setting that and Pantheon is currently not planning to allow changes to that configuration in a file.
In core (per CMS integration) the database time zone is set each database session. Such as with `CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone();` in civicrm.module. But this doesn't help in the case with Pantheon. (I'm not entirely sure why).
But it's not really clear why it needs to be done this way. Could CiviCRM instead take the same approach as Drupal/Backdrop by saving all dates as UTC and then convert them to the CMS' timezone for display? Isn't that more robust?https://lab.civicrm.org/dev/core/-/issues/23Upgrade to version 4.7.31 seems to have broken DAO.PHP2023-06-23T17:54:22ZhetclubUpgrade to version 4.7.31 seems to have broken DAO.PHPVersion 4.7.31 was installed and now an hourly cron job is erroring like this:
"Parse error: syntax error, unexpected '[' in /.../administrator/components/com_civicrm/civicrm/CRM/Core/DAO.php on line 651.Version 4.7.31 was installed and now an hourly cron job is erroring like this:
"Parse error: syntax error, unexpected '[' in /.../administrator/components/com_civicrm/civicrm/CRM/Core/DAO.php on line 651.https://lab.civicrm.org/dev/core/-/issues/3274Filter contact sub-type by "is not one of" fails2022-04-22T15:53:25Zaydunsaidan.saunders@squiffle.ukFilter contact sub-type by "is not one of" failsWhen filtering by contact sub-type, "is not one of" excludes all those that do not have a sub-type.
Noted previously here: https://lab.civicrm.org/dev/report/issues/15#note_25491
For example, filtering by "is not one of" 'Student' shou...When filtering by contact sub-type, "is not one of" excludes all those that do not have a sub-type.
Noted previously here: https://lab.civicrm.org/dev/report/issues/15#note_25491
For example, filtering by "is not one of" 'Student' should just exclude those who do have a sub-type of Student. Currently, it also excludes all those who have a sub-type of Student, and also all those with no sub-type.5.21.0aydunsaidan.saunders@squiffle.ukaydunsaidan.saunders@squiffle.ukhttps://lab.civicrm.org/dev/core/-/issues/3544Bounce processing doesn't catch pattern "user doesn't exist"2022-06-11T14:50:31ZDetlev SieberBounce processing doesn't catch pattern "user doesn't exist"CiviCRM bounce processing analyzes the bounce text patterns, and decides what kind of bounce type it is. This is a fragile process, but there seems to be no better solution, since there is no general standardization of bounce patterns.
...CiviCRM bounce processing analyzes the bounce text patterns, and decides what kind of bounce type it is. This is a fragile process, but there seems to be no better solution, since there is no general standardization of bounce patterns.
Some email providers throw the bounce pattern "user doesn't exist", which is not found, and therefore results in bounce_type "syntax". However, this bounce pattern should result in immediately switching the email address to "inactive".
Solution is:
> insert into civicrm_mailing_bounce_pattern (bounce_type_id, pattern) values (6, 'user doesn\'t exist');
5.9Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/3267Case Detail 'Active Role?' filter excludes cases without relationships2022-04-22T15:53:13Zaydunsaidan.saunders@squiffle.ukCase Detail 'Active Role?' filter excludes cases without relationshipsThe 'Active Role?' filter in the Case Detail report checks the status of relationships.
The current implementation of the filter as a simple boolean requires relationships to exist, and therefore excludes cases without relationships whe...The 'Active Role?' filter in the Case Detail report checks the status of relationships.
The current implementation of the filter as a simple boolean requires relationships to exist, and therefore excludes cases without relationships whether the setting is Yes or No.
Problem also reported here: https://civicrm.stackexchange.com/questions/28836/case-details-report-active-case-role-filter5.22.0aydunsaidan.saunders@squiffle.ukaydunsaidan.saunders@squiffle.ukhttps://lab.civicrm.org/dev/core/-/issues/3631Unexpected behavior from api.MailingEventSubscribe.create2024-02-21T05:03:31ZginkgofjgUnexpected behavior from api.MailingEventSubscribe.createIn creating a custom e-newsletter sign-up form for a client, I encountered the following unexpected behaviors. I'm happy to submit one or more corrective pull requests but would first like to:
* confirm that this is not an unexpected us...In creating a custom e-newsletter sign-up form for a client, I encountered the following unexpected behaviors. I'm happy to submit one or more corrective pull requests but would first like to:
* confirm that this is not an unexpected use of this API,
* confirm that these behaviors are unexpected,
* get two cents from others on the approach, and
* get acceptance criteria for the PR(s) -- i.e., what tests do I need to write/pass?
The unexpecteds:
1. This is cosmetic, but the API metadata are wrong. The API Explorer describes the params as though they were for unsubscription.
2. Suppose contact X is already a member of a mailing group Y. If their IDs are passed to this API, the contact's status in the group is "downgraded" to "Pending" and the user must reconfirm membership by clicking the link emailed to them.
3. The contact's DO NOT MAIL and NO BULK EMAILS Communication Preferences are not updated. These changes should not be effected by the initial API call, but after the user clicks the confirmation link emailed to her.
The approaches:
1. This should be a trivial update to the API's `_spec()` function.
2. The API delegates to `CRM_Mailing_Event_BAO_Subscribe::subscribe()`. I would fix the problem in the delegate by checking for group membership and bailing out early if the record already exists with the appropriate status.
3. Confirmation is handled by `CRM_Mailing_Page_Confirm` which delegates to `CRM_Mailing_Event_BAO_Confirm::confirm()`. I would unset the communication preferences in question in the delegate.ginkgofjgginkgofjghttps://lab.civicrm.org/dev/core/-/issues/25Wrap split_jobs in a transaction2023-06-23T17:54:22ZseamusleeWrap split_jobs in a transactionThe split_jobs function should be wrapped in a MySQL transaction to ensure that no mailing can be delivered whilst we are still trying to populate the mailing_job table with all the necessary jobs.The split_jobs function should be wrapped in a MySQL transaction to ensure that no mailing can be delivered whilst we are still trying to populate the mailing_job table with all the necessary jobs.5.1.0seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/3210Report Listing improved UX2023-12-23T05:03:22ZJonGoldReport Listing improved UXWhen you go to **Reports menu » X Reports**, where `X` is anything, you get the report listing page (`CRM_Report_Page_InstanceList`). This page hard-codes the order the reports appear in.
* First by component
* Second by the weight o...When you go to **Reports menu » X Reports**, where `X` is anything, you get the report listing page (`CRM_Report_Page_InstanceList`). This page hard-codes the order the reports appear in.
* First by component
* Second by the weight of the report template ID in the `report_template` option value list
* Third alphabetized by title.
The second sort criterium is the problematic one. I propose we sort by component, then alphabetically.
I assume the original thinking was, "Let's keep all the Contribution Summary reports together, all the Contribution Detail reports", etc. However, I think this isn't an ideal UX:
* Users don't know (or care about) the order of report templates in the option value list.
* Reports can be sorted any number of ways: By user, department, workflow - but those are unlikely to map to report templates.
* This is all especially true in an era where there's many report extensions that provide overlapping reports with core (Extended Reports, Reports Plus, Pivot Reports). I think it makes more sense not to sort by report type.JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/3632Mass SMS not sent to contacts whose mobile phone is not their Primary phone2022-06-12T21:25:03ZkenMass SMS not sent to contacts whose mobile phone is not their Primary phoneI have just upgraded to CiviCRM 5.3.2 and have found that Mass SMS are not being delivered to contacts where the mobile phone is not the Primary phone.
The change was made in this commit https://github.com/civicrm/civicrm-core/commit/6f...I have just upgraded to CiviCRM 5.3.2 and have found that Mass SMS are not being delivered to contacts where the mobile phone is not the Primary phone.
The change was made in this commit https://github.com/civicrm/civicrm-core/commit/6f3a35e0986bc21ffbf730c7d3f20f2894c1bb58#diff-8c026e80a2f25f46826dd9568bc301b0 in this PR https://github.com/civicrm/civicrm-core/pull/11558 as a result of this refactoring https://issues.civicrm.org/jira/browse/CRM-21316.
It seems from the unit test case that the code handles the case where a contact has multiple Mobile phones and chooses the Primary phone over the non-Primary phone.
But the code fails if the Primary phone is not the Mobile one.
What is needed is something similar to the Mass Email case. For emails, CRM_Mailing_BAO_Mailing::getLocationFilterAndOrderBy() generates a WHERE clause and an ORDER BY clause that ensures the right emails are selected and preferred.https://lab.civicrm.org/dev/core/-/issues/26On behalf form fails to create new organisation2023-04-28T01:39:32ZjitendraOn behalf form fails to create new organisationRelated SE - https://civicrm.stackexchange.com/questions/23137/existing-organization-getting-updated-instead-a-new-organization/24190
Steps to replicate -
- Set up Contribution page using 'on behalf of'
- Submit the form a first time,...Related SE - https://civicrm.stackexchange.com/questions/23137/existing-organization-getting-updated-instead-a-new-organization/24190
Steps to replicate -
- Set up Contribution page using 'on behalf of'
- Submit the form a first time, create your 'on behalf of' Org.
- Submit the form a second time for New Org, using new name/email
- Outcome the original Org now has the new email but the old name. Both contributions are on their record.https://lab.civicrm.org/dev/core/-/issues/3608getRecipients() appears to use a WHERE clause as an ORDER BY clause2022-06-11T14:55:55ZkengetRecipients() appears to use a WHERE clause as an ORDER BY clauseSee https://github.com/civicrm/civicrm-core/commit/906298d3f63825adbee0e85963d89354edf8acf1#r30370554See https://github.com/civicrm/civicrm-core/commit/906298d3f63825adbee0e85963d89354edf8acf1#r303705545.8https://lab.civicrm.org/dev/core/-/issues/2206Fix pledge action on failed/ cancelled contribution2021-02-03T03:48:36ZeileenFix pledge action on failed/ cancelled contributionIn digging into https://lab.civicrm.org/dev/core/-/issues/927 the pledge action appears to be incorrect to me when a contribution is cancelled or fails.
Currently there is a call to update the pledge which might reset it's status back t...In digging into https://lab.civicrm.org/dev/core/-/issues/927 the pledge action appears to be incorrect to me when a contribution is cancelled or fails.
Currently there is a call to update the pledge which might reset it's status back to overdue or whatever. However if the pledge has 4 payments one of those is still attached to the failed payment and is not available in the UI to have a new payment added to it. It is effectively voided rather than released and needs a database intervention.
This is a pretty obscure scenario so rarely reached. However, I propose that it should be
1) if a contribution attached to a plege payment is cancelled or fails then the contribution should be unattached (contribution_id set to NULL) and the pledge_payment field actual_amount reset to null and pledge payment status reset to Pending .
2) I think this can be done whenever a contribution is updated with a status of failed or cancelled and there is a pledge payment related to it (this means we are saying we would clean up on null edit - which we do with a number of other things we deem to be part of the data model and we don't have to look up so see if status is changing - just that status is cancelled/failed & the pledge_payment exists).
3) I think this should be moved back out of the extension into being called directly from contibution.create action. The reason is that I think this is actually our data model as opposed to a business process. The way the UI works & the fact no additional payment row is created suggests there was never an intent to have non-payments assigned to pledge payment rows.https://lab.civicrm.org/dev/core/-/issues/27Move check for presence of the phone strip function to a Check (currently don...2023-04-28T01:39:33ZeileenMove check for presence of the phone strip function to a Check (currently done whenever a phone number is edited)5.40.0https://lab.civicrm.org/dev/core/-/issues/3633Error notification when scheduling civimail for current day may be incorrect2024-02-21T05:03:32ZrobinhoodError notification when scheduling civimail for current day may be incorrectThis is a minor issue. When setting up a civimail at a scheduled date and time, any time on the current day triggers "The scheduled date and time is in the past" error popup, even if the scheduled time is in the future. The error does n...This is a minor issue. When setting up a civimail at a scheduled date and time, any time on the current day triggers "The scheduled date and time is in the past" error popup, even if the scheduled time is in the future. The error does not prevent the civimail from being scheduled for the current day, but it is confusing to the user.
Edit: Using Civicrm 5.3.2 on Wordpress 4.9.8https://lab.civicrm.org/dev/core/-/issues/28For repeating Events, the absolute Registration Start / End date is transferr...2023-04-28T01:39:33Zjustinfreeman (Agileware)For repeating Events, the absolute Registration Start / End date is transferred to each of the repeated events which causes future events to be closed for sign-ups on creationFor repeating Events, the absolute Registration Start / End date is transferred to each of the repeated events which causes future events to be closed for sign-ups on creation.
The fields are:
Registration Start Date / Time
Registration...For repeating Events, the absolute Registration Start / End date is transferred to each of the repeated events which causes future events to be closed for sign-ups on creation.
The fields are:
Registration Start Date / Time
Registration End Date / Time
It makes more sense for repeating events, that these dates need to be set relative to the event date.
This could be an overall enhancement to make these date fields relative for all events, not just repeating. Which would make more sense. Especially since that applies also to copying an event as well as setting up a repeating event.
As it stands now, repeating events with Registration Start and Registration End need to be manually updated after creation. Otherwise, no one can register for those events.
Agileware Ref: CIVICRM-841https://lab.civicrm.org/dev/core/-/issues/3634When using a smart group as a mailing list, users who unsubscribe from the sm...2022-06-11T14:57:45Ztom.mWhen using a smart group as a mailing list, users who unsubscribe from the smart group are still included in the mailing.It looks like in CRM/MailingBAO/Mailing.php, is not taking into account those who have been removed from the smart group. Civi version 5.3.
```
if (count($includeSmartGroupIDs)) {
$query = CRM_Utils_SQL_Select::from($contact)
...It looks like in CRM/MailingBAO/Mailing.php, is not taking into account those who have been removed from the smart group. Civi version 5.3.
```
if (count($includeSmartGroupIDs)) {
$query = CRM_Utils_SQL_Select::from($contact)
->select("$contact.id as contact_id, $entityTable.id as $entityColumn")
->join($entityTable, " INNER JOIN $entityTable ON $entityTable.contact_id = $contact.id ")
->join('gc', " INNER JOIN civicrm_group_contact_cache gc ON $contact.id = gc.contact_id ")
->join('mg', " INNER JOIN civicrm_mailing_group mg ON gc.group_id = mg.entity_id AND mg.search_id IS NULL ")
->join('temp', " LEFT JOIN $excludeTempTablename temp ON $contact.id = temp.contact_id ")
->where('gc.group_id IN (#groups)')
->merge($criteria)
->replaceInto($includedTempTablename, array('contact_id', $entityColumn))
->param('#groups', $includeSmartGroupIDs)
->param('#mailingID', $mailingID)
->execute();
}
```https://lab.civicrm.org/dev/core/-/issues/29Joomla Menu Item - Event Registration - Unable to choose event2023-04-28T01:39:33ZADG CreativeJoomla Menu Item - Event Registration - Unable to choose eventWhen creating a Joomla Menu Item to point to an Event Registration page, the dropdown for choosing an event is empty although there are current active events that should be populating.
This is affecting version 4.7.31, our sites running...When creating a Joomla Menu Item to point to an Event Registration page, the dropdown for choosing an event is empty although there are current active events that should be populating.
This is affecting version 4.7.31, our sites running 4.7.30 are not encountering this problem.
Type Event Registration is the only one that seems to be having an issue, all other types work as expected.
Joomla Versions: 3.8.4, 3.8.6Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/3635Emails marked as bounce when quota is full2024-02-22T05:03:25ZEdselopezEmails marked as bounce when quota is fullThere are cases (usually when using Gmail SMTP) when the Outbound email fails to deliver a mailing due to the user's daily quota being exhausted. In this case, if the mailing is re-used unknowingly, attempts to re-send the mailing adds t...There are cases (usually when using Gmail SMTP) when the Outbound email fails to deliver a mailing due to the user's daily quota being exhausted. In this case, if the mailing is re-used unknowingly, attempts to re-send the mailing adds to the bounce threshold, finally surpassing the limit of three bounces, marking the email as "on hold". To solve this, I'm thinking bounce type of "Quota" should be excluded from the calculation of marking the email as on hold. Please let me know if this is reasonable and I will provide a patch.https://lab.civicrm.org/dev/core/-/issues/30Exporting master address contact even if no master address contact is defined2023-04-28T01:39:33ZsamuelsovExporting master address contact even if no master address contact is definedExporting "Master address contact" should give the master contact only if there is a master_id defined for this address but currently, if there is no master_id, the first master address id found for this contact is used.
```php
class C...Exporting "Master address contact" should give the master contact only if there is a master_id defined for this address but currently, if there is no master_id, the first master address id found for this contact is used.
```php
class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
...
public static function getMasterDisplayName($masterAddressId = NULL, $contactId = NULL) {
$masterDisplayName = NULL;
$sql = NULL;
if (!$masterAddressId && !$contactId) {
return $masterDisplayName;
}
if ($masterAddressId) {
$sql = "
SELECT display_name from civicrm_contact
LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id )
WHERE civicrm_address.id = " . $masterAddressId;
}
// ==> is there any reason to do that ?
elseif ($contactId) {
$sql = "
SELECT display_name from civicrm_contact cc, civicrm_address add1
LEFT JOIN civicrm_address add2 ON ( add1.master_id = add2.id )
WHERE cc.id = add2.contact_id AND add1.contact_id = " . $contactId;
}
$masterDisplayName = CRM_Core_DAO::singleValueQuery($sql);
return $masterDisplayName;
}
```5.3.0https://lab.civicrm.org/dev/core/-/issues/3609CiviCRM, Find Mailings by Mailing Status, select Draft/Unscheduled will show ...2022-06-11T14:55:57Zjustinfreeman (Agileware)CiviCRM, Find Mailings by Mailing Status, select Draft/Unscheduled will show "Complete" and "Not scheduled" mailings in the Mailing resultsCiviCRM, Find Mailings by Mailing Status, select Draft/Unscheduled will show "Complete" and "Not scheduled" mailings in the Mailing results.
Using CiviCRM 5.7.2
![find-mailings](/uploads/88cf1c56b62d0bb8c5cb5bca4be042a2/find-mailings.p...CiviCRM, Find Mailings by Mailing Status, select Draft/Unscheduled will show "Complete" and "Not scheduled" mailings in the Mailing results.
Using CiviCRM 5.7.2
![find-mailings](/uploads/88cf1c56b62d0bb8c5cb5bca4be042a2/find-mailings.png)
Agileware Ref: CIVICRM-1120https://lab.civicrm.org/dev/core/-/issues/3636CiviCRM, Find Mailings. If there are no results, the same message "There are ...2022-06-11T14:57:49Zjustinfreeman (Agileware)CiviCRM, Find Mailings. If there are no results, the same message "There are no Unscheduled Mailings" is shownCiviCRM, Find Mailings. If there are no results, the same message "There are no Unscheduled Mailings" is shown regardless of the search criteria. If a different mailing status was used for search, it does not make sense to refer to "Unsc...CiviCRM, Find Mailings. If there are no results, the same message "There are no Unscheduled Mailings" is shown regardless of the search criteria. If a different mailing status was used for search, it does not make sense to refer to "Unscheduled Mailings".
This text should be changed to something else like: "There are no mailings matching this criteria".
Using CiviCRM 5.7.2
Agileware Ref: CIVICRM-1121
![Find_Mailings-2](/uploads/34e6b1996338721a1a2a333a3a16cd2a/Find_Mailings-2.png)https://lab.civicrm.org/dev/core/-/issues/32Add option to disable cancel button on a profile form2023-04-28T01:39:33ZjitendraAdd option to disable cancel button on a profile formWhile setting up "subscribe" and "contact us" forms for a site, the default behaviour for a wordpress profile form of type "create" embedded via a shortcode is to show a cancel button.
This isn't really necessary for a single page form...While setting up "subscribe" and "contact us" forms for a site, the default behaviour for a wordpress profile form of type "create" embedded via a shortcode is to show a cancel button.
This isn't really necessary for a single page form with no existing data in it - but there doesn't appear to be a way to disable it.5.4.0https://lab.civicrm.org/dev/core/-/issues/3572Deduping test email is case sensitive2022-06-11T14:54:27ZMartinDeduping test email is case sensitiveTested on 4.6.38 and 5.6.1.
When composing a mailing, the email address used in the "send test email to" field at the bottom is deduped. This is case sensitive, so fails to match emails that are the same but have different upper/lower c...Tested on 4.6.38 and 5.6.1.
When composing a mailing, the email address used in the "send test email to" field at the bottom is deduped. This is case sensitive, so fails to match emails that are the same but have different upper/lower case combinations. In this case, it will create a new contact with this interesting property: the value in the "email" field shows with the email address flattened to all lowercase, but the display name for the contact shows with the upper/lower case mix used when it was entered to test the mailing.
The upshot of all this is that if I'm putting together a mailing and send 6 test to the same email address (with an uppercase letter), I get 6 new duplicate contacts because it fails to match it each time.
Request to make the dedupe test for this mailing field case insensitive, since in general civi seems to want email addresses to be lowercase when they're used.
I can potentially make this change if someone can point me in the right direction.
Thanks!5.11https://lab.civicrm.org/dev/core/-/issues/33CiviCRM-WordPress - Do not parse shortcodes in REST context2023-04-28T01:39:33ZkcristianoCiviCRM-WordPress - Do not parse shortcodes in REST contextWordPress 5.0 will introduce a new default editing experience. The code name is 'Gutenberg' . Gutenberg is built on blocks and the method of handling modals in the editing experience is changing.
The existing modal for inserting shor...WordPress 5.0 will introduce a new default editing experience. The code name is 'Gutenberg' . Gutenberg is built on blocks and the method of handling modals in the editing experience is changing.
The existing modal for inserting shortcodes will not work with Gutenberg. We will need to rework inserting the shortcode to a new block for the new release. Expected Merge Request for Gutenberg will be April 2018 and the release will be sometime thereafter.
However, this week WP 4.9.5 will ship and in this release will be a call to action to all users to install the Gutenberg plugin to test.
Currently if a CiviCRM shortcode is put into the 'Shortcode Block' there will be an error and the post will not save properly. As [bastienho](https://github.com/bastienho) points out in [PR 126](https://github.com/civicrm/civicrm-wordpress/pull/126) the following error is thrown: ``Notice: Trying to get property of non-object in civicrm/civicrm/CRM/Utils/System/WordPress.php on line 221``
For now we should fix this error and then work on full Gutenberg Compatibility once the official merge request is approved to WP.https://lab.civicrm.org/dev/core/-/issues/3610Jira Issue CRM-21666 still exists in 5.8.12022-06-11T14:56:07ZjeffmikelsJira Issue CRM-21666 still exists in 5.8.1https://issues.civicrm.org/jira/browse/CRM-21666
CRM/Mailing/DAO/Mailing.php
and
CRM/Mailing/BAO/Mailing.php
still have a discrepancy regarding the naming of the mailing_date field
messageNotice: Undefined property: CRM_Mailing_BAO...https://issues.civicrm.org/jira/browse/CRM-21666
CRM/Mailing/DAO/Mailing.php
and
CRM/Mailing/BAO/Mailing.php
still have a discrepancy regarding the naming of the mailing_date field
messageNotice: Undefined property: CRM_Mailing_BAO_Mailing::$mailing_modified_date in CRM_Mailing_BAO_Mailing::report()5.9https://lab.civicrm.org/dev/core/-/issues/34Split edit/view access on permissioned relationships2023-04-28T01:39:33Zaydunsaidan.saunders@squiffle.ukSplit edit/view access on permissioned relationshipsCurrently, relationships can be 'permissioned' such that one contact in the relationship can access the other. This access is both view and edit. It is not possible to provide 'view-only' access via a relationship.
The proposed approa...Currently, relationships can be 'permissioned' such that one contact in the relationship can access the other. This access is both view and edit. It is not possible to provide 'view-only' access via a relationship.
The proposed approach is to create an 'edit related contacts' permission that works in conjunction with the existing permissioning:
- for users with the 'edit related contacts' permission, behaviour is unchanged
- for users without the 'edit related contacts' permission, contacts that they have access to via permissioned relationships will be viewable (as now), but not editable (change).5.5.0aydunsaidan.saunders@squiffle.ukaydunsaidan.saunders@squiffle.ukhttps://lab.civicrm.org/dev/core/-/issues/3546Recipients in smart group are less than actual in group2023-02-08T16:54:07ZGhost UserRecipients in smart group are less than actual in groupFor some reason smart group is only sending to five people even though group has 47 and none have opted out of bulk mailing or email so not sure why the mailing interface is only calculating 5 recipients.
![Screen_Shot_2018-12-20_at_1.0...For some reason smart group is only sending to five people even though group has 47 and none have opted out of bulk mailing or email so not sure why the mailing interface is only calculating 5 recipients.
![Screen_Shot_2018-12-20_at_1.05.06_PM](/uploads/03674ebbecba86a4c8c585f305bfe515/Screen_Shot_2018-12-20_at_1.05.06_PM.png)
![Screen_Shot_2018-12-20_at_1.05.35_PM](/uploads/d5054897492805c5403c6967df77edbb/Screen_Shot_2018-12-20_at_1.05.35_PM.png)https://lab.civicrm.org/dev/core/-/issues/35avoid template variable leakage when processing more than one recurring contr...2023-04-28T01:39:33Zjamieavoid template variable leakage when processing more than one recurring contribution in a sessionThis bug happens if you have more than one iATS recurring contribution and an earlier contribution is assigned to a soft credit, but one or more later contributions are not assigned to a soft credit.
The later contributions have the sof...This bug happens if you have more than one iATS recurring contribution and an earlier contribution is assigned to a soft credit, but one or more later contributions are not assigned to a soft credit.
The later contributions have the soft credit information inserted into their receipt because the email message template variables are not properly cleared.
iATS processes multiple recurring contributions in a single session via a cron job, so may be uniquely triggering this error (although the bug is with CiviCRM Core).5.3.0https://lab.civicrm.org/dev/core/-/issues/3566Public View link does not show from Scheduled and Sent screen2022-06-11T14:54:15ZseamusleePublic View link does not show from Scheduled and Sent screenWhen you view a list of scheduled and sent mailings you cannot access the Public View url link even tho the code suggests it should be availableWhen you view a list of scheduled and sent mailings you cannot access the Public View url link even tho the code suggests it should be available5.10https://lab.civicrm.org/dev/core/-/issues/36send_reminder causes database error2023-04-28T01:39:33Zgremblebeansend_reminder causes database errorWhen running the send_reminder job on CiviCRM 4.7.31 on MariaDB 10.1.26-0+deb9u1 using:
`cli.php -s my.3ca.org.uk -u admin -p*** -e Job -a send_reminder`
It fails with:
```
DB Error: syntax error
Died during callApi
```
The full erro...When running the send_reminder job on CiviCRM 4.7.31 on MariaDB 10.1.26-0+deb9u1 using:
`cli.php -s my.3ca.org.uk -u admin -p*** -e Job -a send_reminder`
It fails with:
```
DB Error: syntax error
Died during callApi
```
The full error log reads:
```
Mar 30 07:26:59 [info] $Fatal Error Details = Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => exceptionHandler
)
[code] => -2
[message] => DB Error: syntax error
[mode] => 16
[debug_info] => INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_schedule_id)
SELECT e.contact_id as contact_id, e.id as entity_id, "civicrm_participant" as entity_table, 21 as action_schedule_id
FROM civicrm_participant e
INNER JOIN civicrm_event_en_GB r ON e.event_id = r.id
INNER JOIN civicrm_contact c ON c.id = e.contact_id AND c.is_deleted = 0 AND c.is_deceased = 0
LEFT JOIN civicrm_action_log reminder ON reminder.contact_id = e.contact_id AND
reminder.entity_id = e.id AND
reminder.entity_table = 'civicrm_participant' AND
reminder.action_schedule_id = 21
WHERE (r.id IN ("84")) AND (r.is_active = 1) AND (r.is_template = 0) AND (e.status_id IN (1)) AND (reminder.id IS NULL) AND ('20180330072659' >= DATE_SUB(r.start_date, INTERVAL hour)) AND (DATE_SUB(20180330072659, INTERVAL 1 DAY ) <= r.start_date)
[nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')) AND (DATE_SUB(20180330072659, INTERVAL 1 DAY ) <= r.start_date)' at line 10]
[type] => DB_Error
[user_info] => INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_schedule_id)
SELECT e.contact_id as contact_id, e.id as entity_id, "civicrm_participant" as entity_table, 21 as action_schedule_id
FROM civicrm_participant e
INNER JOIN civicrm_event_en_GB r ON e.event_id = r.id
INNER JOIN civicrm_contact c ON c.id = e.contact_id AND c.is_deleted = 0 AND c.is_deceased = 0
LEFT JOIN civicrm_action_log reminder ON reminder.contact_id = e.contact_id AND
reminder.entity_id = e.id AND
reminder.entity_table = 'civicrm_participant' AND
reminder.action_schedule_id = 21
WHERE (r.id IN ("84")) AND (r.is_active = 1) AND (r.is_template = 0) AND (e.status_id IN (1)) AND (reminder.id IS NULL) AND ('20180330072659' >= DATE_SUB(r.start_date, INTERVAL hour)) AND (DATE_SUB(20180330072659, INTERVAL 1 DAY ) <= r.start_date)
[nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')) AND (DATE_SUB(20180330072659, INTERVAL 1 DAY ) <= r.start_date)' at line 10]
[to_string] => [db_error: message="DB Error: syntax error" code=-2 mode=callback callback=CRM_Core_Error::exceptionHandler prefix="" info="INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_schedule_id)
SELECT e.contact_id as contact_id, e.id as entity_id, "civicrm_participant" as entity_table, 21 as action_schedule_id
FROM civicrm_participant e
INNER JOIN civicrm_event_en_GB r ON e.event_id = r.id
INNER JOIN civicrm_contact c ON c.id = e.contact_id AND c.is_deleted = 0 AND c.is_deceased = 0
LEFT JOIN civicrm_action_log reminder ON reminder.contact_id = e.contact_id AND
reminder.entity_id = e.id AND
reminder.entity_table = 'civicrm_participant' AND
reminder.action_schedule_id = 21
WHERE (r.id IN ("84")) AND (r.is_active = 1) AND (r.is_template = 0) AND (e.status_id IN (1)) AND (reminder.id IS NULL) AND ('20180330072659' >= DATE_SUB(r.start_date, INTERVAL hour)) AND (DATE_SUB(20180330072659, INTERVAL 1 DAY ) <= r.start_date)
[nativecode=1064 ** You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')) AND (DATE_SUB(20180330072659, INTERVAL 1 DAY ) <= r.start_date)' at line 10]"]
)
Mar 30 07:26:59 [info] $backTrace = #0 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/CRM/Core/Error.php(948): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/packages/PEAR.php(921): CRM_Core_Error::exceptionHandler(Object(DB_Error))
#2 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/packages/DB.php(985): PEAR_Error->__construct("DB Error: syntax error", -2, 16, (Array:2), "INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_s...")
#3 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/packages/PEAR.php(575): DB_Error->__construct(-2, 16, (Array:2), "INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_s...")
#4 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/packages/PEAR.php(223): PEAR->_raiseError(Object(DB_mysqli), NULL, -2, 16, (Array:2), "INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_s...", "DB_Error", TRUE)
#5 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/packages/DB/common.php(1905): PEAR->__call("raiseError", (Array:7))
#6 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/packages/DB/mysqli.php(933): DB_common->raiseError(-2, NULL, NULL, "INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_s...", "1064 ** You have an error in your SQL syntax; check the manual that correspon...")
#7 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/packages/DB/mysqli.php(403): DB_mysqli->mysqliRaiseError()
#8 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/packages/DB/common.php(1216): DB_mysqli->simpleQuery("INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_s...")
#9 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/packages/DB/DataObject.php(2446): DB_common->query("INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_s...")
#10 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/packages/DB/DataObject.php(1635): DB_DataObject->_query("INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_s...")
#11 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/CRM/Core/DAO.php(392): DB_DataObject->query("INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_s...")
#12 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/CRM/Core/DAO.php(1348): CRM_Core_DAO->query("INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_s...", TRUE)
#13 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/Civi/ActionSchedule/RecipientBuilder.php(215): CRM_Core_DAO::executeQuery("INSERT INTO civicrm_action_log (contact_id, entity_id, entity_table, action_s...")
#14 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/Civi/ActionSchedule/RecipientBuilder.php(156): Civi\ActionSchedule\RecipientBuilder->buildRelFirstPass()
#15 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/CRM/Core/BAO/ActionSchedule.php(360): Civi\ActionSchedule\RecipientBuilder->build()
#16 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/CRM/Core/BAO/ActionSchedule.php(375): CRM_Core_BAO_ActionSchedule::buildRecipientContacts(3, "20180330072659", (Array:3))
#17 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/api/v3/Job.php(186): CRM_Core_BAO_ActionSchedule::processQueue("20180330072659", (Array:3))
#18 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/Civi/API/Provider/MagicFunctionProvider.php(89): civicrm_api3_job_send_reminder((Array:3))
#19 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/Civi/API/Kernel.php(169): Civi\API\Provider\MagicFunctionProvider->invoke((Array:9))
#20 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/Civi/API/Kernel.php(100): Civi\API\Kernel->runRequest((Array:9))
#21 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/api/api.php(23): Civi\API\Kernel->runSafe("Job", "send_reminder", (Array:2), NULL)
#22 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/bin/cli.class.php(113): civicrm_api("Job", "send_reminder", (Array:2))
#23 /var/www/my.3ca.org.uk/web/wp-content/plugins/civicrm/civicrm/bin/cli.php(32): civicrm_cli->callApi()
#24 {main}
```https://lab.civicrm.org/dev/core/-/issues/389When using custom fields for smart group criteria with relative dates the gro...2019-12-03T07:22:12ZjasonobrownWhen using custom fields for smart group criteria with relative dates the group does not respect the relative date over timeIf you create a smart group using the relative (dynamic, rolling, "this week", etc...) dates for a custom field, once you save the smart group the dates are no longer relative. It creates/updates the group with static dates that match yo...If you create a smart group using the relative (dynamic, rolling, "this week", etc...) dates for a custom field, once you save the smart group the dates are no longer relative. It creates/updates the group with static dates that match your relative dates at the time you save it.
https://issues.civicrm.org/jira/browse/CRM-20499e5.8https://lab.civicrm.org/dev/core/-/issues/3602Bounce processing fails for invalid unicode characters2022-06-11T14:55:40ZtschuettlerBounce processing fails for invalid unicode charactersWe received some bounces that where containing invalid unicode characters. Due to MySQL not accepting to write those incorrect string values to the database, the bounces are moved to the processed folder although they are not actually re...We received some bounces that where containing invalid unicode characters. Due to MySQL not accepting to write those incorrect string values to the database, the bounces are moved to the processed folder although they are not actually recorded.
Error Log:
```
[info] $backTrace = #0 /var/www/drupal/sites/all/modules/civicrm/CRM/Core/Error.php(912): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 [internal function](): CRM_Core_Error::exceptionHandler(Object(DB_Error))
#2 /var/www/drupal/sites/all/modules/civicrm/packages/PEAR.php(931): call_user_func((Array:2), Object(DB_Error))
#3 /var/www/drupal/sites/all/modules/civicrm/packages/DB.php(976): PEAR_Error->PEAR_Error("DB Error: unknown error", -1, 16, (Array:2), "INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#4 /var/www/drupal/sites/all/modules/civicrm/packages/PEAR.php(564): DB_Error->DB_Error(-1, 16, (Array:2), "INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#5 /var/www/drupal/sites/all/modules/civicrm/packages/DB/common.php(1905): PEAR->raiseError(NULL, -1, NULL, NULL, "INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...", "DB_Error", TRUE)
#6 /var/www/drupal/sites/all/modules/civicrm/packages/DB/mysql.php(895): DB_common->raiseError(-1, NULL, NULL, NULL, "1366 ** Incorrect string value: '\x81hrt ' for column 'bounce_reason' at row 1")
#7 /var/www/drupal/sites/all/modules/civicrm/packages/DB/mysql.php(328): DB_mysql->mysqlRaiseError()
#8 /var/www/drupal/sites/all/modules/civicrm/packages/DB/common.php(1216): DB_mysql->simpleQuery("INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#9 /var/www/drupal/sites/all/modules/civicrm/packages/DB/DataObject.php(2438): DB_common->query("INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#10 /var/www/drupal/sites/all/modules/civicrm/packages/DB/DataObject.php(1060): DB_DataObject->_query("INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#11 /var/www/drupal/sites/all/modules/civicrm/CRM/Core/DAO.php(468): DB_DataObject->insert()
#12 /var/www/drupal/sites/all/modules/civicrm/CRM/Mailing/Event/BAO/Bounce.php(81): CRM_Core_DAO->save()
#13 /var/www/drupal/sites/all/modules/civicrm/api/v3/Mailing.php(316): CRM_Mailing_Event_BAO_Bounce::create((Array:6))
#14 /var/www/drupal/sites/all/modules/civicrm/Civi/API/Provider/MagicFunctionProvider.php(89): civicrm_api3_mailing_event_bounce((Array:5))
#15 /var/www/drupal/sites/all/modules/civicrm/Civi/API/Kernel.php(96): Civi\API\Provider\MagicFunctionProvider->invoke((Array:9))
#16 /var/www/drupal/sites/all/modules/civicrm/api/api.php(23): Civi\API\Kernel->run("Mailing", "event_bounce", (Array:5), NULL)
#17 /var/www/drupal/sites/all/modules/civicrm/CRM/Utils/Mail/EmailProcessor.php(381): civicrm_api("Mailing", "event_bounce", (Array:5))
#18 /var/www/drupal/sites/all/modules/civicrm/CRM/Utils/Mail/EmailProcessor.php(58): CRM_Utils_Mail_EmailProcessor::_process(TRUE, Object(CRM_Core_DAO_MailSettings))
#19 /var/www/drupal/sites/all/modules/civicrm/api/v3/Job.php(361): CRM_Utils_Mail_EmailProcessor::processBounces()
#20 /var/www/drupal/sites/all/modules/civicrm/Civi/API/Provider/MagicFunctionProvider.php(89): civicrm_api3_job_fetch_bounces((Array:1))
#21 /var/www/drupal/sites/all/modules/civicrm/Civi/API/Kernel.php(96): Civi\API\Provider\MagicFunctionProvider->invoke((Array:9))
#22 /var/www/drupal/sites/all/modules/civicrm/api/api.php(23): Civi\API\Kernel->run("Job", "fetch_bounces", (Array:1), NULL)
#23 /var/www/drupal/sites/all/modules/civicrm/CRM/Core/JobManager.php(134): civicrm_api("Job", "fetch_bounces", (Array:1))
#24 /var/www/drupal/sites/all/modules/civicrm/CRM/Core/JobManager.php(79): CRM_Core_JobManager->executeJob(Object(CRM_Core_ScheduledJob))
#25 /var/www/drupal/sites/all/modules/civicrm/api/v3/Job.php(99): CRM_Core_JobManager->execute(FALSE)
#26 /var/www/drupal/sites/all/modules/civicrm/Civi/API/Provider/MagicFunctionProvider.php(89): civicrm_api3_job_execute((Array:1))
#27 /var/www/drupal/sites/all/modules/civicrm/Civi/API/Kernel.php(96): Civi\API\Provider\MagicFunctionProvider->invoke((Array:9))
#28 /var/www/drupal/sites/all/modules/civicrm/api/api.php(23): Civi\API\Kernel->run("job", "execute", (Array:1), NULL)
#29 /var/www/drupal/sites/all/modules/civicrm/drupal/drush/civicrm.drush.inc(1560): civicrm_api("job", "execute", (Array:1))
#30 [internal function](): drush_civicrm_api("job.execute")
#31 /usr/share/php/drush/includes/command.inc(334): call_user_func_array("drush_civicrm_api", (Array:1))
#32 /usr/share/php/drush/includes/command.inc(208): _drush_invoke_hooks("civicrm-api", (Array:1), "civicrm")
#33 [internal function](): drush_command("job.execute")
#34 /usr/share/php/drush/includes/command.inc(175): call_user_func_array("drush_command", (Array:1))
#35 /usr/share/php/drush/drush.php(92): drush_dispatch((Array:27))
#36 /usr/share/php/drush/drush.php(61): _drush_bootstrap_and_dispatch()
#37 /usr/share/php/drush/drush.php(16): drush_main()
#38 {main}
```
I will create PR with a unit test.5.11https://lab.civicrm.org/dev/core/-/issues/37Payment never completed when localizing Contribution statuses2023-04-28T01:39:33ZsamuelsovPayment never completed when localizing Contribution statusesSame kind of problem that https://issues.civicrm.org/jira/browse/CRM-21791, in CRM_Core_Payment, the label is used instead of the name which cause problems when localizing / customizing contribution status label.
To reproduce :
* go to...Same kind of problem that https://issues.civicrm.org/jira/browse/CRM-21791, in CRM_Core_Payment, the label is used instead of the name which cause problems when localizing / customizing contribution status label.
To reproduce :
* go to /civicrm/admin/options?gid=11&reset=1
* change the "Completed" label to anything else, e.g. "Terminé"
* make a payment using a contribution form page that goes through CRM_Core_Payment::doPayment (e.g. use Stripe extension processor)
* the transaction status is never set to "Completed"/"Terminé"https://lab.civicrm.org/dev/core/-/issues/3600Bounce processing fails for 4-byte unicode characters2022-06-11T14:55:27ZtschuettlerBounce processing fails for 4-byte unicode charactersWhen the bounced message contains any 4-byte unicode character, it cannot be saved to the database due to the currently missing support for utf8mb4 in CiviCRM.
Error Log:
```
[info] $backTrace = #0 /opt/buildkit/build/dmaster/sites/all...When the bounced message contains any 4-byte unicode character, it cannot be saved to the database due to the currently missing support for utf8mb4 in CiviCRM.
Error Log:
```
[info] $backTrace = #0 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Core/Error.php(948): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/PEAR.php(921): CRM_Core_Error::exceptionHandler(Object(DB_Error))
#2 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB.php(985): PEAR_Error->__construct("DB Error: unknown error", -1, 16, (Array:2), "INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#3 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/PEAR.php(575): DB_Error->__construct(-1, 16, (Array:2), "INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#4 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/PEAR.php(223): PEAR->_raiseError(Object(DB_mysqli), NULL, -1, 16, (Array:2), "INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...", "DB_Error", TRUE)
#5 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB/common.php(1907): PEAR->__call("raiseError", (Array:7))
#6 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB/mysqli.php(933): DB_common->raiseError(-1, NULL, NULL, "INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...", "1366 ** Incorrect string value: '\xF0\x9F\x8C\xB4' for column 'bounce_reason'...")
#7 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB/mysqli.php(403): DB_mysqli->mysqliRaiseError()
#8 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB/common.php(1216): DB_mysqli->simpleQuery("INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#9 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB/DataObject.php(2415): DB_common->query("INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#10 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/packages/DB/DataObject.php(1040): DB_DataObject->_query("INSERT INTO civicrm_mailing_event_bounce (event_queue_id , bounce_type_id , b...")
#11 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Core/DAO.php(571): DB_DataObject->insert()
#12 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Mailing/Event/BAO/Bounce.php(87): CRM_Core_DAO->save()
#13 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/api/v3/Mailing.php(349): CRM_Mailing_Event_BAO_Bounce::create((Array:7))
#14 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/API/Provider/MagicFunctionProvider.php(100): civicrm_api3_mailing_event_bounce((Array:7))
#15 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/API/Kernel.php(169): Civi\API\Provider\MagicFunctionProvider->invoke((Array:9))
#16 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/API/Kernel.php(100): Civi\API\Kernel->runRequest((Array:9))
#17 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/api/api.php(23): Civi\API\Kernel->runSafe("Mailing", "event_bounce", (Array:6), NULL)
#18 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Utils/Mail/EmailProcessor.php(341): civicrm_api("Mailing", "event_bounce", (Array:6))
#19 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/CRM/Utils/Mail/EmailProcessor.php(59): CRM_Utils_Mail_EmailProcessor::_process(TRUE, Object(CRM_Core_DAO_MailSettings), 0)
#20 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/api/v3/Job.php(403): CRM_Utils_Mail_EmailProcessor::processBounces(0)
#21 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/API/Provider/MagicFunctionProvider.php(100): civicrm_api3_job_fetch_bounces((Array:3))
#22 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/API/Kernel.php(169): Civi\API\Provider\MagicFunctionProvider->invoke((Array:9))
#23 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/API/Kernel.php(100): Civi\API\Kernel->runRequest((Array:9))
#24 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/api/api.php(23): Civi\API\Kernel->runSafe("job", "fetch_bounces", (Array:2), NULL)
#25 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/Test/Api3TestTrait.php(262): civicrm_api("job", "fetch_bounces", (Array:2))
#26 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/Civi/Test/Api3TestTrait.php(151): CiviUnitTestCase->civicrm_api("job", "fetch_bounces", (Array:2))
#27 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/tests/phpunit/CRM/Utils/Mail/EmailProcessorTest.php(78): CiviUnitTestCase->callAPISuccess("job", "fetch_bounces", (Array:2))
#28 [internal function](): CRM_Utils_Mail_EmailProcessorTest->testBounceProcessingUTF8mb4()
#29 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/Framework/TestCase.php(1062): ReflectionMethod->invokeArgs(Object(CRM_Utils_Mail_EmailProcessorTest), (Array:0))
#30 /opt/buildkit/build/dmaster/sites/all/modules/civicrm/tests/phpunit/CiviTest/CiviUnitTestCase.php(196): PHPUnit_Framework_TestCase->runTest()
#31 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/Framework/TestCase.php(913): CiviUnitTestCase->runTest()
#32 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/Framework/TestResult.php(686): PHPUnit_Framework_TestCase->runBare()
#33 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/Framework/TestCase.php(868): PHPUnit_Framework_TestResult->run(Object(CRM_Utils_Mail_EmailProcessorTest))
#34 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/Framework/TestSuite.php(733): PHPUnit_Framework_TestCase->run(Object(PHPUnit_Framework_TestResult))
#35 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/TextUI/TestRunner.php(517): PHPUnit_Framework_TestSuite->run(Object(PHPUnit_Framework_TestResult))
#36 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/TextUI/Command.php(186): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), (Array:54), TRUE)
#37 phar:///opt/buildkit/extern/phpunit5/phpunit5.phar/phpunit/TextUI/Command.php(116): PHPUnit_TextUI_Command->run((Array:11), TRUE)
#38 /opt/buildkit/extern/phpunit5/phpunit5.phar(598): PHPUnit_TextUI_Command::main()
#39 {main}
```5.11https://lab.civicrm.org/dev/core/-/issues/38Recurring Contribution Information on Membership Modal2018-05-29T18:22:20ZCamilo RodríguezRecurring Contribution Information on Membership Modal## Overview
Currently, when viewing a membership from contact's detailed view (on memberships tab), it is hard to tell if a membership has any recurring contributions associated to it, even though you can see all payments done for the me...## Overview
Currently, when viewing a membership from contact's detailed view (on memberships tab), it is hard to tell if a membership has any recurring contributions associated to it, even though you can see all payments done for the membership. It would be good if you could see both payments and recurring contributions associated to the membership, similar to how both are shown on Contact's contribution tab.
## How it Works Currently
1. Go to a contact with that has memberships, contributions and recurring contributions.
2. Click on memberships tab.
3. Click the **view** action on a membership.
4. Membership details are shown, including payments. Recurring contributions are not shown.
## How it Should Work
1. Go to a contact with that has memberships, contributions and recurring contributions.
2. Click on memberships tab.
3. Click the **view** action on a membership.
4. Membership details are shown, including payments. Recurring contributions are also shown, just after the table with membership contributions.
## Accepatance Criteria
* Relabel the "Related Contributions" accordion to "Related Contributions and Recurring Contributions".
* A contributions section is shown on the accordion showing a table of all contributions that are linked to the membership.
* A recurring contribution section showing a table of all recurring contributions that are linked to the membership.
* The recurring contributions section should reuse the recurring contribution table structure in Contact's contribution tab.
* Actions for recurring contributions work as in contributions Tab.5.3.0https://lab.civicrm.org/dev/core/-/issues/3593{contact.hash} not populated in Flexmailer/Mosaico2022-06-11T14:55:07ZBjörn Endres{contact.hash} not populated in Flexmailer/MosaicoI don't know if this is the right forum, but but seems like the `{contact.hash}` token is not populated when using Flexmailer/Mosaico.
Observed on:
* CiviCRM `5.5.1`
* Flexmailer `0.2-6ff530c`
* Mosaico `2.0-beta4`I don't know if this is the right forum, but but seems like the `{contact.hash}` token is not populated when using Flexmailer/Mosaico.
Observed on:
* CiviCRM `5.5.1`
* Flexmailer `0.2-6ff530c`
* Mosaico `2.0-beta4`5.37.0https://lab.civicrm.org/dev/core/-/issues/3363CiviEvent Cart seems broken completely. Any chance of fixing it?2024-01-07T05:03:24ZtapashCiviEvent Cart seems broken completely. Any chance of fixing it?CiviEvent Cart seems broken completely on 5.x . Any chance of fixing it please? thanksCiviEvent Cart seems broken completely on 5.x . Any chance of fixing it please? thankshttps://lab.civicrm.org/dev/core/-/issues/39Feature: Price set expire on/active on dates relative to event2023-12-14T05:03:25ZjiryuFeature: Price set expire on/active on dates relative to eventMigrated from https://issues.civicrm.org/jira/browse/CRM-21860
I reuse one price set for many similar events throughout the year; for each event, people can register early and get a discount, or register closer to the event's start date...Migrated from https://issues.civicrm.org/jira/browse/CRM-21860
I reuse one price set for many similar events throughout the year; for each event, people can register early and get a discount, or register closer to the event's start date at full price. A price set's active/expire dates works for this, but because they are absolute dates this prevents the price set from being reused for events with different start dates.
I propose active/expire dates for a price set that are relative to the event start date.https://lab.civicrm.org/dev/core/-/issues/3637Google G Suite: Sending via smtp.gmail.com will alter the From Address2022-06-11T14:57:51ZkenGoogle G Suite: Sending via smtp.gmail.com will alter the From AddressIf you're using Google G Suite, send email via smtp-relay.gmail.com rather than smtp.gmail.com.
If you use smtp.gmail.com then the FROM header in the email will be a mashup of the From Address and the SMTP Username.
For example ...
* ...If you're using Google G Suite, send email via smtp-relay.gmail.com rather than smtp.gmail.com.
If you use smtp.gmail.com then the FROM header in the email will be a mashup of the From Address and the SMTP Username.
For example ...
* Say my SMTP Username is set in _Settings - Outbound Mail_ to **smtp@example.com**
* Say I use the following _From Address_ in my CiviMail: **My Name <my.name@example.com>**
* The FROM header in the email will be **From: My Name <smtp@example.com>**
Using smtp-relay.gmail.com does what you expect.https://lab.civicrm.org/dev/core/-/issues/40Show Contributions Associated to Recurring Contribution on Detailed View2018-06-04T00:31:14ZCamilo RodríguezShow Contributions Associated to Recurring Contribution on Detailed View## Overview
Currently, when viewing a recurring contribution from contact's detailed view (on Contributions tab), the only information shown is its basic information. It would be great if we could also see the contributions related to th...## Overview
Currently, when viewing a recurring contribution from contact's detailed view (on Contributions tab), the only information shown is its basic information. It would be great if we could also see the contributions related to that contribution on that same view.
## How it Works Currently
1. Go to a contact with that has contributions and recurring contributions.
2. Click on contributions tab.
3. Click the **view** action on a recurring contribution.
4. Only basic information for the recurring contribution is shown. Related contributions are not shown.
## How it Should Work
1. Go to a contact with that has contributions and recurring contributions.
2. Click on contributions tab.
3. Click the **view** action on a recurring contribution.
4. Basic information for the recurring contribution is shown and a table with related contributions is also shown.
## Acceptance Criteria
* On the "View Recurring Contribution" modal, a "Contribution" accordion should be added to the bottom.
* Accordion should show a table listing all contributions that are linked to this recurring contribution.
* The table should have the look and behaviour of the current contribution table in contact record's contribution tab.5.3.0https://lab.civicrm.org/dev/core/-/issues/3565Event reg error when skipping additional contacts2022-06-11T14:54:14ZMartinEvent reg error when skipping additional contactsWe recently encountered a bug under some fairly specific conditions:
* Doing an event registration
* Multiple participants enabled
* User select >1 participant
* On one of the subsequent participants, chooses the "skip" option
* Att...We recently encountered a bug under some fairly specific conditions:
* Doing an event registration
* Multiple participants enabled
* User select >1 participant
* On one of the subsequent participants, chooses the "skip" option
* Attempts to pay using a real credit card on a live payment gateway (in our case using the iATS extension)
This was on Civi 5.9.1 with Drupal 7.63.
In this situation, we found the following error:
> Warning: Invalid argument supplied for foreach() in CRM_Event_Form_Rgistration_Confirm->cleanMoneyFields() (line 1357 of [drupal root]/sites/all/modules/civicrm/CRM/Event/Form/Registration/Confirm.php).
Creating a pull request to fix in progress.https://lab.civicrm.org/dev/core/-/issues/41Search Builder: Not empty with date or integer custom fields gives a sql warning2019-03-07T19:25:44ZsamuelsovSearch Builder: Not empty with date or integer custom fields gives a sql warningMentioned by @bgm for a contact reference in mattermost https://chat.civicrm.org/civicrm/pl/49hcecoy5bb9mmsnrfzuzt9a4y and reproduced with a date custom field.
To reproduce :
* create a contactReference custom field or a date custom ...Mentioned by @bgm for a contact reference in mattermost https://chat.civicrm.org/civicrm/pl/49hcecoy5bb9mmsnrfzuzt9a4y and reproduced with a date custom field.
To reproduce :
* create a contactReference custom field or a date custom field
* populate some data on a few records
* use the Search Builder to search on that field, with condition "where [field] is not empty"
Here is an example of query that Mysql doesn't like :
```sql
CREATE TEMPORARY TABLE civicrm_temp_group_contact_cache1062 (SELECT 16 as group_id, contact_a.id as id FROM civicrm_contact contact_a
LEFT JOIN civicrm_value_cfa_contact_2 ON civicrm_value_cfa_contact_2.entity_id = `contact_a`.id WHERE ( ( contact_a.contact_type = "individual" AND (NULLIF(civicrm_value_cfa_contact_2.date_de_validation_manuelle_23, '') IS NOT NULL) ) ) AND (contact_a.is_deleted = 0) AND contact_a.id NOT IN (
SELECT contact_id FROM civicrm_group_contact
WHERE civicrm_group_contact.status = "Removed"
AND civicrm_group_contact.group_id = 16 ) );
```
The warning is :
```sql
SHOW warnings;
+---------+------+------------------------------+
| Level | Code | Message |
+---------+------+------------------------------+
| Warning | 1292 | Incorrect datetime value: '' |
+---------+------+------------------------------+
1 row in set (0.00 sec)
```5.4.0Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/3553Preview as HTML doesn't open window at all2022-06-11T14:50:54ZscardiniusPreview as HTML doesn't open window at allCRM_Mailing_BAO_TrackableURL::getTrackerURL() requires id of mailing but after https://lab.civicrm.org/dev/mail/issues/20 mailing_id is removed from params to Mailing.preview
https://github.com/civicrm/civicrm-core/commit/0075b0cb75e542...CRM_Mailing_BAO_TrackableURL::getTrackerURL() requires id of mailing but after https://lab.civicrm.org/dev/mail/issues/20 mailing_id is removed from params to Mailing.preview
https://github.com/civicrm/civicrm-core/commit/0075b0cb75e5422660366acf280538167369d8ba#diff-d08e5d3ceca1972df6d467b2824ffab5R279
errors from api rest
```
{"error_code":"unknown error","sql":"INSERT INTO civicrm_mailing_trackable_url (url ) VALUES ('https:\/\/onet.pl' )
[nativecode=1364 ** Field 'mailing_id' doesn't have a default value]",
"tip":"add debug=1 to your API call to have more info about the error",
"is_error":1,
"error_message":"DB Error: unknown error",
"debug_information":"INSERT INTO civicrm_mailing_trackable_url (url ) VALUES ('https:\/\/onet.pl' ) [nativecode=1364 ** Field 'mailing_id' doesn't have a default value]"}
```5.12.3https://lab.civicrm.org/dev/core/-/issues/2033Performance - query analysis2020-10-13T02:06:15ZeileenPerformance - query analysisUsing the methodology described [here](https://lab.civicrm.org/extensions/systemtools/-/blob/master/README.md) I have analysed the queries to pipe 7 contributions into CiviCRM and analyse all the queries to see if we can eliminate some. ...Using the methodology described [here](https://lab.civicrm.org/extensions/systemtools/-/blob/master/README.md) I have analysed the queries to pipe 7 contributions into CiviCRM and analyse all the queries to see if we can eliminate some. Analysis follows (I will look to address some)
1. This is on a server that uses Redis with associated reduction of queries
2. Main civi api calls called are Contact.create & contribution.create.
3. None of the queries are slow - the focus here is on removing unnecessary queries from high volume code paths
4. All 7 contributions were inserted within the total time of one second. We normally process 2000 donations per code run so reducing 1 query per row saves 2000 per run
5. 18% of the total queries come from [this line of code](https://github.com/civicrm/civicrm-core/blob/d357f225f281a0862b67a60d027c703ed2292f8b/CRM/Core/BAO/Location.php#L73) for [this issue](https://issues.civicrm.org/jira/browse/CRM-5051). I believe the handling in the create classes likely makes it obsolete - https://lab.civicrm.org/dev/core/-/issues/2039
| Type of query | Count |proportion queries that are unnecessary|
|--------------------|-------|-------|
| Activity wrangling #2057 | 42 |high|
| CiviCRM log | 14 |medium|
| greeting queries | 6 |undetermined|
| Initialisation | 24 |low|
| Insert actions | 97 |Low|
| location queries #2039 | 119 |very high|
| metadata | 51 |low|
| pcp #2056 | 14 |high|
| uf match queries #2087 | 14 |medium|
| wmf | 14 |low|
| **Grand Total** | **395** |
Visual https://docs.google.com/document/d/1Min5WxmC8O0_MF4nK3LMTXcVZ-WQU_4k1WSJtMeqLl8/edit?usp=sharing
**Activity wrangling 42**
I haven't dug very far but my sense is this is likely about checking for existing activities linked to the contributions. As these are new contributions these checks might be largely avoidable
Examples
|timestamp|query|seconds|rows found|columns requested|
|----------|-------|-------|-------|-------|
| 15/09/20 2:54 | SELECT * FROM `civicrm_activity_contact` WHERE ( `civicrm_activity_contact`.`activity_id` = 112183025 ) AND ( `civicrm_activity_contact`.`contact_id` = 46011835 ) AND ( `civicrm_activity_contact`.`record_type_id` = 2 ) | 0.000549 | 0 | 0 |
| 15/09/20 2:54 | SELECT * FROM `civicrm_activity_contact` WHERE ( `civicrm_activity_contact`.`activity_id` = 112183025 ) AND ( `civicrm_activity_contact`.`record_type_id` = 1 ) | 0.000606 | 0 | 0 |
| 15/09/20 2:54 | SELECT * FROM `civicrm_activity_contact` WHERE ( `civicrm_activity_contact`.`activity_id` = 112183025 ) AND ( `civicrm_activity_contact`.`record_type_id` = 2 ) | 0.000725 | 0 | 0 |
| 15/09/20 2:54 | SELECT * FROM `civicrm_activity_contact` WHERE ( `civicrm_activity_contact`.`activity_id` = 112183025 ) AND ( `civicrm_activity_contact`.`record_type_id` = 2 ) | 0.000605 | 1 | 1 |
| 15/09/20 2:54 | SELECT * FROM `civicrm_activity_contact` WHERE ( `civicrm_activity_contact`.`activity_id` = 112183025 ) AND ( `civicrm_activity_contact`.`record_type_id` = 3 ) | 0.000636 | 0 | 0 |
**CiviCRM Log = 14**
I split these out from the main insert queries as my feeling is that we don't need to add to civicrm log when logging is enabled - I'm pretty sure there is another GL on this & it's not quite that black and white
Examples
|timestamp|query|seconds|rows found|columns requested|
|----------|-------|-------|-------|-------|
|15/09/20 2:54 |INSERT INTO `civicrm_log` (`entity_table` , `entity_id` , `data` , `modified_id` , `modified_date` ) VALUES ('civicrm_activity' , 112183024 , 'Activity created for source=46011834' , 46011834 , 20200909141546 )| |
**greeting queries = 6**
I haven't done any analysis on these - I suspect we have skipGreeting enabled in our api call so it's only 6
|timestamp|query|seconds|rows found|columns requested|
|----------|-------|-------|-------|-------|
| 15/09/20 2:54 | SELECT contact_a.id as contact_id, contact_a.email_greeting_id as email_greeting_id, contact_a.postal_greeting_id as postal_greeting_id, contact_a.addressee_id as addressee_id, contact_a.addressee_display as addressee_display, contact_a.addressee_custom as addressee_custom, contact_a.email_greeting_display as email_greeting_display, contact_a.email_greeting_custom as email_greeting_custom, contact_a.postal_greeting_display as postal_greeting_display, contact_a.postal_greeting_custom as postal_greeting_custom FROM civicrm_contact contact_a WHERE ( contact_a.id = '46011839' ) LIMIT 0, 25 | 0.000734
| 15/09/20 2:54 | SELECT contact_a.id as contact_id, contact_a.email_greeting_id as email_greeting_id, contact_a.postal_greeting_id as postal_greeting_id, contact_a.addressee_id as addressee_id, contact_a.addressee_display as addressee_display, contact_a.addressee_custom as addressee_custom, contact_a.email_greeting_display as email_greeting_display, contact_a.email_greeting_custom as email_greeting_custom, contact_a.postal_greeting_display as postal_greeting_display, contact_a.postal_greeting_custom as postal_greeting_custom FROM civicrm_contact contact_a WHERE ( contact_a.id = '46011840' ) LIMIT 0, 25 | 0.000913 | 1 | 1 |
**Initialisation queries 24**
These are all pretty necessary
examples
|timestamp|query|seconds|rows found|columns requested|
|----------|-------|-------|-------|-------|
| 15/09/20 2:53 | ( SELECT * FROM civicrm_menu WHERE path in ( 'civicrm' ) AND domain_id = 1 ORDER BY length(path) DESC LIMIT 1 ) UNION ( SELECT * FROM civicrm_menu WHERE path IN ( 'navigation' ) AND domain_id = 1 ) | 0.001571 | 1 | 1 |
| 15/09/20 2:53 | /*!40101 SET NAMES utf8 */ | | | |
| 15/09/20 2:53 | /*!50503 SET NAMES utf8mb4 */ | | | |
| 15/09/20 2:53 | BEGIN | | | |
**Insert actions 97**
This is where the work is done - nothing extraneous in the query list here
example
|timestamp|query|seconds|rows found|columns requested|
|----------|-------|-------|-------|-------|
| 15/09/20 2:54 | INSERT INTO `civicrm_entity_financial_trxn` (`entity_table` , `entity_id` , `financial_trxn_id` , `amount` ) VALUES ('civicrm_financial_item' , 67488679 , 67491096 , 2.35 ) |
**Location queries 119**
These seem to be mainly extraneous. 70 of them come from what appears to be an outdated effort to handle is_primary (including 10 on open id which we don't support). At least some of the remaining 39 appear to be variants of this - this is the lowest hanging fruit
examples
|timestamp|query|seconds|rows found|columns requested|
|----------|-------|-------|-------|-------|
| Location queries | 15/09/20 2:54 | SELECT * FROM `civicrm_openid` WHERE ( ( is_primary = 0 OR is_primary IS NULL ) ) AND ( `civicrm_openid`.`contact_id` = 46011839 ) | 0.000643 | 0 | 0 |
| Location queries | 15/09/20 2:54 | SELECT * FROM `civicrm_openid` WHERE ( ( is_primary = 0 OR is_primary IS NULL ) ) AND ( `civicrm_openid`.`contact_id` = 46011840 ) | 0.000517 | 0 | 0 |
| Location queries | 15/09/20 2:54 | SELECT * FROM `civicrm_openid` WHERE ( ( is_primary = 1 ) ) AND ( `civicrm_openid`.`contact_id` = 46011834 ) | 0.001377 | 0 | 0 |
**Metadata queries 51**
This is less of a concern for us in this context as these (almost) all only ran once and none ran once per contribution. There is scope to improve them though & UI users would probably be helped. We would prefer they used the Redis-backed metadata cache
examples
|timestamp|query|seconds|rows found|columns requested|
|----------|-------|-------|-------|-------|
| 15/09/20 2:54 | SELECT a.id as `id`, a.custom_group_id as `custom_group_id`, a.name as `name`, a.label as `label`, a.data_type as `data_type`, a.html_type as `html_type`, a.default_value as `default_value`, a.is_required as `is_required`, a.is_searchable as `is_searchable`, a.is_search_range as `is_search_range`, a.weight as `weight`, a.help_pre as `help_pre`, a.help_post as `help_post`, a.mask as `mask`, a.attributes as `attributes`, a.javascript as `javascript`, a.is_active as `is_active`, a.is_view as `is_view`, a.options_per_line as `options_per_line`, a.text_length as `text_length`, a.start_date_years as `start_date_years`, a.end_date_years as `end_date_years`, a.date_format as `date_format`, a.time_format as `time_format`, a.note_columns as `note_columns`, a.note_rows as `note_rows`, a.column_name as `column_name`, a.option_group_id as `option_group_id`, a.serialize as `serialize`, a.filter as `filter`, a.in_selector as `in_selector` FROM civicrm_custom_field a INNER JOIN `civicrm_custom_group` `custom_group_id_to_civicrm_custom_group` ON a.custom_group_id = custom_group_id_to_civicrm_custom_group.id WHERE (a.name = "original_currency" OR a.label = "original_currency") AND (custom_group_id_to_civicrm_custom_group.name = "contribution_extra" OR custom_group_id_to_civicrm_custom_group.title = "contribution_extra") LIMIT 25 OFFSET 0 | 0.001292 | 1 | 1 |
| 15/09/20 2:54 | SELECT a.id as `id`, a.custom_group_id as `custom_group_id`, a.name as `name`, a.label as `label`, a.data_type as `data_type`, a.html_type as `html_type`, a.default_value as `default_value`, a.is_required as `is_required`, a.is_searchable as `is_searchable`, a.is_search_range as `is_search_range`, a.weight as `weight`, a.help_pre as `help_pre`, a.help_post as `help_post`, a.mask as `mask`, a.attributes as `attributes`, a.javascript as `javascript`, a.is_active as `is_active`, a.is_view as `is_view`, a.options_per_line as `options_per_line`, a.text_length as `text_length`, a.start_date_years as `start_date_years`, a.end_date_years as `end_date_years`, a.date_format as `date_format`, a.time_format as `time_format`, a.note_columns as `note_columns`, a.note_rows as `note_rows`, a.column_name as `column_name`, a.option_group_id as `option_group_id`, a.serialize as `serialize`, a.filter as `filter`, a.in_selector as `in_selector` FROM civicrm_custom_field a INNER JOIN `civicrm_custom_group` `custom_group_id_to_civicrm_custom_group` ON a.custom_group_id = custom_group_id_to_civicrm_custom_group.id WHERE (a.name = "original_amount" OR a.label = "original_amount") AND (custom_group_id_to_civicrm_custom_group.name = "contribution_extra" OR custom_group_id_to_civicrm_custom_group.title = "contribution_extra") LIMIT 25 OFFSET 0 | 0.001085 | 1 | 1 |
| 15/09/20 2:54 | SELECT a.id as `id`, a.custom_group_id as `custom_group_id`, a.name as `name`, a.label as `label`, a.data_type as `data_type`, a.html_type as `html_type`, a.default_value as `default_value`, a.is_required as `is_required`, a.is_searchable as `is_searchable`, a.is_search_range as `is_search_range`, a.weight as `weight`, a.help_pre as `help_pre`, a.help_post as `help_post`, a.mask as `mask`, a.attributes as `attributes`, a.javascript as `javascript`, a.is_active as `is_active`, a.is_view as `is_view`, a.options_per_line as `options_per_line`, a.text_length as `text_length`, a.start_date_years as `start_date_years`, a.end_date_years as `end_date_years`, a.date_format as `date_format`, a.time_format as `time_format`, a.note_columns as `note_columns`, a.note_rows as `note_rows`, a.column_name as `column_name`, a.option_group_id as `option_group_id`, a.serialize as `serialize`, a.filter as `filter`, a.in_selector as `in_selector` FROM civicrm_custom_field a WHERE (a.name = "opt_in" OR a.label = "opt_in") LIMIT 25 OFFSET 0 | 0.001043 | 1 | 1 |
| 15/09/20 2:54 | SELECT a.id as `id`, a.entity_table as `entity_table`, a.entity_id as `entity_id`, a.account_relationship as `account_relationship`, a.financial_account_id as `financial_account_id` FROM civicrm_entity_financial_account a WHERE (a.entity_id = "9") AND (a.entity_table = "civicrm_financial_type") LIMIT 25 OFFSET 0 | 0.000718 | 6 | 6 |
| 15/09/20 2:54 | SELECT a.id as `id`, a.financial_account_id as `financial_account_id` FROM civicrm_entity_financial_account a WHERE (a.entity_table = "civicrm_option_value") AND (a.entity_id = "6342") LIMIT 1 OFFSET 0 | 0.001156 | 1 | 1 |
| 15/09/20 2:54 | SELECT a.id as `id`, a.financial_account_id as `financial_account_id` FROM civicrm_entity_financial_account a WHERE (a.entity_table = "civicrm_option_value") AND (a.entity_id = "844") LIMIT 1 OFFSET 0 | 0.000697 | 1 | 1 |
**PCP 14 queries**
I haven't done much analysis but I think these should be avoidable on sites without pcps - maybe the same way we no longer have product queries
examples
|timestamp|query|seconds|rows found|columns requested|
|----------|-------|-------|-------|-------|
| 15/09/20 2:54 | SELECT id FROM civicrm_contribution_soft WHERE contribution_id = 49769031 AND pcp_id IS NOT NULL | 0.000624 | 0 | 0 |
| 15/09/20 2:54 | SELECT id FROM civicrm_contribution_soft WHERE contribution_id = 49769031 AND pcp_id IS NULL | 0.000616 | 0 | 0 |
| 15/09/20 2:54 | SELECT id FROM civicrm_contribution_soft WHERE contribution_id = 49769032 AND pcp_id IS NOT NULL | 0.000503 | 0 | 0 |
| 15/09/20 2:54 | SELECT id FROM civicrm_contribution_soft WHERE contribution_id = 49769032 AND pcp_id IS NULL | 0.000562 | 0 | 0 |
**uf match queries - 14**
These are not relevant to the incoming but not sure if they are avoidable - the duplication might be though
|timestamp|query|seconds|rows found|columns requested|
|----------|-------|-------|-------|-------|
| 15/09/20 2:54 | SELECT * FROM `civicrm_uf_match` WHERE ( `civicrm_uf_match`.`domain_id` = 1 ) AND ( `civicrm_uf_match`.`contact_id` = 46011840 ) | 0.000567 | 0 | 0 |
| 15/09/20 2:54 | SELECT * FROM `civicrm_uf_match` WHERE ( `civicrm_uf_match`.`domain_id` = 1 ) AND ( `civicrm_uf_match`.`contact_id` = 46011840 ) | 0.00053 | 0 | 0 |
**wmf queries - 14**
these are specific to our script5.32.0https://lab.civicrm.org/dev/core/-/issues/2032Proposal - add ability to segment query logs2020-10-08T00:28:45ZeileenProposal - add ability to segment query logsI'm just working on documenting how to use query logs per process & it occurs to me that it is a bit hard getting the process specific part out of a longer query log. I have a possible way we could break it out into files / give back mor...I'm just working on documenting how to use query logs per process & it occurs to me that it is a bit hard getting the process specific part out of a longer query log. I have a possible way we could break it out into files / give back more control which I will put up as part of a PR - but it is a bit hacky....5.31.0https://lab.civicrm.org/dev/core/-/issues/2031Proposal - add exclude dirs to default civicrm.settings.php or in buildkit fo...2021-01-15T05:31:11ZeileenProposal - add exclude dirs to default civicrm.settings.php or in buildkit for performanceI think we should consider building this recommendation into buildkit defaults, if not default on install.
https://docs.civicrm.org/sysadmin/en/latest/setup/optimizations/#exclude-dirs-that-do-not-need-to-be-scanned
If would give
1) be...I think we should consider building this recommendation into buildkit defaults, if not default on install.
https://docs.civicrm.org/sysadmin/en/latest/setup/optimizations/#exclude-dirs-that-do-not-need-to-be-scanned
If would give
1) better dev experience (less slowness) and
2) if there are any issues with that recommendation we'd notice them & hopefully update it.https://lab.civicrm.org/dev/core/-/issues/2025Proposal update PR template to add a section on testing2023-05-01T05:03:22ZeileenProposal update PR template to add a section on testingI think in addition to our current sections on the PR template we should add a section something like
"Explain how this PR adds relevant test cover. If test cover has not been added please explain why not, or which existing tests cover...I think in addition to our current sections on the PR template we should add a section something like
"Explain how this PR adds relevant test cover. If test cover has not been added please explain why not, or which existing tests cover the relevant code, with reference to discussion at https://github.com/civicrm/civicrm-dev-docs/issues/832"
@MikeyMJCO @totten @seamuslee @colemanwhttps://lab.civicrm.org/dev/core/-/issues/42On multilingual mode, choosing mailing group doesn't affect recipient count a...2018-03-31T09:48:01ZMonish DebOn multilingual mode, choosing mailing group doesn't affect recipient count and list## Steps to reproduce
1. Enable multilingual mode
2. Go to `Mailing => New Mailing`
3. Choose one or more mailing group.
__Observe__: The recipient count doesn't affect
## Context
This appears to be a regression in 4.7.31. Related...## Steps to reproduce
1. Enable multilingual mode
2. Go to `Mailing => New Mailing`
3. Choose one or more mailing group.
__Observe__: The recipient count doesn't affect
## Context
This appears to be a regression in 4.7.31. Related PRs:
* https://issues.civicrm.org/jira/browse/CRM-21260
* https://issues.civicrm.org/jira/browse/CRM-21316
* https://issues.civicrm.org/jira/browse/CRM-21749
* https://github.com/civicrm/civicrm-core/pull/11142/
* https://github.com/civicrm/civicrm-core/pull/11653/5.0.0Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/3638Provide a fullPage property for message templates2024-02-22T05:03:26ZmfbProvide a fullPage property for message templatesIn various parts of the UI, CiviCRM allows users to send a message template either on its own, or wrapped in a header and footer.
e.g. you can send a message template to a contact.
Or, you can create a mailing based on a message templa...In various parts of the UI, CiviCRM allows users to send a message template either on its own, or wrapped in a header and footer.
e.g. you can send a message template to a contact.
Or, you can create a mailing based on a message template, with additional header and footer.
CKEditor needs different settings at civicrm/admin/ckeditor?preset=civimail re: allowed HTML tags to support these two scenarios. With fullPage = true, the HTML is forcibly wrapped with html/head/body tags, and so a message template that includes its header and footer can be composed. With fullPage = false, html/head/body are silently stripped, so this is useful for message templates that should be used with a header and footer.
However, there is only one CKEditor setting for both of these scenarios.
I would propose a new database column where we can indicate if a message template is "fullPage" - i.e. includes header and footer, or not fullPage, i.e. designed to be used with header and footer.
This would allow us to toggle the fullPage setting appropriately. It would also allow us to prevent a user from sending a message template that needs a header and footer without one, or wrapping a message template that includes its header and footer with an additional header and footer.https://lab.civicrm.org/dev/core/-/issues/43Google geocoding now seems to require an API key, settings page text needs up...2018-05-29T23:12:10ZlarsssandergreenGoogle geocoding now seems to require an API key, settings page text needs updateThe explanatory text on the geocoding settings page indicates that Google doesn't need an API key, but geocoding will no longer work without an API key:
https://developers.google.com/maps/documentation/geocoding/get-api-key
(and I can ...The explanatory text on the geocoding settings page indicates that Google doesn't need an API key, but geocoding will no longer work without an API key:
https://developers.google.com/maps/documentation/geocoding/get-api-key
(and I can verify that it does not work until you put in an API key). You also do need to enter your API key in the second set of fields (contra the text "You can leave the Geocoding fields blank if you are using Google as your mapping provider.")
Suggest changing the text on the settings page to reflect the update.5.3.0https://lab.civicrm.org/dev/core/-/issues/3562Message templates and headers might or might not be processed by Smarty2024-02-12T05:03:29ZmfbMessage templates and headers might or might not be processed by SmartyCIVICRM_MAIL_SMARTY allows the admin to disable Smarty for bulk mail, and some other senders such as CRM_Activity_BAO_Activity::sendEmail() also honor the toggle. However, a message template sent to a contact via CRM_Core_BAO_MessageTemp...CIVICRM_MAIL_SMARTY allows the admin to disable Smarty for bulk mail, and some other senders such as CRM_Activity_BAO_Activity::sendEmail() also honor the toggle. However, a message template sent to a contact via CRM_Core_BAO_MessageTemplate::sendTemplate() will always be processed by Smarty.
Relatedly, some tokens are only available in certain contexts. {domain.address} is not available with CRM_Activity_BAO_Activity::sendEmail() but is available with CRM_Core_BAO_MessageTemplate::sendTemplate().
This leads to some confusion because message templates and headers need to be formatted differently depending on whether or not they will processed by Smarty, but the Civi UI allows them to be sent both ways. CSS needs to be wrapped with {literal} {/literal} when it will be processed by Smarty; when not processed by Smarty, CSS should not be wrapped.
I don't have a solution for this at the moment, but I think it's worth flagging as an issue re: both user experience and developer experience.https://lab.civicrm.org/dev/core/-/issues/44admin price field options should be suppressed in event info page2018-12-08T09:38:52Zlcdwebadmin price field options should be suppressed in event info pageTo recreate:
1. create a price set with an option list price field (select/radio/checkbox)
2. set one of the options to visibility = admin
3. create an event and select this price set
4. view the event info page as a public (unauthe...To recreate:
1. create a price set with an option list price field (select/radio/checkbox)
2. set one of the options to visibility = admin
3. create an event and select this price set
4. view the event info page as a public (unauthenticated) user
The admin price field option should be suppressed but is incorrectly exposed.5.6lcdweblcdwebhttps://lab.civicrm.org/dev/core/-/issues/3580Created date uses UTC but scheduled, started, and completed use the site's ti...2022-06-11T14:54:46ZherbdoolCreated date uses UTC but scheduled, started, and completed use the site's timezoneHere's a screenshot of me creating a test mailing and scheduling it for immediately sending.
![Screenshot_from_2019-06-21_15-48-23](/uploads/3d775a95a2e51d50e3c10abd3d95744d/Screenshot_from_2019-06-21_15-48-23.png)
The created date dis...Here's a screenshot of me creating a test mailing and scheduling it for immediately sending.
![Screenshot_from_2019-06-21_15-48-23](/uploads/3d775a95a2e51d50e3c10abd3d95744d/Screenshot_from_2019-06-21_15-48-23.png)
The created date displays UTC but the scheduled date displays the site timezone. In the db they are stored like this:
![Screenshot_from_2019-06-21_16-03-01](/uploads/f07f0b8266307a7f48fbb3a43b800095/Screenshot_from_2019-06-21_16-03-01.png)
In the database if I set `SET GLOBAL time_zone = '-04:00';` then the two dates match in the Mailings list.
Though oddly enough, both dates are saved in UTC:
![Screenshot_from_2019-06-21_15-59-02](/uploads/d699f87e50125e9214c72a4862f8caa4/Screenshot_from_2019-06-21_15-59-02.png)
--------
Proposal: we should fix the created date so that it respects the site's timezone (like the date fields). I can't figure out if this should be done with the timestamp set or when displaying.https://lab.civicrm.org/dev/core/-/issues/45show image files inline when clicked instead of download2023-02-09T05:03:28Zyashodhashow image files inline when clicked instead of downloadImage files when viewed should by default be shown inline unless explicitly set to query parameter "download=1"Image files when viewed should by default be shown inline unless explicitly set to query parameter "download=1"yashodhayashodhahttps://lab.civicrm.org/dev/core/-/issues/46Installer on new site doesn't take port number if different from 33062020-02-10T17:02:08Zbirgit.pauliInstaller on new site doesn't take port number if different from 3306I tried to set-up a CiviCRM install on top of WordPress and the hosting company (Pressable) doesn't use port 3306 for the database. Their port number is 3331. The install script still tried to access via 3306 port although we entered th...I tried to set-up a CiviCRM install on top of WordPress and the hosting company (Pressable) doesn't use port 3306 for the database. Their port number is 3331. The install script still tried to access via 3306 port although we entered the full ip:port string in the field. ![Screen_Shot_2018-04-04_at_7.16.42_PM](/uploads/1723045a9d3aaf24cde53cc46cc0f5c5/Screen_Shot_2018-04-04_at_7.16.42_PM.png)
CiviCRM 4.7.13
WordPress 4.9.5
See also discussion w/ @kcristiano on chat: https://chat.civicrm.org/civicrm/pl/734b4rooet8c7g6e6stpu16djrhttps://lab.civicrm.org/dev/core/-/issues/47Add "clone" functionality to scheduled jobs2018-06-17T23:18:56Zmattwiremjw@mjwconsult.co.ukAdd "clone" functionality to scheduled jobsThis adds a "clone" or "copy" function to the scheduled jobs page. It is implemented as an API (job.clone) which can be called via a link from the scheduled jobs listing.
Ref https://github.com/civicrm/civicrm-core/pull/11945This adds a "clone" or "copy" function to the scheduled jobs page. It is implemented as an API (job.clone) which can be called via a link from the scheduled jobs listing.
Ref https://github.com/civicrm/civicrm-core/pull/119455.4.0https://lab.civicrm.org/dev/core/-/issues/48PDF Letter only generates a single letter when multiple contact IDs are speci...2018-04-17T07:09:08Zmattwiremjw@mjwconsult.co.ukPDF Letter only generates a single letter when multiple contact IDs are specifiedRef https://github.com/civicrm/civicrm-core/pull/11946Ref https://github.com/civicrm/civicrm-core/pull/119465.1.0https://lab.civicrm.org/dev/core/-/issues/49It's possible to make a negative adjustment on membership price.2023-05-11T05:03:25ZsudomanIt's possible to make a negative adjustment on membership price.When a user visits a CiviCRM membership page that allows price adjustments, then they may enter both positive and negative values to adjust the price of the membership.
I think that it shouldn't be possible to enter in negative values, ...When a user visits a CiviCRM membership page that allows price adjustments, then they may enter both positive and negative values to adjust the price of the membership.
I think that it shouldn't be possible to enter in negative values, as that reduces the cost of the membership.https://lab.civicrm.org/dev/core/-/issues/1522, as decimal separator, and [space] as thousand separators leads to api errors2020-03-17T22:27:15Zjaapjansma, as decimal separator, and [space] as thousand separators leads to api errors**Steps to reproduce**
1. At Administer --> Localisation --> Languages, Currencies and Location: set , as a decimal separator
2. At Administer --> Localisation --> Languages, Currencies and Location: Set space as thousand separator (So ...**Steps to reproduce**
1. At Administer --> Localisation --> Languages, Currencies and Location: set , as a decimal separator
2. At Administer --> Localisation --> Languages, Currencies and Location: Set space as thousand separator (So that 1234.56 is displayed as 1 234,56)
3. Go to api 3 explorer (Support --> Developers --> Api explorer v3)
4. Create a contribution with total_amount = 250.00 (keep the dot and the two zero's).
**Expected result**
Contribution created with a total amount of € 250,00
**Actual result**
Api error: `total_amount is not a valid amount: 250.00`
**Caused by**
This is caused by the statement in _https://github.com/civicrm/civicrm-core/blob/master/CRM/Utils/Rule.php#L603_
This statement expects at least . in either decimal separator or thousand separator.
```php
if ($config->monetaryDecimalPoint &&
$config->monetaryDecimalPoint != '.' &&
// CRM-7122 also check for Thousands Separator in config settings
$config->monetaryThousandSeparator != '.' &&
substr_count($value, '.')
) {
return FALSE;
}
```
**Analyses**
Below an analyses of the _contribution.create_ api with different localization settings and inputs.
| Currency | Decimal sep. | Thousand sep. | Contribution.create total_amount | Raw Value | Display as | 5.13 | 5.20 |
|----------|--------------|---------------|----------------------------------|------------|------------------|----------|----------|
| $ | . | , | 1,234,567.89 | 1234567.89 | $ 1,234,567.89 | OK | OK |
| $ | . | , | 1234567.89 | 1234567.89 | $ 1,234,567.89 | OK | OK |
| $ | . | [space] | 1 234 567.89 | 1234567.89 | $ 1 234 567.89 | OK | OK |
| $ | . | [space] | 1234567.89 | 1234567.89 | $ 1 234 567.89 | **Fail** | **Fail** |
| € | . | , | 1,234,567.89 | 1234567.89 | € 1,234,567.89 | OK | OK |
| € | . | , | 1234567.89 | 1234567.89 | € 1,234,567.89 | OK | OK |
| € | , | . | 1.234.567,89 | 1234567.89 | € 1.234.567,89 | OK | OK |
| € | , | . | 1234567.89 | 1234567.89 | € 1.234.567,89 | OK | OK |
| € | , | [space] | 1 234 567,89 | 1234567.89 | € 1 234 567,89 | OK | OK |
| € | , | [space] | 1234567.89 | 1234567.89 | € 1 234 567,89 | **Fail** | **Fail** |
| NOK | . | , | 1,234,567.89 | 1234567.89 | NOK 1,234,567.89 | OK | OK |
| NOK | . | , | 1234567.89 | 1234567.89 | NOK 1,234,567.89 | OK | OK |
| NOK | , | . | 1.234.567,89 | 1234567.89 | NOK 1.234.567,89 | OK | OK |
| NOK | , | . | 1234567.89 | 1234567.89 | NOK 1.234.567,89 | OK | OK |
| NOK | , | [space] | 1 234 567,89 | 1234567.89 | NOK 1 234 567,89 | OK | OK |
| NOK | , | [space] | 1234567.89 | 1234567.89 | NOK 1 234 567,89 | **Fail** | **Fail** |
**See also**
This bug is introduced by https://issues.civicrm.org/jira/browse/CRM-7122
**Question before fixing this**
What exactly is this if statement checking for? 5.23.0https://lab.civicrm.org/dev/core/-/issues/50Create Sub-tabs Under Contributions Tab for Contributions and Recurring Contr...2018-06-18T20:13:42ZCamilo RodríguezCreate Sub-tabs Under Contributions Tab for Contributions and Recurring Contributions## Overview
Currently, when viewing contributions on a contact's summary view, there are two tables being shown: one for contributions, the second for recurring contributions. The problem is when a contact has a lot of contributions, rec...## Overview
Currently, when viewing contributions on a contact's summary view, there are two tables being shown: one for contributions, the second for recurring contributions. The problem is when a contact has a lot of contributions, recurring contributions kind of get lost within the page, having to scroll down quite a bit to get to the required information. We'd like to have two subtabs within the contributions tab, so that we can choose either contributions or recurring contributions as needed. Furthermore, we'd also like to separate active from inactive recurring contributions within the recurring contributions tab, to have easier access to the information that is most likely to be needed.
## How it Works Currently
1. Go to a contact with that has contributions and recurring contributions.
2. Click on contributions tab.
3. Two tables are shown: first, contributions, and after it, recurring contributions.
## How it Should Work
1. Go to a contact with that has contributions and recurring contributions.
2. Click on contributions tab.
3. Two subtabs are shown within the page, one for contributions, the second for recurring contributions.
4. Contributions tab is selected by default, showing the contributions table.
5. Clicking on the recurring contributions tab shows two recurring contributions tables, the first one for active contributions, the second for inactive contributions.
## Acceptance Criteria
* Loading **Contributions** tab shows two subtabs, **Contributions** and **Recurring Contributions**.
* **Contributions** subtab is loaded by default.
* **Recurring Contributions** subtab has two tables, one for active contributions, the other one for inactive contributions.5.4.0https://lab.civicrm.org/dev/core/-/issues/51Exporting "Master Address belongs to" not working as intended when exporting ...2018-04-21T03:43:59Zfabian_SYSTOPIAExporting "Master Address belongs to" not working as intended when exporting several addressesMany people store more than one postal address with an individual (e.g. work and home) and one of them may be shared with the employer. When exporting contacts and their addresses, one would need the name of the employer which should be ...Many people store more than one postal address with an individual (e.g. work and home) and one of them may be shared with the employer. When exporting contacts and their addresses, one would need the name of the employer which should be provided by "Master Address belongs to".
The problem seems to be that during export "Master Address belongs to" seems to ignore the location type. For example, if the work address is shared and teh home address is not shared, exporting the **home** address including "Master Address belongs to" (with the location type home) will export the name of the contact that is the master of the **work** address.
I reproduced this on several environments including 4.7.29 and on the Drupal sandbox (currently 5.2alpha1). Steps to reproduce:
1. Create an individual with two postal adddresses, the work address should be shared with another contact.
2. Export the individual and include "Master Address belongs to" for the primary address, the home address and the work address (see also screenshot)
The expected result would be that the columns for "Work-Master Address Belongs To" is filled, "Home-Master Address Belongs To" is not filled and "Master Address Belongs To" (orimary location) is filled only if the work address is set as primary.
However all three "Master Address Belongs To" colums are always filled.
![Export_Setting](/uploads/e9453649f5cbf5e55523b08844102830/Export_Setting.png)
![Export_result](/uploads/6a8ef4b534681980a51d97a4a0ab8c62/Export_result.png)https://lab.civicrm.org/dev/core/-/issues/52Allow custom fields on Print/Merge Document2022-08-09T14:51:17ZfrancescbassasAllow custom fields on Print/Merge Document(1) It's possible to define a set of custom fields for Print/Merge Document activities
>![custom_field_for_print_merge_activity](/uploads/5602158f33958ffb829c9c4f9aa1a27c/custom_field_for_print_merge_activity.png)
(2) Then when you run...(1) It's possible to define a set of custom fields for Print/Merge Document activities
>![custom_field_for_print_merge_activity](/uploads/5602158f33958ffb829c9c4f9aa1a27c/custom_field_for_print_merge_activity.png)
(2) Then when you run a Print/Merge Document custom fields do not appear in the form
>![print_merge](/uploads/eb54d574f9831c904ebf298a9cc9f818/print_merge.png)
(3) If you view the activity created you can visualize the custom fields defined
>![view_activity](/uploads/64c3d1a5c5a00b9d3f3325036f589d9c/view_activity.png)
As you can see there is an inconsistency between the defined behavior and the actual behavior. It would be really interesting to have this functionality fully developed. Could you, for example, allow you to search for all activities Print/Merge Document that meet the conditions of a custom field that defines the category of the document generated (certificate, letter, etc.)
>![search_activities](/uploads/4b63e09c10d56bb23b30b6ec480757c9/search_activities.png)https://lab.civicrm.org/dev/core/-/issues/53Add in Mailing % stats to AB tests and include a opened rate and clickthrough...2018-04-09T09:03:55ZseamusleeAdd in Mailing % stats to AB tests and include a opened rate and clickthrough rate stat to mailing reportsseamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/54Activity created for case role relationship is not assigned to correct contacts.2018-04-12T02:33:58ZjitendraActivity created for case role relationship is not assigned to correct contacts.To reproduce on dmaster -
- Create a case for a contact.
- Add new role from the `Roles` tab.
- Select `Case Coordinator` for `Relationship Type` input.
- assign it to some contact, say AB.
- The activity which is created is incorrectl...To reproduce on dmaster -
- Create a case for a contact.
- Add new role from the `Roles` tab.
- Select `Case Coordinator` for `Relationship Type` input.
- assign it to some contact, say AB.
- The activity which is created is incorrectly assigned to the client instead of the above contact.jitendrajitendrahttps://lab.civicrm.org/dev/core/-/issues/55Hide Adding Option Link for Locked Option Groups2018-05-17T10:55:18ZmichaelHide Adding Option Link for Locked Option GroupsYou can edit option values from a few different places:
1. `civicrm/admin/options?gid=<option_group_id>`
1. `civicrm/admin/options/<option_group_name>`
1. `civicrm/admin/custom/group/field/option?action=browse&gid=<custom_group_id>&fid=...You can edit option values from a few different places:
1. `civicrm/admin/options?gid=<option_group_id>`
1. `civicrm/admin/options/<option_group_name>`
1. `civicrm/admin/custom/group/field/option?action=browse&gid=<custom_group_id>&fid=<custom_field_id>`
When "is_locked" = 1 only the first method hides the button to add new option values.
The button to add an option value should be hidden for the two places where it is highlighted in the above screenshots
##### From Option Group Edit Page Using Group ID
This works as expected and the button to add a new option is hidden
![image](/uploads/4a3567b69cc961cd2e6b580c60e62f30/image.png)
##### From Custom Field Edit page
![image](/uploads/c2a00e7f49e59eea7b6b3efe6720e7e6/image.png)
##### From Option Group Edit Page Using Group Name
![image](/uploads/9e1d94a9f3f729dbc88cdf92760108a9/image.png)5.3.0https://lab.civicrm.org/dev/core/-/issues/56Cancel Recurring Contribution activity should has a source record id2018-06-18T20:14:06ZscardiniusCancel Recurring Contribution activity should has a source record idMethod `CRM_Contribute_BAO_ContributionRecur::cancelRecurContribution()` creates new activity with type "Cancel Recurring Contribution". Field source_record_id should contains id of recurring contribution but it doesn't
```php
// curren...Method `CRM_Contribute_BAO_ContributionRecur::cancelRecurContribution()` creates new activity with type "Cancel Recurring Contribution". Field source_record_id should contains id of recurring contribution but it doesn't
```php
// current, invalid
'source_record_id' => CRM_Utils_Array::value('source_record_id', $activityParams),
// fixed
'source_record_id' => $dao->recur_id,
```
https://github.com/civicrm/civicrm-core/blob/9a05ea5249f290bd92f813cfdb301b03b8186007/CRM/Contribute/BAO/ContributionRecur.php#L2855.4.0https://lab.civicrm.org/dev/core/-/issues/59scheduled reminders: add form validation to email field2021-03-23T02:27:09Zlcdwebscheduled reminders: add form validation to email fieldcurrently a person could put something other than an email address in the From email field and it doesn't throw a form validation error. as a result, no emails are delivered (silent failure).currently a person could put something other than an email address in the From email field and it doesn't throw a form validation error. as a result, no emails are delivered (silent failure).lcdweblcdwebhttps://lab.civicrm.org/dev/core/-/issues/60"Check number" isn't shown on Pay Later event registrations when edited2023-09-06T16:08:21Zlaryn"Check number" isn't shown on Pay Later event registrations when editedThis happens to me with an event registration that comes through 'webform_civicrm' as a "Pending (Pay Later)". When I try to edit the participant record to record a payment, the "Check Number" field never shows up despite "Check" being s...This happens to me with an event registration that comes through 'webform_civicrm' as a "Pending (Pay Later)". When I try to edit the participant record to record a payment, the "Check Number" field never shows up despite "Check" being selected as the payment instrument.
**I was able to reproduce on a demo server by doing the following**:
* Create a registration, marking it as "Pending (Pay Later)" and unchecking "Record Payment"
* Edit the new participant you just created, check "Record Payment" and make sure "Check" is selected as the payment instrument.
No "Check Number" field is shown.
![Screen_Shot_2018-04-11_at_3.52.02_PM](/uploads/02f92e016aa97074be80d410ca596db1/Screen_Shot_2018-04-11_at_3.52.02_PM.jpg)5.2.0eileeneileenhttps://lab.civicrm.org/dev/core/-/issues/61Split edit message templates permission2018-10-05T01:39:35ZajesamsonSplit edit message templates permissionThe `edit message templates` permission currently grants access to user-driven messages and system workflow message. The implication of this is that, there is no way of restricting a particular user to just user-driven messages or system...The `edit message templates` permission currently grants access to user-driven messages and system workflow message. The implication of this is that, there is no way of restricting a particular user to just user-driven messages or system workflow messages.
It is therefore better to split `edit message templates` into two granular permissions (`edit user-driven message templates` and `edit system workflow message templates`) so that user access can be better managed.
![before](/uploads/896ebbdb81b419fb607750667c569486/before.gif)5.3.0https://lab.civicrm.org/dev/core/-/issues/62Relationship report: add address columns2018-04-18T07:42:28ZjaapjansmaRelationship report: add address columnsThe relationship report has the ability to show the e-mail address, phone number and name of contact a and contact b of a relationship.
There is no ability to show the address of contact a or contact bThe relationship report has the ability to show the e-mail address, phone number and name of contact a and contact b of a relationship.
There is no ability to show the address of contact a or contact bhttps://lab.civicrm.org/dev/core/-/issues/63Clarify profile permissions2019-08-14T08:30:09ZherbdoolClarify profile permissionsThe profile permissions (listings, listings and forms, view/create/edit) are quite vague and confusing, even for seasoned devs like myself. Most of them don't have descriptions nor warnings. This is at least in Drupal but maybe others as...The profile permissions (listings, listings and forms, view/create/edit) are quite vague and confusing, even for seasoned devs like myself. Most of them don't have descriptions nor warnings. This is at least in Drupal but maybe others as well.
![Screenshot_from_2018-04-16_10-36-50](/uploads/6bb35484ff0f5bdbecd612d42526d7b9/Screenshot_from_2018-04-16_10-36-50.png)
For instance, in the code "CiviCRM: profile listings and forms" is described as "all powerful". And in the guide https://docs.civicrm.org/user/en/latest/initial-set-up/permissions-and-access-control/ it doesn't really clarify that this is a dangerous permission for anon/authenticated users. In fact, it even implies that anonymous roles are given this permission!
![Screenshot_from_2018-04-16_10-45-18](/uploads/45c5a8f36699cac403b81177de1a43b7/Screenshot_from_2018-04-16_10-45-18.png)
But ironically, "CiviCRM: profile create" sounds dangerous--can the user create forms?--when in fact it just means they can fill out a form.
It wouldn't be hard to just clarify these for everyone.https://lab.civicrm.org/dev/core/-/issues/64In custom searches, column headings are being ignored2019-01-09T20:18:51ZkirkatcaatIn custom searches, column headings are being ignoredFor custom searches - ones that come installed with core CiviCRM *as well* as user-defined ones - the column headings defined in the custom search code are being ignored. This issue affects CiviCRM 5.0.0.
Each custom search is implement...For custom searches - ones that come installed with core CiviCRM *as well* as user-defined ones - the column headings defined in the custom search code are being ignored. This issue affects CiviCRM 5.0.0.
Each custom search is implemented by a class that extends CRM_Contact_Form_Search_Custom_Base and implements CRM_Contact_Form_Search_Interface. The columns displayed for search results are defined by either $this->_columns or the columns() method. The keys of this array should set the column headings, but they are being ignored.
When the search results are displayed, the specified headings are not used. Instead, some columns are given default headings and others are missing headings. This means that the results can't be sorted on those columns.
To reproduce this bug, click **Search ⇒ Custom Searches**, then pick a contact search, e.g. "Basic Search", "Include / Exclude Search" or "Postal Mailing", enter search criteria that will select some contacts, and then click Search. In the results you'll see that the column headings do not match the ones defined in the custom search class, and some columns (e.g. street address, phone number, contact type, etc) have no headings at all.jitendrajitendrahttps://lab.civicrm.org/dev/core/-/issues/65When creating a manual event registration, the notes section (source) has a c...2018-04-23T04:52:53Zfreeform.stephWhen creating a manual event registration, the notes section (source) has a character limit but doesn't check for oneAttempted to manually add a participant to an event using the "Add event registration" tab on their CiviCRM profile, but the screen wouldn't save, the page just stays frozen and fails to complete.
Looking at the error log:
...[nativeco...Attempted to manually add a participant to an event using the "Add event registration" tab on their CiviCRM profile, but the screen wouldn't save, the page just stays frozen and fails to complete.
Looking at the error log:
...[nativecode=1406 ** Data too long for column 'source' at row 1]"]...
The 'source' field in table 'civicrm_participant' is the 'Notes' field that appears when you manually create an event entry, it has a character limit of 128, client attempted to insert a note that was 161 characters. The limit of this field should be checked before attempting to save to the DB.
---
**Full backtrace:**
```
Apr 17 09:54:57 [info] $Fatal Error Details = Array
(
[callback] => Array
(
[0] => CRM_Core_Error
[1] => handle
)
[code] => -1
[message] => DB Error: unknown error
[mode] => 16
[debug_info] => INSERT INTO civicrm_participant (contact_id , event_id , status_id , role_id , register_date , source , fee_level , fee_amount , discount_id , fee_currency ) VALUES ( 475 , 2 , 1 , '1' , 20180417095400 , 'Manual input of cc info for member who called from Mexico and had troubles with cards before deadline. I charged early bird rate. See transaction ID AAB156B9 -MW' , '�Regular (Includes automatic member discount of: $ 159.00 Discount for Regular SSC Members) - 1�Salmon - 1 Participant Count -1�' , 555.00 , NULL , 'CAD' ) [nativecode=1406 ** Data too long for column 'source' at row 1]
[type] => DB_Error
[user_info] => INSERT INTO civicrm_participant (contact_id , event_id , status_id , role_id , register_date , source , fee_level , fee_amount , discount_id , fee_currency ) VALUES ( 475 , 2 , 1 , '1' , 20180417095400 , 'Manual input of cc info for member who called from Mexico and had troubles with cards before deadline. I charged early bird rate. See transaction ID AAB156B9 -MW' , '�Regular (Includes automatic member discount of: $ 159.00 Discount for Regular SSC Members) - 1�Salmon - 1 Participant Count -1�' , 555.00 , NULL , 'CAD' ) [nativecode=1406 ** Data too long for column 'source' at row 1]
[to_string] => [db_error: message="DB Error: unknown error" code=-1 mode=callback callback=CRM_Core_Error::handle prefix="" info="INSERT INTO civicrm_participant (contact_id , event_id , status_id , role_id , register_date , source , fee_level , fee_amount , discount_id , fee_currency ) VALUES ( 475 , 2 , 1 , '1' , 20180417095400 , 'Manual input of cc info for member who called from Mexico and had troubles with cards before deadline. I charged early bird rate. See transaction ID AAB156B9 -MW' , '�Regular (Includes automatic member discount of: $ 159.00 Discount for Regular SSC Members) - 1�Salmon - 1 Participant Count -1�' , 555.00 , NULL , 'CAD' ) [nativecode=1406 ** Data too long for column 'source' at row 1]"]
)
Apr 17 09:54:57 [info] $backTrace = #0 /sites/all/modules/contrib/civicrm/CRM/Core/Error.php(235): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 [internal function](): CRM_Core_Error::handle(Object(DB_Error))
#2 /sites/all/modules/contrib/civicrm/packages/PEAR.php(931): call_user_func((Array:2), Object(DB_Error))
#3 /sites/all/modules/contrib/civicrm/packages/DB.php(976): PEAR_Error->PEAR_Error("DB Error: unknown error", -1, 16, (Array:2), "INSERT INTO civicrm_participant (contact_id , event_id , status_id , role_id ...")
#4 /sites/all/modules/contrib/civicrm/packages/PEAR.php(564): DB_Error->DB_Error(-1, 16, (Array:2), "INSERT INTO civicrm_participant (contact_id , event_id , status_id , role_id ...")
#5 /sites/all/modules/contrib/civicrm/packages/DB/common.php(1905): PEAR->raiseError(NULL, -1, NULL, NULL, "INSERT INTO civicrm_participant (contact_id , event_id , status_id , role_id ...", "DB_Error", TRUE)
#6 /sites/all/modules/contrib/civicrm/packages/DB/mysql.php(895): DB_common->raiseError(-1, NULL, NULL, NULL, "1406 ** Data too long for column 'source' at row 1")
#7 /sites/all/modules/contrib/civicrm/packages/DB/mysql.php(328): DB_mysql->mysqlRaiseError()
#8 /sites/all/modules/contrib/civicrm/packages/DB/common.php(1216): DB_mysql->simpleQuery("INSERT INTO civicrm_participant (contact_id , event_id , status_id , role_id ...")
#9 /sites/all/modules/contrib/civicrm/packages/DB/DataObject.php(2442): DB_common->query("INSERT INTO civicrm_participant (contact_id , event_id , status_id , role_id ...")
#10 /sites/all/modules/contrib/civicrm/packages/DB/DataObject.php(1060): DB_DataObject->_query("INSERT INTO civicrm_participant (contact_id , event_id , status_id , role_id ...")
#11 /sites/all/modules/contrib/civicrm/CRM/Core/DAO.php(442): DB_DataObject->insert()
#12 /sites/all/modules/contrib/civicrm/CRM/Event/BAO/Participant.php(141): CRM_Core_DAO->save()
#13 /sites/all/modules/contrib/civicrm/CRM/Event/BAO/Participant.php(204): CRM_Event_BAO_Participant::add((Array:44))
#14 /sites/all/modules/contrib/civicrm/CRM/Event/Form/Participant.php(1280): CRM_Event_BAO_Participant::create((Array:44))
#15 /sites/all/modules/contrib/civicrm/CRM/Core/Form.php(345): CRM_Event_Form_Participant->postProcess()
#16 /sites/all/modules/contrib/civicrm/CRM/Core/QuickForm/Action/Upload.php(166): CRM_Core_Form->mainProcess()
#17 /sites/all/modules/contrib/civicrm/CRM/Core/QuickForm/Action/Upload.php(133): CRM_Core_QuickForm_Action_Upload->realPerform(Object(CRM_Event_Form_Participant), "upload")
#18 /sites/all/modules/contrib/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Upload->perform(Object(CRM_Event_Form_Participant), "upload")
#19 /sites/all/modules/contrib/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Event_Form_Participant), "upload")
#20 /sites/all/modules/contrib/civicrm/CRM/Core/Controller.php(353): HTML_QuickForm_Page->handle("upload")
#21 /sites/all/modules/contrib/civicrm/CRM/Event/Page/Tab.php(118): CRM_Core_Controller->run()
#22 /sites/all/modules/contrib/civicrm/CRM/Event/Page/Tab.php(175): CRM_Event_Page_Tab->edit()
#23 /sites/all/modules/contrib/civicrm/CRM/Core/Invoke.php(312): CRM_Event_Page_Tab->run((Array:4), NULL)
#24 /sites/all/modules/contrib/civicrm/CRM/Core/Invoke.php(86): CRM_Core_Invoke::runItem((Array:12))
#25 /sites/all/modules/contrib/civicrm/CRM/Core/Invoke.php(54): CRM_Core_Invoke::_invoke((Array:4))
#26 /sites/all/modules/contrib/civicrm/drupal/civicrm.module(482): CRM_Core_Invoke::invoke((Array:4))
#27 [internal function](): civicrm_invoke("contact", "view", "participant")
#28 /includes/menu.inc(527): call_user_func_array("civicrm_invoke", (Array:3))
#29 /index.php(21): menu_execute_active_handler()
#30 {main}
```seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/66Refactor addAddressColumns in the report2018-11-04T20:34:30ZjaapjansmaRefactor addAddressColumns in the reportAs the discussion in this closed pr (https://github.com/civicrm/civicrm-core/pull/11980) there is a need to refactor addAddressColumns in the reports in core.
The extended report extension has a working implementation.As the discussion in this closed pr (https://github.com/civicrm/civicrm-core/pull/11980) there is a need to refactor addAddressColumns in the reports in core.
The extended report extension has a working implementation.5.8https://lab.civicrm.org/dev/core/-/issues/67Create Machine Name for Payment Processors2022-08-10T05:03:37ZCamilo RodríguezCreate Machine Name for Payment Processors## Overview
Currently, there is no reliable way to identify a payment processor, as the primary key may change from installation to installation and the name is a field that is manageable by the user and could be changed. Our specific us...## Overview
Currently, there is no reliable way to identify a payment processor, as the primary key may change from installation to installation and the name is a field that is manageable by the user and could be changed. Our specific use case is we need to be able to determine reliably if a specific payment processor is used for an extension we're building, that enables users to pay for memberships using recurring contributions, but this may also be needed in future development of CiviCRM payment processors.
## How it Works Currently
1. Go to create a payment processor
2. There isn't a field on payment processor form to reliably identify a payment processor from installation to installation.
## How it should work
1. There should be a column on payment processors table to identify a specific processor, a machine name that we are certain will not change from installation to installation, unique to each payment processor.
2. Go to create a payment processor.
3. Form now shows a **Key** optional field.
4. Form validation assures only ASCII alphanumeric characters, underscores and/or dashes are used on **Key** field.
5. If no key is given, system will generate one from the processor's name by stripping non ASCII alphanumeric characters and replacing spaces with underscores (_).
6. **Key** field is visible on payment processors table on civicrm/admin/paymentProcessor.
## Acceptance Criteria
1. **Key** field is added to payment processor list, view and edit forms.
2. **Key** field is optional.
3. Form validation assures only ASCII alphanumeric characters, underscores and/or dashes are used on **Key** field.
3. **Key** only appears on payment processor creation and cannot be edited by users after.
3. **Key** is generated by the system on creation if no key is given. Even if created through API/BAO.https://lab.civicrm.org/dev/core/-/issues/68DB Error on 'Find Participant' page when MySQL FULL_GROUP_BY_MODE is enabled2018-05-17T11:38:27ZMonish DebDB Error on 'Find Participant' page when MySQL FULL_GROUP_BY_MODE is enabledSteps to replicate:
1. Ensure that FULL_GROUP_BY_MODE is enabled in MySQL
2. Go to 'Find Participant' search form and do a simple search
This leads to
DB Error - https://pastebin.com/jxbaAbpSSteps to replicate:
1. Ensure that FULL_GROUP_BY_MODE is enabled in MySQL
2. Go to 'Find Participant' search form and do a simple search
This leads to
DB Error - https://pastebin.com/jxbaAbpS5.1.0Monish DebMonish Debhttps://lab.civicrm.org/dev/core/-/issues/69'state_province_name' token not working for alternate billing addresses2018-05-16T09:21:00Zvarshith'state_province_name' token not working for alternate billing addresses## Overview ##
This issue is related to this existing issue
https://issues.civicrm.org/jira/browse/CRM-21830
The PR for the above issue is here
https://github.com/civicrm/civicrm-core/pull/11776
Though this fixes the basic issue, it ...## Overview ##
This issue is related to this existing issue
https://issues.civicrm.org/jira/browse/CRM-21830
The PR for the above issue is here
https://github.com/civicrm/civicrm-core/pull/11776
Though this fixes the basic issue, it still doesn't work for all fields.
## How it works currently ##
If state_province field name is not of the form "state_province-{$billingLocationTypeID}", then state_province_name is empty. Which means field names of form 'billing_state_province-{#}' and 'billing_state_province_id-{#}' results in empty state_province_name when "state_province_name" token is used.5.3.0