Released March 6, 2024
Does this version...? | |
---|---|
Fix security vulnerabilities? | no |
Change the database schema? | |
Alter the API? | yes |
Require attention to configuration options? | yes |
Fix problems installing or upgrading to a previous version? | |
Introduce features? | yes |
Fix bugs? | yes |
-
Make name, title, frontend_title fields on UFGroup consistent with ContributionPage, Group (28492)
This makes profile names operate in the same way as group and contribution page names
-
Consolidate handling of line items in back office participant form (28735)
-
Clean up code to add custom data to forms, implement on back office participant form (28733)
-
Add html types to Participant schema (28900)
-
SearchUI - Add Find Membership using searchkit (29064)
-
ContactSummary - Replace Membership tab with Searchkit display (28810)
-
Regression - Fix missing getLinks action in SKEntity (29589)
-
SearchKit - Fix enable/disable links in displays (29547)
-
Rename 'Provider' entity to 'SmsProvider' (29555)
-
Make integer field selfcancelxfer_time required (29525)
-
Fix regression from #27902 disabled options showing (29504)
-
dev/core#5018 Fix UFGroup.xml (29461)
-
dev/core#4889 - Don't delete my files (alternate) (29421)
-
News Dashlet - Fix styling of unread items (29452)
-
dev/core#5005 Fix validating to allow for saving with entity sub filt… (29444)
-
Afform - Fix incorrect html encoding when saving (29400)
-
AngularJS - Fix log warning on upgrade UI (29403)
-
5.71 upgrade is not safe to re-run (29398)
-
CryptoJwt - Fix detection of firebase/php-jwt APIs (29376)
-
APIv4 - Fetch all options when matching pseudoconstants. (29369)
-
CryptoJwt - Fix detection of firebase/php-jwt APIs (29345)
-
Unshare the SMSCommon::preProcess function between the (29339)
-
dev/core#4821 - APIv4: Allow custom field to reference value in bridge joins (29325)
-
dev/core#3381 Fix currency display on total fees (29299)
-
Fix php8.x issues in payment form (29245)
-
SMS tasks, use shared trait, move some functions to it (29285)
-
Remove incorrectly placed ChangeCaseStatus class properties and convert one of them to a local var (29284)
-
Fix misunderstanding about return value of getKeyId (29141)
-
Stop burying the lead (29306)
-
dev/core#4974 Fix total fees over-sharing (29309)
-
Afform - Reduce noise in mgd.php file (29316)
-
Drupal.civi-setup: setAuthorized if running via drush (29303)
-
APIv4 - Add type hints to Result object (29258)
-
WP - Handle updated permissions format (29297)
-
Clean up on clear_assign (29287)
-
API - More helpful authorization failed error message (29179)
-
(REF) Cleanup - Replace more nested CRM_Utils_Array::value with ?? (29283)
-
composer.json: Use current SPDX license identifier (29078)
-
[php8.x] Clean up max value functionality (29254)
-
(REF) Cleanup - Replace illegible nested CRM_Utils_Array::value with ?? (29268)
-
[php8.x] Minor cleanup in priceSetOptionsCount (29255)
-
[php8.x] Clarify what
optionsMaxValueTotal
means (29252) -
Allow cascade delete for custom entity reference fields (28225)
-
Do not permit a contact to be deleted if it is linked to a CMS user issue1290 (29026)
-
Update template deprecation text, add one more string (29250)
-
Unshare another function to permit code cleanup (29248)
-
Fold functions that only support one form back into that form (survey) (29232)
-
Make form-specific funciont protected, non-static (29247)
-
Afform - Remove guesswork from fk lookups (29236)
-
Remove call to silly non-php8.2 compliant function (29230)
-
APIv4 - Add type hints to FieldSpec functions (29223)
-
Declare some public variables on ChangeCaseStatus (29227)
-
DAO - Remove buggy caching from import/export (29182)
-
CorePermission - Declare more implied permissions explicitly (29218)
-
Use standardised function to get PriceFieldMetadata (29219)
-
Unshare another function with over-sharing (29217)
-
Make previously shared function non-static (29216)
-
Permissions - Make implied permissions declarative (29174)
-
Pass fee block into validatePriceset rather than looking up property (29215)
-
Unshare initFee function (29211)
-
Pass variables into validatePriceSet rather than getting from the form (29210)
-
Move static function to parent, make non-static (29207)
-
SearchKit - Hide invalid links and prevent error (29201)
-
Move function to shared parent & make non-static (29198)
-
Remove unused properties, make internal function private (29161)
-
Core/DAO - Add boilerplate import/export functions to base class (29181)
-
Fix notices on Additional Payment Form (29110)
-
Return determination of title to the only user (29103)
-
Remove function noisily deprecated in 2020 (29177)
-
Add some deprecation warnings, annotations (29176)
-
(REF) Normalize internal format of permissions (29173)
-
Remove some unused function variables (29167)
-
corePermissions - Add label and description keys to arrays (29170)
-
Remove unused extra param in getAllModulePermissions (29165)
-
Remove unused implied_permissions declaration (29164)
-
Remove non-sms parts from SMS class (29153)
-
Remove instances of bltID (29160)
-
Stop passing billingLocationID to functions that ignore the incoming parameter (28762)
-
Use names rather than variables for table names in findPendingTasks (29150)
-
Use table names directly in query (29144)
-
Contact tokens - Implement fall back from billing address to primary address (29121)
-
Remove un-passed parameter (29146)
-
SearchKit - Assign raw values to Smarty in field rewrite (26742)
-
(REF) ContactType - Fix 2 functions to be more reliable and efficient (29052)
-
Do not use a variable for table names (29134)
-
Do not return params from doSubmitActions, it is unchanged (29131)
-
Remove unused properties, variables (29129)
-
Remove unused variables, object fetch (29130)
-
Notice fix on qfKey (29128)
-
dev/core#4836 Fix mishandling of multiple fields with serialize (29116)
-
Fix php warnings on contact edit (29111)
-
Use cached array field for custom field validation (29108)
-
Degrade consistently when civi_report not enabled but logging is (28864)
-
Contact Changelog: use h3 for page title (29067)
-
SearchKit - Run filterTasksForDisplay after all other hooks (29088)
-
(REF) CRM_Core_Session - Streamline lookup of current user id & display name (29048)
-
APIv4 - RequestSpec caching (29066)
-
(REF) APIv4 - Remove unnecessary class namespace prefixes (29068)
-
Fix internal links in AdminUI templates (29065)
-
Move import export to UserJob (29062)
-
Deprecate unused function getSurveyCustomGroups (29053)
-
(REF) APIv4 - Use caching to speed up invoke function (29061)
-
Import minor adjustments - add getters, setters, flush, ability to export (29057)
-
Use static caching to reduce lookups in import display (29059)
-
jsortable.tpl: make order direction configurable (28672)
-
(REF) - Cleanup ajax on profile field admin form (29042)
-
Add missing aliases for billingCountry fields (28926)
-
(REF) Profile - simplify loop to check for multi-record custom group (29037)
-
Fix isMultiRecordField function to return group id (29036)
-
PHP8 - Remove unnecessary pass-by-reference (29030)
-
APIv4 - Deprecae unused function (29031)
-
SearchKit - Allow rewrite with only whitespace (29024)
-
Correct message template warning in MessageTemplates.php (29015)
-
UFGroup - Cleanup getCustomFields and standardize checkPermission param (29004)
-
Dedupe - Include EntityReference custom fields (28991)
-
Remove check for core-error, never thrown (28980)
-
Add params to actions when creating a WordPress User (28992)
-
Take a copy of importable fields back to the upgrade class (28982)
-
Superficial clean up Use strict type checks (28961)
-
Remove duplicate financial acl check (28963)
-
Add comments to settings definition to clarify that this is not the preferred method (28969)
-
CiviCRM APIv4, Extension::get - expose more Extension properties (28986)
-
Remove arguable statement about refunds (28979)
-
Make error message more traceable (28972)
-
(REF) Convert _checkAccess to event listener (28890)
-
PCP - Add metadata for SearchKit dynamic joins (28549)
-
Followup to 28936 (28956)
-
(REF) SearchKit - minor code cleanup/clarification (28958)
-
dev/core#4888 - Location field on case activity is misaligned (28955)
-
Copy formatFieldsForOptionFull to not share backoffice & front end (28938)
-
hook_links - Identify more quirks (28950)
-
Add system checks for civicrm.settings performance options (28936)
-
APIv4 - Improve getFields internal value lookups (28940)
-
Remove un-used noticey function (28885)
-
Stop setting unused key (28923)
-
Remove unused variable (28939)
-
DeletedFilesCheck - Include renamed as well as deleted files (28930)
-
Make function non-static, protected (28924)
-
Add preliminary previewability and token support to case-activity (28800)
-
Handle updated permissions format (678)
-
Use unaliased Exception (315)
-
Handle updated permissions format (172)
-
Add clearAssign transitional shim (384)
-
Contemplate nothingness (29269)
-
Warn when undefined php properties in mail text (28399)
-
fix bug saving a new recurring contribution to the database (29005)
-
[php8.x] [online-event] [test] Use Order object rather than passed parameter to figure out if price field values use participant count (29249)
-
Multiple Participant Event Registration Issue (dev/core#4390: 29358)
This removes unused code that results in errors for multiple participant registration.
-
BackOffice participant form - Fix failure to reload correct default when custom data subtype changes (29356)
-
Event full inconsistencies (dev/core#4907, dev/core#4918, and dev/core#4942: 28983 28984, 29105, 29106, 29127, and 29197)
-
event title is blank in transfer participant email (28993)
-
Regression - Events - Registration Confirmation and Receipt (on-line) (dev/core#5006: 29408)
-
Extra squiggly bracket appearing on event thankyou page (29464)
-
Notice fixes on AdditionalParticipant page (29234)
-
Stop calculating optionsCountDetails in non-unshared function on participantFeeSelection (29221)
-
Fix Participant fee selection to use standardised getPriceFieldMetadata (29220)
-
Event cart - stop using undeclared property cid (29237)
-
Fix a couple of notices on event dashboard (29222)
-
Fix Smarty Notices on Event confirm & thank you pages (29310)
-
[online-event] Fix typing on fee level (29239)
-
Fix notices on event info page (29304)
-
Copy buildAmount back to form to avoid unhelpful sharing (28916)
-
[online-event] PHP8.2 stop unnecessarily setting undefined Properties in event thankyou (29244)
-
Fix master-only regression on saving event info when no custom data applies (29301)
-
Event Registration Confirm/Thank You pages show incorrect currency (dev/core#3381: 29251)
-
organizer field should ONLY be included if ics is used for group scheduling (28954)
-
Fix notices & php8.2 compatibility on Manage Event Info page (29240)
-
FIx show-hide notices on event confirm (29224)
-
Remove a chunk of legacy code from (probably unused) EventForward code) (29145)
-
Number field input validation does not respect decimal separator setting (event custom field) (dev/core#4941: 29125)
-
Notice fix on event thank you page (29126)
-
VTIMEZONE block in ICS file publishes DSTART in wrong timezone (dev/core#4860: 28853)
-
Fix handling for available registrations in event Register::formRule (28987)
-
Remove bltID from eventFees class (28772)
-
E-notice fix, online event, currency (28883)
-
Unconditionally assign priceSet on event forms to avoid notices (28949)
-
[PHP 8.2] mail wrongly formatted (dev/core#4913: 29035)
This is resolved by updating the pear/mail and pear/db libraries.
-
don't create duplicate contacts when sending test emails (29212)
-
Add test & clean up deprecated apiv3 Forward action (29166)
-
Remove unused paramter (was to support email forward deprecated function - but that no longer calls this) (29147)
-
Fix apiv4 Mailing Api to not do scheduling (29138)
-
(REF) Flexmailer - Simplify service definitions (29163)
-
Remove guts of civicrm Mailing.preview (29171)
-
Stop over-sharing - MailingJob::findPendingTasks (29162)
-
Noisily deprecate & stop using BAO_MailingJob::create (29137)
-
Use writeRecord from mailing job DAO (29135)
-
Rationalise MailingJob::queue (29148)
-
Fix confusion over what function is called when delivering mailing (29149)
-
Extract refreshMailingGroupCache (29133)
-
(REF) CiviMail - Remove old/unused page controller (28998)
-
Editing an unpaid event registration to add a partial payment crashes (dev/core#5035: 29507)
-
Setting a default membership type in a contribution page has no effect (dev/core#5051: 29623)
-
Align membership online receipt with contribution online receipt (29498)
-
AdminUI: Fix auto renew display on new SK membership tab (29012)
-
standalone: apply user's timezone during boot (29282)
-
standalone: fix ACLs on Roles re core #4862 (29256)
-
Standaloneusers API permission lockdown (28877)
-
dev/core#4905 - More efficient loading and caching of custom field metadata (28975)
-
dev/core#4905 - Deprecate redundant functions that fetch custom groups (28990)
-
dev/core#4905 - Add CRM_Core_BAO_CustomGroup::getAll() with optional filters (28995)
-
dev/core#4905 - Deprecate CustomGroup::getAllCustomGroupsByBaseEntity (28999)
-
dev/core#4905 - Refactor CustomField::getFields() to use more efficient getter (29002)
-
dev/core#4905 - DedupeMerger - Delete detangled function, use api instead (29006)
-
dev/core#4905 - Refactor out duplicate CustomField getter functions (29011)
-
dev/core#4905 - Refactor SelectValues::getQuicksearchOptions to use caching (29020)
-
dev/core#4905 - Refactor legacy CustomGroup getters to use cached data provider (29027)
-
dev/core#4905 - Refactor CustomField getters to use cached provider (29032)
-
dev/core#4905 - Add CustomGroup::getGroup() function (29034)
-
(REF) dev/core#4905 - Cleanup CustomGroup functions to use more efficient getter (29044)
-
dev/core#4905 - Improve Afform.get to use cached custom group getter (29045)
-
dev/core#4905 - DedupeMerger - Use cached function to get custom groups (29046)
-
dev/core#4905 - ImportParser - Use cached function to get custom groups (29047)
-
dev/core#4905 - Cleanup customField lookup code in CiviCase (29050)
-
(REF) dev/core#4905 - Cleanup customField lookup code in DedupeRule (29051)
-
dev/core#4905 - CiviReport - Use cached function to get custom groups & fields (29054)
-
(REF) dev/core#4905 - Simplify custom field lookup code in ImportParser (29089)
-
(REF) dev/core#4905 ContactType - Use cache to get custom fields (29094)
-
dev/core#4905 - Use cached getFieldObject instead of new customField (29098)
-
dev/core#4905 - Delete unused buildGroupTree function (29099)
-
dev/core#4905 - Use cache to fetch custom groups by contact type (29100)
-
dev/core#4905 - Make internal function private again (29101)
-
dev/core#4905 - Relocate survey-specific function to CiviCampaign class (29102)
-
dev/core#4905 - Simplify CustomValueTable::setValues to use new getter (29124)
-
dev/core#4905 - Use new customField getter in a few more places (29259)
-
Add Smarty4 folder (380)
-
Add Smarty5 to packages (382)
-
Hack more forward compatibility into Smarty2 (383)
-
Bump smarty/smarty from 4.0.0 to 4.3.1 in /smarty4 (385)
-
Update to latest Smarty4 (386)
-
Run tests on Smarty4 instead of 3 (29288)
-
[Smarty Gencode] Load Smarty3 in Gencode too (28774)
-
[Smarty Gencode] Fixes on clearAllAssign (29265)
-
[Smarty Gencode] Switch createSmarty to use functions that work on v2,v3,v4 (29279)
-
[Smarty Gencode] Clean up resourcesTest for Smarty3 (29266)
-
[Smarty Gencode] Remove clearAllVars from SessionTest (29263)
-
[Smarty Gencode] Try removing clearTemplateVars hack from test (29262)
-
Update Smarty function in snapshop template (28832)
-
Register native php functions that we use as Smarty plugins (29289)
-
Deprecate a couple of backward compatibility Smarty functions (29302)
-
Do not attempt to register string resources for Smarty3+ (29104)
-
dev/core#4928 - Smarty3 filenames generated by singleUseString are invalid on windows (29056)
-
dev/core#4951 Add support for Smarty debugging (29183)
-
Use upper not strtoupper in Smarty as that is supported going forwards (29321)
-
Remove calls to get_template_vars, template_exists (29411)
-
Add str_starts_with modifier to Smarty (29337)
-
Stop using intval in Smarty (29323)
-
Add smarty mixin (replaces smartyv2 for clarify only) (29187)
-
Stop calling assign_by_ref on Smarty (29414)
-
Fix SmartyCompatibility to use php8.3 friendly function (29415)
-
Update Smarty autoload constant to be version agnostic (29185)
-
Remove getTemplateVars() override now that it happens in Smarty2 (29184)
-
Move messageTemplate call out of create Smarty (29261)
-
dev/core#4955 Hack Smarty3+ getTemplateVars into Smarty2 (381)
-
(REF) Fix Smarty Notice on missing hideRelativeLabel (29087)
-
Fix Smarty notice when a single contact is deleted (not from search) (29238)
-
Smarty notice fix (29151)
-
Smarty notice fix (29231)
-
Fix a few tests to be Smarty3 friendly (29257)
-
Bump phpseclib/phpseclib from 2.0.31 to 2.0.47 (29620)
-
Bump phenx/php-svg-lib from 0.5.1 to 0.5.2 (29469)
-
(NFC) test fix for leap year (29515)
-
dev/core#5006 Add test for self_cancel (29509)
-
(NFC) Remove redundant deprecated checks for assertObjectHasAttribute (29336)
-
Disable failing test in PR runs for now (29242)
-
APIv4 - Remove unused PerformanceTest (29077)
-
dev/core#4847 - Add test to verify APIv4 Activity ACL works properly (29055)
-
Update Event RegisterTest form to use the FormTrait (28988)
-
Test helper fix, link price set ID if passed in (28989)
-
Minor clean up in test class (28951)
-
Remove now-unused test-template (28968)
-
Minor clean up in test class (28981)
-
Switch confirmTest to use the form wrapper (28937)
-
Add test cover for event additional profiles (28891)
-
(REF) Move paymentProcessorAuthorizeNetCreate test function to authorizenet test trait (28925)
-
(REF) Minor cleanup in handling of additional participants when sending mail + improve test (28889)
-
Fix Profile set up in test configuration (28899)
-
(NFC) CoreExt - Cleanup boilerplate from extension readmes (29340)
-
(NFC) Deprecated class name for abstract classes in phpunit (29335)
-
(NFC) CustomField - Add @deprecated notice to old function (29009)
-
(NFC) composer.json - Add comments block for the
patches
section (29028) -
(NFC) ContactType - Cleanup function docs & type hints (28996)
-
(NFC) Simplify translatePermission() switch statement (28835)
-
setting-admin@1 - Bump version (29322)
-
Restore membership types in tearDown (28680)
-
EventCart - Update readme to reflect current state (29341)
-
ContributionBase - Remove unused code (29281)
This release was developed by the following code authors:
AGH Strategies - Andie Hunt; Agileware - Justin Freeman; Artful Robot - Rich Lott; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Fuzion - Jitendra Purohit; Humanists UK - Andrew West;; JMA Consulting - Seamus Lee; John Kingsnorth; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Progressive Technology Project - Jamie McClelland; Reflexive Communications - Sandor Semsey; Stephen Palmstrom; Third Sector Design - Kurund Jalmi, William Mortada; University of Waterloo - Patrick Lam; Wikimedia Foundation - Eileen McNaughton
Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments:
AGH Strategies - Chris Garaffa; Andy Burns; ASMAC (American Society of Music Arrangers and Composers) - Jeff Kellem; BrightMinded Ltd - Bradley Taylor; civiservice.de - Detlev Sieber; Coop SymbioTIC - Samuel Vanhove; Francesc Bassas i Bullich; Greenleaf Advancement - Guy Iaccarino; JMA Consulting - Joe Murray; Nicol Wistreich; Squiffle Consulting - Aidan Saunders; Systopia - Dominic Tubach; Tadpole Collective - Kevin Cristiano
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
.