Merge pull request #23615 from totten/master-mysql-bump
[civicrm-core.git] / release-notes / 5.46.0.md
1 # CiviCRM 5.46.0
2
3 Released February 3, 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?** | **yes** |
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 - **re-jig demo roles to add restricted user
29 ([dev/core#2773](https://lab.civicrm.org/dev/core/-/issues/2773):
30 [22377](https://github.com/civicrm/civicrm-core/pull/22377))**
31
32 Adds an ACL to demo data.
33
34 - **When adding custom data set change default selected option
35 ([dev/core#2977](https://lab.civicrm.org/dev/core/-/issues/2977):
36 [22244](https://github.com/civicrm/civicrm-core/pull/22244))**
37
38 Changes the defaults when adding custom data sets to make them more user
39 friendly.
40
41 - **Expose email on hold as filter for reports
42 ([dev/core#3012](https://lab.civicrm.org/dev/core/-/issues/3012):
43 [22357](https://github.com/civicrm/civicrm-core/pull/22357))**
44
45 Adds a email on hold filter to reports.
46
47 - **Increment recommended PHP version
48 ([dev/core#2996](https://lab.civicrm.org/dev/core/-/issues/2996):
49 [22265](https://github.com/civicrm/civicrm-core/pull/22265))**
50
51 Changes the minimum PHP version to 7.3 and the recommended PHP version to 7.4.
52
53 - **APIv4 Explorer - Make selected language and format bookmarkable
54 ([22233](https://github.com/civicrm/civicrm-core/pull/22233))**
55
56 The APIv4 explorer already places params in the URL for easy bookmarking.
57 This extends it to work for the selected language tab and the selected output
58 format.
59
60 - **SearchKit - Contextual "View" button
61 ([dev/core#3016](https://lab.civicrm.org/dev/core/-/issues/3016):
62 [22367](https://github.com/civicrm/civicrm-core/pull/22367))**
63
64 Improves the SearchKit user interface
65
66 - **SearchKit - Add links for CustomField and CustomGroup entities
67 ([22302](https://github.com/civicrm/civicrm-core/pull/22302))**
68
69 Improves SearchKit user interface by adding links to custom field and custom
70 group entities.
71
72 - **SearchKit - Allow functions in the WHERE clause
73 ([22241](https://github.com/civicrm/civicrm-core/pull/22241))**
74
75 Adds an advanced feature for SearchKit which allows SQL functions in the
76 WHERE clause.
77
78 - **SearchKit - Import/Export saved search configuration
79 ([22229](https://github.com/civicrm/civicrm-core/pull/22229))**
80
81 Provides a UI for importing and exporting SavedSearches in JSON format. This
82 allows power-users to copy and paste their Searches between sites. For
83 extension developers, includes a direct link to generate a .mgd.php file from
84 the API Explorer.
85
86 - **SearchKit - Facilitate popup forms
87 ([22490](https://github.com/civicrm/civicrm-core/pull/22490))**
88
89 This adds two bits of utility code to facilitate adding a popup form to an
90 Afform containing a Search Display.
91
92 - **SearchKit - Allow aggregate columns to be links
93 ([22356](https://github.com/civicrm/civicrm-core/pull/22356))**
94
95 Allows aggregate columns to be rendered as a link in SearchKit Displays
96
97 - **CustomGroup - Add pseudoconstant for extends column
98 ([22282](https://github.com/civicrm/civicrm-core/pull/22282))**
99
100 Adds missing pseudoconstant to schema, which will allow a SearchKit-based
101 display of custom groups.
102
103 - **Afform - UI and contextual titles for search displays
104 ([22319](https://github.com/civicrm/civicrm-core/pull/22319))**
105
106 Makes it easy to create drilldown search displays, passing in a URL arg to
107 specify a category/container. E.g. "Custom fields in group X", "Option values
108 for Individual Prefix", "Email addresses for Bob Smith".
109
110 - **Add system status warning to display scheduled job failures
111 ([21762](https://github.com/civicrm/civicrm-core/pull/21762))**
112
113 Adds a system status message to display scheduled job errors.
114
115 - **Add system status check for missing dedupe rules
116 ([22369](https://github.com/civicrm/civicrm-core/pull/22369))**
117
118 Adds a system status check to alert system administrators when an unsupervised
119 and/or supervised dedupe rule is missing.
120
121 - **Extensions - Add dependency status check
122 ([22640](https://github.com/civicrm/civicrm-core/pull/22640))**
123
124 Adds a extensions dependency status check.
125
126 - **Improve accessibility - associate label and fields
127 ([22361](https://github.com/civicrm/civicrm-core/pull/22361))**
128
129 Associates the labels on the event location form with the relevant inputs to
130 improve accessibility for screen reader users.
131
132 - **Add state name to export fields
133 ([22318](https://github.com/civicrm/civicrm-core/pull/22318))**
134
135 Adds the ability to export the state name when exporting contacts.
136
137 - **Add authx_login() API for backend script authentication (alt)
138 ([22292](https://github.com/civicrm/civicrm-core/pull/22292))**
139
140 Adds a function to login as a user. It is cross-platform; accepts contact ID,
141 user ID, or username; and it updates relevant services (eg Civi session;
142 Drupal $user; MySQL @civicrm_user_id).
143
144 ### CiviContribute
145
146 - **Payments - Where do we store IDs from payment processor? (Work Towards
147 [dev/financial#57](https://lab.civicrm.org/dev/financial/-/issues/57):
148 [21916](https://github.com/civicrm/civicrm-core/pull/21916))**
149
150 Hides the recur trxn_id if it matches the processor_id.
151
152 - **Financial entity permissions (Work Towards
153 [dev/core#2752](https://lab.civicrm.org/dev/core/-/issues/2752):
154 [21178](https://github.com/civicrm/civicrm-core/pull/21178) and
155 [21181](https://github.com/civicrm/civicrm-core/pull/21181))**
156
157 Allows financial_trxns to be viewed and use ACL, not blanket permissions on
158 FinancialAccount, FinancialType, EntityFinancialAccount.
159
160 - **Demo sample data - Add in some mixed currency contributions
161 ([22307](https://github.com/civicrm/civicrm-core/pull/22307))**
162
163 Improves contribution sample data by adding some mixed currency contributions.
164
165 - **Add recurring conributions to sample data
166 ([22296](https://github.com/civicrm/civicrm-core/pull/22296))**
167
168 Improves contributions sample data by adding recurring contributions.
169
170 ## <a name="bugs"></a>Bugs resolved
171
172 ### Core CiviCRM
173
174 - **"Open in new tab" on .crm-summary-link icons should open contact
175 page, not summary content.
176 ([dev/core#2926](https://lab.civicrm.org/dev/core/-/issues/2926):
177 [22303](https://github.com/civicrm/civicrm-core/pull/22303))**
178
179 - **Separate membership payment on contribution form with auto renewal not get
180 processed (Work Towards
181 [dev/core#567](https://lab.civicrm.org/dev/core/-/issues/567):
182 [22275](https://github.com/civicrm/civicrm-core/pull/22275))**
183
184 Adds a test shell to ensure membership payments with auto renewal get
185 processed.
186
187 - **Avoid warnings for is_dir() when open_basedir is in effect
188 ([dev/core#2927](https://lab.civicrm.org/dev/core/-/issues/2927):
189 [22107](https://github.com/civicrm/civicrm-core/pull/22107))**
190
191 - **Removes the limit of 15 max values for multiple values can also
192 be retrieved from URL in reports
193 ([dev/core#2979](https://lab.civicrm.org/dev/core/-/issues/2979):
194 [22214](https://github.com/civicrm/civicrm-core/pull/22214))**
195
196 - **Fatal error when merging Housholds (getTemplateForGreeting)
197 ([dev/core#3028](https://lab.civicrm.org/dev/core/-/issues/3028):
198 [22650](https://github.com/civicrm/civicrm-core/pull/22650))**
199
200 - **TypeError when trying to replace tokens for custom fields that don't exist
201 ([dev/core#3029](https://lab.civicrm.org/dev/core/-/issues/3029):
202 [22537](https://github.com/civicrm/civicrm-core/pull/22537))**
203
204 - **Escape single quotes in token html output
205 ([dev/core#3001](https://lab.civicrm.org/dev/core/-/issues/3001):
206 [22387](https://github.com/civicrm/civicrm-core/pull/22387) and
207 [22285](https://github.com/civicrm/civicrm-core/pull/22285))**
208
209 - **APIv4 - Rename 'ReadOnly' trait to 'ReadOnlyEntity' to avoid PHP error
210 ([22626](https://github.com/civicrm/civicrm-core/pull/22626))**
211
212 - **APIv4 - Fix saving NULL as custom field value
213 ([22328](https://github.com/civicrm/civicrm-core/pull/22328))**
214
215 - **APIv4 GroupContact create indicates user is added but are not
216 ([dev/core#2924](https://lab.civicrm.org/dev/core/-/issues/2924):
217 [22322](https://github.com/civicrm/civicrm-core/pull/22322))**
218
219 - **APIv4 - Make Groups a managed entity, fix 'null' bugs in BAO_Group
220 ([22228](https://github.com/civicrm/civicrm-core/pull/22228))**
221
222 - **APIv4 - Set 'activity_type_id' to required
223 ([22359](https://github.com/civicrm/civicrm-core/pull/22359))**
224
225 - **Use api for entityRole - addresses save issue on the form
226 ([22589](https://github.com/civicrm/civicrm-core/pull/22589))**
227
228 - **SearchKit - Fix editable dates on standalone form
229 ([22366](https://github.com/civicrm/civicrm-core/pull/22366))**
230
231 - **SearchKit - Fix running searches for anonymous users
232 ([22597](https://github.com/civicrm/civicrm-core/pull/22597))**
233
234 - **SearchKit - Fix token selector to use expression alias
235 ([22539](https://github.com/civicrm/civicrm-core/pull/22539))**
236
237 - **SearchKit - Fix UI for configuring display pager limit
238 ([22321](https://github.com/civicrm/civicrm-core/pull/22321))**
239
240 - **SearchKit - Fix column headers for custom fields in default display
241 ([22331](https://github.com/civicrm/civicrm-core/pull/22331))**
242
243 - **SearchKit/Form: exposing a Date custom field has invalid year range
244 ([dev/report#84](https://lab.civicrm.org/dev/report/-/issues/84):
245 [22234](https://github.com/civicrm/civicrm-core/pull/22234))**
246
247 - **SearchKit: URLs to external sites no longer render
248 ([dev/report#93](https://lab.civicrm.org/dev/report/-/issues/93):
249 [22437](https://github.com/civicrm/civicrm-core/pull/22437))**
250
251 - **SearchKit: Chicken-and-egg problem upgrading from 5.35.2 to 5.44.0
252 ([dev/report#90](https://lab.civicrm.org/dev/report/-/issues/90):
253 [22375](https://github.com/civicrm/civicrm-core/pull/22375))**
254
255 Don't crash SearchKit on upgrade from 5.35.
256
257 - **DedupeRules - Translate contact type labels, respect enabled contact types
258 ([22383](https://github.com/civicrm/civicrm-core/pull/22383))**
259
260 Fixes up the Dedupe Rules page to properly handle contact types.
261
262 - **Allow chart dropdown labels to be translatable.
263 ([22349](https://github.com/civicrm/civicrm-core/pull/22349))**
264
265 - **SqlParallel - Enable more tests. Fix compatiblity with `release_time`
266 ([22326](https://github.com/civicrm/civicrm-core/pull/22326))**
267
268 - **Use JS escaping for {ts} calls in a JS context
269 ([22348](https://github.com/civicrm/civicrm-core/pull/22348))**
270
271 - **Find Activities Search, default search option for Activity Status will
272 exclude Activities by default which do not have a status of Scheduled or
273 Completed. Confuses and frustrates End Users.
274 ([21596](https://github.com/civicrm/civicrm-core/pull/21596))**
275
276 - **Wrap another set of hardcoded strings in {ts}
277 ([22315](https://github.com/civicrm/civicrm-core/pull/22315))**
278
279 - **Display label before input elements on SMTP settings page
280 ([22304](https://github.com/civicrm/civicrm-core/pull/22304))**
281
282 - **ExtensionUpgrades - Skip trying to upgrade missing dependencies
283 ([22623](https://github.com/civicrm/civicrm-core/pull/22623))**
284
285 - **Fix input type for Smarty number formatting (more forgiving)
286 ([22429](https://github.com/civicrm/civicrm-core/pull/22429))**
287
288 - **Ensure getDuplicateContacts always returns an array
289 ([22394](https://github.com/civicrm/civicrm-core/pull/22394))**
290
291 - **Ensure dashboardLinks assigned to prevent e-notice
292 ([22378](https://github.com/civicrm/civicrm-core/pull/22378))**
293
294 - **enotice fix (with default modifiers)
295 ([22372](https://github.com/civicrm/civicrm-core/pull/22372))**
296
297 - **Fix "Import Multi-Value Custom Data"
298 ([22365](https://github.com/civicrm/civicrm-core/pull/22365))**
299
300 - **Do not escape showHideBlocks by default
301 ([22371](https://github.com/civicrm/civicrm-core/pull/22371))**
302
303 - **Fix notices on ACL page
304 ([22370](https://github.com/civicrm/civicrm-core/pull/22370))**
305
306 - **Fix PropertyBag setRecurInstallments to accept 0
307 ([21517](https://github.com/civicrm/civicrm-core/pull/21517))**
308
309 - **Fix over-escaping when default escaping is on
310 ([22363](https://github.com/civicrm/civicrm-core/pull/22363))**
311
312 - **Fix escape-by-default
313 ([22362](https://github.com/civicrm/civicrm-core/pull/22362))**
314
315 - **Fix params passed to setStatus method
316 ([22338](https://github.com/civicrm/civicrm-core/pull/22338))**
317
318 - **Fix Profile helptext menu reference to reCaptcha (by r4zoli)
319 ([22333](https://github.com/civicrm/civicrm-core/pull/22333))**
320
321 - **Fix inaccuracies and mistakes in comments (especially phpdoc comments)
322 ([22334](https://github.com/civicrm/civicrm-core/pull/22334))**
323
324 - **Correctly mark updateStatusMessage method as static
325 ([22335](https://github.com/civicrm/civicrm-core/pull/22335))**
326
327 - **Fix typo. CRM_Core_Execption should be CRM_Core_Exception
328 ([22336](https://github.com/civicrm/civicrm-core/pull/22336))**
329
330 - **APIv3 - Fix overzealous pseudoconstant matching
331 ([22298](https://github.com/civicrm/civicrm-core/pull/22298))**
332
333 - **Allow text to be translated and fix URL paths in calls to docURL() function.
334 ([22311](https://github.com/civicrm/civicrm-core/pull/22311))**
335
336 - **Fix char-set for default escaping
337 ([22306](https://github.com/civicrm/civicrm-core/pull/22306))**
338
339 - **Crash when adding a relationship when CiviMember is disabled
340 ([22451](https://github.com/civicrm/civicrm-core/pull/22451))**
341
342 - **Resources: set language-specific cacheCode, fixes AngularJS translation with
343 multilingual ([22236](https://github.com/civicrm/civicrm-core/pull/22236))**
344
345 - **Do not default-escape weight field on order
346 ([22256](https://github.com/civicrm/civicrm-core/pull/22256))**
347
348 - **Move require_once for Smarty modifier due to order issues
349 ([22252](https://github.com/civicrm/civicrm-core/pull/22252))**
350
351 - **Contact/BAO/Query.php: fix searching for whitespace
352 ([22240](https://github.com/civicrm/civicrm-core/pull/22240))**
353
354 - **Use new money formatting util for Smarty formatting
355 ([22309](https://github.com/civicrm/civicrm-core/pull/22309))**
356
357 - **Smarty variables] Remove another isset - deferredFinancialType
358 ([22183](https://github.com/civicrm/civicrm-core/pull/22183))**
359
360 - **Smarty variables] Another isset bites the dust
361 ([22186](https://github.com/civicrm/civicrm-core/pull/22186))**
362
363 - **Smarty variables] Remove isset from batch form
364 ([22187](https://github.com/civicrm/civicrm-core/pull/22187))**
365
366 - **[Smarty variables] remove isset from merge screen
367 ([22193](https://github.com/civicrm/civicrm-core/pull/22193))**
368
369 - **[Smarty variables] Fix overzealous escaping with Smarty default escaping
370 ([22194](https://github.com/civicrm/civicrm-core/pull/22194))**
371
372 - **[Smarty variables] Remove issets relating to auto_renew
373 ([22195](https://github.com/civicrm/civicrm-core/pull/22195))**
374
375 - **[Smarty variables] Remove issets from payment processor form
376 ([22192](https://github.com/civicrm/civicrm-core/pull/22192))**
377
378 - **Smarty modifier - stop using isset to check taxTerm
379 ([22323](https://github.com/civicrm/civicrm-core/pull/22323))**
380
381 - **E-notice fix (Smarty)
382 ([22308](https://github.com/civicrm/civicrm-core/pull/22308))**
383
384 ## CiviCampaign
385
386 - **Cleanup Smarty e-notices on campaign dashboard
387 ([22283](https://github.com/civicrm/civicrm-core/pull/22283))**
388
389 - **Fix campaign dashboard to work with default escaping
390 ([22364](https://github.com/civicrm/civicrm-core/pull/22364))**
391
392 ## CiviCase
393
394 - **Case activity won't open without a source
395 ([dev/core#2825](https://lab.civicrm.org/dev/core/-/issues/2825):
396 [22243](https://github.com/civicrm/civicrm-core/pull/22243))**
397
398 - **APIv4: Confusing error when calling CaseType API
399 ([dev/core#2984](https://lab.civicrm.org/dev/core/-/issues/2984):
400 [22231](https://github.com/civicrm/civicrm-core/pull/22231))**
401
402 ## CiviContribution
403
404 - **Repeat Contributions CiviReport warnings: Formatting non-numeric values is
405 no longer supported
406 ([dev/core#2982](https://lab.civicrm.org/dev/core/-/issues/2982):
407 [22217](https://github.com/civicrm/civicrm-core/pull/22217))**
408
409 - **Do not apply default escaping to multiselects on currency form
410 ([22294](https://github.com/civicrm/civicrm-core/pull/22294))**
411
412 - **Fix broken links in default modifier mode on manage contributions
413 ([22290](https://github.com/civicrm/civicrm-core/pull/22290))**
414
415 - **Enotice fixes on ContributionPage dash
416 ([22289](https://github.com/civicrm/civicrm-core/pull/22289))**
417
418 - **Fix E_WARNING access array offset on null when creating new contribution
419 page ([22373](https://github.com/civicrm/civicrm-core/pull/22373))**
420
421 - **Ensure we don't get previously set honoree values in receipts
422 ([21483](https://github.com/civicrm/civicrm-core/pull/21483))**
423
424 - **Follow up fix on recur data
425 ([22301](https://github.com/civicrm/civicrm-core/pull/22301))**
426
427 ## CiviEvent
428
429 - **Event Registration: initialize array
430 ([22312](https://github.com/civicrm/civicrm-core/pull/22312))**
431
432 Minor code nitpick to avoid a PHP fatal on PHP 8.0 in certain unusual
433 circumstances.
434
435 - **Fix JS Error for Free event with multiple participant on registration
436 ([22310](https://github.com/civicrm/civicrm-core/pull/22310))**
437
438 ## Drupal Integration
439
440 - **Deprecated function drupal_get_installed_schema_version() in 9.3, but with a
441 twist ([dev/drupal#172](https://lab.civicrm.org/dev/drupal/-/issues/172):
442 [22337](https://github.com/civicrm/civicrm-core/pull/22337) and
443 [22350](https://github.com/civicrm/civicrm-core/pull/22350))**
444
445 - **"Your browser session has expired and we are unable to complete your form
446 submission" on all D9.2 anonymous sessions
447 ([dev/drupal#169](https://lab.civicrm.org/dev/drupal/-/issues/169):
448 [338](https://github.com/civicrm/civicrm-packages/pull/338))**
449
450 Fixes an error when uploading images to CKEditor via KCFinder.
451
452 - **Fix unreplaced template vars in civicrm.settings.php when using drush
453 installer ([67](https://github.com/civicrm/civicrm-drupal-8/pull/67))**
454
455 - **Drupal Full-Text Search block session time out error
456 ([dev/core#3026](https://lab.civicrm.org/dev/core/-/issues/3026):
457 [22479](https://github.com/civicrm/civicrm-core/pull/22479))**
458
459 ## WordPress Integration
460
461 - **Migrate installers to "setup" API
462 (Work Towards [dev/core#1615](https://lab.civicrm.org/dev/core/-/issues/1615):
463 [264](https://github.com/civicrm/civicrm-wordpress/pull/264))**
464
465 Perform CLI installations using Civi\Setup.
466
467 ## <a name="misc"></a>Miscellany
468
469 - **Add workflow template for recurring cancelled
470 ([21611](https://github.com/civicrm/civicrm-core/pull/21611))**
471
472 - **Add workflow template classes for contributions
473 ([22340](https://github.com/civicrm/civicrm-core/pull/22340))**
474
475 - **Use field value function to get html signature
476 ([22445](https://github.com/civicrm/civicrm-core/pull/22445))**
477
478 - **SearchKit - Tweak export explorer link icon + format
479 ([22300](https://github.com/civicrm/civicrm-core/pull/22300))**
480
481 - **Expose contact ID in getContactInfo method in
482 CRM/Mailing/Event/BAO/Queue.php
483 ([dev/core#2962](https://lab.civicrm.org/dev/core/-/issues/2962):
484 [22096](https://github.com/civicrm/civicrm-core/pull/22096))**
485
486 - **APIv4 Explorer - Format array params using add methods instead of set
487 ([22382](https://github.com/civicrm/civicrm-core/pull/22382))**
488
489 - **Update Brick/Money to 0.5.3
490 ([22246](https://github.com/civicrm/civicrm-core/pull/22246))**
491
492 - **Simplify autogenerated boilerplate upgrader class
493 ([22225](https://github.com/civicrm/civicrm-core/pull/22225))**
494
495 - **Upgrade - Bump minimum upgradable version to 4.6.12
496 ([22238](https://github.com/civicrm/civicrm-core/pull/22238))**
497
498 - **Move two more functions to financialProcessor
499 ([21927](https://github.com/civicrm/civicrm-core/pull/21927))**
500
501 - **Formatting cleanup
502 ([22374](https://github.com/civicrm/civicrm-core/pull/22374))**
503
504 - **Rename protected function
505 ([22259](https://github.com/civicrm/civicrm-core/pull/22259))**
506
507 - **Contributor key: Add Matt Trim
508 ([22248](https://github.com/civicrm/civicrm-core/pull/22248))**
509
510 - **5.45.0 release notes: added late changes
511 ([22386](https://github.com/civicrm/civicrm-core/pull/22386))**
512
513 - **Remove handling for always-truthy var being false
514 ([22260](https://github.com/civicrm/civicrm-core/pull/22260))**
515
516 - **Remove unnecessary ID attribute.
517 ([22347](https://github.com/civicrm/civicrm-core/pull/22347))**
518
519 - **Remove never passed variables
520 ([22258](https://github.com/civicrm/civicrm-core/pull/22258))**
521
522 - **Remove unused function
523 ([22388](https://github.com/civicrm/civicrm-core/pull/22388))**
524
525 - **Initial refactor of createProfileContact groups
526 ([18158](https://github.com/civicrm/civicrm-core/pull/18158))**
527
528 - **Deprecated function drupal_get_path()
529 ([69](https://github.com/civicrm/civicrm-drupal-8/pull/69))**
530
531 - **Update jquery.tokeninput.js to 1.6.1
532 ([336](https://github.com/civicrm/civicrm-packages/pull/336))**
533
534 - **Privatise function
535 ([22392](https://github.com/civicrm/civicrm-core/pull/22392))**
536
537 - **Remove unnecessary pass-by-ref
538 ([22393](https://github.com/civicrm/civicrm-core/pull/22393))**
539
540 - **Remove unused function CRM/Utils/Mail/EmailProcessor::cleanupDir
541 ([22278](https://github.com/civicrm/civicrm-core/pull/22278))**
542
543 - **Remove unused method getGrantStatusOptGroup
544 ([22332](https://github.com/civicrm/civicrm-core/pull/22332))**
545
546 - **Remove unnecessary pass-by-ref
547 ([22279](https://github.com/civicrm/civicrm-core/pull/22279))**
548
549 - **(REF) CRM/Upgrade - Remove unused entrypoint `verifyPreDBstate()`
550 ([22237](https://github.com/civicrm/civicrm-core/pull/22237))**
551
552 - **(REF) Remove more params that are unused now function is not shared
553 ([22261](https://github.com/civicrm/civicrm-core/pull/22261))**
554
555 - **(REF) Duplicate function to allow us to work it out of the code
556 ([22254](https://github.com/civicrm/civicrm-core/pull/22254))**
557
558 - **(REF) Minor parameter simplification
559 ([22253](https://github.com/civicrm/civicrm-core/pull/22253))**
560
561 - **(REF) Add in getVersion override for Drupal 8/9 to support cv testing and
562 also cv vars:show picking up the right CMS version
563 ([22220](https://github.com/civicrm/civicrm-core/pull/22220))**
564
565 - **(REF) Add getter for priceSetID and use full form flow
566 ([22267](https://github.com/civicrm/civicrm-core/pull/22267))**
567
568 - **(REF) Afform - Use APIv4 for managed dashboard
569 ([22213](https://github.com/civicrm/civicrm-core/pull/22213))**
570
571 - **(REF) Remove handling for relationshipID
572 ([22391](https://github.com/civicrm/civicrm-core/pull/22391))**
573
574 - **(REF) Use `CRM_Contact_BAO_ContactType::basicTypes()` instead of hardcoded
575 lists ([22389](https://github.com/civicrm/civicrm-core/pull/22389))**
576
577 - **(REF) Move code into the function
578 ([22288](https://github.com/civicrm/civicrm-core/pull/22288))**
579
580 - **(REF) Remove now non-variable variables from previously shared code
581 ([22284](https://github.com/civicrm/civicrm-core/pull/22284))**
582
583 - **(REF) Duplicate & unshare processFormContribution
584 ([22276](https://github.com/civicrm/civicrm-core/pull/22276))**
585
586 - **(REF) Stop passing this as form, set in function
587 ([22287](https://github.com/civicrm/civicrm-core/pull/22287))**
588
589 - **(REF) Deprecated old getContributionStatuses
590 ([22345](https://github.com/civicrm/civicrm-core/pull/22345))**
591
592 - **(REF) Simplify getContributionStatuses
593 ([22280](https://github.com/civicrm/civicrm-core/pull/22280))**
594
595 - **(REF) Upgrade jQuery UI to 1.13.0
596 ([22583](https://github.com/civicrm/civicrm-core/pull/22583))**
597
598 - **(REF) Further cleanup on employer create
599 ([22390](https://github.com/civicrm/civicrm-core/pull/22390))**
600
601 - **HookTest - Fix execution on PHP 8
602 ([266](https://github.com/civicrm/civicrm-wordpress/pull/266))**
603
604 - **Fix membership test fail for Dec 31
605 ([22351](https://github.com/civicrm/civicrm-core/pull/22351))**
606
607 - **Fix tests that fail after 2021
608 ([22352](https://github.com/civicrm/civicrm-core/pull/22352))**
609
610 - **Fix test to use full form flow
611 ([22266](https://github.com/civicrm/civicrm-core/pull/22266))**
612
613 - **Cleanup test class
614 ([22493](https://github.com/civicrm/civicrm-core/pull/22493))**
615
616 - **(NFC) Cleanup test class
617 ([22384](https://github.com/civicrm/civicrm-core/pull/22384))**
618
619 - **(NFC) Try to work around failing tests
620 ([22269](https://github.com/civicrm/civicrm-core/pull/22269))**
621
622 - **(NFC) Cleanup in Authorize.net test class
623 ([22272](https://github.com/civicrm/civicrm-core/pull/22272))**
624
625 - **(NFC) isDir unit test fails on PHP 7 'min' matrix
626 ([22418](https://github.com/civicrm/civicrm-core/pull/22418))**
627
628 - **(NFC) APIv4: Add help info for multi-record custom field sets
629 ([22257](https://github.com/civicrm/civicrm-core/pull/22257))**
630
631 - **(NFC) Test cleanup
632 ([22251](https://github.com/civicrm/civicrm-core/pull/22251))**
633
634 - **(NFC) Minor cleanup in test class
635 ([22249](https://github.com/civicrm/civicrm-core/pull/22249))**
636
637 - **(NFC) Cleanup messy boilerplate
638 ([22224](https://github.com/civicrm/civicrm-core/pull/22224))**
639
640 - **(NFC) Delete boilerplate comments and empty functions from upgrade classes
641 ([22226](https://github.com/civicrm/civicrm-core/pull/22226))**
642
643 - **(NFC) CRM_Core_Exception incorrectly called without message
644 ([22339](https://github.com/civicrm/civicrm-core/pull/22339))**
645
646 - **(NFC) Docblock improvements to Import_Field classes
647 ([22360](https://github.com/civicrm/civicrm-core/pull/22360))**
648
649 ## <a name="credits"></a>Credits
650
651 This release was developed by the following code authors:
652
653 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman;
654 BrightMinded Ltd - Bradley Taylor; Circle Interactive - Matt Trim;
655 CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku;
656 Coop SymbioTIC - Mathieu Lutfy; Dave D; Jens Schuppe;
657 JMA Consulting - Seamus Lee; Megaphone Technology Consulting - Jon Goldberg;
658 Miguel Almeida; MJW Consulting - Matthew Wire;
659 Progressive Technology Project - Jamie McClelland; Skvare - Sunil Pawar;
660 Squiffle Consulting - Aidan Saunders; Wikimedia Foundation - Eileen McNaughton
661
662 Most authors also reviewed code for this release; in addition, the following
663 reviewers contributed their comments:
664
665 Artful Robot - Rich Lott; Ben Mango; Betty Dolfing; Christian Wach;
666 CiviCoop - Jaap Jansma, Klaas Eikelboom; Coop SymbioTIC - Samuel Vanhove;
667 Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit, Peter Davis;
668 Greenpeace Central and Eastern Europe - Patrick Figel;
669 JMA Consulting - Joe Murray, Monish Deb; Lighthouse Consulting and
670 Design - Brian Shaughnessy; Mikey O'Toole; Semper IT - Karin Gerritsen;
671 Tadpole Collective - Kevin Cristiano; tapashdatta;
672 Third Sector Design - William Mortada; Wikimedia Foundation - Elliott Eggleston