# CiviCRM 5.73.0

Released May 1, 2024

- **[Synopsis](#synopsis)**
- **[Features](#features)**
- **[Bugs resolved](#bugs)**
- **[Miscellany](#misc)**
- **[Credits](#credits)**
- **[Feedback](#feedback)**

## <a name="synopsis"></a>Synopsis

| *Does this version...?*                                         |         |
|:--------------------------------------------------------------- |:-------:|
| Fix security vulnerabilities?                                   |         |
| Change the database schema?                                     |         |
| Alter the API?                                                  |         |
| Require attention to configuration options?                     |         |
| Fix problems installing or upgrading to a previous version?     |         |
| Introduce features?                                             |         |
| Fix bugs?                                                       |         |

## <a name="features"></a>Features

## <a name="bugs"></a>Bugs resolved

### Core CiviCRM

- **Joomla: fixes broken mobile menu and a small regression. ([29939](https://github.com/civicrm/civicrm-core/pull/29939))**

- **(dev/core#4919) Prefer new versions of PHPGitIgnore / DownloadsPlugin ([29926](https://github.com/civicrm/civicrm-core/pull/29926))**

- **dev/core#5136 - errors in .hlp files that contain php functions ([29923](https://github.com/civicrm/civicrm-core/pull/29923))**

- **distmaker - Add `iframe` and `oembed` (5.73-rc) ([29917](https://github.com/civicrm/civicrm-core/pull/29917))**

- **dev/core#5130 - Don't load smarty2's own plugins if running smarty3/4 ([29911](https://github.com/civicrm/civicrm-core/pull/29911))**

- **Fix Event register form to call buildAmount exactly once ([29900](https://github.com/civicrm/civicrm-core/pull/29900))**

- **Move logic from tpl to php layer (extension page) ([29898](https://github.com/civicrm/civicrm-core/pull/29898))**

- **(dev/translation#85) CiviMail/CiviCase - Fix string loading (5.73-rc) ([29891](https://github.com/civicrm/civicrm-core/pull/29891))**

- **Fix master only regression - email showing as not available, help crashing Smarty on new contribution page ([29888](https://github.com/civicrm/civicrm-core/pull/29888))**

- **Additional Payments form: Use submitted trxn_id if payment result doesn't exist ([29869](https://github.com/civicrm/civicrm-core/pull/29869))**

- **dev/core#5123: Membership Dashboard not shown ([29882](https://github.com/civicrm/civicrm-core/pull/29882))**

- **Use getters & setters to interact with Smarty properties, where possible ([29852](https://github.com/civicrm/civicrm-core/pull/29852))**

- **Fix Smarty help function to not call fetchWith ([29851](https://github.com/civicrm/civicrm-core/pull/29851))**

- **dev/core#5123 Membership dashboard not shown (fix in api4) ([29883](https://github.com/civicrm/civicrm-core/pull/29883))**

- **dev/core#5078 FormBuilder - Fix saving when file upload is present ([29884](https://github.com/civicrm/civicrm-core/pull/29884))**

- **Premium Products: allow key=val format for product options ([29691](https://github.com/civicrm/civicrm-core/pull/29691))**

- **ContributionProduct - Add serialize metadata ([29767](https://github.com/civicrm/civicrm-core/pull/29767))**

- **Merge forward (5.72-rc => master) ([29880](https://github.com/civicrm/civicrm-core/pull/29880))**

- **Extract code to determine rule filter ([29877](https://github.com/civicrm/civicrm-core/pull/29877))**

- **Extract code to build table-level filter ([29876](https://github.com/civicrm/civicrm-core/pull/29876))**

- **Fix dev/core#5108 - Show tag label instead of name in contact summary… ([29875](https://github.com/civicrm/civicrm-core/pull/29875))**

- **[REF] Extract function to get the ContactIDFieldName ([29873](https://github.com/civicrm/civicrm-core/pull/29873))**

- **Update Smarty3 check to refer to Smarty4 ([29874](https://github.com/civicrm/civicrm-core/pull/29874))**

- **5.72 ([29872](https://github.com/civicrm/civicrm-core/pull/29872))**

- **Pass contact Type into sql lookup ([29866](https://github.com/civicrm/civicrm-core/pull/29866))**

- **Extract isUseReservedQuery ([29864](https://github.com/civicrm/civicrm-core/pull/29864))**

- **dev/core#3836 : Searching by phone in Advanced Search  ([24450](https://github.com/civicrm/civicrm-core/pull/24450))**

- **Clarify join type ([29865](https://github.com/civicrm/civicrm-core/pull/29865))**

- **Fix for `TypeError: array_key_exists(): Argument #2 ($array) must be … ([29868](https://github.com/civicrm/civicrm-core/pull/29868))**

- **Make function private on only caller ([29867](https://github.com/civicrm/civicrm-core/pull/29867))**

- **Remove a handling for CRM_Core_Error returned ([29797](https://github.com/civicrm/civicrm-core/pull/29797))**

- **Fix deprecation notice ([29827](https://github.com/civicrm/civicrm-core/pull/29827))**

- **dev/core#3752 Fix issue with price set membership terms ([29730](https://github.com/civicrm/civicrm-core/pull/29730))**

- **Simplify a ts ([29861](https://github.com/civicrm/civicrm-core/pull/29861))**

- **Register some more functions for Smarty ([29856](https://github.com/civicrm/civicrm-core/pull/29856))**

- **Add check for whether SMARTY_DIR is defined ([29853](https://github.com/civicrm/civicrm-core/pull/29853))**

- **Stop calling complex function to just add a field ([29795](https://github.com/civicrm/civicrm-core/pull/29795))**

- **Post split cleanup - fold private function back into caller ([29820](https://github.com/civicrm/civicrm-core/pull/29820))**

- **asofDate gets used as constructor to DateTime which wants a string ([29858](https://github.com/civicrm/civicrm-core/pull/29858))**

- **Exclude Cancelled & Failed recurring from Autorenew membership reminders ([26563](https://github.com/civicrm/civicrm-core/pull/26563))**

- **5.72 ([29848](https://github.com/civicrm/civicrm-core/pull/29848))**

- **allow standalone's alternative access denied wording in afform test ([29849](https://github.com/civicrm/civicrm-core/pull/29849))**

- **Remove smarty function ported (hacked) to Smarty2 ([29846](https://github.com/civicrm/civicrm-core/pull/29846))**

- **dev/core#5069 initialise config/container safely in standalone ([29808](https://github.com/civicrm/civicrm-core/pull/29808))**

- **Add deprecation to class comment ([29839](https://github.com/civicrm/civicrm-core/pull/29839))**

- **5.72 ([29842](https://github.com/civicrm/civicrm-core/pull/29842))**

- **Panacea for brain pain ([29838](https://github.com/civicrm/civicrm-core/pull/29838))**

- **Make code clearer ([29836](https://github.com/civicrm/civicrm-core/pull/29836))**

- **5.72 to master ([29837](https://github.com/civicrm/civicrm-core/pull/29837))**

- **php8.2 Update Case form to handle both Activity & Case custom data with standard ajax methods ([29799](https://github.com/civicrm/civicrm-core/pull/29799))**

- **5.72 ([29835](https://github.com/civicrm/civicrm-core/pull/29835))**

- **call buildamount hook ([29829](https://github.com/civicrm/civicrm-core/pull/29829))**

- **Reworking of unsubscribe tests in #29790, add grandparent and smart groups ([29830](https://github.com/civicrm/civicrm-core/pull/29830))**

- **Add validate.tpl to customDataBlock, minor cleanup ([29812](https://github.com/civicrm/civicrm-core/pull/29812))**

- **(NFC) gitignore - Don't care about .composer-downloads ([29826](https://github.com/civicrm/civicrm-core/pull/29826))**

- **(NFC) Contribute/Product.xml - No newline in comment ([29825](https://github.com/civicrm/civicrm-core/pull/29825))**

- **standaloneusers tests - error message assertions are too strict ([29824](https://github.com/civicrm/civicrm-core/pull/29824))**

- **Set error response code before starting error response ([29809](https://github.com/civicrm/civicrm-core/pull/29809))**

- **Make everyone share my pain ([29479](https://github.com/civicrm/civicrm-core/pull/29479))**

- **Minor test clean up ([29801](https://github.com/civicrm/civicrm-core/pull/29801))**

- **dev/core#4803 Further fix on loading campaign custom data ([29751](https://github.com/civicrm/civicrm-core/pull/29751))**

- **Fixes Joomla regression in #27834 that hides select2 dropdown options when used in modal ([29821](https://github.com/civicrm/civicrm-core/pull/29821))**

- **Post split tidy up - remove extraneous subType handling ([29819](https://github.com/civicrm/civicrm-core/pull/29819))**

- **Post split tidy up - remove multiple setting of Group Count ([29818](https://github.com/civicrm/civicrm-core/pull/29818))**

- **Post split tidy up - consistent treatment of contactID ([29814](https://github.com/civicrm/civicrm-core/pull/29814))**

- **Use smarty capitalize instead of ucfirst ([29815](https://github.com/civicrm/civicrm-core/pull/29815))**

- **Remove ornery from now-compliant tests ([29816](https://github.com/civicrm/civicrm-core/pull/29816))**

- **Post split clean up - stop calling this form ([29811](https://github.com/civicrm/civicrm-core/pull/29811))**

- **Post split code cleanup ([29810](https://github.com/civicrm/civicrm-core/pull/29810))**

- **Copy function back to one of the few remaining callers ([29802](https://github.com/civicrm/civicrm-core/pull/29802))**

- **php8.2 Remove non-compliant code replaced by jquery validation ([29793](https://github.com/civicrm/civicrm-core/pull/29793))**

- **Some post split cleanup ([29804](https://github.com/civicrm/civicrm-core/pull/29804))**

- **Remove unreachable code ([29794](https://github.com/civicrm/civicrm-core/pull/29794))**

- **5.72 ([29807](https://github.com/civicrm/civicrm-core/pull/29807))**

- **Regression fix (master) , custom data not saved on edit case activity ([29805](https://github.com/civicrm/civicrm-core/pull/29805))**

- **Copy shared function back to form as private function ([29803](https://github.com/civicrm/civicrm-core/pull/29803))**

- **dev/core#5103 - APIv4 - Stop using v3 function to format checkboxes ([29786](https://github.com/civicrm/civicrm-core/pull/29786))**

- **Add tests for unsubscribing from mail groups ([29790](https://github.com/civicrm/civicrm-core/pull/29790))**

- **Don't clear the smarty debugging var ([29754](https://github.com/civicrm/civicrm-core/pull/29754))**

- **[php8.2] Finish consolidating customData code on the Contact form ([29792](https://github.com/civicrm/civicrm-core/pull/29792))**

- **Fold private function back into only caller ([29762](https://github.com/civicrm/civicrm-core/pull/29762))**

- **[REF] Pass IP address to Elavon when submitting credit card payment ([29791](https://github.com/civicrm/civicrm-core/pull/29791))**

- **(php83) UnitTests - Fix warning ([29785](https://github.com/civicrm/civicrm-core/pull/29785))**

- **5.72 ([29783](https://github.com/civicrm/civicrm-core/pull/29783))**

- **Add deprecation notice to hook_civicrm_links used by search forms ([29765](https://github.com/civicrm/civicrm-core/pull/29765))**

- **Deprecated smarty modifier ([29755](https://github.com/civicrm/civicrm-core/pull/29755))**

- **Add mixin entity-types-php v2 ([29771](https://github.com/civicrm/civicrm-core/pull/29771))**

- **5.72 ([29781](https://github.com/civicrm/civicrm-core/pull/29781))**

- **AngularJS - Fix multi-select fields when value contains a comma ([29645](https://github.com/civicrm/civicrm-core/pull/29645))**

- **Refactor template assignments off deprecated CRM_Utils_Array::value ([29780](https://github.com/civicrm/civicrm-core/pull/29780))**

- **get any API param from the Api4Query class ([29774](https://github.com/civicrm/civicrm-core/pull/29774))**

- **Refactor out calls to deprecated CRM_Utils_Array::value() ([29779](https://github.com/civicrm/civicrm-core/pull/29779))**

- **Afform - Enable updating relationship by id ([29693](https://github.com/civicrm/civicrm-core/pull/29693))**

- **`hook_civicrm_links` - don't pass `objectId` by-reference ([29764](https://github.com/civicrm/civicrm-core/pull/29764))**

- **MailSettings - Fix typo in metadata ([29769](https://github.com/civicrm/civicrm-core/pull/29769))**

- **Fix override on pending memberships ([29661](https://github.com/civicrm/civicrm-core/pull/29661))**

- **[php8.2] Fix MembershipType + other entityFormTrait uses for php8.2 ([29671](https://github.com/civicrm/civicrm-core/pull/29671))**

- **Allow `0.0` as value for a required float APIv4 action parameter ([29766](https://github.com/civicrm/civicrm-core/pull/29766))**

- **Updating php-weasyprint to latest version ([29697](https://github.com/civicrm/civicrm-core/pull/29697))**

- **5.72 ([29763](https://github.com/civicrm/civicrm-core/pull/29763))**

- **Switch getPreviousFinancialItem() to use API4 internally ([29761](https://github.com/civicrm/civicrm-core/pull/29761))**

- **Copy small functions back to callers ([29758](https://github.com/civicrm/civicrm-core/pull/29758))**

- **Register trim as a  smarty plugin ([29759](https://github.com/civicrm/civicrm-core/pull/29759))**

- **[php8.2], [bug-fix] Fix default value loading for multiple custom fields ([29708](https://github.com/civicrm/civicrm-core/pull/29708))**

- **Remove deprecated misspelled event ([29757](https://github.com/civicrm/civicrm-core/pull/29757))**

- **PHP8.2 Fix Financial Account form to load custom data via ajax ([29241](https://github.com/civicrm/civicrm-core/pull/29241))**

- **5.72 ([29753](https://github.com/civicrm/civicrm-core/pull/29753))**

- **5.72 ([29750](https://github.com/civicrm/civicrm-core/pull/29750))**

- **Deprecate formatPhone, use new cut down private function ([29742](https://github.com/civicrm/civicrm-core/pull/29742))**

- **APIv4 - Move MembershipLinksProvider to correct directory ([29746](https://github.com/civicrm/civicrm-core/pull/29746))**

- **E-notice fix on Membership from in edit mode ([29744](https://github.com/civicrm/civicrm-core/pull/29744))**

- **Warn when disabling/deleting groups which feature in smart group criteria  ([29732](https://github.com/civicrm/civicrm-core/pull/29732))**

- **Remove unused variable ([29727](https://github.com/civicrm/civicrm-core/pull/29727))**

- **SearchKit - Enable predefined link conditionals ([29735](https://github.com/civicrm/civicrm-core/pull/29735))**

- **Remove a couple on handlings for no-longer returned CRM_Core_Error ([29136](https://github.com/civicrm/civicrm-core/pull/29136))**

- **[Php8.2] Fix relationship form to use preferred php8.2 compliant methods ([29652](https://github.com/civicrm/civicrm-core/pull/29652))**

- **Look up using phone_numeric ([29740](https://github.com/civicrm/civicrm-core/pull/29740))**

- **show distinct contacts when reserving for a survey ([29617](https://github.com/civicrm/civicrm-core/pull/29617))**

- **5.72 to master ([29739](https://github.com/civicrm/civicrm-core/pull/29739))**

- **[php8.2] Fix Survey configuration forms for  custom data for php8.2 ([29660](https://github.com/civicrm/civicrm-core/pull/29660))**

- **Add test check on imported multple fields ([29737](https://github.com/civicrm/civicrm-core/pull/29737))**

- **Schema - Update autoincrement to reflect what it actually is ([29709](https://github.com/civicrm/civicrm-core/pull/29709))**

- **Update contributor-key.yml ([29731](https://github.com/civicrm/civicrm-core/pull/29731))**

- **Minor clean up in test class ([29729](https://github.com/civicrm/civicrm-core/pull/29729))**

- **Make private function non static ([29728](https://github.com/civicrm/civicrm-core/pull/29728))**

- **5.72 ([29725](https://github.com/civicrm/civicrm-core/pull/29725))**

- **5.72 ([29718](https://github.com/civicrm/civicrm-core/pull/29718))**

- **Ensure confirm hooks are called if confirmation page is disabled ([29710](https://github.com/civicrm/civicrm-core/pull/29710))**

- **CSS: Adds styling resets to Joomla4 for new accordions ([29712](https://github.com/civicrm/civicrm-core/pull/29712))**

- **xml/schema - Fix erroneous description tag ([29711](https://github.com/civicrm/civicrm-core/pull/29711))**

- **Notice fixes on Contact Edit screen (with multiple contact fields & address fields - ie testData extension installed) ([29706](https://github.com/civicrm/civicrm-core/pull/29706))**

- **[php8.2]  compliant ajax method for custom data on pledge form ([29228](https://github.com/civicrm/civicrm-core/pull/29228))**

- **[php8.2] apply php8.2 clean up to contribution form custom data ([29655](https://github.com/civicrm/civicrm-core/pull/29655))**

- **Removes ~90% of joomla.css - much pre-dates Civi 2.x  ([27834](https://github.com/civicrm/civicrm-core/pull/27834))**

- **reenable status messages in standalone page template ([29699](https://github.com/civicrm/civicrm-core/pull/29699))**

- **[php8.2] Fix Campaign form custom data for php8,2 ([29657](https://github.com/civicrm/civicrm-core/pull/29657))**

- **  [php8.2] apply php8.2 clean up to activity form custom data ([29656](https://github.com/civicrm/civicrm-core/pull/29656))**

- **Add deprecation tag at class level ([29696](https://github.com/civicrm/civicrm-core/pull/29696))**

- **Fold preProcess function from Custom data form back to only caller ([29687](https://github.com/civicrm/civicrm-core/pull/29687))**

- **Minor cleanup ([29678](https://github.com/civicrm/civicrm-core/pull/29678))**

- **Copy function back to only calling class ([29686](https://github.com/civicrm/civicrm-core/pull/29686))**

- **Post copy back clean up ([29690](https://github.com/civicrm/civicrm-core/pull/29690))**

- **Possible fix for export test on php8.3 ([29688](https://github.com/civicrm/civicrm-core/pull/29688))**

- **Copy complex function back to calling class for simplifying ([29689](https://github.com/civicrm/civicrm-core/pull/29689))**

- **Fix bug where fields is not present ([29681](https://github.com/civicrm/civicrm-core/pull/29681))**

- **Follow up fix on setDefaultValues fix ([29685](https://github.com/civicrm/civicrm-core/pull/29685))**

- **Replace CRM_Utils_Array::value ([29684](https://github.com/civicrm/civicrm-core/pull/29684))**

- **Add missing alias trxn_id to transactionID ([29683](https://github.com/civicrm/civicrm-core/pull/29683))**

- **Improve visibility of what functions are called on backoffice Contact  form ([29674](https://github.com/civicrm/civicrm-core/pull/29674))**

- **Suppress last php8.2 test fail for PR tests ([29680](https://github.com/civicrm/civicrm-core/pull/29680))**

- **Fix Smarty noticed when contribution tab opened outside of ajax ([29672](https://github.com/civicrm/civicrm-core/pull/29672))**

- **accept array of case_type_ids when finding available case statuses ([29663](https://github.com/civicrm/civicrm-core/pull/29663))**

- **[php8.2] Share Custom data fixes from Membership form to renewal ([29592](https://github.com/civicrm/civicrm-core/pull/29592))**

- **5.72 to master ([29675](https://github.com/civicrm/civicrm-core/pull/29675))**

- **5.72 ([29673](https://github.com/civicrm/civicrm-core/pull/29673))**

- **5.72 ([29670](https://github.com/civicrm/civicrm-core/pull/29670))**

- **Merge 5.72 to master ([29665](https://github.com/civicrm/civicrm-core/pull/29665))**

- **standalone: rebase @pfigel's JWT password reset PR 28505 ([29642](https://github.com/civicrm/civicrm-core/pull/29642))**

- **standalone: prevent installer using secret admin pass. Fixes 5038 ([29641](https://github.com/civicrm/civicrm-core/pull/29641))**

- **5.72 to master ([29664](https://github.com/civicrm/civicrm-core/pull/29664))**

- **Api4 - Add 'usage' to getFields output ([29634](https://github.com/civicrm/civicrm-core/pull/29634))**

- **[php8.2] Apply custom data handling improvements to grant form ([29651](https://github.com/civicrm/civicrm-core/pull/29651))**

- **Check route object exists in processes that do not have routes ([90](https://github.com/civicrm/civicrm-drupal-8/pull/90))**

- **573 permissions for Frontend ([321](https://github.com/civicrm/civicrm-wordpress/pull/321))**

- **Port one more function to Smarty2 ([395](https://github.com/civicrm/civicrm-packages/pull/395))**

- **Smarty4 -  updates to latest versions Smarty 4.51 ([393](https://github.com/civicrm/civicrm-packages/pull/393))**

- **Update Smarty5 from rc to 5.0.1 & add loading helper class ([394](https://github.com/civicrm/civicrm-packages/pull/394))**

- **Smarty4 & Smarty 5 - update to latest ([392](https://github.com/civicrm/civicrm-packages/pull/392))**

## <a name="misc"></a>Miscellany

## <a name="credits"></a>Credits

This release was developed by the following code authors:

AGH Strategies - Andie Hunt; Agileware - Agileware Team, Francis Whittle; Artful Robot - Rich Lott; 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; Dave D; Francesc Bassas i Bullich; Fuzion - Jitendra Purohit, Luke Stewart; Gokhalemethod - Sadashiv; Greenpeace Central and Eastern Europe - Patrick Figel; iXiam - Albert Vall-Llovera; JMA Consulting - Seamus Lee; MJW Consulting - Matthew Wire; Nicol Wistreich; omarlopesino; Progressive Technology Project - Jamie McClelland; Squiffle Consulting - Aidan Saunders; Tadpole Collective - Kevin Cristiano; Third Sector Design - Michael McAndrew; Wikimedia Foundation - Eileen McNaughton

Most authors also reviewed code for this release; in addition, the following
reviewers contributed their comments:

Artful Robot - Rich Lott; Benjamin W; civibot[bot]; CiviCoop - Erik Hommel, Jaap Jansma; civicrm-builder; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; civiservice.de - Detlev Sieber; Coop SymbioTIC - Mathieu Lutfy; Dave D; devappsoftware; Francesc Bassas i Bullich; Fuzion - Jitendra Purohit, Luke Stewart; gibsonoliver; Gokhalemethod - Sadashiv; JMA Consulting - Seamus Lee; MC3 - Graham Mitchell; Megaphone Technology Consulting - Brienne Kordis, Jon Goldberg; MJW Consulting - Matthew Wire; Nicol Wistreich; omarlopesino; Squiffle Consulting - Aidan Saunders; Systopia - Johannes Franz; Tadpole Collective - Kevin Cristiano; Third Sector Design - Michael McAndrew; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sander-Green

## <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`.
