3 Released February 3, 2022
5 - **[Synopsis](#synopsis)**
6 - **[Features](#features)**
7 - **[Bugs resolved](#bugs)**
8 - **[Miscellany](#misc)**
9 - **[Credits](#credits)**
10 - **[Feedback](#feedback)**
12 ## <a name="synopsis"></a>Synopsis
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** |
24 ## <a name="features"></a>Features
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))**
32 Adds an ACL to demo data.
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))**
38 Changes the defaults when adding custom data sets to make them more user
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))**
45 Adds a email on hold filter to reports.
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))**
51 Changes the minimum PHP version to 7.3 and the recommended PHP version to 7.4.
53 - **APIv4 Explorer - Make selected language and format bookmarkable
54 ([22233](https://github.com/civicrm/civicrm-core/pull/22233))**
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
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))**
64 Improves the SearchKit user interface
66 - **SearchKit - Add links for CustomField and CustomGroup entities
67 ([22302](https://github.com/civicrm/civicrm-core/pull/22302))**
69 Improves SearchKit user interface by adding links to custom field and custom
72 - **SearchKit - Allow functions in the WHERE clause
73 ([22241](https://github.com/civicrm/civicrm-core/pull/22241))**
75 Adds an advanced feature for SearchKit which allows SQL functions in the
78 - **SearchKit - Import/Export saved search configuration
79 ([22229](https://github.com/civicrm/civicrm-core/pull/22229))**
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
86 - **SearchKit - Facilitate popup forms
87 ([22490](https://github.com/civicrm/civicrm-core/pull/22490))**
89 This adds two bits of utility code to facilitate adding a popup form to an
90 Afform containing a Search Display.
92 - **SearchKit - Allow aggregate columns to be links
93 ([22356](https://github.com/civicrm/civicrm-core/pull/22356))**
95 Allows aggregate columns to be rendered as a link in SearchKit Displays
97 - **CustomGroup - Add pseudoconstant for extends column
98 ([22282](https://github.com/civicrm/civicrm-core/pull/22282))**
100 Adds missing pseudoconstant to schema, which will allow a SearchKit-based
101 display of custom groups.
103 - **Afform - UI and contextual titles for search displays
104 ([22319](https://github.com/civicrm/civicrm-core/pull/22319))**
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".
110 - **Add system status warning to display scheduled job failures
111 ([21762](https://github.com/civicrm/civicrm-core/pull/21762))**
113 Adds a system status message to display scheduled job errors.
115 - **Add system status check for missing dedupe rules
116 ([22369](https://github.com/civicrm/civicrm-core/pull/22369))**
118 Adds a system status check to alert system administrators when an unsupervised
119 and/or supervised dedupe rule is missing.
121 - **Extensions - Add dependency status check
122 ([22640](https://github.com/civicrm/civicrm-core/pull/22640))**
124 Adds a extensions dependency status check.
126 - **Improve accessibility - associate label and fields
127 ([22361](https://github.com/civicrm/civicrm-core/pull/22361))**
129 Associates the labels on the event location form with the relevant inputs to
130 improve accessibility for screen reader users.
132 - **Add state name to export fields
133 ([22318](https://github.com/civicrm/civicrm-core/pull/22318))**
135 Adds the ability to export the state name when exporting contacts.
137 - **Add authx_login() API for backend script authentication (alt)
138 ([22292](https://github.com/civicrm/civicrm-core/pull/22292))**
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).
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))**
150 Hides the recur trxn_id if it matches the processor_id.
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))**
157 Allows financial_trxns to be viewed and use ACL, not blanket permissions on
158 FinancialAccount, FinancialType, EntityFinancialAccount.
160 - **Demo sample data - Add in some mixed currency contributions
161 ([22307](https://github.com/civicrm/civicrm-core/pull/22307))**
163 Improves contribution sample data by adding some mixed currency contributions.
165 - **Add recurring conributions to sample data
166 ([22296](https://github.com/civicrm/civicrm-core/pull/22296))**
168 Improves contributions sample data by adding recurring contributions.
170 ## <a name="bugs"></a>Bugs resolved
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))**
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))**
184 Adds a test shell to ensure membership payments with auto renewal get
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))**
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))**
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))**
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))**
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))**
209 - **APIv4 - Rename 'ReadOnly' trait to 'ReadOnlyEntity' to avoid PHP error
210 ([22626](https://github.com/civicrm/civicrm-core/pull/22626))**
212 - **APIv4 - Fix saving NULL as custom field value
213 ([22328](https://github.com/civicrm/civicrm-core/pull/22328))**
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))**
219 - **APIv4 - Make Groups a managed entity, fix 'null' bugs in BAO_Group
220 ([22228](https://github.com/civicrm/civicrm-core/pull/22228))**
222 - **APIv4 - Set 'activity_type_id' to required
223 ([22359](https://github.com/civicrm/civicrm-core/pull/22359))**
225 - **Use api for entityRole - addresses save issue on the form
226 ([22589](https://github.com/civicrm/civicrm-core/pull/22589))**
228 - **SearchKit - Fix editable dates on standalone form
229 ([22366](https://github.com/civicrm/civicrm-core/pull/22366))**
231 - **SearchKit - Fix running searches for anonymous users
232 ([22597](https://github.com/civicrm/civicrm-core/pull/22597))**
234 - **SearchKit - Fix token selector to use expression alias
235 ([22539](https://github.com/civicrm/civicrm-core/pull/22539))**
237 - **SearchKit - Fix UI for configuring display pager limit
238 ([22321](https://github.com/civicrm/civicrm-core/pull/22321))**
240 - **SearchKit - Fix column headers for custom fields in default display
241 ([22331](https://github.com/civicrm/civicrm-core/pull/22331))**
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))**
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))**
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))**
255 Don't crash SearchKit on upgrade from 5.35.
257 - **DedupeRules - Translate contact type labels, respect enabled contact types
258 ([22383](https://github.com/civicrm/civicrm-core/pull/22383))**
260 Fixes up the Dedupe Rules page to properly handle contact types.
262 - **Allow chart dropdown labels to be translatable.
263 ([22349](https://github.com/civicrm/civicrm-core/pull/22349))**
265 - **SqlParallel - Enable more tests. Fix compatiblity with `release_time`
266 ([22326](https://github.com/civicrm/civicrm-core/pull/22326))**
268 - **Use JS escaping for {ts} calls in a JS context
269 ([22348](https://github.com/civicrm/civicrm-core/pull/22348))**
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))**
276 - **Wrap another set of hardcoded strings in {ts}
277 ([22315](https://github.com/civicrm/civicrm-core/pull/22315))**
279 - **Display label before input elements on SMTP settings page
280 ([22304](https://github.com/civicrm/civicrm-core/pull/22304))**
282 - **ExtensionUpgrades - Skip trying to upgrade missing dependencies
283 ([22623](https://github.com/civicrm/civicrm-core/pull/22623))**
285 - **Fix input type for Smarty number formatting (more forgiving)
286 ([22429](https://github.com/civicrm/civicrm-core/pull/22429))**
288 - **Ensure getDuplicateContacts always returns an array
289 ([22394](https://github.com/civicrm/civicrm-core/pull/22394))**
291 - **Ensure dashboardLinks assigned to prevent e-notice
292 ([22378](https://github.com/civicrm/civicrm-core/pull/22378))**
294 - **enotice fix (with default modifiers)
295 ([22372](https://github.com/civicrm/civicrm-core/pull/22372))**
297 - **Fix "Import Multi-Value Custom Data"
298 ([22365](https://github.com/civicrm/civicrm-core/pull/22365))**
300 - **Do not escape showHideBlocks by default
301 ([22371](https://github.com/civicrm/civicrm-core/pull/22371))**
303 - **Fix notices on ACL page
304 ([22370](https://github.com/civicrm/civicrm-core/pull/22370))**
306 - **Fix PropertyBag setRecurInstallments to accept 0
307 ([21517](https://github.com/civicrm/civicrm-core/pull/21517))**
309 - **Fix over-escaping when default escaping is on
310 ([22363](https://github.com/civicrm/civicrm-core/pull/22363))**
312 - **Fix escape-by-default
313 ([22362](https://github.com/civicrm/civicrm-core/pull/22362))**
315 - **Fix params passed to setStatus method
316 ([22338](https://github.com/civicrm/civicrm-core/pull/22338))**
318 - **Fix Profile helptext menu reference to reCaptcha (by r4zoli)
319 ([22333](https://github.com/civicrm/civicrm-core/pull/22333))**
321 - **Fix inaccuracies and mistakes in comments (especially phpdoc comments)
322 ([22334](https://github.com/civicrm/civicrm-core/pull/22334))**
324 - **Correctly mark updateStatusMessage method as static
325 ([22335](https://github.com/civicrm/civicrm-core/pull/22335))**
327 - **Fix typo. CRM_Core_Execption should be CRM_Core_Exception
328 ([22336](https://github.com/civicrm/civicrm-core/pull/22336))**
330 - **APIv3 - Fix overzealous pseudoconstant matching
331 ([22298](https://github.com/civicrm/civicrm-core/pull/22298))**
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))**
336 - **Fix char-set for default escaping
337 ([22306](https://github.com/civicrm/civicrm-core/pull/22306))**
339 - **Crash when adding a relationship when CiviMember is disabled
340 ([22451](https://github.com/civicrm/civicrm-core/pull/22451))**
342 - **Resources: set language-specific cacheCode, fixes AngularJS translation with
343 multilingual ([22236](https://github.com/civicrm/civicrm-core/pull/22236))**
345 - **Do not default-escape weight field on order
346 ([22256](https://github.com/civicrm/civicrm-core/pull/22256))**
348 - **Move require_once for Smarty modifier due to order issues
349 ([22252](https://github.com/civicrm/civicrm-core/pull/22252))**
351 - **Contact/BAO/Query.php: fix searching for whitespace
352 ([22240](https://github.com/civicrm/civicrm-core/pull/22240))**
354 - **Use new money formatting util for Smarty formatting
355 ([22309](https://github.com/civicrm/civicrm-core/pull/22309))**
357 - **Smarty variables] Remove another isset - deferredFinancialType
358 ([22183](https://github.com/civicrm/civicrm-core/pull/22183))**
360 - **Smarty variables] Another isset bites the dust
361 ([22186](https://github.com/civicrm/civicrm-core/pull/22186))**
363 - **Smarty variables] Remove isset from batch form
364 ([22187](https://github.com/civicrm/civicrm-core/pull/22187))**
366 - **[Smarty variables] remove isset from merge screen
367 ([22193](https://github.com/civicrm/civicrm-core/pull/22193))**
369 - **[Smarty variables] Fix overzealous escaping with Smarty default escaping
370 ([22194](https://github.com/civicrm/civicrm-core/pull/22194))**
372 - **[Smarty variables] Remove issets relating to auto_renew
373 ([22195](https://github.com/civicrm/civicrm-core/pull/22195))**
375 - **[Smarty variables] Remove issets from payment processor form
376 ([22192](https://github.com/civicrm/civicrm-core/pull/22192))**
378 - **Smarty modifier - stop using isset to check taxTerm
379 ([22323](https://github.com/civicrm/civicrm-core/pull/22323))**
381 - **E-notice fix (Smarty)
382 ([22308](https://github.com/civicrm/civicrm-core/pull/22308))**
386 - **Cleanup Smarty e-notices on campaign dashboard
387 ([22283](https://github.com/civicrm/civicrm-core/pull/22283))**
389 - **Fix campaign dashboard to work with default escaping
390 ([22364](https://github.com/civicrm/civicrm-core/pull/22364))**
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))**
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))**
404 - **Repeat Contributions CiviReport warnings: Formatting non-numeric values is
406 ([dev/core#2982](https://lab.civicrm.org/dev/core/-/issues/2982):
407 [22217](https://github.com/civicrm/civicrm-core/pull/22217))**
409 - **Do not apply default escaping to multiselects on currency form
410 ([22294](https://github.com/civicrm/civicrm-core/pull/22294))**
412 - **Fix broken links in default modifier mode on manage contributions
413 ([22290](https://github.com/civicrm/civicrm-core/pull/22290))**
415 - **Enotice fixes on ContributionPage dash
416 ([22289](https://github.com/civicrm/civicrm-core/pull/22289))**
418 - **Fix E_WARNING access array offset on null when creating new contribution
419 page ([22373](https://github.com/civicrm/civicrm-core/pull/22373))**
421 - **Ensure we don't get previously set honoree values in receipts
422 ([21483](https://github.com/civicrm/civicrm-core/pull/21483))**
424 - **Follow up fix on recur data
425 ([22301](https://github.com/civicrm/civicrm-core/pull/22301))**
429 - **Event Registration: initialize array
430 ([22312](https://github.com/civicrm/civicrm-core/pull/22312))**
432 Minor code nitpick to avoid a PHP fatal on PHP 8.0 in certain unusual
435 - **Fix JS Error for Free event with multiple participant on registration
436 ([22310](https://github.com/civicrm/civicrm-core/pull/22310))**
438 ## Drupal Integration
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))**
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))**
450 Fixes an error when uploading images to CKEditor via KCFinder.
452 - **Fix unreplaced template vars in civicrm.settings.php when using drush
453 installer ([67](https://github.com/civicrm/civicrm-drupal-8/pull/67))**
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))**
459 ## WordPress Integration
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))**
465 Perform CLI installations using Civi\Setup.
467 ## <a name="misc"></a>Miscellany
469 - **Add workflow template for recurring cancelled
470 ([21611](https://github.com/civicrm/civicrm-core/pull/21611))**
472 - **Add workflow template classes for contributions
473 ([22340](https://github.com/civicrm/civicrm-core/pull/22340))**
475 - **Use field value function to get html signature
476 ([22445](https://github.com/civicrm/civicrm-core/pull/22445))**
478 - **SearchKit - Tweak export explorer link icon + format
479 ([22300](https://github.com/civicrm/civicrm-core/pull/22300))**
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))**
486 - **APIv4 Explorer - Format array params using add methods instead of set
487 ([22382](https://github.com/civicrm/civicrm-core/pull/22382))**
489 - **Update Brick/Money to 0.5.3
490 ([22246](https://github.com/civicrm/civicrm-core/pull/22246))**
492 - **Simplify autogenerated boilerplate upgrader class
493 ([22225](https://github.com/civicrm/civicrm-core/pull/22225))**
495 - **Upgrade - Bump minimum upgradable version to 4.6.12
496 ([22238](https://github.com/civicrm/civicrm-core/pull/22238))**
498 - **Move two more functions to financialProcessor
499 ([21927](https://github.com/civicrm/civicrm-core/pull/21927))**
501 - **Formatting cleanup
502 ([22374](https://github.com/civicrm/civicrm-core/pull/22374))**
504 - **Rename protected function
505 ([22259](https://github.com/civicrm/civicrm-core/pull/22259))**
507 - **Contributor key: Add Matt Trim
508 ([22248](https://github.com/civicrm/civicrm-core/pull/22248))**
510 - **5.45.0 release notes: added late changes
511 ([22386](https://github.com/civicrm/civicrm-core/pull/22386))**
513 - **Remove handling for always-truthy var being false
514 ([22260](https://github.com/civicrm/civicrm-core/pull/22260))**
516 - **Remove unnecessary ID attribute.
517 ([22347](https://github.com/civicrm/civicrm-core/pull/22347))**
519 - **Remove never passed variables
520 ([22258](https://github.com/civicrm/civicrm-core/pull/22258))**
522 - **Remove unused function
523 ([22388](https://github.com/civicrm/civicrm-core/pull/22388))**
525 - **Initial refactor of createProfileContact groups
526 ([18158](https://github.com/civicrm/civicrm-core/pull/18158))**
528 - **Deprecated function drupal_get_path()
529 ([69](https://github.com/civicrm/civicrm-drupal-8/pull/69))**
531 - **Update jquery.tokeninput.js to 1.6.1
532 ([336](https://github.com/civicrm/civicrm-packages/pull/336))**
534 - **Privatise function
535 ([22392](https://github.com/civicrm/civicrm-core/pull/22392))**
537 - **Remove unnecessary pass-by-ref
538 ([22393](https://github.com/civicrm/civicrm-core/pull/22393))**
540 - **Remove unused function CRM/Utils/Mail/EmailProcessor::cleanupDir
541 ([22278](https://github.com/civicrm/civicrm-core/pull/22278))**
543 - **Remove unused method getGrantStatusOptGroup
544 ([22332](https://github.com/civicrm/civicrm-core/pull/22332))**
546 - **Remove unnecessary pass-by-ref
547 ([22279](https://github.com/civicrm/civicrm-core/pull/22279))**
549 - **(REF) CRM/Upgrade - Remove unused entrypoint `verifyPreDBstate()`
550 ([22237](https://github.com/civicrm/civicrm-core/pull/22237))**
552 - **(REF) Remove more params that are unused now function is not shared
553 ([22261](https://github.com/civicrm/civicrm-core/pull/22261))**
555 - **(REF) Duplicate function to allow us to work it out of the code
556 ([22254](https://github.com/civicrm/civicrm-core/pull/22254))**
558 - **(REF) Minor parameter simplification
559 ([22253](https://github.com/civicrm/civicrm-core/pull/22253))**
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))**
565 - **(REF) Add getter for priceSetID and use full form flow
566 ([22267](https://github.com/civicrm/civicrm-core/pull/22267))**
568 - **(REF) Afform - Use APIv4 for managed dashboard
569 ([22213](https://github.com/civicrm/civicrm-core/pull/22213))**
571 - **(REF) Remove handling for relationshipID
572 ([22391](https://github.com/civicrm/civicrm-core/pull/22391))**
574 - **(REF) Use `CRM_Contact_BAO_ContactType::basicTypes()` instead of hardcoded
575 lists ([22389](https://github.com/civicrm/civicrm-core/pull/22389))**
577 - **(REF) Move code into the function
578 ([22288](https://github.com/civicrm/civicrm-core/pull/22288))**
580 - **(REF) Remove now non-variable variables from previously shared code
581 ([22284](https://github.com/civicrm/civicrm-core/pull/22284))**
583 - **(REF) Duplicate & unshare processFormContribution
584 ([22276](https://github.com/civicrm/civicrm-core/pull/22276))**
586 - **(REF) Stop passing this as form, set in function
587 ([22287](https://github.com/civicrm/civicrm-core/pull/22287))**
589 - **(REF) Deprecated old getContributionStatuses
590 ([22345](https://github.com/civicrm/civicrm-core/pull/22345))**
592 - **(REF) Simplify getContributionStatuses
593 ([22280](https://github.com/civicrm/civicrm-core/pull/22280))**
595 - **(REF) Upgrade jQuery UI to 1.13.0
596 ([22583](https://github.com/civicrm/civicrm-core/pull/22583))**
598 - **(REF) Further cleanup on employer create
599 ([22390](https://github.com/civicrm/civicrm-core/pull/22390))**
601 - **HookTest - Fix execution on PHP 8
602 ([266](https://github.com/civicrm/civicrm-wordpress/pull/266))**
604 - **Fix membership test fail for Dec 31
605 ([22351](https://github.com/civicrm/civicrm-core/pull/22351))**
607 - **Fix tests that fail after 2021
608 ([22352](https://github.com/civicrm/civicrm-core/pull/22352))**
610 - **Fix test to use full form flow
611 ([22266](https://github.com/civicrm/civicrm-core/pull/22266))**
613 - **Cleanup test class
614 ([22493](https://github.com/civicrm/civicrm-core/pull/22493))**
616 - **(NFC) Cleanup test class
617 ([22384](https://github.com/civicrm/civicrm-core/pull/22384))**
619 - **(NFC) Try to work around failing tests
620 ([22269](https://github.com/civicrm/civicrm-core/pull/22269))**
622 - **(NFC) Cleanup in Authorize.net test class
623 ([22272](https://github.com/civicrm/civicrm-core/pull/22272))**
625 - **(NFC) isDir unit test fails on PHP 7 'min' matrix
626 ([22418](https://github.com/civicrm/civicrm-core/pull/22418))**
628 - **(NFC) APIv4: Add help info for multi-record custom field sets
629 ([22257](https://github.com/civicrm/civicrm-core/pull/22257))**
631 - **(NFC) Test cleanup
632 ([22251](https://github.com/civicrm/civicrm-core/pull/22251))**
634 - **(NFC) Minor cleanup in test class
635 ([22249](https://github.com/civicrm/civicrm-core/pull/22249))**
637 - **(NFC) Cleanup messy boilerplate
638 ([22224](https://github.com/civicrm/civicrm-core/pull/22224))**
640 - **(NFC) Delete boilerplate comments and empty functions from upgrade classes
641 ([22226](https://github.com/civicrm/civicrm-core/pull/22226))**
643 - **(NFC) CRM_Core_Exception incorrectly called without message
644 ([22339](https://github.com/civicrm/civicrm-core/pull/22339))**
646 - **(NFC) Docblock improvements to Import_Field classes
647 ([22360](https://github.com/civicrm/civicrm-core/pull/22360))**
649 ## <a name="credits"></a>Credits
651 This release was developed by the following code authors:
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
662 Most authors also reviewed code for this release; in addition, the following
663 reviewers contributed their comments:
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