Released April 3, 2024
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 |
-
Scheduled Jobs - Define and track "last_run_end" (29587)
If a job completes (whether successful or by exception) it will record a
last_run_end
date in the job table. -
Support oEmbed for external facing pages (dev/core#2994: 29496 and 29536)
This adds initial support for CiviCRM to provide embeddable content on external websites. However, the mechanism is somewhat experimental. Consequently, it is implemented as a hidden extension (
oembed
).
-
Convert confirm email text to html (29532)
The field for custom text in a contribution or event confirmation email is now rich text stored as HTML.
-
Switch variables for tokens in contribution invoice template (Preparing for dev/core#4940: 29119)
Most variables are no longer tied to the form layer.
-
Replace Contact Summary Events tab with Admin UI Search Display and Form (29570)
This continues work to replace admin screens with displays built on SearchKit. Note: customizations using
hook_civicrm_links()
on the replaced tab will no longer work. They can be reimplemented by customizing the display. -
add class for fee level column (29123)
The results in Find Participants had classes for all the columns besides the Fee Level column. This adds a class to the column so that it can used as reference if needed to alter the column via JS or CSS.
-
Add fields to mailing details report (dev/core#5010: 29387)
Time stamp fields are now available in the mailing details report to show when the mailing was delivered.
-
Updates SMS form to use api based widget to select phones rather than the hacky one-off ajax (29647)
-
Accordions: Eight patterns in Civi markup – reduce & make more accessible? (dev/user-interface#60: 29446, 29448, 29449, 29533, 29543, 29551, 29563, 29594, 29600, 29602, 29633, 29704, 29713, and 680)
This removes a
crm-collapsible
class which is deprecated, replacing it with<summary>
and<details>
elements. -
Fix bug where fields is not present (29870)
-
Blank custom fields accordion appears on Find XXX search forms (dev/core#5112: 29840)
-
[REF] Do not add arrays consisting of just the auto renew as options … (29770)
-
[REF] Fix showing Main Email field only when email doesn't exist in a profile (29749)
-
Update follow redirects to 1.15.6 (29748)
-
Afform - fix missing page title (29694)
-
Specify rounding mode when rendering Monetary entity tokens (29654)
-
missing literal (29668)
-
Afform - typo when getting options from SavedSearch entity (29662)
-
Remove unnecessary pass-by-ref (29650)
-
SearchKit - Update crmSearchAdminFields.html to use X icon instead of ban icon for removing fields (29549)
-
Pass all available relevant fields to Contact.getduplicates on checkMatchingContact (29554)
-
Finish decommissioning use of legacy
getTree()
function (29643) -
Dedupe finder field wrangler - de-nest groupTree results (29640)
-
Remove unset variables from previously shared function (29636)
-
Remove some legacy code that is not relevant in this previously shared function (29639)
-
Dont crash if we can't start a session when a file path doesnt exist (29363)
-
Don't clear sessions when clearing cache (29610)
-
Remove always NULL variable from previously shared function (29635)
-
Dedupe selected fields, simplify, removed greeting id fields (29632)
-
[Ref] Duplicate deprecated getTree function to another place in dedupe code (29631)
-
[custom data code cleanup, Finder] Fold another previously shared function into only caller (29628)
-
Check workflow not deprecated workflow_id on showing message templates (29526)
-
Fold another function back into caller (29626)
-
Access submitted value directly rather than passing around (29627)
-
Fold the 2 groupTree wrangling functions into 1 (29622)
-
Return function to only calling class (29517)
-
Import - Use localized alternative to English-only headerPattern from field metadata (29612)
-
Remove always true parameter & associated IF from previously shared function (29531)
-
avoid passing null to strnatcmp deprecation notice (29615)
-
OpenID - Set field widget to match field rule (29611)
-
Use name instead of label in conditionals (29608)
-
Replace assign_by_ref with assign (29433, 29442, 29443, 29576, 29601, 29603, 29606, and 29609)
-
Extract isInvalidRecipient (29565)
-
Remove unused inputs & outputs from buildLegacyGroupTree (29557)
-
Update 'Administer Custom Groups' to show subtypes (29584)
-
(REF) Crypto - Cleanup service declarations (29571)
-
APIv4 Explorer - Accept action-parameters of type "float" (29586)
-
entity id in rows (29582)
-
if no clicks, display 0 rather than empty string (29568)
-
AdminUI - Edit title, description, comment to clarify what it's for (29581)
-
Conditionally show updateTemplate fields (29577)
-
More briefName fixes (29579)
-
Finish making DedupeRule sql() static (29540)
-
Call browse directly rather than forcing through run (29481)
-
Deprecate dupeQuery hook (29544)
-
Remove non-variable variables from recently unshared function (29556)
-
Add some noise to legacy code that I believe to be no longer reachable (29535)
-
Copy getTree function back to finder class (29546)
-
Admin UI page pdf formats (29545)
-
Assign profileID to template in UFNotify, add example (29441)
-
SearchKit - Support field comparisons in HAVING clause (29542)
-
A11y: Fix info button contrast ratio (29529)
-
Pass values into DedupeRule->sql() rather than hybrid object (29520)
-
Remove code slated for removal (29534)
-
UI: Swaps icon image sprite with FA icon (29530)
-
Deprecate function back to only caller (29524)
-
Remove unreachable broken rollback (29511)
-
[REF} extract code for formatting custom fields (29518)
-
Add some noise if people use getVar to access internal properties (29492)
-
Copy functions from TabHeader back to the only caller (29490)
-
Stop passing parameters to previously shared now-private function (29491)
-
Allow json parameter definition for scheduled jobs (29486)
-
Do not use getVar to access property on same form (29493)
-
Stop passing some-weird-but-always-the-same params to getPositions (29395)
-
[REF] Ensure that gName is always asigned to page template (29480)
-
Sub str_starts_with instead of substring (29478)
-
AllCoreTables - Reduce reliance on class index. (29471)
-
Add deprecation tag & pointers (29467)
-
Remove pass-by-ref (29468)
-
Copy last remaining usage of getComponentDetails() to relevant subsystem (29459)
-
[REF] Fully deprecated getSubType function (29462)
-
Display labels for numeric custom field key values in Log Detail Report (29029)
-
Split code from quasi-shared code in order to be able to clean it up (29435)
-
Remove unused function, noisily deprecated a year ago (29434)
-
SchemaHandler - Get table names from canonical sources instead of string-fu guesswork (29389)
-
[REF] AllCoreTables - Cleanup comments, rename functions for consistency (29390)
-
APIv4: Automatically add 'OR IS NULL' to 'NOT CONTAINS' (29402)
-
[REF] AllCoreTables - Make internal function private (29418)
-
[REF] DAO - Make
getEntityIcon()
function more useful (29423) -
MultiLingual - Fix inconsistent handling of table names (29366)
-
Comment functions with deprecation/ preferred method notices (29417)
-
Remove (unreachable) call to clearAssign (29412)
-
Fix PHP Notice in Contact Import Parser (29396)
-
CRM_Utils_JS - Improve encoding of object keys (29392)
-
AdminUI - Add link to create new field directly from custom group listing (29397)
-
[php8.2] Clean up the 2 forms that support Group-extending custom data for notices, php8.2 compliance (29229)
-
CRM_Core_DAO - Deprecate unused functions (29391)
-
(REF) Drop unused SQL file (civicrm_arms_sample_data.sql) (29386)
-
Switch Smartyv2 mixin to Smarty mixin (29382)
-
Fix references to old location for HookInterface (29385)
-
Switch our default dev & demo smarty version from 3 to 4 (29370)
-
Ext - Specify COLLATE when creating tables (29384)
-
avoid deprecation errors (29383)
-
Update file ID in entity field on file upload in Afform (29199)
-
[REF] AllCoreTables - More efficient array lookups (29377)
-
Remove financial acls properties in core that are set but not accessed (28960)
-
Replace 'Expose Publicly' phrasing with 'Public Pages' (dev/core#2915: 29347)
-
[REF] DAO - Consolidate redundant functions keys() and getPrimaryKey() (29367)
-
Add load filter compatibility function to Smarty2 (388)
-
[Survey] 5.71 regression - survey forms missing type hints (29658)
-
CiviCampaign - Ensure dashboard fields are translated (29723)
- php 8.2 fix ChangeCaseStartDate (29666)
-
Premiums configuration gives a 500 error (dev/core#5107: 29843)
-
(regression) Submission of non-numeric value on contribution form causes crash (dev/core#5079: 29717)
-
Price Sets: total calculation wrong if decimal separator is different than "." (dev/core#5026: 29499)
-
Fix Payment Processor form to use the right way to get the
paymentProcessorID
(29477) -
Fix Smarty notice on add payment (29502)
-
[Update Subscription Form] Align UpdateSubscription to more recent practices (29538, 29539, 29564, 29572, 29573, 29574, and 29580)
-
Use getPaymentProcessorObject() in updateBilling (29605)
-
Make getContributionID public on AbstractEditPayment (29483)
We have the same function many places & have been making it public & api supported but this one is protected
-
[REF] Ensure that CMS is booted prior to processing legacy PayPal IPN (29521)
-
Incorrect fee level saved when editing event participant (dev/core#5085: 29726)
-
Intro text on event confirm is actually html (29841)
-
Display of autocomplete multi-select custom fields for events is broken (dev/core#5090: 29721)
-
message template "Events - Registration Confirmation and Receipt (on-line)" transaction no. not displayed (dev/core#5088: 29715)
-
Afform - Add Participant Note block (29575)
This adds a missing Note field for editing participants in Form Builder.
-
Disabled Event Name Badge Layouts Are Not Disabled (dev/core#5032: 29494)
-
Columns are misaligned on find participants results (dev/core#5030: 29489 and 29500)
-
Fix manage event pages to clear caches on save (29510)
-
Match event breadcrumb label to context (29537)
-
With URL tracking enabled, a personalised "View in your browser" link incorrectly replaces ? with & which causes CiviCRM to respond with error: "You do not have permission to access this page" (dev/core#5082: 29850)
-
sms form missing tokens dropdown and save template section at bottom not
hidden properly (dev/core#5029: 29667) -
[SMS Trait] Consolidate 2 foreach loops into 1 in sms trait (29629)
-
SMSTrait - extract getSMSProviderParams (29607)
-
Clean up phone filtering in sms activity trait (29604)
-
SMS form cleanup Stop passing contactIds into previously shared function (29614)
-
Use Api rather than BAO::create to create activity in SMS Trait (29475)
-
[SMS Trait] Remove unvariable variables from previously shared code
(29474) -
SMS Trait - add support for Autocomplete subscriber, notice fix (29429)
-
Scheduled Reminder listing will not load at all if any Scheduled Reminder exists which refers to a deleted Membership Type (29460)
-
TypeError when trying to use checkboxes with default non-membership options in the Membership section of Contribution Pages (dev/core#5071: 29653)
-
Custom field value not saved first time after membership type changed (dev/core#4026: 29355)
-
Fix failure to handle localised money, notice on batch membership form (29349)
-
Ensure price from url is set as default (29822)
Specifying price field ID in URL was overriden by current membership type.
-
Fix New Member receipt setting for non-English (29451)
-
Fix BackOffice Membership forms getPriceSetID() to be standard (29348)
-
Add filters to membership type sk on contact membership tab (29775)
-
drupal 8 - php warnings on every page: html_entity_decode(): Passing null to parameter #1 ($string) of type string is deprecated (dev/core#5052: 29560)
-
Issue #194: add core resources to blocks (89)
-
Respect CIVICRM_DSN and CIVICRM_UF_DSN being different on upgrade (69)
-
Check if valid UF Match exists in user plugin (55)
-
Fixes broken links on post-upgrade/install page (66)
-
Fix event listing as front page for Joomla 4 (73)
-
Standalone: doesn't install because of missing session class (dev/core#4988: 29352)
-
Standalone install in another language (dev/core#5037: 29522)
-
Disable Sync CMS Users form and functionality on Standalone (dev/core#4993: 29351)
-
Standalone install - check upload directory is writable (29354)
-
Imagine a world without CodeGen (Toward dev/core#4999: 29365 and 29364)
-
ReferenceDynamic - Save lots of irrelevant queries when finding backreferences (29381 and 29569)
-
Regen DAOs (29372)
-
Make mailingJob::queue static (29175)
-
Suppress last php8.2 test fail for PR tests (29724)
-
[REF] Clarify type of group_id & rule_group_id is int or null (29394)
-
Ornery++ (29550)
-
Fix test to call actual function (29630)
-
add field name to SearchKit cells, primarily for testing (29595)
-
fix 'Authorization Failed' on API4TestTrait (29590)
-
[NFC] Fix tests for leap year (29562)
-
LocalizedDataTest - Simplify test protocol. Only care about live SQL. (29311)
-
SMS form test - fix to test the function actually being used (29432)
-
Add test on merge code (29405)
-
NFC: fix incorrect comment (29596)
-
[NFC] Don't flush someone else's ob (29426)
This release was developed by the following code authors:
AGH Strategies - Andie Hunt; Agileware - Agileware Team, Francis Whittle, Justin Freeman; Benjamin W; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; civiservice.de - Detlev Sieber; Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove, Shane Bill; Dave D; dependabot[bot]; Freeform Solutions
- Herb van den Dool; Fuzion - Jitendra Purohit; Gokhalemethod - Sadashiv; Greenleaf Advancement - Guy Iaccarino; JMA Consulting - Seamus Lee; John Kingsnorth; kapn*net Technology Services - Keith Nunn; Lemniscus - Noah Miller; Makoa - Usha F. Matisson; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Mosier Consulting - Justin Mosier; Nicol Wistreich; Progressive Technology Project - Jamie McClelland; Responsive Development Technologies - Thomas Nilefalk; Squiffle Consulting - Aidan Saunders; Third Sector Design - Kurund Jalmi; Wikimedia Foundation - Eileen McNaughton, Elliott Eggleston
Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments:
AGH Strategies - Chris Garaffa; Artful Robot - Rich Lott; ASMAC (American Society of Music Arrangers and Composers) - Jeff Kellem; Australian Greens - Andrew Cormick-Dockery; Francesc Bassas i Bullich; Fuzion - Luke Stewart; James Bugden; JMA Consulting - Joe Murray; mmyriam; Systopia - Dominic Tubach, Johannes Franz; Tadpole Collective - Kevin Cristiano; Third Sector Design - William Mortada
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
.