| *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? | |
+| 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
-- **crm- Missing Summary ([70](https://github.com/civicrm/civicrm-drupal-8/pull/70))**
+- **Add civicrm_admin_ui extension
+ ([22628](https://github.com/civicrm/civicrm-core/pull/22628))**
-## <a name="bugs"></a>Bugs resolved
+ Adds a new bundled extension `civicrm_admin_ui`. This extension replaces 2
+ screens with SearchDisplay Afforms: Custom field groups and Custom fields.
-### Core CiviCRM
+- **Add deprecation notice to APIv3 Explorer
+ ([22811](https://github.com/civicrm/civicrm-core/pull/22811))**
-- **dev/core#3119 - Post-upgrade messages no longer being displayed ([22985](https://github.com/civicrm/civicrm-core/pull/22985))**
+ Adds a notice to the APIv3 explorer to encourage users to use APIv4 instead.
-- **[REF] Update Guzzlehttp/psr7 version to be 1.8.5 ([22998](https://github.com/civicrm/civicrm-core/pull/22998))**
+- **Apiv4 entity parity (Work Towards
+ [dev/core#2486](https://lab.civicrm.org/dev/core/-/issues/2486):
+ [22754](https://github.com/civicrm/civicrm-core/pull/22754),
+ [22823](https://github.com/civicrm/civicrm-core/pull/22823),
+ [22624](https://github.com/civicrm/civicrm-core/pull/22624) and
+ [22799](https://github.com/civicrm/civicrm-core/pull/22799))**
-- **Afform - Fix saving and editing entity blocks ([22963](https://github.com/civicrm/civicrm-core/pull/22963))**
+ Adds "Extension", "Mailing", "MailingGroup" and "MailingJob" entities to
+ APIv4.
-- **dev/core#3126 - CiviReport statistics appearing twice on page ([22976](https://github.com/civicrm/civicrm-core/pull/22976))**
+- **APIv4 - Add tableName to Entity.get output
+ ([22829](https://github.com/civicrm/civicrm-core/pull/22829))**
-- **(Regression) - fixed tags form field display on New/Edit contact screen ([22964](https://github.com/civicrm/civicrm-core/pull/22964))**
+ Adds `tableName` to the APIv4 Entity.get action output, improving
+ flexibility for virtual entities.
-- **Return array for setdefaults ([22948](https://github.com/civicrm/civicrm-core/pull/22948))**
+- **APIv4 Explorer - Add REST syntax
+ ([22722](https://github.com/civicrm/civicrm-core/pull/22722))**
-- **[REF] Rename SoftDeleteEntity -> SoftDeleteActionTrait ([22944](https://github.com/civicrm/civicrm-core/pull/22944))**
+ Displays REST syntax in the APIv4 Explorer.
-- **Fix backward-compatability for new method in CRM_Contact_BAO_Query_Hook ([22933](https://github.com/civicrm/civicrm-core/pull/22933))**
+- **APIv4 - Add metadata about class args
+ ([22831](https://github.com/civicrm/civicrm-core/pull/22831))**
-- **dev/core#3112 Clear caches to avoid error on upgrade ([22932](https://github.com/civicrm/civicrm-core/pull/22932))**
+ The CustomValue API is a virtual entity, where multiple api entities all get
+ routed to the same class by virtue of all sharing the prefix "Custom_" and
+ pass a class arg to the php factory functions e.g.
+ CustomValue::get('MyCustomGroup').
-- **Afform Gui - Fix selecting html element of text box ([22929](https://github.com/civicrm/civicrm-core/pull/22929))**
+ Instead of hard-coding this idea into the API Explorer now it's part of the
+ entity metadata so that other APIs, notaby ECK, can use a similar pattern.
-- **(NFC) contributor-key.yml - Fix syntax error ([22921](https://github.com/civicrm/civicrm-core/pull/22921))**
+- **APIv4 Explorer - Add "copy" button to quickly copy code to clipboard
+ ([22896](https://github.com/civicrm/civicrm-core/pull/22896))**
-- **Don't perform event timezone check if CiviEvent is disabled ([22898](https://github.com/civicrm/civicrm-core/pull/22898))**
+ Makes it easy to select and copy generated APIv4 Explorer code.
-- **CiviGrant - Don't auto-create any grant types ([22913](https://github.com/civicrm/civicrm-core/pull/22913))**
+- **SearchKit - Update APIv3 Extension.get to use APIv4
+ ([22788](https://github.com/civicrm/civicrm-core/pull/22788))**
-- **dev/core#3100 - Remove grant leftovers from core xml. Remove empty grant reports menu ([22911](https://github.com/civicrm/civicrm-core/pull/22911))**
+ Updates SearchKit code to use newer version of the API when calling
+ Extension.get.
-- **Only acl line items based on contribution ([22870](https://github.com/civicrm/civicrm-core/pull/22870))**
+- **SearchKit - Use crmDialogButtons for task popups
+ ([22790](https://github.com/civicrm/civicrm-core/pull/22790))**
-- **dev/core#3094 - Crash on contribution view when don't have event/participant permissions ([22865](https://github.com/civicrm/civicrm-core/pull/22865))**
+ Updates the buttons in SearchKit action popups to use standard dialog button
+ formatting.
-- **dev/core#3104 - Crash when viewing a contact page - Call to undefined method CRM_Contact_Page_View_Summary::addExpectedSmartyVariables() ([22897](https://github.com/civicrm/civicrm-core/pull/22897))**
+- **SearchKit - Add 'merge contacts' task
+ ([22768](https://github.com/civicrm/civicrm-core/pull/22768) and
+ [23035](https://github.com/civicrm/civicrm-core/pull/23035))**
-- **Refresh entity list after updating custom group (self_hook_*) ([22868](https://github.com/civicrm/civicrm-core/pull/22868))**
+ Adds a "merge contacts" task to SearchKit.
-- **APIv4 Explorer - Add "copy" button to quicly copy code to clipboard ([22896](https://github.com/civicrm/civicrm-core/pull/22896))**
+- **SearchKit - Customizable "No Results" text
+ ([22770](https://github.com/civicrm/civicrm-core/pull/22770))**
-- **smarty/php notices on contribution view part 4 ([22894](https://github.com/civicrm/civicrm-core/pull/22894))**
+ Makes it so users can customize the "No Results" text in SearchKit.
-- **Mark AJAX methods as static ([22895](https://github.com/civicrm/civicrm-core/pull/22895))**
+- **SearchKit - Improve import UI to handle update & preview the import
+ ([22699](https://github.com/civicrm/civicrm-core/pull/22699))**
-- **Avoid e-notices on pages with tabs ([22892](https://github.com/civicrm/civicrm-core/pull/22892))**
+ SearchKit has an import/export SavedSearch feature which allows you to
+ copy/paste api code in JSON format. This change enables update as well as create,
+ and improves that UI to give better user feedback about what will happen when
+ the import is run.
-- **5.47 ([22891](https://github.com/civicrm/civicrm-core/pull/22891))**
+- **SearchKit - Support relative dates and datepicker with the DATE() sql fn
+ ([22783](https://github.com/civicrm/civicrm-core/pull/22783))**
-- **ManagedEntities - Allow "match" param to convert existing records to … ([22883](https://github.com/civicrm/civicrm-core/pull/22883))**
+ Allows one to pick a relative or calendar date in conjunction with the DATE
+ ONLY field transformation.
-- **5.47 ([22888](https://github.com/civicrm/civicrm-core/pull/22888))**
+- **Civi\Api4\Queue - Allow use with hook_managed
+ ([22796](https://github.com/civicrm/civicrm-core/pull/22796))**
-- **5.47 ([22884](https://github.com/civicrm/civicrm-core/pull/22884))**
+ Flags the entity Queue so that it can be used with hook_managed.
-- **Contact token should show contact's info instead of logged in contact ([22874](https://github.com/civicrm/civicrm-core/pull/22874))**
+- **Define more usable queue DX for multithreaded background work (Work Towards
+ [dev/core#1304](https://lab.civicrm.org/dev/core/-/issues/1304):
+ [22812](https://github.com/civicrm/civicrm-core/pull/22812))**
-- **Bump karma from 6.3.14 to 6.3.16 ([22875](https://github.com/civicrm/civicrm-core/pull/22875))**
+ Expands the schema for civicrm_queue (et al). By configuring properties on
+ civicrm_queue (et al), you can tell a generic queue-agent how to handle items
+ from this queue.
-- **php/smarty notices on contribution view part 2 ([22869](https://github.com/civicrm/civicrm-core/pull/22869))**
+- **ManagedEntities - Allow "match" param to convert existing records to …
+ ([22883](https://github.com/civicrm/civicrm-core/pull/22883))**
-- **added as a contributor ([22876](https://github.com/civicrm/civicrm-core/pull/22876))**
+ This can help ease the pain of declaring managed entities which may or may not
+ already exist - now they can be matched by name or other unique identifier.
-- **Call to undefined function civicrm_api3_create_error() in civicrm/civ… ([22872](https://github.com/civicrm/civicrm-core/pull/22872))**
+- **Database update from 5.47.2 to 5.47.3 fails with a non en_US database.
+ ([dev/core#3135](https://lab.civicrm.org/dev/core/-/issues/3151):
+ [23063](https://github.com/civicrm/civicrm-core/pull/23063))**
-- **Format money on transaction list ([22438](https://github.com/civicrm/civicrm-core/pull/22438))**
+### CiviContribute
-- **5.47 ([22873](https://github.com/civicrm/civicrm-core/pull/22873))**
+- **Add basic contribution example base for contribution workflows
+ ([22636](https://github.com/civicrm/civicrm-core/pull/22636))**
-- **(NFC) LoggingDetailTest - Improve reliability of test ([22867](https://github.com/civicrm/civicrm-core/pull/22867))**
+ Makes it so that one can preview Contribution Message Templates.
-- **php notices on contributionview ([22866](https://github.com/civicrm/civicrm-core/pull/22866))**
+- **Remove time component from the {contribution.receive_date} token
+ ([dev/core#3072](https://lab.civicrm.org/dev/core/-/issues/3072):
+ [23071](https://github.com/civicrm/civicrm-core/pull/23071))**
-- **5.47 ([22859](https://github.com/civicrm/civicrm-core/pull/22859))**
+### CiviEvent
-- **(NFC) Membership Tests - Update assertions to match behavior circa leap-day ([22860](https://github.com/civicrm/civicrm-core/pull/22860))**
+- **Introduce a way to link event participants from the associated booking.
+ ([dev/user-interface#45](https://lab.civicrm.org/dev/user-interface/-/issues/45):
+ [22732](https://github.com/civicrm/civicrm-core/pull/22732))**
-- **Add handling for civimember disabled ([22864](https://github.com/civicrm/civicrm-core/pull/22864))**
+ Introduces a way to navigate to participants from the contribution view.
-- **(dev/core#1304) Queues - Define schema for runner, run_count, lease_time, et al ([22812](https://github.com/civicrm/civicrm-core/pull/22812))**
+### CiviMail
-- **5.47 ([22857](https://github.com/civicrm/civicrm-core/pull/22857))**
+- **Mailing - Add `serialize` and `add` to `template_options` field
+ ([22785](https://github.com/civicrm/civicrm-core/pull/22785))**
-- **fixes report#85 - Don't crash Contact Logging Detail report when viewing a contribution ([22242](https://github.com/civicrm/civicrm-core/pull/22242))**
+ Improves the mailing schema metadata for template_options and template_type
+ fields.
-- **dev/core#2100 Improve A/B test report page and API Mailing stats ([20093](https://github.com/civicrm/civicrm-core/pull/20093))**
+- **Start phasing out 'preferred_mail_format' (Work Towards
+ [dev/core#2866](https://lab.civicrm.org/dev/core/-/issues/2866):
+ [22775](https://github.com/civicrm/civicrm-core/pull/22775),
+ [22633](https://github.com/civicrm/civicrm-core/pull/22633) and
+ [22635](https://github.com/civicrm/civicrm-core/pull/22635))**
-- **5.47 ([22852](https://github.com/civicrm/civicrm-core/pull/22852))**
+ Ignores preferred mail format when sending a message. Instead sends both html
+ and plain text versions and lets the email client decide which to show.
+ Removes `preferred_mail_format` from email trait.
-- **dev/user-interface#45 Show associated participants on contributionView form ([22732](https://github.com/civicrm/civicrm-core/pull/22732))**
+### Drupal Integraton
-- **Fix API4 Explorer undefined variable error ([22849](https://github.com/civicrm/civicrm-core/pull/22849))**
+- **civicrm.drush.inc - Add 'civicrm-pipe' subcommand
+ ([70](https://github.com/civicrm/civicrm-drupal-8/pull/70))**
-- **Avoid PHP undefined index notices on extension pages ([22848](https://github.com/civicrm/civicrm-core/pull/22848))**
+ Adds support for the subcommand `drush civicrm-pipe` (`drush cvpipe`).
-- **[NFC] Basic case create test with org ([22846](https://github.com/civicrm/civicrm-core/pull/22846))**
+## <a name="bugs"></a>Bugs resolved
-- **Fix issues with PHP GetText and 0 length files ([22842](https://github.com/civicrm/civicrm-core/pull/22842))**
+### Core CiviCRM
-- **Remove reference to undefined variable in CRM_Contact_Form_Inline_CommunicationPreferences ([22840](https://github.com/civicrm/civicrm-core/pull/22840))**
+- **Update DOMPDF to 1.2.1 and update composer-compile-plugin as per master
+ ([23102](https://github.com/civicrm/civicrm-core/pull/23102))**
-- **Mark methods which are only used statically as static ([22844](https://github.com/civicrm/civicrm-core/pull/22844))**
+- **Contact Logging Detail report crashes when a contribution and contact are
+ updated together
+ ([dev/report#85](https://lab.civicrm.org/dev/report/-/issues/85):
+ [22242](https://github.com/civicrm/civicrm-core/pull/22242))**
-- **APIv4 - Add metadata about class args ([22831](https://github.com/civicrm/civicrm-core/pull/22831))**
+- **Warning: is_dir(): open_basedir restriction in effect
+ ([dev/core#2927](https://lab.civicrm.org/dev/core/-/issues/2927):
+ [22277](https://github.com/civicrm/civicrm-core/pull/22277))**
-- **Cody tidy in CRM_Core_State ([22841](https://github.com/civicrm/civicrm-core/pull/22841))**
+ Avoids flooding logs with `open_basedir` in effect.
-- **5.47 ([22838](https://github.com/civicrm/civicrm-core/pull/22838))**
+- **Filter summary no longer appearing on results for Reports
+ ([dev/core#3153](https://lab.civicrm.org/dev/core/-/issues/3153):
+ [23086](https://github.com/civicrm/civicrm-core/pull/23086))**
-- **Remove reference to undefined variable ([22839](https://github.com/civicrm/civicrm-core/pull/22839))**
+- **Switch extension downloader and extensions feed to use Guzzle HTTP library
+ ([21097](https://github.com/civicrm/civicrm-core/pull/21097))**
-- **CiviCase - Call hooks when creating relationships ([22814](https://github.com/civicrm/civicrm-core/pull/22814))**
+ This fixes some situations (eg. shared servers with open_basedir restrictions
+ in effect) where zip file was not downloaded properly and extension could not
+ be updated. It also means that we are no longer using our custom
+ CRM_Utils_HttpClient::fetch() function from within civicrm core.
-- **5.47 ([22836](https://github.com/civicrm/civicrm-core/pull/22836))**
+- **RC Error: Call to undefined method
+ CRM_Contact_Page_View_Summary::addExpectedSmartyVariables()
+ ([dev/core#3104](https://lab.civicrm.org/dev/core/-/issues/3104):
+ [22897](https://github.com/civicrm/civicrm-core/pull/22897))**
-- **Move HookInterface to \Civi\Core namespace ([22834](https://github.com/civicrm/civicrm-core/pull/22834))**
+- **Post-upgrade messages no longer being displayed
+ ([dev/core#3119](https://lab.civicrm.org/dev/core/-/issues/3119):
+ [22985](https://github.com/civicrm/civicrm-core/pull/22985))**
-- **APIv4 - Add tableName to Entity.get output ([22829](https://github.com/civicrm/civicrm-core/pull/22829))**
+- **CiviReport - Title and Statistics appearing at top and bottom of reports
+ ([dev/core#3126](https://lab.civicrm.org/dev/core/-/issues/3126):
+ [22976](https://github.com/civicrm/civicrm-core/pull/22976))**
-- **Fix submit handling of thousands when creating data entry batch ([22772](https://github.com/civicrm/civicrm-core/pull/22772))**
+- **APIv4 - Fix setting/getting a multi-record customfield with date+time
+ ([22731](https://github.com/civicrm/civicrm-core/pull/22731))**
-- **APIv4 - Add fixme about filtering custom fields by sub-type ([22827](https://github.com/civicrm/civicrm-core/pull/22827))**
+- **APIv4 - Fix typo in Entity.getFields
+ ([22776](https://github.com/civicrm/civicrm-core/pull/22776))**
-- **Flush the metadata cache when the domain is edited ([22637](https://github.com/civicrm/civicrm-core/pull/22637))**
+- **Fix apiv4 Contribution delete & all line items
+ ([22749](https://github.com/civicrm/civicrm-core/pull/22749))**
-- **Fixes for smarty grumpy mode with membership ([22752](https://github.com/civicrm/civicrm-core/pull/22752))**
+- **Fix API4 Explorer undefined variable error
+ ([22849](https://github.com/civicrm/civicrm-core/pull/22849))**
-- **Enotice fixes ([22719](https://github.com/civicrm/civicrm-core/pull/22719))**
+- **Afform - Fix saving and editing entity blocks
+ ([22963](https://github.com/civicrm/civicrm-core/pull/22963),
+ [22986](https://github.com/civicrm/civicrm-core/pull/22986), and
+ [23104](https://github.com/civicrm/civicrm-core/pull/23104))**
-- **Mailing Report: do not recalculate the recipients when the count is zero ([22800](https://github.com/civicrm/civicrm-core/pull/22800))**
+- **Afform Gui - Fix selecting html element of text box
+ ([22929](https://github.com/civicrm/civicrm-core/pull/22929))**
-- **[REF] APIv4 - use entityTypes event to load custom records ([22824](https://github.com/civicrm/civicrm-core/pull/22824))**
+- **Afform - fix missing submit actions
+ ([23024](https://github.com/civicrm/civicrm-core/pull/23024))**
-- **Fix the "since" version for api v4 Mailing and MailingJob ([22823](https://github.com/civicrm/civicrm-core/pull/22823))**
+- **SearchKit - Fix support for non-DAO entities
+ ([22764](https://github.com/civicrm/civicrm-core/pull/22764))**
-- **5.47 ([22822](https://github.com/civicrm/civicrm-core/pull/22822))**
+- **Fix deleting afforms when deleting saved search
+ ([22997](https://github.com/civicrm/civicrm-core/pull/22997))**
-- **Recent update to {receipt_text} token gives warning in system check after upgrade ([22821](https://github.com/civicrm/civicrm-core/pull/22821))**
+ A typo in the code was preventing afforms from being deleted with a
+ corresponding saved search, and may have led to afforms being deleted
+ incorrectly.
-- **add checkPerm ([22818](https://github.com/civicrm/civicrm-core/pull/22818))**
+- **SearchKit - Fix multi-valued afform filters
+ ([23012](https://github.com/civicrm/civicrm-core/pull/23012))**
-- **[REF] Remove unused api v2 function ([22819](https://github.com/civicrm/civicrm-core/pull/22819))**
+ Fixes a SearchKit regression causing multi-select afform filters to stop
+ working.
-- **[NFC] Rename RecurForms test class ([22820](https://github.com/civicrm/civicrm-core/pull/22820))**
+- **Search Kit: Unable to Aggregate on a Custom Field
+ ([dev/core#3143](https://lab.civicrm.org/dev/core/-/issues/3143):
+ [23070](https://github.com/civicrm/civicrm-core/pull/23070))**
-- **[REF] Cleanup docblocks & unused vars in Membership BAO ([22665](https://github.com/civicrm/civicrm-core/pull/22665))**
+- **Only acl line items based on contribution
+ ([22870](https://github.com/civicrm/civicrm-core/pull/22870))**
-- **Added Cancel Recur Subscription test & setter for `supports` on Dummy processor ([21895](https://github.com/civicrm/civicrm-core/pull/21895))**
+ Ensures ACL query on line items only joins `entity_id` to contributions.
-- **Revert membership debug handling in IPN ([22475](https://github.com/civicrm/civicrm-core/pull/22475))**
+- **Add handling for civimember disabled
+ ([22864](https://github.com/civicrm/civicrm-core/pull/22864))**
-- **Cleanup on Offline Membership Receipts (ensures variables present across flows) ([22736](https://github.com/civicrm/civicrm-core/pull/22736))**
+- **Revert membership debug handling in IPN
+ ([22475](https://github.com/civicrm/civicrm-core/pull/22475))**
-- **APIv4 - remove unnecessary field from System::check ([22748](https://github.com/civicrm/civicrm-core/pull/22748))**
+- **Format money in custom fields once, on the tpl layer
+ ([22728](https://github.com/civicrm/civicrm-core/pull/22728))**
-- **Add deprecation notice to APIv3 Explorer ([22811](https://github.com/civicrm/civicrm-core/pull/22811))**
+- **New Individual: Unfilled fields "Custom Email Greeting", "Custom Postal
+ Greeting", "Custom Addressee" are hidden
+ ([dev/core#483](https://lab.civicrm.org/dev/core/-/issues/483):
+ [22380](https://github.com/civicrm/civicrm-core/pull/22380))**
-- **SearchKit - Use crmDialogButtons for task popups ([22790](https://github.com/civicrm/civicrm-core/pull/22790))**
+- **Fix regression with flexible merging of contact information
+ ([22720](https://github.com/civicrm/civicrm-core/pull/22720))**
-- **[REF] Fix css code style issues ([22807](https://github.com/civicrm/civicrm-core/pull/22807))**
+- **Recent update to {receipt_text} token gives warning in system check after
+ upgrade ([22821](https://github.com/civicrm/civicrm-core/pull/22821))**
-- **Civi\Api4\Queue - Allow use with hook_managed ([22796](https://github.com/civicrm/civicrm-core/pull/22796))**
+- **Remove "Search Builder" from menubar on new installs.
+ ([22778](https://github.com/civicrm/civicrm-core/pull/22778))**
-- **APIv4 - Add MailingGroup API ([22799](https://github.com/civicrm/civicrm-core/pull/22799))**
+- **Pseudoconstants - Fix and improve handling of option callbacks
+ ([22730](https://github.com/civicrm/civicrm-core/pull/22730))**
-- **Remove broken call to function_exists in CRM_Utils_String::isUtf8 ([22803](https://github.com/civicrm/civicrm-core/pull/22803))**
+- **Refresh entity list after updating custom group (self_hook_*)
+ ([22868](https://github.com/civicrm/civicrm-core/pull/22868))**
-- **5.47 ([22798](https://github.com/civicrm/civicrm-core/pull/22798))**
+- **Avoid null column showing on groups search page
+ ([22724](https://github.com/civicrm/civicrm-core/pull/22724))**
-- **Fix pledge default on contribution page when the site has a WR for "contribution" ([22801](https://github.com/civicrm/civicrm-core/pull/22801))**
+- **Call to undefined function civicrm_api3_create_error() in
+ civicrm/civicrm/CRM/Core/Page/AJAX/Attachment.php:65
+ ([22872](https://github.com/civicrm/civicrm-core/pull/22872))**
-- **dev/core#2486 Add v4 Mailing api (+ MailingJob) ([22624](https://github.com/civicrm/civicrm-core/pull/22624))**
+- **Fix backward-compatability for new method in CRM_Contact_BAO_Query_Hook
+ ([22933](https://github.com/civicrm/civicrm-core/pull/22933))**
-- **(REF) CRM_Queue_Queue_* - Retain a copy of `$queueSpec` ([22797](https://github.com/civicrm/civicrm-core/pull/22797))**
+- **Fix submit handling of thousands when creating data entry batch
+ ([22772](https://github.com/civicrm/civicrm-core/pull/22772))**
-- **(NFC) tests/phpunit/CRM/Queue - Add common `@group` ([22795](https://github.com/civicrm/civicrm-core/pull/22795))**
+- **Avoid PHP undefined index notices on extension pages
+ ([22848](https://github.com/civicrm/civicrm-core/pull/22848))**
-- **(REF) CRM_Queue_Task - Tighter signature ([22794](https://github.com/civicrm/civicrm-core/pull/22794))**
+- **Fix issues with PHP GetText and 0 length files
+ ([22842](https://github.com/civicrm/civicrm-core/pull/22842))**
-- **[REF] Remove old require_once statements made obsolete by autoloader ([22792](https://github.com/civicrm/civicrm-core/pull/22792))**
+- **Remove reference to undefined variable in
+ CRM_Contact_Form_Inline_CommunicationPreferences
+ ([22840](https://github.com/civicrm/civicrm-core/pull/22840))**
-- **Fix regression with flexible merging of contact information ([22720](https://github.com/civicrm/civicrm-core/pull/22720))**
+- **Mark methods which are only used statically as static
+ ([22844](https://github.com/civicrm/civicrm-core/pull/22844))**
-- **SearchKit - Update APIv3 Extension.get to use APIv4 ([22788](https://github.com/civicrm/civicrm-core/pull/22788))**
+- **Use valid syntax for self-closing br elements
+ ([22711](https://github.com/civicrm/civicrm-core/pull/22711))**
-- **REF Deprecate API3 _ipn_process_transaction() ([22488](https://github.com/civicrm/civicrm-core/pull/22488))**
+- **civicrm_handler_filter_pseudo_constant - Guard against old or inactive
+ pseudoconstants ([656](https://github.com/civicrm/civicrm-drupal/pull/656))**
-- **Cleanup on contribution view ([22698](https://github.com/civicrm/civicrm-core/pull/22698))**
+- **Contact token should show contact's info instead of logged in contact
+ ([22874](https://github.com/civicrm/civicrm-core/pull/22874))**
-- **SearchKit - Support relative dates and datepicker with the DATE() sql fn ([22783](https://github.com/civicrm/civicrm-core/pull/22783))**
+- **Fixes fatal error - function doesn't exist
+ ([275](https://github.com/civicrm/civicrm-wordpress/pull/275))**
-- **5.47 ([22789](https://github.com/civicrm/civicrm-core/pull/22789))**
+- **Notice fixes ([22706](https://github.com/civicrm/civicrm-core/pull/22706))**
-- **Update unit test to use exception ([22787](https://github.com/civicrm/civicrm-core/pull/22787))**
+- **Some more notice fixes in smarty
+ ([22745](https://github.com/civicrm/civicrm-core/pull/22745))**
-- **Mailing - Add `serialize` and `add` to `template_options` field ([22785](https://github.com/civicrm/civicrm-core/pull/22785))**
+- **Enotice fixes
+ ([22719](https://github.com/civicrm/civicrm-core/pull/22719))**
-- **RecurForms test fixes ([22784](https://github.com/civicrm/civicrm-core/pull/22784))**
+- **Enotice fix ([22707](https://github.com/civicrm/civicrm-core/pull/22707))**
-- **BAO_Mailing::create - stop passing by reference ([22753](https://github.com/civicrm/civicrm-core/pull/22753))**
+- **Mark AJAX methods as static
+ ([22895](https://github.com/civicrm/civicrm-core/pull/22895))**
-- **Move check for mailing workflow permisisons to BAO layer ([22766](https://github.com/civicrm/civicrm-core/pull/22766))**
+- **Avoid e-notices on pages with tabs
+ ([22892](https://github.com/civicrm/civicrm-core/pull/22892))**
-- **5.47 ([22782](https://github.com/civicrm/civicrm-core/pull/22782))**
+- **Flush the metadata cache when the domain is edited
+ ([22637](https://github.com/civicrm/civicrm-core/pull/22637))**
-- **Remove "Search Builder" from menubar on new installs. ([22778](https://github.com/civicrm/civicrm-core/pull/22778))**
+- **Remove broken call to function_exists in CRM_Utils_String::isUtf8
+ ([22803](https://github.com/civicrm/civicrm-core/pull/22803))**
-- **Avoid null column showing on groups search page ([22724](https://github.com/civicrm/civicrm-core/pull/22724))**
+- **Avoid PHP notices on the UF settings page.
+ ([22667](https://github.com/civicrm/civicrm-core/pull/22667))**
-- **Avoid PHP notices on the UF settings page. ([22667](https://github.com/civicrm/civicrm-core/pull/22667))**
+- **Fix deprecated warnings, smary grumpy-mode issues in legacy searches
+ ([22742](https://github.com/civicrm/civicrm-core/pull/22742))**
-- **SearchKit - Add 'merge contacts' task ([22768](https://github.com/civicrm/civicrm-core/pull/22768))**
+- **Return array for setdefaults
+ ([22948](https://github.com/civicrm/civicrm-core/pull/22948))**
-- **5.47 to master ([22780](https://github.com/civicrm/civicrm-core/pull/22780))**
+### CiviCase
-- **APiv4 - Add Extension.get ([22754](https://github.com/civicrm/civicrm-core/pull/22754))**
+- **CiviCase - Call hooks when creating relationships
+ ([22814](https://github.com/civicrm/civicrm-core/pull/22814))**
-- **[REF] - Deprecate & delegate BAO::retrieve functions ([22543](https://github.com/civicrm/civicrm-core/pull/22543))**
+ Ensures hooks are called when creating case relationships.
-- **dev/core#2927 - Avoid flooding logs with open_basedir in effect ([22277](https://github.com/civicrm/civicrm-core/pull/22277))**
+### CiviContribute
-- **dev/core#2866 Ignore preferred mail format when sending message ([22633](https://github.com/civicrm/civicrm-core/pull/22633))**
+- **Bypass grumpy mode for contribution search totals & criteria
+ ([22744](https://github.com/civicrm/civicrm-core/pull/22744))**
-- **Follow up fix on removing preferred_mail_format ([22775](https://github.com/civicrm/civicrm-core/pull/22775))**
+- **Clean return values for dummy payment processor
+ ([22679](https://github.com/civicrm/civicrm-core/pull/22679))**
-- **APIv4 - Fix typo in Entity.getFields ([22776](https://github.com/civicrm/civicrm-core/pull/22776))**
+- **Adjust css class for payment processor to use `-`
+ ([22763](https://github.com/civicrm/civicrm-core/pull/22763))**
-- **Fix apiv4 Contribution delete & all line items ([22749](https://github.com/civicrm/civicrm-core/pull/22749))**
+- **Fix pledge default on contribution page when the site has a WR for
+ "contribution" ([22801](https://github.com/civicrm/civicrm-core/pull/22801))**
-- **dev/core#2866 Remove preferred_mail_format from email trait ([22635](https://github.com/civicrm/civicrm-core/pull/22635))**
+- **Format money on transaction list
+ ([22438](https://github.com/civicrm/civicrm-core/pull/22438))**
-- **Pseudoconstants - Fix and improve handling of option callbacks ([22730](https://github.com/civicrm/civicrm-core/pull/22730))**
+- **Deprecate civicrm_contribution_recur.trxn_id
+ ([21539](https://github.com/civicrm/civicrm-core/pull/21539))**
-- **[REF] Results of running npm audit fix ([22773](https://github.com/civicrm/civicrm-core/pull/22773))**
+- **php notices on contributionview
+ ([22866](https://github.com/civicrm/civicrm-core/pull/22866))**
-- **SearchKit - Customizable "No Results" text ([22770](https://github.com/civicrm/civicrm-core/pull/22770))**
+- **php/smarty notices on contribution view part 2
+ ([22869](https://github.com/civicrm/civicrm-core/pull/22869))**
-- **Deprecate civicrm_contribution_recur.trxn_id ([21539](https://github.com/civicrm/civicrm-core/pull/21539))**
+- **smarty/php notices on contribution view part 4
+ ([22894](https://github.com/civicrm/civicrm-core/pull/22894))**
-- **Clean return values for dummy payment processor ([22679](https://github.com/civicrm/civicrm-core/pull/22679))**
+- **Cleanup on contribution view
+ ([22698](https://github.com/civicrm/civicrm-core/pull/22698))**
-- **[REF] Simplification in Contact::getValues ([22765](https://github.com/civicrm/civicrm-core/pull/22765))**
+- **Contribution view page crashes if you don't have event permissions
+ ([dev/core#3094](https://lab.civicrm.org/dev/core/-/issues/3094):
+ [22865](https://github.com/civicrm/civicrm-core/pull/22865))**
-- **SearchKit - Fix support for non-DAO entities ([22764](https://github.com/civicrm/civicrm-core/pull/22764))**
+### CiviEvent
-- **Some more notice fixes in smarty ([22745](https://github.com/civicrm/civicrm-core/pull/22745))**
+- **Don't perform event timezone check if CiviEvent is disabled
+ ([22898](https://github.com/civicrm/civicrm-core/pull/22898))**
-- **Adjust css class for payment processor to use `-` ([22763](https://github.com/civicrm/civicrm-core/pull/22763))**
+## CiviGrant
-- **Cleanup around taxTerm assignment ([22422](https://github.com/civicrm/civicrm-core/pull/22422))**
+- **CiviGrant - Don't auto-create any grant types
+ ([22913](https://github.com/civicrm/civicrm-core/pull/22913))**
-- **[REF] Simplify Location::getValues ([22757](https://github.com/civicrm/civicrm-core/pull/22757))**
+- **Grant checkbox in display prefs does nothing anymore
+ ([dev/core#3159](https://lab.civicrm.org/dev/core/-/issues/3159):
+ [23105](https://github.com/civicrm/civicrm-core/pull/23105))**
-- **Remove unused parameter, pass-by-ref ([22756](https://github.com/civicrm/civicrm-core/pull/22756))**
+- **Views - CiviGrant is now an extension
+ ([654](https://github.com/civicrm/civicrm-drupal/pull/654))**
-- **[REF] Fix issue where spaces in payment_processor_type.name field cau… ([22760](https://github.com/civicrm/civicrm-core/pull/22760))**
+ Updates the Drupal Views integration to recognize that CiviGrant is now an
+ extension.
-- **Bump karma from 6.3.4 to 6.3.14 ([22758](https://github.com/civicrm/civicrm-core/pull/22758))**
+### CiviMail
-- **Bump ajv from 6.6.1 to 6.12.6 ([22761](https://github.com/civicrm/civicrm-core/pull/22761))**
+- **Move check for mailing workflow permisisons to BAO layer
+ ([22766](https://github.com/civicrm/civicrm-core/pull/22766))**
-- **[REF] Cleanup billingBlock.js ([22713](https://github.com/civicrm/civicrm-core/pull/22713))**
+- **BAO_Mailing::create - stop passing by reference
+ ([22753](https://github.com/civicrm/civicrm-core/pull/22753))**
-- **Format money in custom fields once, on the tpl layer ([22728](https://github.com/civicrm/civicrm-core/pull/22728))**
+- **add checkPerm
+ ([22818](https://github.com/civicrm/civicrm-core/pull/22818))**
-- **5.47 ([22743](https://github.com/civicrm/civicrm-core/pull/22743))**
+ Adds checkPerm to crmMailingSimpleDirective, enables ability of permission
+ checking in composer mail.
-- **Bypass grumpy mode for contribution search totals & criteria ([22744](https://github.com/civicrm/civicrm-core/pull/22744))**
+- **A/B testing report should show unique opens, not total opens
+ ([dev/core#2100](https://lab.civicrm.org/dev/core/-/issues/2100):
+ [20093](https://github.com/civicrm/civicrm-core/pull/20093))**
-- **Move acl check for contributionView to the extension ([22684](https://github.com/civicrm/civicrm-core/pull/22684))**
+- **Mailing Report: do not recalculate the recipients when the count is zero
+ ([22800](https://github.com/civicrm/civicrm-core/pull/22800))**
-- **Fix deprecated warnings, smary grumpy-mode issues in legacy searches ([22742](https://github.com/civicrm/civicrm-core/pull/22742))**
+- **5.44+ Unsubscribe from Smart Group form generates excessive process load
+ ([dev/core#3031](https://lab.civicrm.org/dev/core/-/issues/3031):
+ [23051](https://github.com/civicrm/civicrm-core/pull/23051))**
-- **5.47 ([22738](https://github.com/civicrm/civicrm-core/pull/22738))**
+ This splits the select query in two when checking if a contact was subscribed
+ to one or more groups.
-- **5.47 ([22735](https://github.com/civicrm/civicrm-core/pull/22735))**
+### CiviMember
-- **Add civicrm_admin_ui extension ([22628](https://github.com/civicrm/civicrm-core/pull/22628))**
+- **New Membership fails when price set present but not selected
+ ([dev/core#3134](https://lab.civicrm.org/dev/core/-/issues/3134):
+ [23027](https://github.com/civicrm/civicrm-core/pull/23027))**
-- **APIv4 - Fix setting/getting a multi-record customfield with date+time ([22731](https://github.com/civicrm/civicrm-core/pull/22731))**
+- **Fixes for smarty grumpy mode with membership
+ ([22752](https://github.com/civicrm/civicrm-core/pull/22752))**
-- **Move financial acls for membership to extension ([22677](https://github.com/civicrm/civicrm-core/pull/22677))**
+- **Cleanup on Offline Membership Receipts (ensures variables present across
+ flows) ([22736](https://github.com/civicrm/civicrm-core/pull/22736))**
-- **APIv4 Explorer - Add REST syntax ([22722](https://github.com/civicrm/civicrm-core/pull/22722))**
+## <a name="misc"></a>Miscellany
-- **Show customised fields on load, if customised option selected. ([22380](https://github.com/civicrm/civicrm-core/pull/22380))**
+- **Move acl check for contributionView to the extension
+ ([22684](https://github.com/civicrm/civicrm-core/pull/22684))**
-- **[NFC] Batch entry - Avoid warnings when performing math on empty string. ([22715](https://github.com/civicrm/civicrm-core/pull/22715))**
+- **Move financial acls for membership to extension
+ ([22677](https://github.com/civicrm/civicrm-core/pull/22677))**
-- **5.47 ([22723](https://github.com/civicrm/civicrm-core/pull/22723))**
+- **APIv4 - remove unnecessary field from System::check
+ ([22748](https://github.com/civicrm/civicrm-core/pull/22748))**
-- **dev/core#3057 - follow-up to fix civigrant info.xml version number in master ([22721](https://github.com/civicrm/civicrm-core/pull/22721))**
+- **APIv4 - Add fixme about filtering custom fields by sub-type
+ ([22827](https://github.com/civicrm/civicrm-core/pull/22827))**
-- **5.47 ([22718](https://github.com/civicrm/civicrm-core/pull/22718))**
+- **Cleanup around taxTerm assignment
+ ([22422](https://github.com/civicrm/civicrm-core/pull/22422))**
-- **SearchKit - Improve import UI to handle update & preview the import ([22699](https://github.com/civicrm/civicrm-core/pull/22699))**
+- **RecurForms test fixes
+ ([22784](https://github.com/civicrm/civicrm-core/pull/22784))**
-- **Switch extension downloader and extensions feed to use Guzzle HTTP library ([21097](https://github.com/civicrm/civicrm-core/pull/21097))**
+- **Update unit test to use exception
+ ([22787](https://github.com/civicrm/civicrm-core/pull/22787))**
-- **REF - Use function to get component name from permission ([22688](https://github.com/civicrm/civicrm-core/pull/22688))**
+- **Added Cancel Recur Subscription test & setter for `supports` on Dummy
+ processor ([21895](https://github.com/civicrm/civicrm-core/pull/21895))**
-- **Use valid syntax for self-closing br elements ([22711](https://github.com/civicrm/civicrm-core/pull/22711))**
+- **Move HookInterface to \Civi\Core namespace
+ ([22834](https://github.com/civicrm/civicrm-core/pull/22834))**
-- **Add basic contribution example base for contribution workflows ([22636](https://github.com/civicrm/civicrm-core/pull/22636))**
+- **Cody tidy in CRM_Core_State
+ ([22841](https://github.com/civicrm/civicrm-core/pull/22841))**
-- **Notice fixes ([22706](https://github.com/civicrm/civicrm-core/pull/22706))**
+- **Remove reference to undefined variable
+ ([22839](https://github.com/civicrm/civicrm-core/pull/22839))**
-- **Enotice fix ([22707](https://github.com/civicrm/civicrm-core/pull/22707))**
+- **added as a contributor
+ ([22876](https://github.com/civicrm/civicrm-core/pull/22876))**
-- **civicrm_handler_filter_pseudo_constant - Guard against old or inactive pseudoconstants ([656](https://github.com/civicrm/civicrm-drupal/pull/656))**
+- **Remove unused parameter, pass-by-ref
+ ([22756](https://github.com/civicrm/civicrm-core/pull/22756))**
-- **Views - CiviGrant is now an extension ([654](https://github.com/civicrm/civicrm-drupal/pull/654))**
+- **Bump karma from 6.3.14 to 6.3.16
+ ([22875](https://github.com/civicrm/civicrm-core/pull/22875))**
-- **Remove unit tests based on older framework ([71](https://github.com/civicrm/civicrm-drupal-8/pull/71))**
+- **Bump karma from 6.3.4 to 6.3.14
+ ([22758](https://github.com/civicrm/civicrm-core/pull/22758))**
-- **Fixes fatal error - function doesn't exist ([275](https://github.com/civicrm/civicrm-wordpress/pull/275))**
+- **Bump ajv from 6.6.1 to 6.12.6
+ ([22761](https://github.com/civicrm/civicrm-core/pull/22761))**
-- **5.47 ([274](https://github.com/civicrm/civicrm-wordpress/pull/274))**
+- **Remove unit tests based on older framework
+ ([71](https://github.com/civicrm/civicrm-drupal-8/pull/71))**
-## <a name="misc"></a>Miscellany
+- **REF - Use function to get component name from permission
+ ([22688](https://github.com/civicrm/civicrm-core/pull/22688))**
+
+- **[REF] Simplify Location::getValues
+ ([22757](https://github.com/civicrm/civicrm-core/pull/22757))**
+
+- **[REF] Fix issue where spaces in payment_processor_type.name field cau…
+ ([22760](https://github.com/civicrm/civicrm-core/pull/22760))**
+
+- **[REF] Cleanup billingBlock.js
+ ([22713](https://github.com/civicrm/civicrm-core/pull/22713))**
+
+- **[REF] Results of running npm audit fix
+ ([22773](https://github.com/civicrm/civicrm-core/pull/22773))**
+
+- **[REF] - Deprecate & delegate BAO::retrieve functions
+ ([22543](https://github.com/civicrm/civicrm-core/pull/22543))**
+
+- **REF Deprecate API3 _ipn_process_transaction()
+ ([22488](https://github.com/civicrm/civicrm-core/pull/22488))**
+
+- **(REF) CRM_Queue_Queue_* - Retain a copy of `$queueSpec`
+ ([22797](https://github.com/civicrm/civicrm-core/pull/22797))**
+
+- **(REF) CRM_Queue_Task - Tighter signature
+ ([22794](https://github.com/civicrm/civicrm-core/pull/22794))**
+
+- **[REF] Remove old require_once statements made obsolete by autoloader
+ ([22792](https://github.com/civicrm/civicrm-core/pull/22792))**
+
+- **[REF] Simplification in Contact::getValues
+ ([22765](https://github.com/civicrm/civicrm-core/pull/22765))**
+
+- **[REF] Fix css code style issues
+ ([22807](https://github.com/civicrm/civicrm-core/pull/22807))**
+
+- **[REF] Remove unused api v2 function
+ ([22819](https://github.com/civicrm/civicrm-core/pull/22819))**
+
+- **[REF] Update Guzzlehttp/psr7 version to be 1.8.5
+ ([22998](https://github.com/civicrm/civicrm-core/pull/22998))**
+
+- **[REF] Rename SoftDeleteEntity -> SoftDeleteActionTrait
+ ([22944](https://github.com/civicrm/civicrm-core/pull/22944))**
+
+- **[REF] APIv4 - use entityTypes event to load custom records
+ ([22824](https://github.com/civicrm/civicrm-core/pull/22824))**
+
+- **[REF] Cleanup docblocks & unused vars in Membership BAO
+ ([22665](https://github.com/civicrm/civicrm-core/pull/22665))**
+
+- **(NFC) tests/phpunit/CRM/Queue - Add common `@group`
+ ([22795](https://github.com/civicrm/civicrm-core/pull/22795))**
+
+- **[NFC] Rename RecurForms test class
+ ([22820](https://github.com/civicrm/civicrm-core/pull/22820))**
+
+- **[NFC] Batch entry - Avoid warnings when performing math on empty string.
+ ([22715](https://github.com/civicrm/civicrm-core/pull/22715))**
+
+- **(NFC) contributor-key.yml - Fix syntax error
+ ([22921](https://github.com/civicrm/civicrm-core/pull/22921))**
+
+- **(NFC) LoggingDetailTest - Improve reliability of test
+ ([22867](https://github.com/civicrm/civicrm-core/pull/22867))**
+
+- **(NFC) Membership Tests - Update assertions to match behavior circa leap-day
+ ([22860](https://github.com/civicrm/civicrm-core/pull/22860))**
+
+- **[NFC] Basic case create test with org
+ ([22846](https://github.com/civicrm/civicrm-core/pull/22846))**
## <a name="credits"></a>Credits
This release was developed by the following code authors:
-AGH Strategies - Alice Frumin, Andie Hunt; BrightMinded Ltd - Bradley Taylor; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM - Coleman Watts, Tim Otten; Coop SymbioTIC - Mathieu Lutfy; Dave D; dependabot[bot]; Fuzion - Luke Stewart; Grype Digital Inc. - Md Rashedul Islam; JMA Consulting - Monish Deb, Seamus Lee; John Kingsnorth; Kartik Kathuria; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Registered Nurses' Association of Ontario - Ian Wilson; Tadpole Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
+AGH Strategies - Alice Frumin, Andie Hunt; BrightMinded Ltd - Bradley
+Taylor;Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM - Coleman
+Watts, Tim Otten; Coop SymbioTIC - Mathieu Lutfy; Dave D; Fuzion - Luke Stewart;
+Grype Digital Inc. - Md Rashedul Islam; JMA Consulting - Monish Deb, Seamus Lee;
+John Kingsnorth; Kartik Kathuria; Megaphone Technology Consulting - Jon
+Goldberg; MJW Consulting - Matthew Wire; Registered Nurses' Association of
+Ontario - Ian Wilson; Tadpole Collective - Kevin Cristiano; Wikimedia
+Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
Most authors also reviewed code for this release; in addition, the following
reviewers contributed their comments:
-Agileware - Justin Freeman; Artful Robot - Rich Lott; Blackfly Solutions - Alan Dixon; Bluehorn Digital - Matt Glaman; BrightMinded Ltd - Bradley Taylor; Christian Wach; Circle Interactive - Pradeep Nayak; civibot[bot]; CiviCoop - Jaap Jansma; civicrm-builder; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Fuzion - Luke Stewart; Grype Digital Inc. - Md Rashedul Islam; JMA Consulting - Monish Deb, Seamus Lee; John Kingsnorth; Kartik Kathuria; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Progressive Technology Project - Jamie McClelland; Semper IT - Karin Gerritsen; Skvare - Mark Hanna; Tadpole Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
+Agileware - Justin Freeman; Artful Robot - Rich Lott; Blackfly Solutions - Alan
+Dixon; Bluehorn Digital - Matt Glaman; CiviCoop - Jaap Jansma; CiviDesk -
+Yashodha Chaku; Progressive Technology Project - Jamie McClelland; Semper IT -
+Karin Gerritsen; Skvare - Mark Hanna
## <a name="feedback"></a>Feedback