# CiviCRM 5.4.0 Released August 1, 2018 - **[Synopsis](#synopsis)** - **[Features](#features)** - **[Bugs resolved](#bugs)** - **[Miscellany](#misc)** - **[Credits](#credits)** - **[Feedback](#feedback)** ## Synopsis | *Does this version...?* | | |:--------------------------------------------------------------- |:-------:| | Fix security vulnerabilities? | no | | **Change the database schema?** | **yes** | | **Alter the API?** | **yes** | | **Require attention to configuration options?** | **yes** | | **Fix problems installing or upgrading to a previous version?** | **yes** | | **Introduce features?** | **yes** | | **Fix bugs?** | **yes** | ## Features ### Core CiviCRM - **[CRM-20430](https://issues.civicrm.org/jira/browse/CRM-20430) A permission 'save Report Criteria' ([12107](https://github.com/civicrm/civicrm-core/pull/12107))** Permission to edit the criteria for saved reports is now separate from the permission to access and preview modifications of report criteria. This will prevent non-privileged users from modifying the criteria of an organization's standard reports. However when upgrading, site administrators will need to grant the Save Report Criteria permission to roles that need that capability. - **[dev/core#174](https://lab.civicrm.org/dev/core/issues/174) Consistently use swappable cache interfaces ([12321](https://github.com/civicrm/civicrm-core/pull/12321), [12322](https://github.com/civicrm/civicrm-core/pull/12322), [12323](https://github.com/civicrm/civicrm-core/pull/12323), [12330](https://github.com/civicrm/civicrm-core/pull/12330), [12331](https://github.com/civicrm/civicrm-core/pull/12331), [12336](https://github.com/civicrm/civicrm-core/pull/12336), [12342](https://github.com/civicrm/civicrm-core/pull/12342), [12348](https://github.com/civicrm/civicrm-core/pull/12348), [12354](https://github.com/civicrm/civicrm-core/pull/12354), [12362](https://github.com/civicrm/civicrm-core/pull/12362), [12368](https://github.com/civicrm/civicrm-core/pull/12368), [12376](https://github.com/civicrm/civicrm-core/pull/12376), [12378](https://github.com/civicrm/civicrm-core/pull/12378), [12379](https://github.com/civicrm/civicrm-core/pull/12379), [12380](https://github.com/civicrm/civicrm-core/pull/12380), [12381](https://github.com/civicrm/civicrm-core/pull/12381), [12389](https://github.com/civicrm/civicrm-core/pull/12389), and [215](https://github.com/civicrm/civicrm-packages/pull/215))** Sites using Redis or Memcache for caches and sessions will now use those facilities exclusively rather than retaining the `civicrm_cache` table as a backstop. This improves performance for these sites, especially those using multiple MySQL servers. As a precaution, Redis or Memcache administrators with very active sites may wish to double-check that they have ample capacity for their caches and sessions. For developers, the `CRM_Utils_Cache` APIs now support expiration/TTL times and [PSR-16 CacheInterface](https://www.php-fig.org/psr/psr-16/). The Civi implementation is slightly more permissive than the PSR-16 specification; for full compliance, enable `CIVICRM_PSR16_STRICT`. - **[CRM-21574](https://issues.civicrm.org/jira/browse/CRM-21574) Allow to disable sending of email from source contact for tell a friend on pcp ([12355](https://github.com/civicrm/civicrm-core/pull/12355)) (preliminary work)** Emails from the "tell a friend" feature are sent as if they are from the donor's address. This can cause delivery failures as the site may not be a valid source for the donor's email domain. Changes here are preliminary cleanup. - **[dev/core#32](https://lab.civicrm.org/dev/core/issues/32) Add option to disable cancel button on a profile form ([11883](https://github.com/civicrm/civicrm-core/pull/11883))** The Cancel button is now optional on profile forms. - **[CRM-21392](https://issues.civicrm.org/jira/browse/CRM-21392) Allow viewing groups/smartgroups as as other entities (eg. memberships, events) ([11241](https://github.com/civicrm/civicrm-core/pull/11241))** The Find Groups page now has a similar "View Results As" feature as the Advanced Search: you can choose to view memberships, events, activities, etc. of group subscribers rather than the contacts themselves. - **[CRM-21622](https://issues.civicrm.org/jira/browse/CRM-21622) Make the Add Parent Groups on Group Settings be a multiselect ([11481](https://github.com/civicrm/civicrm-core/pull/11481))** The New Group form now allows you to set multiple parent groups for a single group. - **[CRM-21460](https://issues.civicrm.org/jira/browse/CRM-21460) Programmatic access to job execution status ([11337](https://github.com/civicrm/civicrm-core/pull/11337))** Extension developers can implement two new hooks, `hook_civicrm_preJob` and `hook_civicrm_postJob`, which are invoked before and after executing a scheduled job. - **Change default for `CIVICRM_CONTAINER_CACHE` to simplify admin/developer experience ([12426](https://github.com/civicrm/civicrm-core/pull/12426))** - **[dev/core#223](https://lab.civicrm.org/dev/core/issues/223) Expose prefix and suffix in reports ([12394](https://github.com/civicrm/civicrm-core/pull/12394))** Individuals' prefix and suffix fields are now available as columns and filters among the contact fields in most reports. - **[dev/core#101](https://lab.civicrm.org/dev/core/issues/101) Allow further customization of search form in hooks ([12078](https://github.com/civicrm/civicrm-core/pull/12078))** Fields are no longer explicitly included in the search form template since that makes it hard to add or remove fields. Instead, the fields are listed in template variables, and the template iterates over the list to render the field elements. - **[dev/core#183](https://lab.civicrm.org/dev/core/issues/183) Temporary tables should follow consistent naming convention ([12311](https://github.com/civicrm/civicrm-core/pull/12311)) (partially completed)** This moves towards naming temporary tables--both true temporary tables in MySQL and regular tables created for temporary use--in a consistent manner in order to help database administrators employ replication policies based upon table names. - **[dev/core#144](https://lab.civicrm.org/dev/core/issues/144) `getCustomFieldID` switch to API, add caching, add full string return option ([12218](https://github.com/civicrm/civicrm-core/pull/12218) and [12283](https://github.com/civicrm/civicrm-core/pull/12283))** The function to retrieve a custom field ID now relies upon APIv3 rather than an *ad hoc* SQL query. It also contains an option to return the ID preceded by `custom_`. Finally, the function caches the result and attempts to return the cached value rather than looking it up each time. - **[dev/core#47](https://lab.civicrm.org/dev/core/issues/47) Add "clone" functionality to scheduled jobs ([11945](https://github.com/civicrm/civicrm-core/pull/11945))** Scheduled jobs can now be copied, including their parameters, both from the Scheduled Jobs page and through a new `Job.clone` API method. ### CiviCase - **[dev/core#107](https://lab.civicrm.org/dev/core/issues/107) After creating a new case, the assignee for each activity must be selected manually ([11998](https://github.com/civicrm/civicrm-core/pull/11998))** You can now select the default assignee for each activity in the standard timeline for a case type. This may be defined according to a relationship with the client, a single specific contact, or the contact who created the case. - **CiviCase, added reference of activities from different timelines. ([12236](https://github.com/civicrm/civicrm-core/pull/12236))** From an activity on a case timeline, you can now reference any activity available to the case--not just those on that case timeline. ### CiviContribute - **Add support for hidden fields in general (and 'token' specifically) on the payment form. ([12332](https://github.com/civicrm/civicrm-core/pull/12332) and [12391](https://github.com/civicrm/civicrm-core/pull/12391))** A new authorization token field is added to the payment form to support token-based payment processors. - **[CRM-21808](https://issues.civicrm.org/jira/browse/CRM-21808) Install custom group for Contribution or ContributioRecur subtypes based on XML file ([11726](https://github.com/civicrm/civicrm-core/pull/11726))** Extensions created custom data sets for contributions can now specify the custom data to apply only to a single financial type. - **(dev/core/50) and [dev/core#195](https://lab.civicrm.org/dev/core/issues/195) Add Separate Sub-tabs for Contributions and Recurring Contributions ([11956](https://github.com/civicrm/civicrm-core/pull/11956) and [12345](https://github.com/civicrm/civicrm-core/pull/12345))** The Contributions tab on a contact now contains two sub-tabs--one for single contributions, and the other for recurring contribution series--instead of displaying one after the other. - **[dev/core#96](https://lab.civicrm.org/dev/core/issues/96) Expose source column in booking report ([12374](https://github.com/civicrm/civicrm-core/pull/12374))** The contribution Source field is now available as a column and filter on the Bookkeeping Transactions report. - **Use html5 color input for contribution page widget ([12339](https://github.com/civicrm/civicrm-core/pull/12339))** ### CiviMail - **[dev/mail#1](https://lab.civicrm.org/dev/mail/issues/1) Add pause/resume functionality to civicrm bulk mailing. ([11803](https://github.com/civicrm/civicrm-core/pull/11803) and [12284](https://github.com/civicrm/civicrm-core/pull/12284))** A CiviMail mailing that is scheduled or in progress can now be paused in order to allow an urgent message to go out first. - **Add in bootstrap button classes to CiviMail interface ([12013](https://github.com/civicrm/civicrm-core/pull/12013) and [12338](https://github.com/civicrm/civicrm-core/pull/12338))** This allows the interfaces to be themed more easily by Bootstrap-based themes. ## Bugs resolved ### Core CiviCRM - **[dev/core#222](https://lab.civicrm.org/dev/core/issues/222) Importing contacts with dedupe rule does not use the rule ([12393](https://github.com/civicrm/civicrm-core/pull/12393))** - **[dev/core#284](https://lab.civicrm.org/dev/core/issues/284) Aggressive cache clearing significantly increases test time ([12590](https://github.com/civicrm/civicrm-core/pull/12590))** Settings, compiled Javascript, extension, and other caches are now only flushed along with the `default` CiviCRM cache if an external cache like Redis or Memcache is in use. (This reproduces the `5.3` behavior.) - **[dev/core#279](https://lab.civicrm.org/dev/core/issues/279) When Merging two contacts, Flip between original and duplicate link not working in WordPress ([12568](https://github.com/civicrm/civicrm-core/pull/12568))** - **Handle 'Check for Matching Contact(s)' button with ajax ([12552](https://github.com/civicrm/civicrm-core/pull/12552))** This resolves a bug where the "Check for Matching Contact(s)" button would not work if AJAX Deduping is enabled. - **[dev/core#131](https://lab.civicrm.org/dev/core/issues/131) Add in missing UK shire Monmouthshire ([12538](https://github.com/civicrm/civicrm-core/pull/12538)) (follow-up on previous work)** Many individual sites had manually added the county of Monmouthshire in Wales to the `civicrm_state_province` table, and upgrading to 5.3.0, which added the missing record, would cause them a database error. - **[dev/core#258](https://lab.civicrm.org/dev/core/issues/258) Possible unreleased regression - message template update altered customised template ([12492](https://github.com/civicrm/civicrm-core/pull/12492))** - **[dev/core#249](https://lab.civicrm.org/dev/core/issues/249) Contact Export fails in 5.4 when trying to export using the All radio button ([12447](https://github.com/civicrm/civicrm-core/pull/12447))** - **[dev/core#234](https://lab.civicrm.org/dev/core/issues/234) Upgrade Steps in 5.3.alpha1 may not have been run ([12419](https://github.com/civicrm/civicrm-core/pull/12419), [12420](https://github.com/civicrm/civicrm-core/pull/12420), and [12425](https://github.com/civicrm/civicrm-core/pull/12425))** - **[dev/core#155](https://lab.civicrm.org/dev/core/issues/155) Improvements and bugfixes to Option Groups UI ([12233](https://github.com/civicrm/civicrm-core/pull/12233) and [12411](https://github.com/civicrm/civicrm-core/pull/12411))** The Option Groups page now displays whether each option group is reserved or enabled. In addition, sites using sample data no longer have the sample custom fields reserved. - **[CRM-20184](https://issues.civicrm.org/jira/browse/CRM-20184) Some System Workflow templates still miss {contact.email_greeting} ([12296](https://github.com/civicrm/civicrm-core/pull/12296))** This makes receipt templates more consistent in using the contact's email greeting when sent to individuals. - **[dev/core#41](https://lab.civicrm.org/dev/core/issues/41) Search Builder: Not empty with date or integer custom fields gives a sql warning ([12351](https://github.com/civicrm/civicrm-core/pull/12351) and [12363](https://github.com/civicrm/civicrm-core/pull/12363))** - **Make all form tasks inherit from `CRM_Core_Form_Task` ([12318](https://github.com/civicrm/civicrm-core/pull/12318))** This addresses some export problems caused by tasks lacking certain properties because their classes did not extend `CRM_Core_Form_Task`. - **[dev/core#178](https://lab.civicrm.org/dev/core/issues/178) Redis driver - Error messages are invisible ([12303](https://github.com/civicrm/civicrm-core/pull/12303))** The log now contains error messages passed from Redis. - **[dev/core#180](https://lab.civicrm.org/dev/core/issues/180) Deleting custom values and custom_hook parameter `$entity_id` empty ([12309](https://github.com/civicrm/civicrm-core/pull/12309))** The ID of the affected entity is now passed to `hook_civicrm_custom` when a value is deleted from a custom field. - **Fix access to scheduled reminders for admins without event access ([11733](https://github.com/civicrm/civicrm-core/pull/11733))** Users with Administer CiviCRM permission but lacking Manage Events permission would get an error when trying to create a non-event scheduled reminder. - **Only treat a request as a get request (and hence use GET) if it starts with get ([12308](https://github.com/civicrm/civicrm-core/pull/12308))** - **[dev/core#179](https://lab.civicrm.org/dev/core/issues/179) Redis driver - Allow anonymous connections ([12304](https://github.com/civicrm/civicrm-core/pull/12304))** Redis no longer attempts to authenticate when no password is set, such as on local development environments. - **[dev/core#177](https://lab.civicrm.org/dev/core/issues/177) Redis driver - Reports incorrect value for cache-miss ([12302](https://github.com/civicrm/civicrm-core/pull/12302))** When a cache key is undefined, Redis now returns `NULL` rather than `FALSE`. - **[dev/core#175](https://lab.civicrm.org/dev/core/issues/175) Smart group involving relationship type filter display incorrect results. ([12301](https://github.com/civicrm/civicrm-core/pull/12301))** - **Make Send SMS permission independent of Edit Contact permission ([12067](https://github.com/civicrm/civicrm-core/pull/12067))** You no longer need the permission to edit a contact (in addition to the Send SMS permission) to send the contact a SMS message. - **[dev/core#134](https://lab.civicrm.org/dev/core/issues/134) Search Builder broken filter for Source Contact ID ([12181](https://github.com/civicrm/civicrm-core/pull/12181))** - **[dev/core#140](https://lab.civicrm.org/dev/core/issues/140) add missing pseudoconstant for `option_group_id` in CustomField.xml ([12195](https://github.com/civicrm/civicrm-core/pull/12195))** Extensions creating custom fields can now refer to option groups by name rather than ID. - **[dev/accessiblity#3](https://lab.civicrm.org/dev/accessibility/issues/3) Add aria-label (and label?) to form elements missing them ([12209](https://github.com/civicrm/civicrm-core/pull/12209) and [213](https://github.com/civicrm/civicrm-packages/pull/213)) (partial work)** Besides adding `aria-label` attributes to sub-elements of the Quickform date field, event info pages no longer wrap basic information labels in `