Skip to content

Latest commit

 

History

History
760 lines (446 loc) · 38.2 KB

5.71.0.md

File metadata and controls

760 lines (446 loc) · 38.2 KB

CiviCRM 5.71.0

Released March 6, 2024

Synopsis

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

Features

Core CiviCRM

  • 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

CiviEvent

  • 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)

CiviMember

  • SearchUI - Add Find Membership using searchkit (29064)

  • ContactSummary - Replace Membership tab with Searchkit display (28810)

Bugs resolved

Core CiviCRM

  • 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)

CiviContribute

  • Warn when undefined php properties in mail text (28399)

  • fix bug saving a new recurring contribution to the database (29005)

CiviEvent

  • [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)

CiviMail

  • [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)

CiviMember

  • 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

  • standalone: apply user's timezone during boot (29282)

  • standalone: fix ACLs on Roles re core #4862 (29256)

  • Standaloneusers API permission lockdown (28877)

Special Topic: Custom Field Caches

  • 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)

Special Topic: Smarty Compatibility

  • 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)

Miscellany

  • 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)

Credits

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

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.