CiviCRM Core issueshttps://lab.civicrm.org/dev/core/-/issues2023-11-01T18:20:41Zhttps://lab.civicrm.org/dev/core/-/issues/4484Feature request: New contact buttons on the API 4 autocomplete widget2023-11-01T18:20:41ZbrienneFeature request: New contact buttons on the API 4 autocomplete widgetOverview
----------------------------------------
For using the APIv4 autocomplete widget, such as for the *Existing Contact* field, it would be useful to be able to create new contacts, as is possible with the Select2 drop downs, such a...Overview
----------------------------------------
For using the APIv4 autocomplete widget, such as for the *Existing Contact* field, it would be useful to be able to create new contacts, as is possible with the Select2 drop downs, such as for selecting a Contributor on a backend contribution.
![Selection_015](/uploads/30fc0ecdd3268ebc5906ce0aa06dae9a/Selection_015.png)
Example use-case
----------------------------------------
1. Add the *Existing Contact* field to a FormBuilder form
1. A user can look up a contact to select, but if there are no results/a new one is needed, they can click a **New Individual** button to add one without being redirected from the original form
Current behaviour
----------------------------------------
The APIv4 autocomplete widget does not allow for creating new contacts.
![Selection_014](/uploads/d97659f7dddfd4858bd316acb0dda2b6/Selection_014.png)
Proposed behaviour
----------------------------------------
The APIv4 autocomplete widget should have feature parity when it comes to creating new contacts on the spot as the Select2 optionhttps://lab.civicrm.org/dev/core/-/issues/2949Saving "Debugging and Error Handling" screen sets "Disable outbound mail" for...2023-10-22T05:03:22ZBobSSaving "Debugging and Error Handling" screen sets "Disable outbound mail" for non-Production environmentsOverview
----------------------------------------
Saving the **Debugging and Error Handling** screen while the **Environment** field indicates Staging or Production sets the **Select Mailer** option on the **Settings - Outbound Maif** sc...Overview
----------------------------------------
Saving the **Debugging and Error Handling** screen while the **Environment** field indicates Staging or Production sets the **Select Mailer** option on the **Settings - Outbound Maif** screen to **Disable outbound mail**.
This occurs even when the **Environment** field is disabled due to the $civicrm_setting['domain']['environment'] variable in civicrm.settings.php.
Example use-case
----------------------------------------
1. Set **$civicrm_setting['domain']['environment']** to **Staging** or **Development**.
1. Click **Administer | System Settings | Outbound Email (SMTP/Sendmail)** and confirm that the selected **Select Mailer** option is not **Disable Outbound Mail**.
1. Click **Administer | System Settings | Debugging and Error Handling** and save the settings without making any changes.
1. Click **Administer | System Settings | Outbound Email (SMTP/Sendmail)** and observe that the **Select Mailer** option has changed to **Disable Outbound Mail**.
Current behavior
----------------------------------------
At the very least, this behavior is contrary to the note in the [documentation](https://docs.civicrm.org/sysadmin/en/latest/misc/staging-production/)
> This does NOT happen if you have set your Environment via civicrm.settings.php
This was particularly confusing for me because on my staging site, where in civicrm.settings.php the environment is set to Development and CIVICRM_MAIL_LOG is defined to route mail to a file, I went to the "Debugging and Error Handling" screen to simply enable debugging. Some time later I found that outbound mail had been disabled, and was clueless how that could have happened, as I had not changed either the environment mode or the outbound mail mode.
Proposed behavior
----------------------------------------
The state of the environment should not magically toggle other settings when saving the **Debugging and Error Handling** screen.
Non-Production environments should simply prevent internet email from being sent, while honoring the **CIVICRM_MAIL_LOG** variable.
Comments
----------------------------------------
_Anything else you would like the reviewer to note._https://lab.civicrm.org/dev/core/-/issues/3965Adding mailing events (unsub, open, clicks, etc) to API42023-10-16T00:28:23ZlarsssandergreenAdding mailing events (unsub, open, clicks, etc) to API4I'd like to add mailing events to API4 so we can use them in SearchKit, to improve the A/B Mailing report page, and so on.
This would be all the [Mailing Events here.](https://github.com/civicrm/civicrm-core/tree/master/CRM/Mailing/Even...I'd like to add mailing events to API4 so we can use them in SearchKit, to improve the A/B Mailing report page, and so on.
This would be all the [Mailing Events here.](https://github.com/civicrm/civicrm-core/tree/master/CRM/Mailing/Event/DAO) Not sure they are all essential, but might as well do them all at once, as they will all be very similar.
Having poked around at this, I see a few issues that I think I need some help with before starting on this.
We have, for example, TrackableURLOpen, which links to a TrackableURL and also to the Queue entity, which links to the Job entity, which links to the Mailing entity. I don't think we want to have users building queries with joins on all of these entities in SearchKit in order to get useful information back. Ideally, we'd have an entity that has a get action that would return:
- id from TrackableURLOpen
- timestamp from TrackableURLOpen
- URL from TrackableURL
- contact id from Queue
- mailing id from Job
Can we do this by adding all these entities to the API, adding entity bridges to connect them all and then adding an abstract entity that wraps everything up together, with a get function that gets all the fields above from the API (and a getfields function as well). Or is there a less manual way to do this?
Also, I see that the Queue entity already exists in API4, but it isn't the Mailing_Event_Queue entity. Is there a way to specify the full class for an entity so that we don't get a collision? It looks like it just expects the last word from the classname as the API class and that won't work in this case. This might be helpful in general here, because adding an entity called just Opened is going to be confusing (versus naming it something like MailingEventOpened).https://lab.civicrm.org/dev/core/-/issues/209Case Scheduled Reminders2023-10-03T05:03:22ZshitijgCase Scheduled Reminders**User story:**
- As a CiviCRM administrator
- I would like to configure a scheduled reminder to be sent
- that will include the following tokens:
- All fields from table civicrm_case and associated case custom fields
- All contac...**User story:**
- As a CiviCRM administrator
- I would like to configure a scheduled reminder to be sent
- that will include the following tokens:
- All fields from table civicrm_case and associated case custom fields
- All contact tokens for the contact the scheduled reminder is being sent to as per normal scheduled reminders
- when a specific case type (or types) changes to a specific case status (or status’s)
- either immediately or after a desired period of time has passed from the change in status*
- to one or more case roles, groups of contacts or individual contacts
- so that I can have an email or sms sent to specific contacts when the case status changes to inform them about changes in the case.
**Wireframe:**
The wireframe in the original ticket is somewhat incomplete and doesn’t discuss
- The time period point and how it should work
- The case role’s filtering
As such I would suggest the following solution:
![8d2fca53-d8a0-4cfa-b208-4cc889ee09e0](/uploads/a292bb55efdea95398d0ca47e4b363d4/8d2fca53-d8a0-4cfa-b208-4cc889ee09e0.png)
**Notes:**
- If case type or case status is not selected then all case types and status should send the reminder.
- The “when” feature should operate such that if it is left blank then the reminder should be sent and only sent once but for cases meeting the criteria and the following when criteria:
- “After status change”
- Immediately after the status change takes place if that is the selected option and no other fields are filled in.
- Or the specified time after the status change takes place if a “number of hours or days after” is filled in
- Or on or after the “when” date if this is filled in
- If both the when and the “number of hours or days after” is filled in then the scheduled reminder should send only once on the earlier of those two dates. CiviCRM’s UX here is a bit nutty - 😳
- “Case start date”
- Immediately after the case start date for cases that meet that criteria if that is the selected option and no other fields are filled in.
- Or the specified time after the case start date if a “number of hours or days after” is filled in
- Or on or after the “when” date if this is filled in
- If both the when and the “number of hours or days after” is filled in then the scheduled reminder should send only once on the earlier of those two dates.
- “Case end date”
- Immediately after the case end date for cases that meet that criteria if that is the selected option and no other fields are filled in.
- Or the specified time after the case end date if a “number of hours or days after” is filled in
- Or on or after the “when” date if this is filled in
- If both the when and the “number of hours or days after” is filled in then the scheduled reminder should send only once on the earlier of those two dates.
- NICE TO HAVE: Can we also support any date type custom fields that are added to the case with the same logic and list those custom fields in the dropdown? i.e. create a case custom field “Court date” and then have that date in the scheduled reminder filters? Lower priority.
- Limit or add to case roles:
- Should allow user to select the case roles that the email will be sent to.https://lab.civicrm.org/dev/core/-/issues/587Permissions on GroupContact API calls seem wrong2023-09-24T16:09:28ZJonGoldPermissions on GroupContact API calls seem wrongI got a support request from a user who didn't have "Edit All Contacts" permissions stating that they couldn't remove someone from a group. Sure enough, [edit all contacts](https://lab.civicrm.org/dev/core/blob/master/CRM/Core/Permissio...I got a support request from a user who didn't have "Edit All Contacts" permissions stating that they couldn't remove someone from a group. Sure enough, [edit all contacts](https://lab.civicrm.org/dev/core/blob/master/CRM/Core/Permission.php#L1229) is the necessary permission. However, editing/removing tags just requires "access CiviCRM".
Does this seem correct to folks? Is it to prevent someone escalating their ACL permissions? If so, it feels like we need a different permission, and predates more nuanced solutions such as [Group Protect](https://github.com/CiviCooP/org.civicoop.groupprotect). The only other entity that needs such high permissions is Relationship - that also seems wrong.
I propose that we add both GroupContact and Relationship entities to the `_civicrm_api3_check_edit_permissions()` function. If you can edit the contact, you can edit their groups/relationships. If someone gives this a "Concept: Approved" I'll work on the PR.JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/2700Enhance test-drive bevhaviour and associated wording2023-09-08T05:03:14ZrebeccatregennaEnhance test-drive bevhaviour and associated wordingOverview
----------------------------------------
At the moment test-drive transactions are not recorded consistently for memberships and events nor does the current intro text for test-drive mode reflects what is actually happening.
Ex...Overview
----------------------------------------
At the moment test-drive transactions are not recorded consistently for memberships and events nor does the current intro text for test-drive mode reflects what is actually happening.
Example use-case
----------------------------------------
1. Join as a member with [&action=preview](https://dmaster.demo.civicrm.org/civicrm/contribute/transact?reset=1&id=2&action=preview)
1. Register for an event with [&action=preview](https://dmaster.demo.civicrm.org/civicrm/event/register?reset=1&action=preview&id=1)
Current behaviour
----------------------------------------
**Memberships**
The info text on the join pages states:
> This page is currently running in test-drive mode. Transactions will be sent to your payment processor's test server. No live financial transactions will be submitted. However, a contact record will be created or updated and a test contribution record will be saved to the database. Use obvious test contact names so you can review and delete these records as needed. **Test contributions are not visible on the Contributions tab, but can be viewed by searching for 'Test Contributions' in the CiviContribute search form.** Refer to your payment processor's documentation for information on values to use for test credit card number, security code, postal code, etc.
However both the contribution and membership entries are displayed on the contact's record on the necessary tab:
![active_membership](/uploads/f190e74461e0cd6f407ebdc9bc9dde5c/active_membership.png)
![active_contributions](/uploads/bdf686fecbeb65a82445a9a50fde492f/active_contributions.png)
**Events**
The info text on the event pages states:
> Test-drive Your Event Registration Page This page is currently running in test-drive mode. If this is a paid event, transactions will be sent to your payment processor's test server. No live financial transactions will be submitted. However, a contact record will be created or updated and test event registration and contribution records will be saved to the database. Use obvious test contact names so you can review and delete these records as needed. Refer to your payment processor's documentation for information on values to use for test credit card number, security code, postal code, etc.
As mentioned above, again also visible on the Contributions tab but unfortunately not displayed as a test registrations on the Events tab.
![active_events](/uploads/869dd4b91a008358ff7d8c7e8e9e9c21/active_events.png)
Proposed behaviour
----------------------------------------
Agree consistent behaviour, i.e.:
- Show the test event registration on the contact Event tab (as it does for membership)
- Update the info text to ensure it aligns with what is actually being shown / recorded where
Comments
----------------------------------------
Tested on dmaster.demo.civicrm.org 5.41.alpha1https://lab.civicrm.org/dev/core/-/issues/1863System check severities out of whack2023-09-08T02:20:40ZAndie HuntSystem check severities out of whackThe severities for system checks are [defined in PSR-3](https://www.php-fig.org/psr/psr-3/#3-psrlogloggerinterface), and the first system checks attempted to match them pretty closely.
| Level | Description (per PSR-3) | Examples (per P...The severities for system checks are [defined in PSR-3](https://www.php-fig.org/psr/psr-3/#3-psrlogloggerinterface), and the first system checks attempted to match them pretty closely.
| Level | Description (per PSR-3) | Examples (per PSR-3) | What happens in CiviCRM |
| ------ | ----- | ----- | ----- |
| emergency | System is unusable. | | You'll never see it because the system won't be functioning. |
| alert | Action must be taken immediately. | Entire website down, database unavailable, etc. This should trigger the SMS alerts and wake you up. | Red pop-up when an admin logs in; item has a red header. |
| critical | Critical conditions. | Application component unavailable, unexpected exception. | Red pop-up when an admin logs in; item has a red header. |
| error | Runtime errors that do not require immediate action but should typically be logged and monitored. | | Red pop-up when an admin logs in; item has a red header. |
| warning | Exceptional occurrences that are not errors. | Use of deprecated APIs, poor use of an API, undesirable things that are not necessarily wrong. | Orange pop-up when an admin logs in; item has an orange header. |
| notice | Normal but significant events. | | Item has a blue header. |
| info | Interesting events. | User logs in, SQL logs. | Item has a green header. |
| debug | Detailed debug information. | | Never displayed. |
However, over the years a few things have happened:
1. Some system checks have severities that don't quite match the specifications here, especially skewing too high.
2. System checks are used to nudge people to update their hosting environment for the future.
3. The system checks have become dominated by things that users don't quite understand.
4. Partners and others supporting lots of organizations have become frustrated that system checks scare or confuse users.
I see there being four main ways to address this:
1. Narrowing who sees the system check messages to only those who are in a position to act on them (through permissions or otherwise).
2. Giving more warning (through upgrade messages and a longer runway of escalating severity) for things that are not currently critical but will become so.
3. Improving the presentation of system check messages and how to snooze or hush them.
4. Doing a better job of giving a system check the right severity.
There's been discussion on the first and second items elsewhere. This ticket is focused on the fourth. Fundamentally, some things will be at the level of "drop everything and fix it", but we don't want to cry wolf.
Here are the existing system checks and their severities. My hope is that by having them all in the same place it will be easier to decide which are more severe than others. The ID column is just here to ease discussion.
| ID | Class | Title | Message | Severity |
| -- | ----- | ----- | ------- | -------- |
| 1 | CRM_Utils_Check_Component_AddressParsing | Street address parsing | Street address parsing is enabled but not supported by your locale | warning |
| 2 | CRM_Utils_Check_Component_Case | CiviCase | Case type "%1" has duplicate XML files ("%2" and "%3") | warning |
| 3 | CRM_Utils_Check_Component_Case | CiviCase | Case type "%1" corresponds to XML file ("%2") The XML file should be named "%3". | warning |
| 4 | CRM_Utils_Check_Component_Case | Timestamps for Activities and Cases | The tables "<em>civicrm_activity</em>" and "<em>civicrm_case</em>" were updated to support two new fields, "<em>created_date</em>" and "<em>modified_date</em>".... | notice |
| 5 | CRM_Utils_Check_Component_Case | Relationship Type Internal Name Duplicates | Relationship type <em>%1</em> has the same internal machine name as another type.... | error |
| 6 | CRM_Utils_Check_Component_Case | Relationship Type Display Label Duplicates | Relationship type <em>%1</em> has the same display label as another type. | error |
| 7 | CRM_Utils_Check_Component_Case | Relationship Type Cross-Duplication | Relationship type <em>%1</em> has an internal machine name that is the same as the display label as another type.... | warning |
| 8 | CRM_Utils_Check_Component_Case | Relationship Type Ambiguity | Relationship type <em>%1</em> appears to be unidirectional, but has the same internal machine name for both sides.... | warning |
| 9 | CRM_Utils_Check_Component_Case | Relationship Type Ambiguity | Relationship type <em>%1</em> appears to be unidirectional internally, but has the same display label for both sides.... | warning |
| 10 | CRM_Utils_Check_Component_Case | Missing Roles | The following roles listed in your case type definitions do not match any relationship type defined in the system: <em>%1</em>.... | error |
| 11 | CRM_Utils_Check_Component_Case | Missing Case Type Definition | Unable to locate xml file for Case Type "<em>%1</em>". | error |
| 12 | CRM_Utils_Check_Component_Case | Missing Case Roles | CaseRoles seems to be missing in the xml file for Case Type "<em>%1</em>". | error |
| 13 | CRM_Utils_Check_Component_Case | Invalid Case Role | CaseRole "<em>%1</em>" in the xml file for Case Type "<em>%2</em>" doesn\'t seem to match any existing relationship type. | error |
| 14 | CRM_Utils_Check_Component_Case | Case Role using display label instead of internal machine name | Please edit the XML file for case type "<em>%2</em>" so that the case role label "<em>%1</em>" is changed to its corresponding name "<em>%3</em>".... | warning |
| 15 | CRM_Utils_Check_Component_Env | PHP Up-to-Date | This system uses PHP version %1 which meets or exceeds the recommendation of %2. | info |
| 16 | CRM_Utils_Check_Component_Env | PHP Out-of-Date | This system uses PHP version %1. This meets the minimum recommendations and you do not need to upgrade immediately, but the preferred version is %2. | notice |
| 17 | CRM_Utils_Check_Component_Env | PHP Out-of-Date | This system uses PHP version %1. This meets the minimum requirements for CiviCRM to function but is not recommended.... | warning |
| 18 | CRM_Utils_Check_Component_Env | PHP Out-of-Date | This system uses PHP version %1. To ensure the continued operation of CiviCRM, upgrade your server now.... | error |
| 19 | CRM_Utils_Check_Component_Env | Forward Compatibility: Enable "mysqli" | Future versions of CiviCRM may require the PHP extension "mysqli". To ensure that your system will be compatible, please install it in advance.... | warning |
| 20 | CRM_Utils_Check_Component_Env | Timestamp Mismatch | Timestamps reported by MySQL (eg "%2") and PHP (eg "%3" ) are mismatched. | error |
| 21 | CRM_Utils_Check_Component_Env | Debug Mode Enabled | Warning: Debug is enabled in system settings. This should not be enabled on production servers. | warning |
| 22 | CRM_Utils_Check_Component_Env | Outbound Email Disabled | Warning: Outbound email is disabled in system settings.... | warning |
| 23 | CRM_Utils_Check_Component_Env | Complete Setup | Please enter your organization's name, primary address and default FROM Email Address (for system-generated emails). | warning |
| 24 | CRM_Utils_Check_Component_Env | Configure Default Mailbox | Please configure a default mailbox for CiviMail. | warning |
| 25 | CRM_Utils_Check_Component_Env | Cron Running OK | Last cron run at %1. | info |
| 26 | CRM_Utils_Check_Component_Env | Cron Not Running | Last cron run at %1. / No cron runs have been recorded. | warning / error |
| 27 | CRM_Utils_Check_Component_Env | Resource URLs: Make them portable | Resource URLs may use absolute paths, relative paths, or variables. Absolute paths are more difficult to maintain.... | notice |
| 28 | CRM_Utils_Check_Component_Env | Directory Paths: Make them portable | Directories may use absolute paths, relative paths, or variables. Absolute paths are more difficult to maintain.... | notice |
| 29 | CRM_Utils_Check_Component_Env | Directory not writable | The %1 is not writable. Please check your file permissions. | error |
| 30 | CRM_Utils_Check_Component_Env | Directory not writable | Directory %1 is not writable. Please change your file permissions. *(this is actually an error checking the version)* | error |
| 31 | CRM_Utils_Check_Component_Env | Update Check Disabled | The check for new versions of CiviCRM has been disabled.... | notice |
| 32 | CRM_Utils_Check_Component_Env | *Version update messages* | *As provided by version check* | info / notice / warning / critical |
| 33 | CRM_Utils_Check_Component_Env | Directory not writable | Your extensions directory is not set.... | notice |
| 34 | CRM_Utils_Check_Component_Env | Extensions directory incorrect | Your extensions directory path points to %1, which is not a directory.... | error |
| 35 | CRM_Utils_Check_Component_Env | Read-Only Extensions | Your extensions directory (%1) is read-only.... | notice |
| 36 | CRM_Utils_Check_Component_Env | Extensions url missing | The extensions URL is not properly set.... | error |
| 37 | CRM_Utils_Check_Component_Env | Extensions check disabled | Not checking remote URL for extensions since ext_repo_url is set to false. | notice |
| 38 | CRM_Utils_Check_Component_Env | Extension download error | *Message thrown by extension check* | error |
| 39 | CRM_Utils_Check_Component_Env | No Extensions Available for this Version | There are currently no extensions on the CiviCRM public extension directory which are compatible with version %1.... | notice |
| 40 | CRM_Utils_Check_Component_Env | Extensions | No extensions installed. | info |
| 41 | CRM_Utils_Check_Component_Env | Extension Error | Failed to read extension (%1).... / %1 extension (%2) is installed but missing files. | error |
| 42 | CRM_Utils_Check_Component_Env | Extension Update Available | %1 (%2) version %3 is installed. Upgrade to version %5. | warning |
| 43 | CRM_Utils_Check_Component_Env | Extensions | All extensions are up-to-date | info |
| 44 | CRM_Utils_Check_Component_Env | Extension Upgrades Pending | Extension upgrades should be run as soon as possible. | error |
| 45 | CRM_Utils_Check_Component_Env | Database Version Missing | Version information found to be missing in database.... | error |
| 46 | CRM_Utils_Check_Component_Env | Database Version Invalid | Database is marked with invalid version format.... | error |
| 47 | CRM_Utils_Check_Component_Env | Database Partially Upgraded | Database check failed - the database looks to have been partially upgraded. | alert |
| 48 | CRM_Utils_Check_Component_Env | Database Upgrade Required | New codebase version detected.... | alert |
| 49 | CRM_Utils_Check_Component_Env | Database In Unexpected Version | Your database is marked with an unexpected version number.... | error |
| 50 | CRM_Utils_Check_Component_Env | MyISAM Database Engine | Your database is configured to use the MyISAM database engine.... | error |
| 51 | CRM_Utils_Check_Component_Env | No Default value for Auto Responder. | Reply Auto Responder is not set to any default value in Headers, Footers, and Automated Messages.... | warning |
| 52 | CRM_Utils_Check_Component_Env | Missing mbstring Extension | The PHP Multibyte String extension is needed for CiviCRM to correctly handle user input among other functionality.... | warning |
| 53 | CRM_Utils_Check_Component_Env | Non-Production Environment | The environment of this CiviCRM instance is set to '%1'.... | alert |
| 54 | CRM_Utils_Check_Component_Env | Incorrect Resource URL | The Resource URL is not set correctly.... | error |
| 55 | CRM_Utils_Check_Component_Env | MySQL Emoji Support (utf8mb4) | Future versions of CiviCRM may require MySQL to support utf8mb4 encoding.... | warning |
| 56 | CRM_Utils_Check_Component_Env | PHP MySQL Driver (mysqlnd) | It is recommended, though not yet required, to upgrade your PHP MySQL driver (mysqlnd) to >= 5.0.9 for utf8mb4 support. | warning |
| 57 | CRM_Utils_Check_Component_Env | PHP MySQL Driver (libmysqlclient) | It is recommended, though not yet required, to upgrade your PHP MySQL driver (libmysqlclient) to >= 5.5.3 for utf8mb4 support. | warning |
| 58 | CRM_Utils_Check_Component_Env | MySQL Out-of-Date | This system uses MySQL/MariaDB v%1. To ensure the continued operation of CiviCRM, upgrade MySQL now.... | error |
| 59 | CRM_Utils_Check_Component_Env | MySQL Out-of-Date | This system uses MySQL/MariaDB v%1. To prepare for CiviCRM v%5, please upgrade MySQL.... | warning |
| 60 | CRM_Utils_Check_Component_Env | MySQL Out-of-Date | This system uses MySQL/MariaDB v%1. You can continue to use this version of MySQL.... | notice |
| 61 | CRM_Utils_Check_Component_FinancialTypeAcls | Extension Missing | CiviCRM will in the future require the extension %1 for CiviCRM Reports to work correctly with the Financial Type ACLs. | warning |
| 62 | CRM_Utils_Check_Component_OptionGroups | Option Values with problematic Values | The Following Option Values contain value fields that do not match the Data Type of the Option Group.... | notice |
| 63 | CRM_Utils_Check_Component_PriceFields | Invalid Price Fields | the following Price Set Fields use disabled or invalid financial types and need to be fixed if they are to still be used.... | warning |
| 64 | CRM_Utils_Check_Component_Schema | Performance warning: Missing indices | The following tables have missing indices.... | warning |
| 65 | CRM_Utils_Check_Component_Schema | Missing Log Tables | You don't have logging enabled on some tables.... | warning |
| 66 | CRM_Utils_Check_Component_Schema | Smart Group check did not run | The smart group check was unable to run. | info |
| 67 | CRM_Utils_Check_Component_Schema | Disabled/Deleted fields on Smart Groups | The following smart groups include custom fields which are disabled/deleted from the database.... | warning |
| 68 | CRM_Utils_Check_Component_Schema | Deprecated monetary value display format configuration | The Monetary Value Display format is a deprecated setting, and this site has a non-standard format. | warning |
| 69 | CRM_Utils_Check_Component_Security | Security Warning | The CiviCRM debug log should not be downloadable. | warning |
| 70 | CRM_Utils_Check_Component_Security | Private Files Readable | Files in the data directory (%2) should not be downloadable.... | warning |
| 71 | CRM_Utils_Check_Component_Security | Browseable Directories | Directory %2 should not be browseable via the web.... | error |
| 72 | CRM_Utils_Check_Component_Security | Unsafe Files | File '%1' presents a security risk and should be deleted. | critical |
| 73 | CRM_Utils_Check_Component_Security | Remote Profiles Enabled | Warning: External profile support (aka "HTML Snippet" support) is enabled in system settings. | warning |
| 74 | CRM_Utils_Check_Component_Security | Security Warning | The system administrator has disabled security settings (%1). Connections to remote applications are insecure. | warning |
| 75 | CRM_Utils_Check_Component_Source | Old files | The local system includes old files which should not exist.... | warning |
| 76 | CRM_Utils_Check_Component_Timestamps | Timestamps and Timezones | This MySQL database stores certain fields with data-type "DATETIME". To improve timezone support, you <em>may</em> want to change these from "DATETIME" to "TIMESTAMP".... | notice |
See also discussion on [PR #17698](https://github.com/civicrm/civicrm-core/pull/17698).https://lab.civicrm.org/dev/core/-/issues/1164Editing event participant can affect wrong record if multiple participants ar...2023-08-24T10:07:23ZJKingsnorthEditing event participant can affect wrong record if multiple participants are opened in multiple tabs/windowsThis is an old issue (sorry I couldn't yet find the original issue in JIRA that was raised for this.)
It was recently attempted to get fixed here: https://lab.civicrm.org/dev/core/issues/1164 / https://github.com/civicrm/civicrm-core/pu...This is an old issue (sorry I couldn't yet find the original issue in JIRA that was raised for this.)
It was recently attempted to get fixed here: https://lab.civicrm.org/dev/core/issues/1164 / https://github.com/civicrm/civicrm-core/pull/14244 but a regression caused the patch for event participants to be reverted.
The problem, example of dmaster:
* Events > Find participants > Search
* 'Edit' one participant (Lincoln) in a new tab
* 'Edit' a second participant (Teresa) in a new tab
* Go to Lincoln's edit tab, change to no-show, save
* The change has been applied to the WRONG record (Event registration information for Teresa Terry has been updated.)
This is because the participant ID is being stored in the session.https://lab.civicrm.org/dev/core/-/issues/2654Missing State/Province values for United Kingdom2023-08-24T05:03:31ZmikantchapMissing State/Province values for United KingdomOverview
----------------------------------------
There are 2 missing State/Province values for the United Kingdom:
- Bath and North East Somerset BAS
- North Somerset NSM
Example use-case
----------------------------------------
Creat...Overview
----------------------------------------
There are 2 missing State/Province values for the United Kingdom:
- Bath and North East Somerset BAS
- North Somerset NSM
Example use-case
----------------------------------------
Create new individual, try to set one of the missing values
Current behaviour
----------------------------------------
Can't set one of the missing values
Proposed behaviour
----------------------------------------
Be able to set one of the missing values
Comments
----------------------------------------
_Anything else you would like the reviewer to note._https://lab.civicrm.org/dev/core/-/issues/2177Recent drush requires updated symfony/finder2023-08-19T00:28:39ZfkohrtRecent drush requires updated symfony/finderWhile [installing](https://docs.civicrm.org/installation/en/latest/drupal8/#download) CiviCRM 5.31 on Drupal 8, composer had a problem during `composer require civicrm/civicrm-{core,packages,drupal-8}:'~5.31'`.
<details>
<summary>Consol...While [installing](https://docs.civicrm.org/installation/en/latest/drupal8/#download) CiviCRM 5.31 on Drupal 8, composer had a problem during `composer require civicrm/civicrm-{core,packages,drupal-8}:'~5.31'`.
<details>
<summary>Console output</summary>
```
./composer.json has been updated
Running composer update civicrm/civicrm-core civicrm/civicrm-packages civicrm/civicrm-drupal-8
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- civicrm/civicrm-core[5.31.0, ..., 5.32.x-dev] require symfony/finder ~3.0 || ~4.4 -> found symfony/finder[v3.0.0-BETA1, ..., 3.4.x-dev, v4.4.0-BETA1, ..., 4.4.x-dev] but the package is fixed to v5.1.8 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
- Root composer.json requires civicrm/civicrm-core ~5.31 -> satisfiable by civicrm/civicrm-core[5.31.0, 5.31.x-dev, 5.32.x-dev].
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
```
</details>
I had previously installed `drush/drush:10.3.6` which requires `symfony/finder:5.1.8`. However, `civicrm/civicrm-core:~5.31` requires `symfony/finder ~3.0 || ~4.4`. This leads to the problem above. I had to use `composer require drush/drush:10.3.5` to proceed with the installation.
Maybe `civicrm-core` should be updated to require `symfony/finder:~5.1` as well?https://lab.civicrm.org/dev/core/-/issues/4414CiviCRM 5.62.1 - CiviCRM core extension: Greenwich, Bootstrap CSS tries to lo...2023-08-08T22:21:55Zjustinfreeman (Agileware)CiviCRM 5.62.1 - CiviCRM core extension: Greenwich, Bootstrap CSS tries to load glyphicons fonts from the incorrect paths returns 404 and icons do not displayCiviCRM core extension: Greenwich, Bootstrap CSS tries to load glyphicons fonts from the incorrect paths returns 404 and icons do not display.
- civicrm/ext/greenwich/fonts/glyphicons-halflings-regular.woff2
- civicrm/ext/greenwich/font...CiviCRM core extension: Greenwich, Bootstrap CSS tries to load glyphicons fonts from the incorrect paths returns 404 and icons do not display.
- civicrm/ext/greenwich/fonts/glyphicons-halflings-regular.woff2
- civicrm/ext/greenwich/fonts/glyphicons-halflings-regular.woff
- civicrm/ext/greenwich/fonts/glyphicons-halflings-regular.ttf
Correct path is:
civicrm/ext/greenwich/extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf
This error is shown in the Web Console when loading the Mosaico Template Editor to create or edit a Mailing.
civicrm/ext/greenwich/dist/bootstrap3.css
```
@font-face {
font-family: "Glyphicons Halflings";
src: url("../fonts/glyphicons-halflings-regular.eot");
src: url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"), url("../fonts/glyphicons-halflings-regular.woff") format("woff"), url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg");
}
```
Version: CiviCRM 5.62.1
Agileware Ref: CIVICRM-2149https://lab.civicrm.org/dev/core/-/issues/3181PHP 8.12023-07-21T14:03:03ZJoeMurrayPHP 8.1We should support PHP 8.1.
The deprecations and breaking changes are listed in the release notes at https://www.php.net/releases/8.1/en.php#deprecations_and_bc_breaks
Here are the backward compatibility issues:
1. [ ] Tentative return...We should support PHP 8.1.
The deprecations and breaking changes are listed in the release notes at https://www.php.net/releases/8.1/en.php#deprecations_and_bc_breaks
Here are the backward compatibility issues:
1. [ ] Tentative return types in PHP built-in class methods
1. [ ] HTML entity en/decode functions process single quotes and substitute by default
1. [ ] $GLOBALS variable restrictions.
1. [ ] MySQLi: Default error mode set to exceptions
I am most worried about HTML encode/decode.
[ ] create edge test setup for PHP 8.1seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/2028Obsolete wkhtmltopdfPath causes hard fail in event registration due to intern...2023-07-14T05:03:22ZMonish DebObsolete wkhtmltopdfPath causes hard fail in event registration due to internal fatal error for the missing packageThis occurred to us after migration, as on new server the wkhtmltopdfPath is not installed/or it might be changed and as result of which alternate executable path of wkhtmltopdfPath becomes obsolete. This causes hard fail on any of the f...This occurred to us after migration, as on new server the wkhtmltopdfPath is not installed/or it might be changed and as result of which alternate executable path of wkhtmltopdfPath becomes obsolete. This causes hard fail on any of the following operations which involves PDF generation from html content:
1. attaching confirmation mail to participant and attaching PDF of the content on it.
2. same with #1 but in case of online donation.
3. Manual print document for contacts
ETC.
In our case its #1 which prevents the event registration process with an internal error
```
Sep 02 14:03:16 [error]
$Fatal Error Details = array(3) {
["message"]=>
string(424) "The exit status code '127' says something went wrong:
stderr: "sh: /old/path/wkhtmltox/bin/wkhtmltopdf: not found
"
stdout: ""
command: /old/path/wkhtmltox/bin/wkhtmltopdf --lowquality --margin-bottom '0.75in' --margin-left '0.75in' --margin-right '0.75in' --margin-top '0.75in' --orientation 'portrait' --page-height '792pt' --p
age-width '612pt' '/tmp//knp_snappy5f4fec74637de.html' '/tmp//knp_snappy5f4fec74638cf.pdf’.
“
```
To resolve this I would propose the following approach:
1. In case, if the wkhtmltopdf executable path is not working for various reason, throw an error message on civicrm status page.
2. Prevent the code to use the wkhtmltopdf executable path and fallback to use the default pdf package tcpdf which is bundled with CiviCRM
ping @eileen @JoeMurray @seamuslee5.34.0seamusleeseamusleehttps://lab.civicrm.org/dev/core/-/issues/2470Add system check for CIVICRM_CRED_KEYS2023-07-09T05:03:25ZAndie HuntAdd system check for CIVICRM_CRED_KEYSThe crypto changes in 5.34 are helpful, and I like the direction for how new installs work. However, in a year or so, we're going to start assuming `CIVICRM_CRED_KEYS` is set since all of the buildkit sites have it, all the new sites ha...The crypto changes in 5.34 are helpful, and I like the direction for how new installs work. However, in a year or so, we're going to start assuming `CIVICRM_CRED_KEYS` is set since all of the buildkit sites have it, all the new sites have it, and many of us will have gone back through sites to set it. However, there will be a good chunk of sites lacking it, and most of them will have no idea. If we start encrypting more values in the database, we could find a lot of edge cases or needlessly unhandled sites because of this.
I am really thankful for all of the communication in dev/core#2258, [PR 19239](https://github.com/civicrm/civicrm-core/pull/19239), the [docs](https://docs.civicrm.org/sysadmin/en/latest/setup/secret-keys/), and [CIVI-PSA-2021-01](https://civicrm.org/advisory/civi-psa-2021-01-storage-crypto-api). However, despite all that, I don't think it's apparent to the typical site admin that they could/should make a simple edit to their settings file in order to support encryption of SMTP passwords and other values. Each of the communications has (rightly) focused on more urgent or relevant situations as the feature rolled out.
The good news is that this should be a simple thing to check for on a site: is `CIVICRM_CRED_KEYS` set. I propose that this be a system check and that a `NOTICE`-level message be generated if it's missing. The message could even suggest a line to include.
- *Why `NOTICE`?* Lacking `CIVICRM_CRED_KEYS` isn't a big problem right now, but it does mean that your site has diverged from how a standard, newly-installed site is configured. That means it shouldn't be `WARNING` or higher, but it's not a mere `INFO`-level item: if we thought it was good to lack `CIVICRM_CRED_KEYS`, we wouldn't bother setting it on install.
- *Don't people get annoyed by system checks?* Yes, but that's because many have historically been too alarmist or confusing. This is at least as significant as being on PHP 7.2, [which generates a `NOTICE`](https://github.com/civicrm/civicrm-core/blob/e149971400579d26e7c2c163f1d1573aaf23b898/CRM/Utils/Check/Component/Env.php#L42).https://lab.civicrm.org/dev/core/-/issues/2386Support chain-select elements in .setting.php files2023-07-01T05:03:24ZJonGoldSupport chain-select elements in .setting.php filesOverview
----------------------------------------
As we move to metadata-based settings, we need to support existing use cases such as chain-select.
Example use-case
----------------------------------------
1. Go to **Administer » Local...Overview
----------------------------------------
As we move to metadata-based settings, we need to support existing use cases such as chain-select.
Example use-case
----------------------------------------
1. Go to **Administer » Localization » Languages, Currencies, Locations**.
1. The `defaultContactStateProvince` setting can't be represented accurately via metadata.
Current behaviour
----------------------------------------
No way to define either an `onclick` value or a chain-select.
Proposed behaviour
----------------------------------------
A new property `chain_select_settings` contains properties that are passed to the `addChainSelect` method.
Comments
----------------------------------------
There's partial support, and I suspect work on this stopped because `addChainSelect` has a syntax that's tangled up in Smarty. I'll submit a PR to be a conversation piece.
This will also need documentation.JonGoldJonGoldhttps://lab.civicrm.org/dev/core/-/issues/495CQ: Migrate simple Preferences & Settings forms to using a Generic class.2023-06-27T05:03:25ZeileenCQ: Migrate simple Preferences & Settings forms to using a Generic class.Per https://github.com/civicrm/civicrm-core/pull/13023 @mattwire & myself have recently worked on consolidating some of the setting form metadata handling. This is mostly done however our end goal is worth spelling out.
Basically the cl...Per https://github.com/civicrm/civicrm-core/pull/13023 @mattwire & myself have recently worked on consolidating some of the setting form metadata handling. This is mostly done however our end goal is worth spelling out.
Basically the class 'CRM_Admin_Form_Preferences_Event' and all classes that don't need special sauce would be removed & the xml would be altered to
```
<item>
<path>civicrm/admin/setting/preferences/event</path>
<title>CiviEvent Component Settings</title>
<page_callback>CRM_Admin_Form_Generic</page_callback>
</item>
```
This page would load settings based on filtering setting metadata - so any fields with a key in their metadata like this
```
settings_pages => [
'event' => ['weight' => 10]
]
```
would show up at the url above (note the last value on the url is the filter).
Extensions could use the existing alterSettingMetadata hook to add & remove fields from any pages that use the Generic form to choose their settings and extensions could add settings pages by just adding an xml entry & their metadata
We would convert simple forms & for more complex forms we would attempt to break the inheritance on the 2 existing forms (CRM_Admin_Form_Preferences & CRM_Admin_Form_Setting) in favour of using just the CRM_Admin_Form_SettingTrait in an attempt to grandfather them out.https://lab.civicrm.org/dev/core/-/issues/4056Replace hard-coded call to legacyCustomSearch framework with a hook2023-06-25T18:31:24ZeileenReplace hard-coded call to legacyCustomSearch framework with a hookWe should get the legacy custom search frame work out of our `GroupContactCache` BAO and eventually out of core code (and unhide the extension, with a view to not shipping enabled).
In order to do this I think we need a hook to get the ...We should get the legacy custom search frame work out of our `GroupContactCache` BAO and eventually out of core code (and unhide the extension, with a view to not shipping enabled).
In order to do this I think we need a hook to get the sql when loading a contact group
![image](/uploads/9ca4de13d7127a957e988ccea1a5c43b/image.png)
It might potentially wind up like this
![image](/uploads/6eebfb49b84cb35210c17de5a7eaf5e2/image.png)
I see there is handling for the sql being empty - which seems weird - but we could probably assume that if anything ever needs no sql it is not a custom search
Note that `CRM_Contact_BAO_SearchCustom` could be moved to the extension with the hook once as part of this as nothing else calls it
The other place where the legacy custom search framework returns sql is
![image](/uploads/e99dfdf4ba2fb66ac6e78c9f1cffc3b6/image.png)
Internally the first query calls the same `contactIDs`
![image](/uploads/88c6ff1481188c0f666b6309cb01b25b/image.png)
@colemanw @seamuslee @DaveDhttps://lab.civicrm.org/dev/core/-/issues/298API Explorer shows incorrect syntax for arrays via drush/cv2023-06-24T05:03:19ZJonGoldAPI Explorer shows incorrect syntax for arrays via drush/cvThe problem I'm seeing is displayed in the attached screenshot. When you create an API call with API Explorer that requires the use of an array, API Explorer adds the array, JSON-encoded, to the argument list. However, neither drush no...The problem I'm seeing is displayed in the attached screenshot. When you create an API call with API Explorer that requires the use of an array, API Explorer adds the array, JSON-encoded, to the argument list. However, neither drush nor cv (and I assume wp-cli) will parse the argument as an array. This has tripped up multiple folks on Stack Exchange ([1](https://civicrm.stackexchange.com/questions/10887/can-i-chain-api-calls-through-drush), [2](https://civicrm.stackexchange.com/questions/16423/passing-json-objects-to-drush-cvapi)).
As answers to those SE questions point out, it IS possible to use drush/cv and encode arrays. Instead of:
```
cv api Contact.create contact_type="Individual" first_name="Jon" options={"match":"first_name"}
```
We could do:
```
echo '{"contact_type":"Individual","first_name":"Jon","options":{"match":"first_name"}}' | cv api Contact.create --in=json
```
There are three solutions of increasing effort, depending on how important folks think this is. I'm willing to do the first one, and someone else can do 2 or 3 if they feel it's important.
1) Patch API Explorer so drush/cv/wp always show the (more complex) `echo foo | cv api bar.baz --in=json` syntax.
2) Patch API Explorer so drush/cv/wp show the more complex syntax when an array is present (I can do this if it's simple, I'd have to look).
3) Patch drush/wp/cv to match API Explorer.
![Selection_544](/uploads/1335415c85a5e6aaf9f185c023ce4c25/Selection_544.png)https://lab.civicrm.org/dev/core/-/issues/11Email - send now error screen should display earlier2023-06-23T17:54:21ZJchesterEmail - send now error screen should display earlierIn Advanced Search if you are displaying results as contacts and then:
* select more than 50 of the results
* select **Email - send now (to 50 or less)**
you see the Error message telling you that you can't email more than 50 contac...In Advanced Search if you are displaying results as contacts and then:
* select more than 50 of the results
* select **Email - send now (to 50 or less)**
you see the Error message telling you that you can't email more than 50 contacts this way and the process stops
However, if you display the results as contributions or as memberships then
* select more than 50 of the results
* select **Email - send now (to 50 or less)**
you are taken to the email set up page. It is not until you click on Send Email on that page that you see the Error message telling you that you can't email more than 50 contacts this way and the process is stopped.
It would be a better user experience if the error message always appeared when **Email - send now (to 50 or less)** was selected.5.9https://lab.civicrm.org/dev/core/-/issues/10Enabling plugin in CKEditor Default doesn't enable it in Civimail despite sho...2023-06-23T17:54:21Zluke.stewartEnabling plugin in CKEditor Default doesn't enable it in Civimail despite showing it as enabledWhen enabling a CKEditor plugin at: civicrm/admin/ckeditor if you add it to "Default" and press save.
At this point the plugin shows up on all three tabs, (Default, Civimail, CiviEvent) however the plugin doesn't appear on a new mail des...When enabling a CKEditor plugin at: civicrm/admin/ckeditor if you add it to "Default" and press save.
At this point the plugin shows up on all three tabs, (Default, Civimail, CiviEvent) however the plugin doesn't appear on a new mail despite clearing caches, and force refreshing the browser.
Navigating to the "Civimail" tab and pressing save there as well gives the desired behaviour that the plugin is enabled.![CKEditor](/uploads/5c8b21a886fbf4b0eb27cd0a0ba0d09d/CKEditor.png)
Tested on 4.7.27 and 4.7.31RC
To reproduce:
1. Navigate to civicrm/admin/ckeditor
1. Select a plugin from the plugin dropdown on the default tab
1. Obeserve additional component appears in preview
1. Click Save
1. Clear caches civicrm/admin/setting/updateConfigBackend
1. Create an new email -> civicrm/mailing/send?reset=1
1. Observe additional component that it doesn't show in the toolbar.
1. Return to civicrm/admin/ckeditor
1. Shift to the Civi mail tab. Observe the plugin is listed.
1. Scratch head.
1. Press save.
1. Create a new mail.
1. You now have the required plugin.
I haven't tested behaviour with regards to the event tab.