Merge pull request #23693 from pradpnayak/pricesetid1
[civicrm-core.git] / release-notes / 5.47.0.md
CommitLineData
9972cde3
AH
1# CiviCRM 5.47.0
2
cde1711c 3Released March 4, 2022
9972cde3 4
e4ae3132 5- **[Synopsis](#synopsis)**
9972cde3
AH
6- **[Features](#features)**
7- **[Bugs resolved](#bugs)**
8- **[Miscellany](#misc)**
9- **[Credits](#credits)**
e4ae3132
AH
10- **[Feedback](#feedback)**
11
12## <a name="synopsis"></a>Synopsis
13
14| *Does this version...?* | |
15|:--------------------------------------------------------------- |:-------:|
d972c4ff
AF
16| Fix security vulnerabilities? | no |
17| **Change the database schema?** | **yes** |
18| **Alter the API?** | **yes** |
19| Require attention to configuration options? | no |
20| Fix problems installing or upgrading to a previous version? | no |
21| **Introduce features?** | **yes** |
22| **Fix bugs?** | **yes** |
9972cde3
AH
23
24## <a name="features"></a>Features
25
9972cde3
AH
26### Core CiviCRM
27
d972c4ff
AF
28- **Add created_date & modified_date to civicrm_relationship
29 ([22480](https://github.com/civicrm/civicrm-core/pull/22480))**
9972cde3 30
d972c4ff 31 Adds created_date & modified_date to the civicrm_relationship table.
9972cde3 32
d972c4ff
AF
33- **Add option to display money tokens without formatting
34 ([22548](https://github.com/civicrm/civicrm-core/pull/22548))**
9972cde3 35
d972c4ff 36 Adds an option to display money tokens without formatting.
9972cde3 37
d972c4ff
AF
38- **SearchKit - Improve field/operator/value selection UI
39 ([22604](https://github.com/civicrm/civicrm-core/pull/22604))**
9972cde3 40
d972c4ff
AF
41 Improves the SearchKit UI for selecting field/operator/value conditions.
42 Affects various parts of the UI, like css conditions, link conditions,
43 where/on/having clauses, etc.
9972cde3 44
d972c4ff
AF
45- **SearchKit - Support operators in conditional css rules
46 ([22552](https://github.com/civicrm/civicrm-core/pull/22552))**
9972cde3 47
d972c4ff 48 Allows operators other than = in SearchKit conditional style rules.
9972cde3 49
b57b29e7 50- **SearchKit - Allow Smarty in field rewrite
d972c4ff 51 ([22592](https://github.com/civicrm/civicrm-core/pull/22592))**
9972cde3 52
d972c4ff 53 Gives the ability to use Smarty syntax in the "rewrite" of SearchKit displays.
9972cde3 54
d972c4ff
AF
55- **SearchKit: Relationship Description unavailable
56 ([dev/core#3019](https://lab.civicrm.org/dev/core/-/issues/3019):
57 [22606](https://github.com/civicrm/civicrm-core/pull/22606))**
9972cde3 58
d972c4ff
AF
59 Exposes relationship description, created/modified_date & permissions fields
60 in SearchKit.
9972cde3 61
d972c4ff
AF
62- **SearchKit - add/remove tags action for all taggable entities
63 ([21865](https://github.com/civicrm/civicrm-core/pull/21865))**
9972cde3 64
d972c4ff
AF
65 Adds a new angular-based action to SearchKit for bulk adding/removing tags
66 from contacts, cases, activities, etc.
9972cde3 67
d972c4ff
AF
68- **SearchKit - Support conditional links
69 ([22557](https://github.com/civicrm/civicrm-core/pull/22557))**
9972cde3 70
d972c4ff
AF
71 Adds an advanced feature to conditionally show/hide links in a
72 links/buttons/menu column, based on user permissions or row values.
9972cde3 73
d972c4ff
AF
74- **SearchKit - Update operator labels
75 ([22554](https://github.com/civicrm/civicrm-core/pull/22554))**
9972cde3 76
d972c4ff 77 Updates SearchKit labels to hopefully better describe ReGex.
9972cde3 78
d972c4ff
AF
79- **SearchKit - Enable joins for custom fields and option groups
80 ([22355](https://github.com/civicrm/civicrm-core/pull/22355))**
9972cde3 81
d972c4ff
AF
82 Enables SearchKit to join custom groups to custom fields, and option groups to
83 option values.
9972cde3 84
d972c4ff
AF
85- **APIv4 - Add SubscriptionHistory entity
86 ([22435](https://github.com/civicrm/civicrm-core/pull/22435))**
9972cde3 87
d972c4ff 88 Adds a SubscriptionHistory entity to APIv4.
9972cde3 89
d972c4ff
AF
90- **APIv4 - Make Permission 'group' discoverable in API Explorer
91 ([22559](https://github.com/civicrm/civicrm-core/pull/22559))**
9972cde3 92
d972c4ff 93 Makes `group` options for the `Permission` API discoverable.
9972cde3 94
d972c4ff
AF
95- **Improve field accessibility in legacycustomsearches
96 ([22710](https://github.com/civicrm/civicrm-core/pull/22710))**
9972cde3 97
d972c4ff 98 Improves accessibility of legacy custom searches.
9972cde3 99
d972c4ff
AF
100- **Expose a REST end-point through standard routing (Work Towards
101 [dev/core#2077](https://lab.civicrm.org/dev/core/-/issues/2077):
102 [19727](https://github.com/civicrm/civicrm-core/pull/19727) and
103 [22058](https://github.com/civicrm/civicrm-core/pull/22058))**
9972cde3 104
d972c4ff 105 Makes 'civicrm/ajax/rest' interoperable with 'extern/rest.php' parameters and
b57b29e7 106 adds an AuthX configuration screen.
9972cde3 107
d972c4ff
AF
108- **Define more usable queue DX for multithreaded background work (Work Towards
109 [dev/core#1304](https://lab.civicrm.org/dev/core/-/issues/1304):
110 [22324](https://github.com/civicrm/civicrm-core/pull/22324) and
111 [22657](https://github.com/civicrm/civicrm-core/pull/22657))**
9972cde3 112
d972c4ff
AF
113 Adds a high-level queue tracking table and updates the programmatic APIs to
114 make it easier to work with persistent queues.
9972cde3 115
d972c4ff
AF
116- **Civi::pipe - Add support for background worker-processes with JSON pipes
117 ([22262](https://github.com/civicrm/civicrm-core/pull/22262))**
9972cde3 118
d972c4ff
AF
119 Add an entry-point for external scripts to send multiple API calls to a
120 CiviCRM worker-process - while only bootstrapping one time.
9972cde3 121
d972c4ff
AF
122- **Expose email on hold as filter for reports (Work towards
123 [dev/core#3012](https://lab.civicrm.org/dev/core/-/issues/3012):
124 [22368](https://github.com/civicrm/civicrm-core/pull/22368) and
125 [22572](https://github.com/civicrm/civicrm-core/pull/22572))**
9972cde3 126
d972c4ff 127 Exposes email on hold as filter on contribution reports.
9972cde3 128
d972c4ff
AF
129- **Extensions - Add dependency status check
130 ([22464](https://github.com/civicrm/civicrm-core/pull/22464))**
9972cde3 131
d972c4ff
AF
132 Adds a system status check to ensure extension dependencies are met, and warn
133 the admin of missing dependencies.
9972cde3 134
d972c4ff
AF
135- **Add metadata so Activity Created Date is available in Form Builder
136 ([22320](https://github.com/civicrm/civicrm-core/pull/22320))**
9972cde3 137
d972c4ff 138 Makes the Activity Created date available in Form Builder.
9972cde3 139
d972c4ff
AF
140- **Move permission access handling for
141 civicrm/admin/financial/financialType?reset=1 to extension
142 ([22685](https://github.com/civicrm/civicrm-core/pull/22685) and
143 [22499](https://github.com/civicrm/civicrm-core/pull/22499))**
9972cde3 144
d972c4ff
AF
145 Moves permission access handling for
146 civicrm/admin/financial/financialType?reset=1 to extension.
9972cde3 147
aa40dfff
TO
148- **Add setting "format_locale"
149 ([dev/core#3095](https://lab.civicrm.org/dev/core/-/issues/3095):
150 [22885](https://github.com/civicrm/civicrm-core/pull/22885))**
151
152 Adds a new setting, "Formatting Locale", which specifies that dates and
153 numbers should formatted according to designated localization rules.
154 This setting may be useful for a locale (eg `en_NZ`) whose language closely
155 resembles another (eg `en_US`) but which has a different currency.
156
d972c4ff 157### CiviContribute
9972cde3 158
d972c4ff
AF
159- **Why are unique labels for price fields required?
160 ([dev/event#66](https://lab.civicrm.org/dev/event/-/issues/66):
161 [22508](https://github.com/civicrm/civicrm-core/pull/22508))**
9972cde3 162
d972c4ff 163 Makes it so duplicate price field labels are allowed.
9972cde3 164
d972c4ff
AF
165- **Use tokens in offline contribution receipt (new installs)
166 ([22560](https://github.com/civicrm/civicrm-core/pull/22560))**
9972cde3 167
d972c4ff
AF
168 Use tokens instead of Smarty Variables in the offline contribution receipt
169 template for new installs.
9972cde3 170
d972c4ff 171### CiviEvent
9972cde3 172
d972c4ff
AF
173- **Event Registration: allow default Price Set values from the URL
174 ([22313](https://github.com/civicrm/civicrm-core/pull/22313))**
9972cde3 175
d972c4ff 176 Makes it so one can set the default price field on event registration forms
b57b29e7 177 using URL parameters.
9972cde3 178
d972c4ff
AF
179- **Account for time zone on event registration pages
180 ([dev/core#2122](https://lab.civicrm.org/dev/core/-/issues/2122):
181 [22620](https://github.com/civicrm/civicrm-core/pull/22620),
182 [22622](https://github.com/civicrm/civicrm-core/pull/22622),
183 [20476](https://github.com/civicrm/civicrm-core/pull/20476),
184 [22619](https://github.com/civicrm/civicrm-core/pull/22619),
185 [22645](https://github.com/civicrm/civicrm-core/pull/22645) and
186 [22644](https://github.com/civicrm/civicrm-core/pull/22644))**
9972cde3 187
d972c4ff 188 Adds timezone support for events.
9972cde3 189
d972c4ff
AF
190- **updating misleading labels on buttons to confirmation pages
191 ([dev/core#1613](dev/core#1613):
192 [20251](https://github.com/civicrm/civicrm-core/pull/20251))**
9972cde3 193
d972c4ff
AF
194 Changes the event registration button text based on if there are additional
195 participants.
9972cde3 196
d972c4ff 197### CiviGrant
9972cde3 198
d972c4ff
AF
199- **CiviGrant - Use SearchKit for contact summary tab
200 ([22467](https://github.com/civicrm/civicrm-core/pull/22467))**
9972cde3 201
d972c4ff
AF
202 switches the Grants tab on the contact summary page to use a SearchKit Display.
203 It looks nearly identical before and after, but is now easily customizable via
204 the SearchKit & Form-Builder GUI.
9972cde3 205
d972c4ff
AF
206- **Migrate CiviGrant component to an extension
207 ([22064](https://github.com/civicrm/civicrm-core/pull/22064))**
9972cde3 208
d972c4ff 209 Moves the CiviGrant component to an extension.
9972cde3 210
d972c4ff 211### CiviMail
9972cde3 212
d972c4ff
AF
213- **Start phasing out 'preferred_mail_format' (Work towards
214 [dev/core#2866](https://lab.civicrm.org/dev/core/-/issues/2866):
215 [22634](https://github.com/civicrm/civicrm-core/pull/22634) and
216 [22632](https://github.com/civicrm/civicrm-core/pull/22632))**
9972cde3 217
d972c4ff 218 Generates text version of message at send time if one is not present.
9972cde3 219
d972c4ff 220### WordPress Integration
9972cde3 221
d972c4ff
AF
222- **wp-cli/civicrm.php - Add 'civicrm pipe' subcommand
223 ([270](https://github.com/civicrm/civicrm-wordpress/pull/270))**
9972cde3 224
d972c4ff 225 Adds support for subcommand `wp civicrm pipe`.
9972cde3 226
d972c4ff 227## <a name="bugs"></a>Bugs resolved
9972cde3 228
d972c4ff 229### Core CiviCRM
9972cde3 230
b57b29e7 231- **Only format Smarty aliases as money if specified
d972c4ff 232 ([22547](https://github.com/civicrm/civicrm-core/pull/22547))**
9972cde3 233
d972c4ff
AF
234- **Avoid PHP notices on activity form
235 ([22666](https://github.com/civicrm/civicrm-core/pull/22666))**
9972cde3 236
d972c4ff
AF
237- **Fix typo preventing uninstalling ckeditor4
238 ([22691](https://github.com/civicrm/civicrm-core/pull/22691))**
9972cde3 239
b57b29e7 240- **Fix return values for APIv3 Job.delete
d972c4ff 241 ([22561](https://github.com/civicrm/civicrm-core/pull/22561))**
9972cde3 242
d972c4ff
AF
243- **enforce required fields on Contact.duplicatecheck
244 ([22741](https://github.com/civicrm/civicrm-core/pull/22741))**
9972cde3 245
d972c4ff
AF
246- **APIv4 SortableEntity - Fix sorting custom fields with option groups
247 ([22716](https://github.com/civicrm/civicrm-core/pull/22716))**
9972cde3 248
d972c4ff
AF
249- **APIv4 - Correctly return date-only custom field values without the time
250 ([22649](https://github.com/civicrm/civicrm-core/pull/22649))**
9972cde3 251
d972c4ff
AF
252- **APIv4 - Use empty string instead of 'null' to pass null values to the db
253 ([22587](https://github.com/civicrm/civicrm-core/pull/22587))**
9972cde3 254
d972c4ff
AF
255- **APIv4 - Fix incorrect placement of decodeRows in loop
256 ([22413](https://github.com/civicrm/civicrm-core/pull/22413))**
9972cde3 257
d972c4ff
AF
258- **SearchKit: In-place edit for custom dropdown field - can't blank it out
259 ([dev/report#92](https://lab.civicrm.org/dev/report/-/issues/92):
260 [22358](https://github.com/civicrm/civicrm-core/pull/22358))**
9972cde3 261
b57b29e7 262- **Minor SearchKit UI filtering annoyance
d972c4ff
AF
263 ([dev/core#3032](https://lab.civicrm.org/dev/core/-/issues/3032):
264 [22505](https://github.com/civicrm/civicrm-core/pull/22505))**
9972cde3 265
d972c4ff
AF
266- **SearchKit - Fix selecting operators and values in clauses
267 ([22653](https://github.com/civicrm/civicrm-core/pull/22653))**
9972cde3 268
d7dbd9d4
TO
269- **SearchKit - Refresh contents after saving a popup when in a block/tab
270 ([22809](https://github.com/civicrm/civicrm-core/pull/22809))**
271
d972c4ff
AF
272- **Don't throw PHP notice when rendering dedupefind template.
273 ([22709](https://github.com/civicrm/civicrm-core/pull/22709))**
9972cde3 274
d972c4ff
AF
275- **Enotice fixes with datepicker
276 ([22705](https://github.com/civicrm/civicrm-core/pull/22705))**
9972cde3 277
d972c4ff
AF
278- **Enotice fix with priceset template
279 ([22708](https://github.com/civicrm/civicrm-core/pull/22708))**
9972cde3 280
d972c4ff
AF
281- **Enotice fixes
282 ([22697](https://github.com/civicrm/civicrm-core/pull/22697))**
9972cde3 283
d972c4ff
AF
284- **Enotice fix
285 ([22436](https://github.com/civicrm/civicrm-core/pull/22436))**
9972cde3 286
d972c4ff
AF
287- **Enotice fixes
288 ([22471](https://github.com/civicrm/civicrm-core/pull/22471))**
9972cde3 289
d972c4ff
AF
290- **CustomGroup - Ensure 'name' is always unique
291 ([22675](https://github.com/civicrm/civicrm-core/pull/22675))**
9972cde3 292
d972c4ff
AF
293- **Another set of PHPdoc corrections
294 ([22658](https://github.com/civicrm/civicrm-core/pull/22658))**
9972cde3 295
d972c4ff
AF
296- **Fix batch summary to use the api
297 ([22618](https://github.com/civicrm/civicrm-core/pull/22618))**
9972cde3 298
b57b29e7 299- **Fix Smarty notices in footer files
d972c4ff 300 ([22613](https://github.com/civicrm/civicrm-core/pull/22613))**
9972cde3 301
d972c4ff
AF
302- **Remove use of .font-size11pt and .font-size12pt
303 ([22314](https://github.com/civicrm/civicrm-core/pull/22314))**
9972cde3 304
d972c4ff
AF
305- **Don't pass redundent empty strings when instantiating
306 CRM_Core_ShowHideBlocks
307 ([22605](https://github.com/civicrm/civicrm-core/pull/22605))**
9972cde3 308
d972c4ff
AF
309- **Fix call to log method warn (should be warning)
310 ([22602](https://github.com/civicrm/civicrm-core/pull/22602))**
9972cde3 311
d972c4ff
AF
312- **tpl notices and docblocks
313 ([22449](https://github.com/civicrm/civicrm-core/pull/22449))**
9972cde3 314
b57b29e7 315- **Ensure assigned Smarty array has empty keys (not no keys)
d972c4ff 316 ([22379](https://github.com/civicrm/civicrm-core/pull/22379))**
9972cde3 317
d972c4ff
AF
318- **Stop calling hook twice
319 ([22404](https://github.com/civicrm/civicrm-core/pull/22404))**
9972cde3 320
d972c4ff
AF
321- **Activity Details field on batch update via profile has wrong fieldname
322 ([22568](https://github.com/civicrm/civicrm-core/pull/22568))**
9972cde3 323
d972c4ff
AF
324- **Re-fix enotice on searchType to work with default modifiers
325 ([22466](https://github.com/civicrm/civicrm-core/pull/22466))**
9972cde3 326
d972c4ff
AF
327- **Unable to add new custom field set or new fields (to existing field set)
328 after enabling multilingual setting.
329 ([dev/translation#38](https://lab.civicrm.org/dev/translation/-/issues/38):
330 [22647](https://github.com/civicrm/civicrm-core/pull/22647))**
9972cde3 331
d972c4ff
AF
332- **System.check permissions changed in Civi 5.46
333 ([dev/core#3055](https://lab.civicrm.org/dev/core/-/issues/3055):
334 [22733](https://github.com/civicrm/civicrm-core/pull/22733))**
9972cde3 335
d972c4ff 336 Fixes the dedupe check to not require elevated permissions.
9972cde3 337
d972c4ff
AF
338- **Search Builder crashes if you have admin access and CiviGrant is not enabled
339 ([dev/core#3056](https://lab.civicrm.org/dev/core/-/issues/3056):
340 [22714](https://github.com/civicrm/civicrm-core/pull/22714))**
9972cde3 341
b57b29e7 342- **CiviGrant info.xml update missing from 5.47 and
d972c4ff
AF
343 CRM_Utils_VersioncheckTest::testGetSiteStats should have been failing for a
344 while ([dev/core#3057](https://lab.civicrm.org/dev/core/-/issues/3057):
345 [22717](https://github.com/civicrm/civicrm-core/pull/22717))**
9972cde3 346
d972c4ff
AF
347- **Regression - fatal error when viewing custom fields with money > 1000
348 ([dev/core#3059](https://lab.civicrm.org/dev/core/-/issues/3059):
349 [22727](https://github.com/civicrm/civicrm-core/pull/22727))**
9972cde3 350
d972c4ff
AF
351- **Fix broken function reference
352 ([22474](https://github.com/civicrm/civicrm-core/pull/22474))**
9972cde3 353
d972c4ff
AF
354- **Use rolling window for translating 2-digit years into 4-digit years
355 ([22581](https://github.com/civicrm/civicrm-core/pull/22581))**
9972cde3 356
d972c4ff
AF
357 Fixes outdated hard-coded import logic: translates 2-digit years to 4 using
358 rolling -95yr to +5yr window
9972cde3 359
d972c4ff
AF
360- **Rationalise relationship validation
361 ([22491](https://github.com/civicrm/civicrm-core/pull/22491))**
9972cde3 362
d972c4ff
AF
363- **Stop calling confusing function that doesn't do much .....
364 ([22468](https://github.com/civicrm/civicrm-core/pull/22468))**
9972cde3 365
d972c4ff
AF
366- **Navigation - Make required fields NOT NULL
367 ([22430](https://github.com/civicrm/civicrm-core/pull/22430))**
9972cde3 368
d972c4ff
AF
369- **Fight back against copy & paste gone wild
370 ([22417](https://github.com/civicrm/civicrm-core/pull/22417))**
9972cde3 371
d972c4ff 372### CiviCampaign
9972cde3 373
d972c4ff
AF
374- **'CiviCampaign: access CiviCampaign' permission missing
375 ([dev/core#983](https://lab.civicrm.org/dev/core/-/issues/983):
376 [22459](https://github.com/civicrm/civicrm-core/pull/22459))**
9972cde3 377
d972c4ff 378### CiviCase
9972cde3 379
d972c4ff
AF
380- **CiviCase - Denote `created_date` as readonly
381 ([22608](https://github.com/civicrm/civicrm-core/pull/22608))**
9972cde3 382
d972c4ff
AF
383- **Remove category from case activity template
384 ([22530](https://github.com/civicrm/civicrm-core/pull/22530))**
9972cde3 385
d972c4ff 386 Remove category from case activity template to fix e-notices.
9972cde3 387
d972c4ff 388### CiviContribute
9972cde3 389
d972c4ff
AF
390- **Fix ContributionRecur.payment_processor_id pseudoconstant
391 ([22750](https://github.com/civicrm/civicrm-core/pull/22750))**
9972cde3 392
d972c4ff
AF
393- **Manage Contribution page, the link to "Online Contribution (Test-drive)" is
394 an admin-only URL to register in the backend, should be a frontend URL
395 ([22672](https://github.com/civicrm/civicrm-core/pull/22672))**
9972cde3 396
d972c4ff
AF
397- **Avoid PHP notice on 'Manage Contribution Pages' screen
398 ([22661](https://github.com/civicrm/civicrm-core/pull/22661))**
9972cde3 399
d972c4ff
AF
400- **PCP is still active after contribution page is disabled.
401 ([dev/core#899](https://lab.civicrm.org/dev/core/-/issues/899):
402 [20845](https://github.com/civicrm/civicrm-core/pull/20845))**
9972cde3 403
d972c4ff
AF
404- **don't allow multiple currencies in a batch
405 ([20884](https://github.com/civicrm/civicrm-core/pull/20884))**
9972cde3 406
d972c4ff
AF
407- **Foreign constraint violation on APIv3 contribution create if
408 financial_type_id is numeric
409 ([dev/core#3063](https://lab.civicrm.org/dev/core/-/issues/3063):
410 [22740](https://github.com/civicrm/civicrm-core/pull/22740))**
9972cde3 411
d972c4ff
AF
412- **Error cancelling a contribution if CiviPledge is disabled
413 ([dev/core#3066](https://lab.civicrm.org/dev/core/-/issues/3066):
414 [22779](https://github.com/civicrm/civicrm-core/pull/22779))**
9972cde3 415
b57b29e7 416- **Import of contribution fails when invalid campaign ID is provided
d972c4ff
AF
417 ([dev/core#2989](https://lab.civicrm.org/dev/core/-/issues/2989):
418 [22235](https://github.com/civicrm/civicrm-core/pull/22235))**
9972cde3 419
d972c4ff
AF
420- **Simplify getting contact_id from recurring contribution when generating
421 subscription URLs
422 ([22448](https://github.com/civicrm/civicrm-core/pull/22448))**
9972cde3 423
d972c4ff
AF
424- **Fix Fatal Error on contribution tab and user dashboard when recurring
425 payment generated using extension get disabled
426 ([22264](https://github.com/civicrm/civicrm-core/pull/22264))**
9972cde3 427
d972c4ff 428### CiviEvent
9972cde3 429
d972c4ff
AF
430- **CiviCRM Event, the link to "On-line Registration (Test Drive)" is an
431 admin-only URL to register in the backend, should be a frontend URL
432 ([22669](https://github.com/civicrm/civicrm-core/pull/22669))**
9972cde3 433
d972c4ff
AF
434- **Set default values to avoid notices when rendering (event templates screen)
435 ([22663](https://github.com/civicrm/civicrm-core/pull/22663))**
9972cde3 436
d972c4ff 437### CiviGrant
9972cde3 438
d972c4ff
AF
439- **Fix Grant::retrieve to meet full phpcs standard
440 ([22558](https://github.com/civicrm/civicrm-core/pull/22558))**
9972cde3 441
d7dbd9d4
TO
442- **CiviGrant - Fix installation of dependencies during upgrade
443 ([22881](https://github.com/civicrm/civicrm-core/pull/22881))**
444
445- **CiviGrant - Menu appears twice
446 ([dev/core#3087](https://lab.civicrm.org/dev/core/-/issues/3087):
447 [22855](https://github.com/civicrm/civicrm-core/pull/22855))**
448
449- **CiviGrant - Don't return grant fields as contact fields
450 ([dev/core#3069](https://lab.civicrm.org/dev/core/-/issues/3069):
451 [22851](https://github.com/civicrm/civicrm-core/pull/22851))**
452
453- **CiviGrant - Declare API permissions
454 ([22791](https://github.com/civicrm/civicrm-core/pull/22791))**
455
d972c4ff 456### CiviMail
9972cde3 457
d972c4ff
AF
458- **Editing a mailing triggers two autosaves instead of one
459 ([dev/core#2587](https://lab.civicrm.org/dev/core/-/issues/2587):
460 [20561](https://github.com/civicrm/civicrm-core/pull/20561))**
9972cde3 461
d972c4ff
AF
462- **MailingEventQueue - Use consistent CamelCaseName. Prevent conflicts.
463 ([22343](https://github.com/civicrm/civicrm-core/pull/22343))**
9972cde3 464
d972c4ff
AF
465- **add `contact_id` to email params in `emailLetter` function
466 ([22538](https://github.com/civicrm/civicrm-core/pull/22538))**
9972cde3 467
d972c4ff
AF
468- **Fix syntax error in CRM_Mailing_Event_BAO_Reply
469 ([22453](https://github.com/civicrm/civicrm-core/pull/22453))**
9972cde3 470
d972c4ff
AF
471- **Smarty notice fix on Email help
472 ([22470](https://github.com/civicrm/civicrm-core/pull/22470))**
9972cde3 473
b57b29e7 474- **CiviMail - Fix undeclared Javascript variables ([22879](https://github.com/civicrm/civicrm-core/pull/22879))**
d7dbd9d4 475
d972c4ff 476### CiviMember
9972cde3 477
d972c4ff
AF
478- **Fix spelling mistake in function name, addMembershipToRealtedContacts should
479 be addMembershipToRelatedContacts
480 ([22673](https://github.com/civicrm/civicrm-core/pull/22673))**
9972cde3 481
b57b29e7 482- **Fix Smarty notices in membership dashboard
d972c4ff 483 ([22660](https://github.com/civicrm/civicrm-core/pull/22660))**
9972cde3 484
d972c4ff
AF
485- **Don't default membership type create to inactive
486 ([22498](https://github.com/civicrm/civicrm-core/pull/22498))**
9972cde3 487
d972c4ff 488### WordPress Integration
9972cde3 489
b57b29e7 490- **404 Error when I use the APIv4 with WordPress Multisite -> because no "do
d972c4ff
AF
491 not delete" post was generated for the subsite
492 ([dev/wordpress#59](https://lab.civicrm.org/dev/wordpress/-/issues/59):
493 [271](https://github.com/civicrm/civicrm-wordpress/pull/271))**
9972cde3 494
d972c4ff 495## <a name="misc"></a>Miscellany
9972cde3 496
d972c4ff
AF
497- **Move permission checks from Query & BAO to financialacl extension
498 ([22495](https://github.com/civicrm/civicrm-core/pull/22495))**
9972cde3 499
d972c4ff
AF
500- **Add billingStateProvince and standardized property names
501 ([21583](https://github.com/civicrm/civicrm-core/pull/21583))**
9972cde3 502
d972c4ff
AF
503- **Extensions - Revise prose for status check
504 ([22638](https://github.com/civicrm/civicrm-core/pull/22638))**
9972cde3 505
d972c4ff
AF
506- **Add type to phpdoc comment for report statistic function
507 ([22514](https://github.com/civicrm/civicrm-core/pull/22514))**
9972cde3 508
d972c4ff
AF
509- **Update phpdoc references to $self to include type
510 ([22513](https://github.com/civicrm/civicrm-core/pull/22513))**
9972cde3 511
d972c4ff
AF
512- **Improve method phpdoc for CRM_Utils_System
513 ([22492](https://github.com/civicrm/civicrm-core/pull/22492))**
9972cde3 514
b57b29e7 515- **Run 'full Drupal strictness' standard over api/v3/examples
d972c4ff 516 ([22528](https://github.com/civicrm/civicrm-core/pull/22528))**
9972cde3 517
d972c4ff
AF
518- **Run stricter phpcs on Civi dir
519 ([22527](https://github.com/civicrm/civicrm-core/pull/22527))**
9972cde3 520
d972c4ff
AF
521- **Fixes to spaces from phpcs
522 ([22535](https://github.com/civicrm/civicrm-core/pull/22535))**
9972cde3 523
d972c4ff
AF
524- **Various phpdoc fixes
525 ([22509](https://github.com/civicrm/civicrm-core/pull/22509))**
9972cde3 526
d972c4ff
AF
527- **Clarify contents of ids for further fixes
528 ([22402](https://github.com/civicrm/civicrm-core/pull/22402))**
9972cde3 529
d972c4ff
AF
530- **Replace all isset checks on line.tax_rate
531 ([22421](https://github.com/civicrm/civicrm-core/pull/22421))**
9972cde3 532
d972c4ff
AF
533- **Move function to the class that 'owns' it
534 ([22472](https://github.com/civicrm/civicrm-core/pull/22472))**
9972cde3 535
d972c4ff
AF
536- **PHPCS standards on css....
537 ([22529](https://github.com/civicrm/civicrm-core/pull/22529))**
9972cde3 538
d972c4ff
AF
539- **More comments & style fixes
540 ([22533](https://github.com/civicrm/civicrm-core/pull/22533))**
9972cde3 541
d972c4ff
AF
542- **Re-run regen
543 ([22536](https://github.com/civicrm/civicrm-core/pull/22536))**
9972cde3 544
d972c4ff
AF
545- **Add consistency between checkTemplateFileExists functions,
546 ([22586](https://github.com/civicrm/civicrm-core/pull/22586))**
9972cde3 547
d972c4ff
AF
548- **Increase GroupContact:create deprecation
549 ([22416](https://github.com/civicrm/civicrm-core/pull/22416))**
9972cde3 550
d972c4ff
AF
551- **APIv4 - Docblock updates, mark BAO::create functions deprecated
552 ([22415](https://github.com/civicrm/civicrm-core/pull/22415))**
9972cde3 553
d972c4ff
AF
554- **DAO - Centralize logic to derive unique name from label
555 ([22570](https://github.com/civicrm/civicrm-core/pull/22570))**
9972cde3 556
d972c4ff
AF
557- **Pass remove-by-reference
558 ([22593](https://github.com/civicrm/civicrm-core/pull/22593))**
9972cde3 559
d972c4ff
AF
560- **Mark function as private
561 ([22457](https://github.com/civicrm/civicrm-core/pull/22457))**
9972cde3 562
d972c4ff
AF
563- **Stop returning unused parameters
564 ([22410](https://github.com/civicrm/civicrm-core/pull/22410))**
9972cde3 565
d972c4ff
AF
566- **Duplicate function from deprecated utils onto calling classes & remove
567 ([22481](https://github.com/civicrm/civicrm-core/pull/22481))**
9972cde3 568
d972c4ff
AF
569- **Fix phpdoc types for $_query in CRM_Core_Selector_Base subclasses
570 ([22424](https://github.com/civicrm/civicrm-core/pull/22424))**
9972cde3 571
d972c4ff
AF
572- **Correctly document types for class consts
573 ([22659](https://github.com/civicrm/civicrm-core/pull/22659))**
9972cde3 574
d972c4ff
AF
575- **Make phpType definitions in generated DAO objects more accurate.
576 ([22607](https://github.com/civicrm/civicrm-core/pull/22607))**
9972cde3 577
b57b29e7 578- **Ensure all APIv3 functions have documented types
d972c4ff 579 ([22674](https://github.com/civicrm/civicrm-core/pull/22674))**
9972cde3 580
d972c4ff
AF
581- **CRM_Core_Component (et al) - Deprecate unused functions
582 ([22566](https://github.com/civicrm/civicrm-core/pull/22566))**
9972cde3 583
d972c4ff
AF
584- **Move deprecated function back to the only class that calls it
585 ([22517](https://github.com/civicrm/civicrm-core/pull/22517))**
9972cde3 586
b57b29e7 587- **Fix PHP comments
d972c4ff 588 ([22526](https://github.com/civicrm/civicrm-core/pull/22526))**
9972cde3 589
d972c4ff
AF
590- **A whole bunch of phpdoc fixes
591 ([22454](https://github.com/civicrm/civicrm-core/pull/22454))**
9972cde3 592
d972c4ff
AF
593- **Another set of PHPDoc fixes
594 ([22522](https://github.com/civicrm/civicrm-core/pull/22522))**
9972cde3 595
d972c4ff
AF
596- **Fix more phpdoc comments in member links functions
597 ([22521](https://github.com/civicrm/civicrm-core/pull/22521))**
9972cde3 598
b57b29e7 599- **Fix PHP comments
d972c4ff 600 ([22515](https://github.com/civicrm/civicrm-core/pull/22515))**
9972cde3 601
d972c4ff
AF
602- **Merge function back into parent function
603 ([22516](https://github.com/civicrm/civicrm-core/pull/22516))**
9972cde3 604
d972c4ff
AF
605- **Simplify variables pass in & out of function
606 ([22439](https://github.com/civicrm/civicrm-core/pull/22439))**
9972cde3 607
d972c4ff
AF
608- **Clean up input and outputs
609 ([22440](https://github.com/civicrm/civicrm-core/pull/22440))**
9972cde3 610
d972c4ff
AF
611- **Tidy CRM_Report_Page_Options code
612 ([22432](https://github.com/civicrm/civicrm-core/pull/22432))**
9972cde3 613
d972c4ff
AF
614- **Refactor buildPremiumPreviewBlock function to make intended usage clearer
615 ([22541](https://github.com/civicrm/civicrm-core/pull/22541))**
9972cde3 616
d972c4ff
AF
617- **Fix class references in phpdoc comments
618 ([22434](https://github.com/civicrm/civicrm-core/pull/22434))**
9972cde3 619
d972c4ff
AF
620- **Contact BAO - Deprecate unused function
621 ([22610](https://github.com/civicrm/civicrm-core/pull/22610))**
9972cde3 622
d972c4ff
AF
623- **report cleanup - no functional change
624 ([22611](https://github.com/civicrm/civicrm-core/pull/22611))**
9972cde3 625
d972c4ff
AF
626- **Split View Relationship tpl ito own file
627 ([22617](https://github.com/civicrm/civicrm-core/pull/22617))**
9972cde3 628
d972c4ff
AF
629- **Fix inaccuracy in docblock for method calculateBaseScheduleDate
630 ([22631](https://github.com/civicrm/civicrm-core/pull/22631))**
9972cde3 631
d972c4ff
AF
632- **Resolve inaccuracies in CRM_Core_BAO_File::attachmentInfo docblock
633 ([22629](https://github.com/civicrm/civicrm-core/pull/22629))**
9972cde3 634
d972c4ff
AF
635- **Tidy up functions related to printing.
636 ([22601](https://github.com/civicrm/civicrm-core/pull/22601))**
9972cde3 637
d972c4ff
AF
638- **Do not pass in tablename
639 ([22625](https://github.com/civicrm/civicrm-core/pull/22625))**
9972cde3 640
d972c4ff
AF
641- **More phpcbs code cleanups
642 ([22551](https://github.com/civicrm/civicrm-core/pull/22551))**
9972cde3 643
d972c4ff
AF
644- **Resolve docblock inaccuracy in CRM_Contribute_Form_Task_TaskTrait
645 ([22646](https://github.com/civicrm/civicrm-core/pull/22646))**
9972cde3 646
d972c4ff
AF
647- **Contributor key: Add Ian Wilson
648 ([22781](https://github.com/civicrm/civicrm-core/pull/22781))**
9972cde3 649
d972c4ff
AF
650- **Bump follow-redirects from 1.11.0 to 1.14.7
651 ([22696](https://github.com/civicrm/civicrm-core/pull/22696))**
9972cde3 652
d972c4ff
AF
653- **Bump engine.io from 4.1.1 to 4.1.2
654 ([22695](https://github.com/civicrm/civicrm-core/pull/22695))**
9972cde3 655
d972c4ff
AF
656- **Bump ansi-regex from 5.0.0 to 5.0.1
657 ([22693](https://github.com/civicrm/civicrm-core/pull/22693))**
9972cde3 658
d972c4ff
AF
659- **Bump log4js from 6.3.0 to 6.4.1
660 ([22694](https://github.com/civicrm/civicrm-core/pull/22694))**
9972cde3 661
d972c4ff
AF
662- **Update composer.json for composer 2.2 allow-plugins
663 ([22692](https://github.com/civicrm/civicrm-core/pull/22692))**
9972cde3 664
d972c4ff
AF
665- **Follow up fn removal
666 ([22556](https://github.com/civicrm/civicrm-core/pull/22556))**
9972cde3 667
d972c4ff
AF
668- **Fully remove contactAB function
669 ([22485](https://github.com/civicrm/civicrm-core/pull/22485))**
9972cde3 670
d972c4ff
AF
671- **Remove support for deprecated key
672 ([22443](https://github.com/civicrm/civicrm-core/pull/22443))**
9972cde3 673
d972c4ff
AF
674- **Remove duplicate file
675 ([22569](https://github.com/civicrm/civicrm-core/pull/22569))**
9972cde3 676
d972c4ff
AF
677- **Remove obsolete scripts
678 ([22549](https://github.com/civicrm/civicrm-core/pull/22549))**
9972cde3 679
d972c4ff
AF
680- **Remove method getWordReplacement.
681 ([22577](https://github.com/civicrm/civicrm-core/pull/22577))**
9972cde3 682
d972c4ff
AF
683- **Remove unused variable
684 ([22545](https://github.com/civicrm/civicrm-core/pull/22545))**
9972cde3 685
d972c4ff
AF
686- **Remove some old scripts
687 ([22534](https://github.com/civicrm/civicrm-core/pull/22534))**
9972cde3 688
d972c4ff
AF
689- **Remove handling for impossible array
690 ([22494](https://github.com/civicrm/civicrm-core/pull/22494))**
9972cde3 691
d972c4ff
AF
692- **Remove obsolete postIPN script
693 ([22550](https://github.com/civicrm/civicrm-core/pull/22550))**
9972cde3 694
d972c4ff
AF
695- **Remove / deprecate case param handling
696 ([22420](https://github.com/civicrm/civicrm-core/pull/22420))**
9972cde3 697
d972c4ff
AF
698- **Remove useless function
699 ([22585](https://github.com/civicrm/civicrm-core/pull/22585))**
9972cde3 700
d972c4ff
AF
701- **Remove param default
702 ([22590](https://github.com/civicrm/civicrm-core/pull/22590))**
9972cde3 703
d972c4ff
AF
704- **Remove htmlFile validation rule, as it can't possibly work.
705 ([22425](https://github.com/civicrm/civicrm-core/pull/22425))**
9972cde3 706
d972c4ff
AF
707- **Remove broken script
708 ([22473](https://github.com/civicrm/civicrm-core/pull/22473))**
9972cde3 709
d972c4ff
AF
710- **Remove unreachable else
711 ([22406](https://github.com/civicrm/civicrm-core/pull/22406))**
9972cde3 712
d972c4ff
AF
713- **Remove & deprecate silly function
714 ([22456](https://github.com/civicrm/civicrm-core/pull/22456))**
9972cde3 715
d972c4ff
AF
716- **Remove always-true-if
717 ([22486](https://github.com/civicrm/civicrm-core/pull/22486))**
9972cde3 718
d972c4ff
AF
719- **Remove seemingly unreachable help text
720 ([22469](https://github.com/civicrm/civicrm-core/pull/22469))**
9972cde3 721
d972c4ff
AF
722- **Remove unused variable
723 ([22462](https://github.com/civicrm/civicrm-core/pull/22462))**
9972cde3 724
d972c4ff
AF
725- **Remove IF that only loops through one value
726 ([22455](https://github.com/civicrm/civicrm-core/pull/22455))**
9972cde3 727
d972c4ff
AF
728- **Remove if & foreach that no longer do anything
729 ([22447](https://github.com/civicrm/civicrm-core/pull/22447))**
9972cde3 730
b57b29e7 731- **Remove call to PHP 4 function
d972c4ff 732 ([22446](https://github.com/civicrm/civicrm-core/pull/22446))**
9972cde3 733
d972c4ff
AF
734- **Remove empty check
735 ([22444](https://github.com/civicrm/civicrm-core/pull/22444))**
9972cde3 736
d972c4ff
AF
737- **Remove unreachable, nonsensical code
738 ([22518](https://github.com/civicrm/civicrm-core/pull/22518))**
9972cde3 739
d972c4ff
AF
740- **Remove deprecated code
741 ([22411](https://github.com/civicrm/civicrm-core/pull/22411))**
9972cde3 742
d972c4ff
AF
743- **Remove check for contact_check as it is always an array here
744 ([22407](https://github.com/civicrm/civicrm-core/pull/22407))**
9972cde3 745
d972c4ff
AF
746- **Remove unreachable code
747 ([22594](https://github.com/civicrm/civicrm-core/pull/22594))**
9972cde3 748
d972c4ff
AF
749- **Remove unnecessary pass-by-ref
750 ([22397](https://github.com/civicrm/civicrm-core/pull/22397))**
9972cde3 751
d972c4ff
AF
752- **Remove always-true IF
753 ([22399](https://github.com/civicrm/civicrm-core/pull/22399))**
9972cde3 754
d972c4ff
AF
755- **Remove deprecated language construct
756 ([22627](https://github.com/civicrm/civicrm-core/pull/22627))**
9972cde3 757
d972c4ff
AF
758- **Remove isset from online contribution receipt
759 ([22615](https://github.com/civicrm/civicrm-core/pull/22615))**
9972cde3 760
d972c4ff
AF
761- **Remove unused invalidProfiles variable, and simplify template.
762 ([22704](https://github.com/civicrm/civicrm-core/pull/22704))**
9972cde3 763
b57b29e7 764- **(REF) Switch to using new `CRM_Core_Component::isEnabled()`
d972c4ff 765 ([22687](https://github.com/civicrm/civicrm-core/pull/22687))**
9972cde3 766
b57b29e7 767- **(REF) Remove unused variable
d972c4ff 768 ([22398](https://github.com/civicrm/civicrm-core/pull/22398))**
9972cde3 769
b57b29e7 770- **(REF) Tidy up group.tpl
d972c4ff 771 ([22668](https://github.com/civicrm/civicrm-core/pull/22668))**
9972cde3 772
b57b29e7 773- **(REF) Switch OptionGroup BAO to use new centralized logic to make name from
d972c4ff 774 title ([22654](https://github.com/civicrm/civicrm-core/pull/22654))**
9972cde3 775
b57b29e7 776- **(REF) Rename variable to be meaningful
d972c4ff 777 ([22431](https://github.com/civicrm/civicrm-core/pull/22431))**
9972cde3 778
b57b29e7 779- **(REF) Improve APIv4 save functions
d972c4ff 780 ([22403](https://github.com/civicrm/civicrm-core/pull/22403))**
9972cde3 781
d972c4ff
AF
782- **(REF) CRM_Core_Resources - Limit visibility of `getEntityRefMetadata`
783 ([22511](https://github.com/civicrm/civicrm-core/pull/22511))**
9972cde3 784
d972c4ff
AF
785- **(REF) ContactUtils - Rename local variables
786 ([22510](https://github.com/civicrm/civicrm-core/pull/22510))**
9972cde3 787
b57b29e7 788- **(REF) CoreResources - Simplify disabled component check
d972c4ff 789 ([22506](https://github.com/civicrm/civicrm-core/pull/22506))**
9972cde3 790
d972c4ff
AF
791- **(REF) Remove constructors that do nothing
792 ([22544](https://github.com/civicrm/civicrm-core/pull/22544))**
9972cde3 793
d972c4ff
AF
794- **(REF) Extract function `CRM_Core_Component::isEnabled()`
795 ([22567](https://github.com/civicrm/civicrm-core/pull/22567))**
9972cde3 796
b57b29e7 797- **(REF) SearchKit docblock cleanup
d972c4ff 798 ([22603](https://github.com/civicrm/civicrm-core/pull/22603))**
9972cde3 799
b57b29e7 800- **(REF) SearchKit - Function extraction
d972c4ff 801 ([22598](https://github.com/civicrm/civicrm-core/pull/22598))**
9972cde3 802
b57b29e7 803- **(REF) SearchKit - Simplify import/export popup code
d972c4ff 804 ([22507](https://github.com/civicrm/civicrm-core/pull/22507))**
9972cde3 805
b57b29e7 806- **(REF) Upgrade jQuery UI to 1.13.0
d972c4ff 807 ([22576](https://github.com/civicrm/civicrm-core/pull/22576))**
9972cde3 808
b57b29e7 809- **(REF) Components - Use extracted function
d972c4ff 810 ([22573](https://github.com/civicrm/civicrm-core/pull/22573))**
9972cde3 811
b57b29e7 812- **(REF) SavedSearch - Deprecate/remove redundant/unused functions
d972c4ff 813 ([22542](https://github.com/civicrm/civicrm-core/pull/22542))**
9972cde3 814
b57b29e7 815- **(REF) Use CRM_Contact_BAO_ContactType::basicTypes()
d972c4ff 816 ([22520](https://github.com/civicrm/civicrm-core/pull/22520))**
9972cde3 817
b57b29e7 818- **(REF) Remove unused _colours property
d972c4ff 819 ([22525](https://github.com/civicrm/civicrm-core/pull/22525))**
9972cde3 820
b57b29e7 821- **(REF) Tidy up formatting in gotv.tpl, remove extra </div>
d972c4ff 822 ([22433](https://github.com/civicrm/civicrm-core/pull/22433))**
9972cde3 823
b57b29e7 824- **(REF) Stop returning unused variables
d972c4ff 825 ([22401](https://github.com/civicrm/civicrm-core/pull/22401))**
9972cde3 826
b57b29e7 827- **(REF) Centralize BAO handling of custom data
d972c4ff 828 ([22426](https://github.com/civicrm/civicrm-core/pull/22426))**
9972cde3 829
b57b29e7 830- **(REF) Remove handling for no organization being passed
d972c4ff 831 ([22395](https://github.com/civicrm/civicrm-core/pull/22395))**
9972cde3 832
b57b29e7 833- **(REF) APIv4 - Rename trait 'SoftDelete' to 'SoftDeleteEntity'
d972c4ff 834 ([22662](https://github.com/civicrm/civicrm-core/pull/22662))**
9972cde3 835
b57b29e7 836- **(REF) Cleanup Contact BAO variables
d972c4ff 837 ([22609](https://github.com/civicrm/civicrm-core/pull/22609))**
9972cde3 838
d972c4ff
AF
839- **(REF) Queues - Expand docblocks. Extract SQL trait.
840 ([22681](https://github.com/civicrm/civicrm-core/pull/22681))**
9972cde3 841
b57b29e7 842- **(REF) APIv4 - Deprecate and stop using PreSaveSubscriber
d972c4ff 843 ([22648](https://github.com/civicrm/civicrm-core/pull/22648))**
9972cde3 844
b57b29e7 845- **(REF) CustomField Admin - Decouple page code from form code
d972c4ff 846 ([22519](https://github.com/civicrm/civicrm-core/pull/22519))**
9972cde3 847
b57b29e7 848- **(NFC) Fix typo in docblock
d972c4ff
AF
849 ([22409](https://github.com/civicrm/civicrm-core/pull/22409))**
850
b57b29e7 851- **(NFC) Tidy up phpdoc in CRM_Utils_QueryFormatter
d972c4ff
AF
852 ([22423](https://github.com/civicrm/civicrm-core/pull/22423))**
853
b57b29e7 854- **(NFC) Update test example template and regenerate examples
d972c4ff
AF
855 ([22531](https://github.com/civicrm/civicrm-core/pull/22531))**
856
857- **(NFC) Correct type hints for bad null default values
858 ([22600](https://github.com/civicrm/civicrm-core/pull/22600))**
859
860- **(NFC) Minor phpdoc fixes to
861 CRM_Mailing_Event_BAO_Unsubscribe::send_unsub_response
862 ([22574](https://github.com/civicrm/civicrm-core/pull/22574))**
863
864- **(NFC) CiviReport, etal - More phpdoc fixes
865 ([22565](https://github.com/civicrm/civicrm-core/pull/22565))**
866
867- **(NFC) Minor amends to getGroupByFromSelectColumns
868 ([22575](https://github.com/civicrm/civicrm-core/pull/22575))**
869
870- **(NFC) Correctly document CRM_Utils_Hook::pre to allow null ID
871 ([22562](https://github.com/civicrm/civicrm-core/pull/22562))**
872
873- **(NFC) Update PHPDoc for alterDeferredRevenueItems
874 ([22563](https://github.com/civicrm/civicrm-core/pull/22563))**
875
876- **(NFC) Comment fixes Stricter phpcs
877 ([22555](https://github.com/civicrm/civicrm-core/pull/22555))**
878
879- **(NFC) Remaining css phpcs fixes
880 ([22553](https://github.com/civicrm/civicrm-core/pull/22553))**
881
b57b29e7 882- **(NFC) Fixes to the type definitions for contactType methods
d972c4ff
AF
883 ([22524](https://github.com/civicrm/civicrm-core/pull/22524))**
884
885- **(NFC) Civi::pipe - Swap various quotes
886 ([22503](https://github.com/civicrm/civicrm-core/pull/22503))**
887
888- **NFC: Clean up description for alterDisplayName hook
889 ([22501](https://github.com/civicrm/civicrm-core/pull/22501))**
890
d7dbd9d4
TO
891- **(NFC) Membership Tests - Update assertions to match behavior circa leap-day
892 ([22871](https://github.com/civicrm/civicrm-core/pull/22871))**
893
894- **(NFC) Update Contribution Recur DAO following regen
895 ([22858](https://github.com/civicrm/civicrm-core/pull/22858))**
896
897- **(NFC) RestTest - Skip testNotCMSUser_q when it's not supported
898 ([22817](https://github.com/civicrm/civicrm-core/pull/22817))**
899
d972c4ff
AF
900- **APIv4 - Fix test
901 ([22414](https://github.com/civicrm/civicrm-core/pull/22414))**
902
903- **Test cleanup - remove direct calls to BAO_Membership::add
904 ([22497](https://github.com/civicrm/civicrm-core/pull/22497))**
905
906- **Unit tests for 22429 and apply same treatment to other money format
907 functions ([22442](https://github.com/civicrm/civicrm-core/pull/22442))**
908
b57b29e7 909- **Simplify APIv4 conformance test
d972c4ff
AF
910 ([22579](https://github.com/civicrm/civicrm-core/pull/22579))**
911
912- **Add unit test on updateGreeting & remove deprecated fn call
913 ([22482](https://github.com/civicrm/civicrm-core/pull/22482))**
914
915- **[test] - Add test coverage for adjusting custom group weights
916 ([22512](https://github.com/civicrm/civicrm-core/pull/22512))**
917
918- **Fix testMultipleMembershipsContribution to use order api
919 ([22274](https://github.com/civicrm/civicrm-core/pull/22274))**
920
921- **Port test form earlier PR
922 ([22502](https://github.com/civicrm/civicrm-core/pull/22502))**
923
b57b29e7 924- **Test for APIv4 contact delete bug
d972c4ff
AF
925 ([dev/core#2757](https://lab.civicrm.org/dev/core/-/issues/2757):
926 [22458](https://github.com/civicrm/civicrm-core/pull/22458))**
9972cde3
AH
927
928## <a name="credits"></a>Credits
929
930This release was developed by the following code authors:
931
d972c4ff
AF
932AGH Strategies - Andie Hunt; Agileware - Francis Whittle, Justin Freeman;
933BrightMinded Ltd - Bradley Taylor; Christian Wach; CiviCoop - Klaas Eikelboom;
934CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC -
935Mathieu Lutfy; Dave D; Freeform Solutions - Herb van den Dool; Jens Schuppe; JMA
936Consulting - Seamus Lee; Joinery - Allen Shaw; Lemniscus - Noah Miller;
937Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire;
938PERORA SRL - Samuele Masetto; Registered Nurses' Association of Ontario - Ian
939Wilson; Romain Thouvenin; Skvare - Sunil Pawar; Third Sector Design - Kurund
940Jalmi; Wikimedia Foundation - Eileen McNaughton
9972cde3
AH
941
942Most authors also reviewed code for this release; in addition, the following
943reviewers contributed their comments:
944
d972c4ff
AF
945Andy Burns; Artful Robot - Rich Lott; Betty Dolfing; Blackfly Solutions - Alan
946Dixon; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma; Coop
947SymbioTIC - Shane Bill; Fuzion - Luke Stewart; in2part; JMA Consulting - Joe
948Murray, Monish Deb; Korlon - Stuart Gaston; Mikey O'Toole; Peter Boling; Tadpole
949Collective - Kevin Cristiano; Wildsight - Lars Sanders-Green