# CiviCRM 5.64.0
Released August 2, 2023
- **[Bugs resolved](#bugs)**
## <a name="synopsis"></a>Synopsis
| *Does this version...?* | |
| Fix security vulnerabilities? | no |
| **Change the database schema?** | **yes** |
| **Alter the API?** | **yes** |
| Require attention to configuration options? | no |
| **Fix problems installing or upgrading to a previous version?** | **yes** |
| **Introduce features?** | **yes** |
| **Fix bugs?** | **yes** |
## <a name="features"></a>Features
### Core CiviCRM
- **System Requirements - Raise minimum recommended PHP to 7.4
Sites running PHP 7.3 will now display a "PHP Out-of-Date" warning on the
- **Add LEFT, RIGHT and SUBSTRING SQL functions
Adds LEFT, RIGHT and SUBSTRING SQL functions to APIv4.
- **Log server-side validation errors so it is easier to troubleshoot/debug
afform issues ((https://github.com/civicrm/civicrm-core/pull/25533))**
Makes it easier to debug in afform by logging server-side validation errors.
- **Render Email input as type="email"
Makes core email field inputs display as type=email. Email address validation
is enforced on data entry but not when searching.
- **Specify 'match' in mgd.php files
Adds 'match' param to reduce conflicts when resolving managed entities.
- **Towards consistency for displaying test entities. Stop hiding test entities
on some dashboards
Works towards consistent display of test entities by making all test entities
show up on the relevant contact summary tabs and not on the user dashboard.
- **Add weights to contact search actions
Adds weights to contact search actions so extensions can more easily
- **Add weight to Group Links
Adds weights to group links so that extensions can more easily manipulate
- **Add import listing for admins
Adds a searchkit search to display a list of imports run on the site for
admins only to the civiimport extension.
- **Add All imports menu item for users with Administer Queues
Adds a link to "All Imports" search to the menu bar for sites with the
civiimport extension enabled.
- **[WIP] civicrm_admin_ui Find contacts replacement
When using the core AdminUI extension, replaces the "Find contacts" search
with a Search Kit + Form Builder version.
- **Remove Search Builder link from search results
Removes the link to Search Builder from Advanced Search and Find Contacts
- **Add capitalize filter to tokens
Adds a token filter: capitalize, to apply title-case/name-case to token-values.
- **crmMoney filter - allow coercing locale
Adds a crmMoney filter to tokens, comparable to crmDate, for coercing money
into a particular format.
- **Note Form: use EntityFormTrait and setEntityId for postProcess hooks
Makes it easier for extension developers to use the postProcess hook when
notes are edited.
- **Improve select for Add Navigation Menu Item > Parent
Improves the "Add Navigation Menu Item" parent field by making it a select2,
wider and the list ordered.
- **AdminUI: Convert Job Log page civicrm/admin/joblog
Adds a "Job Log" page to the Admin UI extension.
- **AdminUI: Convert Mail Accounts page civicrm/admin/mailSettings
Adds a "Mail Accounts" page to the Admin UI extension.
- **Add select2s for Contribution, etc
Improves user experience by changing old-school selects to select2s on the
following forms: Contribution, Manage Contribution Page, Manage Event
Registration, Payments, PCPs, Pledges.
- **Put link first in SearchDisplay Links options
Improves SearchKit -> SearchDisplay -> Links options user experience by
reordering the fields.
- **Clarify dedupe rules as "Name or Email"
Renames the default Organizational and Household dedupe rules from "Name and
Email", to "Name or Email" which more accurately reflects how they work.
- **Move last (hopefully) custom search classes to the extension, unhide
Unhides the Legacy Custom Search extension so that users can uninstall it.
- **WorkflowMessage - Allow more dynamic-localized data. Unify language field.
Makes it possible for bespoke methods in WorkflowMessages to generate
- **Add deployID to civicrm.settings.php
Adds deployID to civicrm.settings.php file for redis implementations.
- **Add Search Display of ACLs
Adds a search kit built search display of ACLs into the new admin ui extension
and associated metadata that is needed.
- **Allow negative rules for ACLs
Permits ACL rules that negate (deny) access.
- **Add "priority" column to ACLs and support ACL rule precedence
Adds the concept of a priority to ACL rules. This allows for allow or deny
rules to take precedence by the priority they are given.
- **Move standalone classes and standaloneusers extension into core
Adds support for Standalone builds.
- **SearchKit - Provide context information to subscribers
Provides context information to subscribers in SearchKit.
- **SearchKit - Allow custom fields in join conditions
Allows custom fields in SearchKit join conditions.
- **SearchKit - Expose expires_date field to UI
Exposes expires_date field to the SearchKit UI.
- **API/SearchKit - Improve dynamic pseudoconstant lookups and ACL adminUI
Improves metadata in the ACL entity, metadata handling in the API, and the
new AdminUI "Manage ACL" screen.
- **APIv4 - Add EntitySet api for set-ops such as UNION
Makes it so one can use UNION in APIv4.
- **APIv4 - Remove gatekeeper permission check for AJAX endpoint (with tests)
Historically the AJAX api has required either 'access CiviCRM' or 'access
AJAX API' as a broad hedge against security vulnerabilities, but this
interferes with legitimate use-cases for anonymous users to make ajax
requests. Since http requests are allowed by anon, and many Civi pages now
contain ajax elements, this PR replaces that broad hedge with unit tests for
- **APIv4 - Add more metadata to CustomValue entities; use AutoService
Metadata improvements for multi-record custom field pseudo-entities.
- **Afform - Enable search operators to be exposed on the form
Allows search operators to be selectable on the form by the end-user in Form
- **Form Builder - Clarify "Security" options
Improves Form Builder user experience by clarifying Security options.
- **Add apiv4 Survey entity
Adds the Survey entity to Apiv4.
- **Add survey tokens
Adds email tokens for survey data.
- **Add workflow message template for sign_petition, confirm petition
Adds workflow message template for sign_petition and confirm petition.
- **APIv4, Case API, configure options and suffixes for medium_id field
Improves the APIv4 Case entity by making the options for `medium_id` a select
instead of a free text field.
- **[AuthorizeNetIPN] Use API for failure updates
Improves AuthorizeNetIPN integration by using APIv4 to log Failure updates.
- **Make the `recur_id` field of Contributions available to FormBuilder
Makes the `recur_id` Contribution field available to FormBuilder.
- **Add unit test cover + nl2br for location in event emails
Makes it so the html version of the event location token converts line breaks
to page breaks.
- **Expose a few more event fields as tokens
Makes the following information available as tokens when sending participants
emails: `is_share`, `is_share:label`, `requires_approval`,
`requires_approval:label` and `fee_label.`
- **Enhance examples to cover additional participants
Adds additional examples to the event message templates preview and starts to
flesh out the data to present for them
- **CiviMail - New autocompletes for selecting recipients
Breaks the "Recipients" field when building a CiviMail mailing into a select
for groups to include and a select for groups to exclude.
- **Add missing Mailing Events to API4: Delivered, Forward, Reply
Adds the mailing events: Delivered, Forward and Reply to APIv4.
- **Add calculated fields to API 4 for total mailing stats
Adds calculated fields to APIv4 for mailing stats, specifically: intended
recipients, successful deliveries, unique and total opens, unique and total
clicks, bounces, unsubscribes, opt outs, forwards and replies.
### Drupal Integration
- **Allow Drupal webstest user to view debug output
Makes it so the drupal webtest user can view debug output to make it easier
## <a name="bugs"></a>Bugs resolved
### Core CiviCRM
- **Make frontend_title consistently required and use it in all front end
presentations (Work Towards
Adds `frontend_title` to various data set up places.
- **How to activate downloaded translations?
Fixes menu description translations on the Administration Console.
- **Migrate installers to "setup" API (Work Towards
Adds some distmaker options to speed up frequent rebuilds. Work towards
migrating the Joomla installer to use the setup api.
- **OAUTH2 google doesn't seem to give you refresh tokens easily
- **Errors on merging contacts with websites
- **Proposal: Create stub extensions for civicrm core + all components
(Work Towards [dev/core#3961](https://lab.civicrm.org/dev/core/-/issues/3961):
Moves component Api4 files to component extensions.
- **Replace hard-coded call to legacyCustomSearch framework with a hook
- **Finish making legacycustomsearches optional
(Work Towards [dev/core#4112](https://lab.civicrm.org/dev/core/-/issues/4112):
Refactors code to move towards making legacycustomsearches optional.
- **SearchKit/FormBuilder - handling monetary totals
- **AdminUI: Redirection after creating new profile and adding fields is
incorrect / not user friendly
- **SearchKit + FormBuilder: In place edit using a list view
Fix in-place edit in SearchKit list and grid displays.
- **GroupTest occasionally failing due to new test
- **Prevent people from sneakily adding fields to your extension's reserved
custom groups by using the Move action
- **SearchKit: two displays on dashboard using similar search incorrectly share
Total value -- variable leakage?
- **New Activity with custom radio field gives fatal error
- **Verbiage changes on Find Groups screen
- **Afforms fields are doubled
- **AdminUI: Advanced Search not accessible and Redirect after Search Actions
from Contacts in Group broken
- **Trigger-based logging schema reconciliation fails when a column is renamed
to a different upper/lower case
- **One of parameters (value: ) is not of the type CommaSeparatedIntegers for
Fixes a crash for lesser permissioned users.
- **parent_id constraint on civicrm_activity can lead to data loss
This resolves a longstanding issue when follow-up activities were deleted when
the parent activity was deleted.
- **SearchKit: Arithmetic field transformation broken
- **PHP 8 Compatibility Issue - strlen of array
- **Can't import using contact id
Improves import help text.
- **Installing a core extension results in an error
- **AdminUI: Allow searching by "LastName, FirstName" in Find Contacts
- **Translation for site default language not loaded
- **Disabling and re-enabling a core extension removes it from the navigation
menu and from SK
- **Membership tab on contribution page config broken
Crash on membership tab of contribution page config.
- **Admin UI - be like regular civi and don't show reserved custom groups
- **AdminUI - Alter core forms to redirect to the new AdminUI afform pages
- **SearchKit - Fix check for smarty syntax in rewrite output
- **SearchKit - Tidy up admin buttons and table header sort icons
- **Update Api.php to correct external_identifier to type STRING
- **APIv4 - Fix passing '0' as a function argument
- **Make implicit TRUE permissions check explicit in API 4 Explorer for PHP
- **Standalone - Fix some path calculations
- **Standalone - Auto-enable user subsystem. Tweak default user.
- **Standalone - Track logged-in user object
- **Standalone - Generate proper HTTP response code for permission-errors
- **Standalone - Suppress debug output
- **Remove obsolete 'Basic ACLs'
Removes unused code for an old permissioning system that no longer
- **Fix ACLs to use the correct name of the civicrm_group table
- **Contribution WorkflowTrait updates to support event template changes
- **Allows multiple Free Text fields to be added to form layout
- **Converting CryptoException into status messages
Fixes a white screen of death if you change the CIVICRM_CRED_KEYS variable
(or clone the site) and go to `/civicrm/admin/setting/smtp?reset=1`.
- **Remove 'Payment Amount (most recent)' column from membership report
- **Add additional message to invoice template if present
- **Expire notifications for Shared Address Contact Delete & Financial Types
- **Don't add Contact to Domain Group on edit
- **Don't check for PHP 5 on Mapping Settings
- **Ensure counties are properly imported even if ambiguous
- **Show manually added Smart Groups on Contact edit
- **Fix some missing places where prioritisation is not incorporated
- **Group BAO - Remove secret param that was breaking groupNesting
- **wrong hook params
- **clearTempTables: fix condition for user_job check
- **Report on the most recent membership contribution, not the oldest
- **Don't show SQL text in SK if user does not have view debug permission
- **Fix group count for delete confirmation
- **Fix actions on Relationship search using Searchkit
- **Fix debug permissions for API 4 Explorer debug
- **[PHP8] Codegen - Don't generate invalid secondary emails
- **Don't show filtered from NaN on Groups when 0 groups found
- **SchemaHandler - Fix nonstandard index capitalization + code cleanup
- **[PHP8] Fix warnings on activity and event management forms
- **APIv4 Explorer - Fix regression in php generation
- **Do not generate unshared variable in shared `processMessageTemplate`
- **Add deprecation notice to legacy exception class aliases
- **Fix for domains that have the string .css in them
- **Smarty - When temporarily setting variable, fix cleanup for
- **Lower-case field name uf_group.post_URL, cancel_URL
- **crmAutocomplete - Fix endless loop (again)
- **Fix ommitted port when constructing redirect URL
- **SearchKit - Fix saving created/modified fields
- **Add deprecation warning and fix deprecated constructor call (followup to
- **Remove unneeded and strange profile field save success alert
- **Attempt to fix some form notices on Contact Edit form new contact
- **Fix PHP errors on profiles and custom fields when using options per line
- **Fix another place weight is not passed
- **Fix Translation to load related language more reliably
- **Fix apiv4 bug on custom fields with spaces in name
- **Prevent API errors when CiviEvent is disabled
- **Prevent erroneous GroupContact hooks for Contact already in group
- **Stop passing around object, just to get the id in Anet.ipn
- **Misc ts fixes
- **Remove unused line item variable from signature
- **CiviImport - String fix
- **CiviImport - Fix table description
- **Move sending of email to recur function
- **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
This fixes an issue where the Greenwich Bootstrap files include an invalid
reference to their font data.
- **Breakage with 5.63 moving code to extensions
When reconciling managed entities, errors are now logged instead of throwing
exceptions unless debug mode is enabled. Neither exceptions nor error logging
happens during install or upgrade.
- **crmCaseType: fix New Case Type link visibility in obscure circumstances
- **Deleted activities filter no longer working on manage case
- **Accepted credit cards not saved when creating or editing a payment processor
- **Error on saving amounts on edit Contribution Page
This resolves a hard error in PHP 8.1+ if you try to save a Contribution Page
- Amounts tab with a fixed contribution option (not a price set).
- **Call repeatTransation not completeOrder from repeatTransaction API
- **Update Recurring end_date when setting status to completed
- **Switch to Payment.create & repeattransaction in Authorize.net
- **Don't show pay_later processor on additional live Payment
- **Cleanup Email Invoice form to remove longest ever field label
- **Switch to token for tax_exclusive_amount in offline receipt
- **Fix e-notices in contribution_offline_receipt text by removing always-empty
- **Update related contribution trxn_id before sending email
- **Reduce PHP warnings on Contribution
- **Reduce PHP warnings with paymentBlock
- **Fix two more broken checkboxes - PCP pages
- **Add start date back to recurring contributions display on contact
- **Payment on Event Confirmation Page: Does not work when pay later is disabled
- **Fix missing </table> tag on repeat event change confirm tpl.
- **Fix e-notices on New Participant form, strict smarty
- **Fix PHP warnings on front end Register
- **replace deprecated functions in event fee form
- **CiviGrant - Support APIv4 autocompletes
- **Rebuild smart group cache for specific smart groups included in mailing at
- **Update online event workflow template for more consistent participant amount
data and preview-ability
- **CRM_Mailing_Form_Optout, CRM_Mailing_Form_Unsubscribe: change properties to
protected from private
- **Typo correct for MailingEventReply.php
- **Fatal error when changing membership type, on membership with 0
- **Once you create a Membership price set, with membership options (ie Select)
you cannot then add a new Option as the Membership fields are not displaying
This fixes the check to see if a price option is able to be used by CiviMember
- **Split MembershipBlock.tpl into 2
- **Fix don't change membership status when saving a pending membership
- **Fix lifetime membership with end date error message
- **Fix recent breakage on membershipBlock.tpl
### Joomla Integration
- **Undefined variable $store in Joomla.php on line 56 -
### WordPress Integration
- **Fix UTC offsets when retrieving timezone string in WordPress
## <a name="misc"></a>Miscellany
- **Move recurring handling to recur function in PaypalIPN
- **CiviMail - Sundry cleanups
- **UFGroup DAO is out of date
- **Remove unused functions from `AuthorizeNetIPN`
- **Simplify use of contribution - we are only looking at status
- **Extract getContributionRecur, clean up input input...
- **Drop unused table civicrm_action_mapping
- **Remove copy-and-paste comment
- **Remove ids Variable that is dumb
- **Fix a couple more places to use the new event trait
- **Move code to complete `repeatTransation` into that function
- **APIv4 - Deprecate unused event
- **SearchKit - Reuse helpers from CRM_Core_Action
- **Delete unused tpl file
- **Add self to contributors
- **Duplicate the few lines of shared code between `completeOrder` into
- **FlexMailer\Listener\OpenTracker: remove deprecated isLegacy check
- **Remove unused variables, fix a couple of ==
- **Remove unreachable code in event registration templates for tax total
- **Remove stray semi-colon
- **Remove obsolete comment
- **Remove redundant variable declared in the parent class
- **CiviEventDispatcher::dispatch() - add deprecation warning for deprecated
event class ((https://github.com/civicrm/civicrm-core/pull/26338))**
- **REF - Auto-generate links for CRM_Core_Page_Basic
- **[REF] Don't add Contacts to Groups they are already Added to on Edit
- **[REF][PHP8.1] Don't pass null to strtoupper in getDynamicCharacters
- **[REF] Use writeRecord in the revert function of MessageTemplate to ensure
that pre and post hooks are called
- **REF - Replace CRM_Utils_Array::value with ??
- **[REF] Autoformat php short array syntax
- **[REF] Remove unnecessary CRM_Utils_Array::value and use short array syntax
- **[REF] Code cleanup; remove unused vars and remove CRM_Utils_Array::value
- **(REF) Simplify some more installation data
- **[REF] Switch a bunch of core pages to use auto-links
- **REF - Code cleanup and notice fixes in scheduled reminders
- **(REF) Convert dynamic translations from `ts()` to `_ts()`
- **[REF] CiviCase - Move more activity logic into case BAO via hook
- **[REF][PHP8.2] IDS fixes for dynamic property deprecation
- **[NFC] Update test that's no longer doing what it was doing
- **NFC: standardise ufId to ufID to avoid confusion
- **[NFC] Change PHPDoc return type (findById)
- **NFC: Add debug level log message when afform submissions catch exceptions
- **Use EventTest helpers (a few more places)
- **Remove now unsed createEvent test function from test baseClass
- **Remove some unused test functions
- **Fix ChangeFeeSelectionTest to use eventCreatePaid
- **Install SK as part of headless test baseline
- **Fix participantTest class to call createEventPaid
- **[Test] Clean up payment processors when cleaning up other related entities
- **Use eventCreateUnpaid in participantCreate
- **Fix test to not use brittle xml, remove redundant crud tests
- **Update UFJoin test to not use brittle xml set up
- **Fix some test cleanup routines
- **Fix ACLPermissionTrait to use EventTest create function
- **Fix test to use created workflow
- **Remove duplicate test
- **Superficial clean up in test class
- **Very minor test cleanup
- **Test cleanup in BAO_ParticipantTest
- **[Tests] Fix a few more places to use eventTrait & remove `legacyEventCreate`
- **Cleanup AdditionalPaymentTest to use event trait
- **Fix Invoice test to user EventTestTrait, require less in order API
- **[TEST] APIv4 - Include CiviGrant in conformance tests
- **Include `entityTrait` in `ContactTestTrait`
- **Cleanup Apiv3-UfField test
- **Php8-proof SMSCommonTest
## <a name="credits"></a>Credits
This release was developed by the following code authors:
AGH Strategies - Andie Hunt; Agileware - Justin Freeman; Artful Robot - Rich
Lott; Blackfly Solutions - Alan Dixon; BrightMinded Ltd - Bradley Taylor;
Business & Code - Alain Benbassat; Christian Wach; Circle Interactive - Pradeep
Nayak; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop
SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Fuzion - Jitendra Purohit,
Mike Beck; iXiam - Vangelis Pantazis; JMA Consulting - Seamus Lee; Megaphone
Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire;
Progressive Technology Project - Jamie McClelland; Reflexive Communications -
Sandor Semsey; Squiffle Consulting - Aidan Saunders; Tadpole Collective - Kevin
Cristiano; The University of the West Indies - Howard Shand; Wikimedia
Foundation - Eileen McNaughton; Wildsight - Lars Sander-Green
Most authors also reviewed code for this release; in addition, the following
reviewers contributed their comments:
ALL IN APPLI admin; Fuzion - Luke Stewart; JMA Consulting - Monish Deb; Oxfam
Germany - Thomas Schüttler; Tobias Voigt; ziljah
## <a name="feedback"></a>Feedback
These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
and contact `@agh1`.