Merge pull request #23925 from seamuslee001/type_hints_2
[civicrm-core.git] / release-notes / 5.49.0.md
1 # CiviCRM 5.49.0
2
3 Released May 4, 2022
4
5 - **[Synopsis](#synopsis)**
6 - **[Features](#features)**
7 - **[Bugs resolved](#bugs)**
8 - **[Miscellany](#misc)**
9 - **[Credits](#credits)**
10 - **[Feedback](#feedback)**
11
12 ## <a name="synopsis"></a>Synopsis
13
14 | *Does this version...?* | |
15 |:--------------------------------------------------------------- |:-------:|
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?** | **yes** |
21 | **Introduce features?** | **yes** |
22 | **Fix bugs?** | **yes** |
23
24 ## <a name="features"></a>Features
25
26 ### Core CiviCRM
27
28 - **Add created & modified dates to "View Relationship" screen
29 ([22909](https://github.com/civicrm/civicrm-core/pull/22909))**
30
31 Adds created and modified dates to the "View Relationship" screen.
32
33 - **Replace entity icons
34 ([dev/user-interface#26](https://lab.civicrm.org/dev/user-interface/-/issues/26):
35 [23094](https://github.com/civicrm/civicrm-core/pull/23094) and
36 [23073](https://github.com/civicrm/civicrm-core/pull/23073))**
37
38 Displays font-awesome icons instead of the old image gifs in the user
39 interface for contact types and recent items.
40
41 - **Raise number of websites available to inline edit
42 ([dev/core#3106](https://lab.civicrm.org/dev/core/-/issues/3106):
43 [22908](https://github.com/civicrm/civicrm-core/pull/22908))**
44
45 Raises the max number of inline editable websites from 5 to 25.
46
47 - **Add in APIv4 Logging Entity
48 ([23129](https://github.com/civicrm/civicrm-core/pull/23129))**
49
50 Exposes the civicrm_log table to APIv4.
51
52 - **Add APIv4 for RecentItems
53 ([23099](https://github.com/civicrm/civicrm-core/pull/23099))**
54
55 Exposes the list of recently viewed items to APIv4.
56
57 - **Enable APIv4 export action on UFGroup and UFField.
58 ([22832](https://github.com/civicrm/civicrm-core/pull/22832))**
59
60 Makes the export action available on the UFGroup and UFField Entities in
61 APIv4.
62
63 - **SearchKit - Allow creation of new records via in-place edit
64 ([22376](https://github.com/civicrm/civicrm-core/pull/22376))**
65
66 Allows e.g. an email record to be created if one does not already exist via
67 in-place edit.
68
69 - **SearchKit - mark stable
70 ([23010](https://github.com/civicrm/civicrm-core/pull/23010))**
71
72 Marks SearchKit as stable.
73
74 - **Search Kit - Auto-enable during normal installation
75 ([22952](https://github.com/civicrm/civicrm-core/pull/22952))**
76
77 Auto-enables SearchKit during installation.
78
79 - **SearchKit - Add CiviMail integration
80 ([22808](https://github.com/civicrm/civicrm-core/pull/22808))**
81
82 Makes it so SearchKit works with CiviMail.
83
84 - **SearchKit - Improve checkbox UX for bulk actions
85 ([22906](https://github.com/civicrm/civicrm-core/pull/22906))**
86
87 Improves user experience for SearchKit bulk actions.
88
89 - **SearchKit - Add icon support
90 ([23034](https://github.com/civicrm/civicrm-core/pull/23034))**
91
92 Adds Icon support to SearchKit.
93
94 - **Afform - compose layouts with multiple SearchKit displays
95 ([22887](https://github.com/civicrm/civicrm-core/pull/22887))**
96
97 Allows multiple search displays on an afform, which permits composing a
98 dashboard-like layout.
99
100 - **Afform - Easier layout creation with predefined container styles and
101 built-in title ([22975](https://github.com/civicrm/civicrm-core/pull/22975))**
102
103 This makes layouts easier to make, by adding predefined "Panel Pane" and
104 "Collapsible" styles which can be applied to any container element. It also
105 makes container titles easier to work with, and fixes some issues with saving
106 blocks.
107
108 - **Add option_value_fields metadata
109 ([22996](https://github.com/civicrm/civicrm-core/pull/22996))**
110
111 Adds metadata for OptionValues.
112
113 - **Add action links for group.
114 ([22912](https://github.com/civicrm/civicrm-core/pull/22912))**
115
116 Add links for group.
117
118 ### CiviCase
119
120 - **Add case ID and make subject optional for case detail report
121 ([22973](https://github.com/civicrm/civicrm-core/pull/22973))**
122
123 Improves case detail report by making the case ID available and making the
124 subject field optional.
125
126 ### CiviContribute
127
128 - **Add support for financial account custom fields
129 ([23067](https://github.com/civicrm/civicrm-core/pull/23067))**
130
131 Enables support for custom fields on Financial Accounts.
132
133 - **Add page id and template type as data attributes in contribution templates
134 ([21945](https://github.com/civicrm/civicrm-core/pull/21945))**
135
136 Adds more details about the page id and template type to the html of the
137 contribution templates.
138
139 - **Proposal - make future recurring contribution instances modifiable & not
140 fail if the only contribution is deleted. (Work towards
141 [dev/financial#6](https://lab.civicrm.org/dev/financial/-/issues/6):
142 [21473](https://github.com/civicrm/civicrm-core/pull/21473) and
143 [21470](https://github.com/civicrm/civicrm-core/pull/21470))**
144
145 Update the recurring contribution when the template contribution is edited.
146 Fixes the creation of the template contribution when it has custom data.
147
148 ### CiviMember
149
150 - **Add membership_id as a reference to the row
151 ([23049](https://github.com/civicrm/civicrm-core/pull/23049))**
152
153 Add membership id as a reference to each row on contact dashboard.
154
155 ### Drupal Integration
156
157 - **What if we stopped publishing Drupal 6 releases in 2022?
158 ([22960](https://github.com/civicrm/civicrm-core/pull/22960))**
159
160 Ends support for Drupal6 integration.
161
162 - **civicrm.drush.inc - Add 'civicrm-pipe' subcommand
163 ([652](https://github.com/civicrm/civicrm-drupal/pull/652))**
164
165 Adds support for subcommand `drush civicrm-pipe` (`drush cvpipe`).
166
167 ## <a name="bugs"></a>Bugs resolved
168
169 ### Core CiviCRM
170
171
172 - **Preserve previous tab when navigating to and from contact page
173 ([dev/core#3003](https://lab.civicrm.org/dev/core/-/issues/3003):
174 [22316](https://github.com/civicrm/civicrm-core/pull/22316))**
175
176 - **cannot set serialize=0 via api3 when creating custom fields
177 ([dev/core#2524](https://lab.civicrm.org/dev/core/-/issues/2524):
178 [22934](https://github.com/civicrm/civicrm-core/pull/22934))**
179
180 - **Cannot remove Group Organisation selection in multisite setup
181 ([dev/core#2633](https://lab.civicrm.org/dev/core/-/issues/2633):
182 [20437](https://github.com/civicrm/civicrm-core/pull/20437))**
183
184 - **Contact Type get Changed after renewal with credit card
185 ([dev/core#2833](https://lab.civicrm.org/dev/core/-/issues/2833):
186 [21467](https://github.com/civicrm/civicrm-core/pull/21467))**
187
188 - **Users cannot be created if no unsupervised deduping rule exists
189 ([dev/core#2918](https://lab.civicrm.org/dev/core/-/issues/2918):
190 [22804](https://github.com/civicrm/civicrm-core/pull/22804))**
191
192 - **Filename in content-disposition should have extension
193 ([dev/core#3034](https://lab.civicrm.org/dev/core/-/issues/3034):
194 [22532](https://github.com/civicrm/civicrm-core/pull/22532) and
195 [23083](https://github.com/civicrm/civicrm-core/pull/23083))**
196
197 Ensures that filename contains the file extension for PDFs.
198
199 - **Enhance EntityRef to widget to show create new option when contacts are
200 restricted by multiple contact type
201 ([dev/core#3082](https://lab.civicrm.org/dev/core/-/issues/3082):
202 [22830](https://github.com/civicrm/civicrm-core/pull/22830))**
203
204 - **Checkbox fields on profile admin page can't be unchecked
205 ([dev/core#3085](https://lab.civicrm.org/dev/core/-/issues/3085):
206 [22916](https://github.com/civicrm/civicrm-core/pull/22916))**
207
208 - **CRM_Core_BAO_Address::addGeocoderData mishandling NULL geocodes
209 ([dev/core#3132](https://lab.civicrm.org/dev/core/-/issues/3132):
210 [23009](https://github.com/civicrm/civicrm-core/pull/23009))**
211
212 - **Gender field no longer working
213 ([dev/core#3142](https://lab.civicrm.org/dev/core/-/issues/3142):
214 [23053](https://github.com/civicrm/civicrm-core/pull/23053))**
215
216 - **Upgrade to CiviCRM 5.48.0 fails with No such Table
217 ([dev/core#3166](https://lab.civicrm.org/dev/core/-/issues/3166):
218 [23148](https://github.com/civicrm/civicrm-core/pull/23148))**
219
220 - **Allow API4 match to match an empty value
221 ([22882](https://github.com/civicrm/civicrm-core/pull/22882))**
222
223 - **Fix copy button float in APIv4 Explorer
224 ([22978](https://github.com/civicrm/civicrm-core/pull/22978))**
225
226 - **APIv4 - Get dynamic list of entity types
227 ([22826](https://github.com/civicrm/civicrm-core/pull/22826))**
228
229 Switches APIv4 Entity.get to dynamically fetch a list of entity types instead
230 of using a hardcoded list.
231
232 - **APIv4 Explorer - Adjust 'Index' field to fit better on narrow screens
233 ([23146](https://github.com/civicrm/civicrm-core/pull/23146))**
234
235 - **SearchKit - Fix joins when RelationshipCache is base search entity
236 ([23066](https://github.com/civicrm/civicrm-core/pull/23066))**
237
238 - **SearchKit - Fix page size size
239 ([22927](https://github.com/civicrm/civicrm-core/pull/22927))**
240
241 Shrinks the page size input to fit on smaller screens or dashboards.
242
243 - **SearchKit - Fix "all selected" checkbox when selecting a single page
244 ([23003](https://github.com/civicrm/civicrm-core/pull/23003))**
245
246 - **SearchKit - Ensure filters work with multiple search displays on a form
247 ([23018](https://github.com/civicrm/civicrm-core/pull/23018))**
248
249 - **Afform - Fix collapsible style
250 ([23011](https://github.com/civicrm/civicrm-core/pull/23011))**
251
252 - **Afform - reset managed entities when deleting a dashlet
253 ([22957](https://github.com/civicrm/civicrm-core/pull/22957))**
254
255 - **Link to Google Maps over HTTPs
256 ([23044](https://github.com/civicrm/civicrm-core/pull/23044))**
257
258 - **noexpand seems to never be assigned
259 ([23005](https://github.com/civicrm/civicrm-core/pull/23005))**
260
261 - **During upgrade log that it ran the sql when there is just a sql file and no
262 corresponding task
263 ([22939](https://github.com/civicrm/civicrm-core/pull/22939))**
264
265 - **Fix OptionValue BAO to call pre/post hooks to prevent force-reset of managed
266 option values ([23130](https://github.com/civicrm/civicrm-core/pull/23130))**
267
268 - **Copy Clear value in batch update process for radio button field
269 ([22941](https://github.com/civicrm/civicrm-core/pull/22941))**
270
271 - **[WIP] Schema - Fix boolean fields in various tables
272 ([22954](https://github.com/civicrm/civicrm-core/pull/22954))**
273
274 - **Prevent escaping on cancelInfo_show_ids
275 ([23077](https://github.com/civicrm/civicrm-core/pull/23077))**
276
277 - **Do not default-escape upgrade linkes + Enotice fix on Extension screen
278 ([23058](https://github.com/civicrm/civicrm-core/pull/23058))**
279
280 - **Fix notices on Task.tpl (grumpy mode)
281 ([23006](https://github.com/civicrm/civicrm-core/pull/23006))**
282
283 - **Remove isset(taxAmount) from membership online receipt
284 ([23017](https://github.com/civicrm/civicrm-core/pull/23017))**
285
286 - **SampleData - Fix missing option value names
287 ([23000](https://github.com/civicrm/civicrm-core/pull/23000))**
288
289 - **Fix undefined index by making sure that is_template is always defined
290 ([22993](https://github.com/civicrm/civicrm-core/pull/22993))**
291
292 - **Don't lose search criteria for smart group built with search builder
293 ([23052](https://github.com/civicrm/civicrm-core/pull/23052))**
294
295 - **Fix double encoding of document title on Contact view form
296 ([22928](https://github.com/civicrm/civicrm-core/pull/22928))**
297
298 - **Group Contact create -> fix to use post hook for subscription records
299 ([22419](https://github.com/civicrm/civicrm-core/pull/22419))**
300
301 - **Make note date required when creating note
302 ([22987](https://github.com/civicrm/civicrm-core/pull/22987))**
303
304 - **Respect zero value
305 ([23016](https://github.com/civicrm/civicrm-core/pull/23016))**
306
307 - **E-notice fix on pdfLetter
308 ([23007](https://github.com/civicrm/civicrm-core/pull/23007))**
309
310 - **Add chartEnabled to expectedSmartyVariables for reports
311 ([23045](https://github.com/civicrm/civicrm-core/pull/23045))**
312
313 Avoids another Smarty notice on reports which do not have charts enabled.
314
315 - **Re-fix enotice on templateSelected
316 ([23008](https://github.com/civicrm/civicrm-core/pull/23008))**
317
318 - **Notices on import - consolidate mapping variables
319 ([23119](https://github.com/civicrm/civicrm-core/pull/23119))**
320
321 - **Emit deprecated warning for typo version of hook_civicrm_links
322 ([23117](https://github.com/civicrm/civicrm-core/pull/23117))**
323
324 - **Fix enotice, simplify text on Saved field mapping
325 ([23114](https://github.com/civicrm/civicrm-core/pull/23114))**
326
327 - **Fixes issue with duplicate is_billing on inline address forms.
328 ([22850](https://github.com/civicrm/civicrm-core/pull/22850))**
329
330 - **Fix incorrect use of icon argument for crmButton function
331 ([23145](https://github.com/civicrm/civicrm-core/pull/23145))**
332
333 - **Fix smarty notices in billing form
334 ([22992](https://github.com/civicrm/civicrm-core/pull/22992))**
335
336 - **Avoid PHP notices in activity search
337 ([23093](https://github.com/civicrm/civicrm-core/pull/23093))**
338
339 - **Notice fixes in advanced search
340 ([22956](https://github.com/civicrm/civicrm-core/pull/22956))**
341
342 - **Avoid trailing spaces in trigger output
343 ([23069](https://github.com/civicrm/civicrm-core/pull/23069))**
344
345 - **Ensure formType is assigned to the template
346 ([23078](https://github.com/civicrm/civicrm-core/pull/23078))**
347
348 - **Ensure pay_later variables assigned to template
349 ([22971](https://github.com/civicrm/civicrm-core/pull/22971))**
350
351 - **Ensure some variables are assigned to the template
352 ([22972](https://github.com/civicrm/civicrm-core/pull/22972))**
353
354 - **Ensure soft credit types are assigned to the template
355 ([23037](https://github.com/civicrm/civicrm-core/pull/23037))**
356
357 - **Keep "EntityFile" records until after Symfony "delete" hooks fire
358 ([23002](https://github.com/civicrm/civicrm-core/pull/23002))**
359
360 - **Fix property declarations
361 ([22965](https://github.com/civicrm/civicrm-core/pull/22965))**
362
363 - **Schema - Fix boolean fields in civicrm_event and civicrm_contribution
364 ([22925](https://github.com/civicrm/civicrm-core/pull/22925))**
365
366 - **Do not default escape 'create new' links
367 ([22969](https://github.com/civicrm/civicrm-core/pull/22969))**
368
369 - **Do not escape hierarchical select
370 ([22991](https://github.com/civicrm/civicrm-core/pull/22991))**
371
372 - **Enotice fix in grumpy smarty mode
373 ([22970](https://github.com/civicrm/civicrm-core/pull/22970))**
374
375 - **Enotice fix (grumpy smarty)
376 ([22988](https://github.com/civicrm/civicrm-core/pull/22988))**
377
378 - **Enotice fixes
379 ([22989](https://github.com/civicrm/civicrm-core/pull/22989))**
380
381 - **Grumpy smarty - Never escape 'initHideBoxes'
382 ([22990](https://github.com/civicrm/civicrm-core/pull/22990))**
383
384 - **Remove bad use of PHP assert, removed in PHP 8.0
385 ([22981](https://github.com/civicrm/civicrm-core/pull/22981))**
386
387 - **Split mailing label formatting out from main format
388 ([22463](https://github.com/civicrm/civicrm-core/pull/22463))**
389
390 ### CiviCase
391
392 - **Fix issues with case sorting/searching from case dashboard
393 ([21514](https://github.com/civicrm/civicrm-core/pull/21514))**
394
395 ### CiviContribute
396
397 - **Accounting entries incorrect in a number of cases... especially with pending
398 refunds and overpayments (Work towards
399 [dev/financial#186](https://lab.civicrm.org/dev/financial/-/issues/186):
400 [23076](https://github.com/civicrm/civicrm-core/pull/23076))**
401
402 Do not display partially paid & partially refunded for selection on edit.
403
404 - **PCP: Account creation profile does not support contact image
405 ([dev/core#2986](https://lab.civicrm.org/dev/core/-/issues/2986):
406 [22223](https://github.com/civicrm/civicrm-core/pull/22223))**
407
408 - **Avoid PHP notices from smarty on pricefield table
409 ([23046](https://github.com/civicrm/civicrm-core/pull/23046))**
410
411 - **Remove more isset from offline receipt
412 ([23072](https://github.com/civicrm/civicrm-core/pull/23072))**
413
414 - **do not URL Encode parameters for PayFlowPro
415 ([23054](https://github.com/civicrm/civicrm-core/pull/23054))**
416
417 - **Remove grumpy-mode-incompatible isset in payment notification
418 ([23014](https://github.com/civicrm/civicrm-core/pull/23014))**
419
420 - **Cleanup variable assigns in ContributionPage confirm
421 ([22902](https://github.com/civicrm/civicrm-core/pull/22902))**
422
423 - **First recurring payment (paypal ipn) - remove redundant status set,
424 start_date change
425 ([23081](https://github.com/civicrm/civicrm-core/pull/23081))**
426
427 - **Remove issets on pay_later_receipt
428 ([23004](https://github.com/civicrm/civicrm-core/pull/23004))**
429
430 - **Simplify fix for smarty/php notice on contributionview
431 ([22886](https://github.com/civicrm/civicrm-core/pull/22886))**
432
433 - **Add paymentstatus helpers for doPayment and separate return params
434 ([22680](https://github.com/civicrm/civicrm-core/pull/22680))**
435
436 - **Expose payment processor error from PaymentProcessor.pay
437 ([22900](https://github.com/civicrm/civicrm-core/pull/22900))**
438
439 - **Ensure pay_later_text is always assigned
440 ([22977](https://github.com/civicrm/civicrm-core/pull/22977))**
441
442 - **Stop passing settings into getTaxLabel
443 ([23040](https://github.com/civicrm/civicrm-core/pull/23040))**
444
445 - **Assign totalTaxAmount more consistently
446 ([23038](https://github.com/civicrm/civicrm-core/pull/23038))**
447
448 ### CiviEvent
449
450 - **Remove isset from event registration receipt
451 ([23064](https://github.com/civicrm/civicrm-core/pull/23064))**
452
453 - **Add workflow template for offline event
454 ([22904](https://github.com/civicrm/civicrm-core/pull/22904))**
455
456 - **Event Location fixes
457 ([23041](https://github.com/civicrm/civicrm-core/pull/23041))**
458
459 - **Remove issets from event_offline_receipt pay_later_text
460 ([23060](https://github.com/civicrm/civicrm-core/pull/23060))**
461
462 ### CiviMail
463
464 - **After upgrade to 5.48.0 Error: Mailing cannot be sent. There are missing or
465 invalid fields (subject,name,from_name,from_email,body)
466 ([dev/mail#107](https://lab.civicrm.org/dev/mail/-/issues/107):
467 [23141](https://github.com/civicrm/civicrm-core/pull/23141))**
468
469 - **CiviMail - Remove deprecated variable only used by Mosaico
470 ([22689](https://github.com/civicrm/civicrm-core/pull/22689))**
471
472 - **Set limit to 0 when processing send sms task
473 ([23166](https://github.com/civicrm/civicrm-core/pull/23166))**
474
475 ### CiviMember
476
477 - **Recurring membership term is incorrect when using price sets
478 ([dev/membership#41](https://lab.civicrm.org/dev/membership/-/issues/41):
479 [22825](https://github.com/civicrm/civicrm-core/pull/22825))**
480
481 - **Calculate lifetime memberships more accurately
482 ([22255](https://github.com/civicrm/civicrm-core/pull/22255))**
483
484 - **Enotice fix - membership search
485 ([23136](https://github.com/civicrm/civicrm-core/pull/23136))**
486
487 ## <a name="misc"></a>Miscellany
488
489 - **Add utils for managing schema to extension upgrader base class
490 ([22955](https://github.com/civicrm/civicrm-core/pull/22955))**
491
492 - **add classes to the membership userdashboard page
493 ([23021](https://github.com/civicrm/civicrm-core/pull/23021))**
494
495 - **Replace incorrect class comment
496 ([23043](https://github.com/civicrm/civicrm-core/pull/23043))**
497
498 - **Finish conversion of static function to non-static
499 ([23042](https://github.com/civicrm/civicrm-core/pull/23042))**
500
501 - **Bump minimist from 1.2.5 to 1.2.6
502 ([23090](https://github.com/civicrm/civicrm-core/pull/23090))**
503
504 - **Optimise isCustomDateField
505 ([22943](https://github.com/civicrm/civicrm-core/pull/22943))**
506
507 - **Access invoice_prefix setting directly
508 ([23039](https://github.com/civicrm/civicrm-core/pull/23039))**
509
510 - **Fix function calls to be non-static
511 ([23122](https://github.com/civicrm/civicrm-core/pull/23122))**
512
513 - **Fully deprecate `getTokenDetails`
514 ([22483](https://github.com/civicrm/civicrm-core/pull/22483))**
515
516 - **regenerate civicrm_generated
517 ([22917](https://github.com/civicrm/civicrm-core/pull/22917))**
518
519 - **Test cleanup (minor)
520 ([23112](https://github.com/civicrm/civicrm-core/pull/23112))**
521
522 - **Simplify class inheritance
523 ([23121](https://github.com/civicrm/civicrm-core/pull/23121))**
524
525 - **Tpl cleanup - whitespace, wrong closing tag
526 ([23124](https://github.com/civicrm/civicrm-core/pull/23124))**
527
528 - **Consolidate MapTable.tpl
529 ([23138](https://github.com/civicrm/civicrm-core/pull/23138))**
530
531 - **Test cleanup, deprecate ContributionSoft::retrieve
532 ([23106](https://github.com/civicrm/civicrm-core/pull/23106))**
533
534 - **Cleanup unnecessary variables
535 ([23111](https://github.com/civicrm/civicrm-core/pull/23111))**
536
537 - **Remove use of deprecated FILTER_SANITIZE_STRING
538 ([22982](https://github.com/civicrm/civicrm-core/pull/22982))**
539
540 - **Remove unnecessary pass-by-ref
541 ([23110](https://github.com/civicrm/civicrm-core/pull/23110))**
542
543 - **Remove unused variable
544 ([23113](https://github.com/civicrm/civicrm-core/pull/23113))**
545
546 - **Remove double return statement
547 ([23108](https://github.com/civicrm/civicrm-core/pull/23108))**
548
549 - **Remove use of overrideDefaultCurrency method from eventInfo page.
550 ([22802](https://github.com/civicrm/civicrm-core/pull/22802))**
551
552 - **Remove good intentions
553 ([23126](https://github.com/civicrm/civicrm-core/pull/23126))**
554
555 - **Remove unused private variables
556 ([23123](https://github.com/civicrm/civicrm-core/pull/23123))**
557
558 - **Remove 'in-between' class
559 ([23133](https://github.com/civicrm/civicrm-core/pull/23133))**
560
561 - **Remove unused property
562 ([23137](https://github.com/civicrm/civicrm-core/pull/23137))**
563
564 - **Remove unnecessary pass-by-ref
565 ([23132](https://github.com/civicrm/civicrm-core/pull/23132))**
566
567 - **Rename test class to reflect form
568 ([22903](https://github.com/civicrm/civicrm-core/pull/22903))**
569
570 - **Test usability fix
571 ([23096](https://github.com/civicrm/civicrm-core/pull/23096))**
572
573 - **Cleanup FinancialAccount BAO to use `writeRecord` and deprecate `add`
574 ([23079](https://github.com/civicrm/civicrm-core/pull/23079))**
575
576 - **[REF] Update Composer compile plugin
577 ([23088](https://github.com/civicrm/civicrm-core/pull/23088))**
578
579 - **[REF] Create polyfill function for array_key_first which only exists in
580 php7.3 and onwards
581 ([23095](https://github.com/civicrm/civicrm-core/pull/23095))**
582
583 - **[REF] Extract & stdise AmountBlockIsActive
584 ([22291](https://github.com/civicrm/civicrm-core/pull/22291))**
585
586 - **(REF) Schema - Fix boolean fields in various tables - Split commits
587 ([23134](https://github.com/civicrm/civicrm-core/pull/23134))**
588
589 - **REF - Split upgrade SQL into multiple tasks
590 ([22950](https://github.com/civicrm/civicrm-core/pull/22950))**
591
592 - **[REF] APIv4 - Use new class_args metadata to remove special handing
593 ([22853](https://github.com/civicrm/civicrm-core/pull/22853))**
594
595 - **REF Cleanup activity getBespokeTokens()
596 ([22974](https://github.com/civicrm/civicrm-core/pull/22974))**
597
598 - **[REF] Deprecate BAO_Contact::retrieve
599 ([22966](https://github.com/civicrm/civicrm-core/pull/22966))**
600
601 - **[NFC] - Compatibility for PHP-7.4/PHP-8
602 ([22962](https://github.com/civicrm/civicrm-core/pull/22962))**
603
604 - **[NFC] Superficial cleanup
605 ([22907](https://github.com/civicrm/civicrm-core/pull/22907))**
606
607 - **[NFC] Fix URL documenting Batch entity
608 ([23062](https://github.com/civicrm/civicrm-core/pull/23062))**
609
610 ## <a name="credits"></a>Credits
611
612 This release was developed by the following code authors:
613
614 AGH Strategies - Alice Frumin, Andie Hunt; Blackfly Solutions - Alan Dixon;
615 BrightMinded Ltd - Bradley Taylor; Christian Wach; Circle Interactive -
616 Pradeep Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten;
617 CiviDesk - Yashodha Chaku; Dave D; Future Processing - Adrian; Fuzion - Luke
618 Stewart; Ginkgo Street Labs - Michael Z Daryabeygi; iXiam - Vangelis Pantazis;
619 JMA Consulting - Monish Deb, Seamus Lee; Klangsoft - David Reedy Jr; Megaphone
620 Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Oxfam
621 Germany - Thomas Schüttler; PERORA SRL - Samuele Masetto; Progressive Technology
622 Project - Jamie McClelland; Skvare - Sunil Pawar; Tadpole Collective - Kevin
623 Cristiano; Third Sector Design - Kurund Jalmi; Wikimedia Foundation - Eileen
624 McNaughton
625
626 Most authors also reviewed code for this release; in addition, the following
627 reviewers contributed their comments:
628
629 Agileware - Justin Freeman; ALL IN APPLI; Artful Robot - Rich Lott;
630 Australian Greens - John Twyman; Betty Dolfing; Coop SymbioTIC - Mathieu Lutfy,
631 Samuel Vanhove, Shane Bill; Francesc Bassas i Bullich; JMA Consulting - Joe
632 Murray; Richard van Oosterhout; Semper IT - Karin Gerritsen;
633
634 ## <a name="feedback"></a>Feedback
635
636 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
637 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
638 and contact `@agh1`.