5.50.0 release notes: added security release
[civicrm-core.git] / release-notes / 5.50.0.md
1 # CiviCRM 5.50.0
2
3 Released June 1, 2022
4
5 - **[Synopsis](#synopsis)**
6 - **[Security advisories](#security)**
7 - **[Features](#features)**
8 - **[Bugs resolved](#bugs)**
9 - **[Miscellany](#misc)**
10 - **[Credits](#credits)**
11 - **[Feedback](#feedback)**
12
13 ## <a name="synopsis"></a>Synopsis
14
15 | *Does this version...?* | |
16 |:--------------------------------------------------------------- |:-------:|
17 | Fix security vulnerabilities? | **yes** |
18 | **Change the database schema?** | **yes** |
19 | **Alter the API?** | **yes** |
20 | Require attention to configuration options? | no |
21 | **Fix problems installing or upgrading to a previous version?** | **yes** |
22 | **Introduce features?** | **yes** |
23 | **Fix bugs?** | **yes** |
24
25 ## <a name="security"></a>Security advisories
26
27 - **[CIVI-SA-2022-07: APIv3 Access Bypass](https://civicrm.org/advisory/civi-sa-2022-07-apiv3-access-bypass)**
28
29 ## <a name="features"></a>Features
30
31 ### Core CiviCRM
32
33 - **System Check - Add a reminder about CIVICRM_SIGN_KEYS.
34 ([23224](https://github.com/civicrm/civicrm-core/pull/23224))**
35
36 Adds a system status check regarding CIVICRM_SIGN_KEYS.
37
38 - **Restrict allowed uploads - contact image
39 ([23147](https://github.com/civicrm/civicrm-core/pull/23147))**
40
41 Restrict file types allowed for the contact image field.
42
43 - **Add tracking table for import jobs
44 ([dev/core#1307](https://lab.civicrm.org/dev/core/-/issues/1307):
45 [23199](https://github.com/civicrm/civicrm-core/pull/23199) and
46 [23245](https://github.com/civicrm/civicrm-core/pull/23245))**
47
48 Adds a table for the purpose of tracking user jobs (imports) and associated
49 temp tables and starts tracking the submittedValues and data source with it.
50
51 - **CustomFields - Improve metadata about which custom groups belong to which
52 entities ([23336](https://github.com/civicrm/civicrm-core/pull/23336))**
53
54 Makes the relationship between Custom Field Groups, entity types and subtypes
55 discoverable via APIv4 metadata.
56
57 - **Upgrader - Add support for automatic snapshots
58 ([23522](https://github.com/civicrm/civicrm-core/pull/23522) and
59 [23544](https://github.com/civicrm/civicrm-core/pull/23594))**
60
61 This adds a utility for recording a snapshot of certain columns in a database
62 table prior to applying any upgrade steps to it. This will make it easier to
63 roll back or compare changes if necessary after the upgrade.
64
65 The snapshot tables begin with the prefix `snap_civicrm_` and will be cleaned
66 up after a certain number of minor version upgrades. For now, the feature is
67 disabled by default, but you may enable it by adding
68
69 define('CIVICRM_UPGRADE_SNAPSHOT', TRUE);
70
71 to the settings file.
72
73 - **Api4 - minor fixes and updates
74 ([23310](https://github.com/civicrm/civicrm-core/pull/23310))**
75
76 A few minor tweaks to APIv4 to improve working with extensions that have
77 virtual entities.
78
79 - **APIv4 - Add NOW() date function
80 ([23378](https://github.com/civicrm/civicrm-core/pull/23378))**
81
82 Adds a function for NOW to APIv4 which returns the full date+time, and
83 distinguishes it from CURDATE which just returns the date part.
84
85 - **APIv4 - Add MONTH sql function
86 ([23377](https://github.com/civicrm/civicrm-core/pull/23377))**
87
88 Adds the MONTH function to APIv4 & SearchKit, which enables e.g. filtering
89 birthdays by month.
90
91 - **APIv4 - Add `is_active` extra field to Domain entity
92 ([22159](https://github.com/civicrm/civicrm-core/pull/22159))**
93
94 Adds a new calculated field to APIv4 making it easier to get the current
95 active domain.
96
97 - **APIv4 - Add `Managed::reconcile` action.
98 ([23243](https://github.com/civicrm/civicrm-core/pull/23243))**
99
100 Adds APIv4 wrapper around ManagedEntities->reconcile();
101
102 - **Implement countFetched() and countMatched() on api4 results.
103 ([22115](https://github.com/civicrm/civicrm-core/pull/22115))**
104
105 Provides clearer methods for finding out how many API4 results you've got.
106
107 - **SearchKit - Add data segmentation functionality
108 ([23059](https://github.com/civicrm/civicrm-core/pull/23059))**
109
110 Creates virtual fields based on flexible segmentation criteria.
111
112 - **SearchKit - Add date pseudo-fields
113 ([23381](https://github.com/civicrm/civicrm-core/pull/23381))**
114
115 Exposes date pseudo-fields to SearchKit.
116
117 - **make survey title available in form builder
118 ([23322](https://github.com/civicrm/civicrm-core/pull/23322))**
119
120 Makes the Survey title field available in Afform.
121
122 - **Afform - Dispatch event to alter admin metadata; provide mixin
123 ([23303](https://github.com/civicrm/civicrm-core/pull/23303))**
124
125 Makes Form-Builder more extensible by allowing extensions to add to the list
126 of available entities, elements, input types, styles, etc.
127
128 - **Afform - Improve dragging into dropzones
129 ([23239](https://github.com/civicrm/civicrm-core/pull/23239))**
130
131 Improves the drag-n-drop UX in Afform when composing complex layouts.
132
133 - **AfformGui - Optional reset button for search and submit forms
134 ([dev/core#3430](https://lab.civicrm.org/dev/core/-/issues/3430):
135 [23334](https://github.com/civicrm/civicrm-core/pull/23334))**
136
137 Adds a "reset" button for search forms.
138
139 - **Add icons for SavedSearch and SearchDisplay entities
140 ([23149](https://github.com/civicrm/civicrm-core/pull/23149))**
141
142 Improves user experience by adding icons for Saved Search and Search Display
143 entities.
144
145 - **Simplify and improve performance of query to insert updated cache
146 ([21943](https://github.com/civicrm/civicrm-core/pull/21943))**
147
148 Caching performance improvement.
149
150 ### CiviCampaign
151
152 - **Make links to sign a petition easily accessible on the form.
153 ([23316](https://github.com/civicrm/civicrm-core/pull/23316))**
154
155 Adds links to the bottom of the petition edit form so users can more easily
156 publicize their petition.
157
158 ### CiviCase
159
160 - **Activity Type + Activity Status + Case Type not being Combined Correctly in
161 Search Builder
162 ([dev/core#3249](https://lab.civicrm.org/dev/core/-/issues/3249):
163 [23313](https://github.com/civicrm/civicrm-core/pull/23313))**
164
165 Makes casetype a managed entity.
166
167 ### CiviContribute
168
169 - **Define return parameters for doPayment
170 ([dev/financial#141](https://lab.civicrm.org/dev/financial/-/issues/141):
171 [22683](https://github.com/civicrm/civicrm-core/pull/22683))**
172
173 Updates return parameters on all payment processors to match expected results.
174
175 ### Drupal Integration
176
177 - **Extend command drush civicrm-ext-list for Drupal 8
178 ([72](https://github.com/civicrm/civicrm-drupal-8/pull/72))**
179
180 Extends the `drush civicrm-ext-list` command to work for drupal 8.
181
182 ### Wordpress Integration
183
184 - **WordPress - Display site-theme/decorations on error screens
185 ([22805](https://github.com/civicrm/civicrm-core/pull/22805))**
186
187 Improve error screen user experience by displaying site theme/decorations.
188
189 ## <a name="bugs"></a>Bugs resolved
190
191 ### Core CiviCRM
192
193 - **Improve validation of start and end dates for events, contribution pages and
194 more (Work Towards
195 [dev/core#2846](https://lab.civicrm.org/dev/core/-/issues/2846):
196 [21513](https://github.com/civicrm/civicrm-core/pull/21513))**
197
198 Applies form-level validation to start and end dates.
199
200 - **Report Filter Statistics don't show filters with value of "0"
201 ([dev/core#3164](https://lab.civicrm.org/dev/core/-/issues/3164):
202 [23191](https://github.com/civicrm/civicrm-core/pull/23191))**
203
204 - **Fix 'Authorization Failed' regression when submitting eg. webform via
205 checksum ([23607](https://github.com/civicrm/civicrm-core/pull/23607))**
206
207 This resolves a bug where accessing an entity through APIv3, coming in via a
208 checksum link, results in a failed authorization for the step of updating the
209 recent items stack via APIv4.
210
211 - **Manage Extensions - Hide nag for core exts
212 ([dev/core#3171](https://lab.civicrm.org/dev/core/-/issues/3171):
213 [23204](https://github.com/civicrm/civicrm-core/pull/23204))**
214
215 - **AuthX: Breaks sites when Basic Auth is enabled
216 ([dev/core#3416](https://lab.civicrm.org/dev/core/-/issues/3416):
217 [22837](https://github.com/civicrm/civicrm-core/pull/22837))**
218
219 - **Save button on API4 explorer is misleading
220 ([dev/core#3155](https://lab.civicrm.org/dev/core/-/issues/3155):
221 [23144](https://github.com/civicrm/civicrm-core/pull/23144))**
222
223 - **APIv4 - Support pseudoconstant suffixes in getFields
224 ([23348](https://github.com/civicrm/civicrm-core/pull/23348))**
225
226 - **APIv4 - Deprecate unnecessary event
227 ([23311](https://github.com/civicrm/civicrm-core/pull/23311))**
228
229 - **SearchKit - Consistently check for date field
230 ([23354](https://github.com/civicrm/civicrm-core/pull/23354))**
231
232 - **SearchKit - Ensure all date and timestamp fields are presented with datepicker
233 ([23335](https://github.com/civicrm/civicrm-core/pull/23335))**
234
235 - **SearchKit - Keep label when switching entity
236 ([23319](https://github.com/civicrm/civicrm-core/pull/23319))**
237
238 - **SearchKit - Move grid css to its own file
239 ([23315](https://github.com/civicrm/civicrm-core/pull/23315))**
240
241 - **SearchKit - Fix 'undefined var' error after import
242 ([23572](https://github.com/civicrm/civicrm-core/pull/23572))**
243
244 Fixes an unresponsive screen after importing multiple records into SearchKit
245 (using the Import dialog).
246
247 - **add missing Parishes of Bermuda (civicrm_state_province)
248 ([23339](https://github.com/civicrm/civicrm-core/pull/23339))**
249
250 - **PR 22070 follow-up: reinstate respecting no_display on report column headers
251 ([23321](https://github.com/civicrm/civicrm-core/pull/23321))**
252
253 Respect no_display on report column headers.
254
255 - **Remove preferred email format from inline edit
256 ([23269](https://github.com/civicrm/civicrm-core/pull/23269))**
257
258 - **Do not escape wizard class - procede straight to Hogwarts
259 ([23185](https://github.com/civicrm/civicrm-core/pull/23185))**
260
261 - **jira/browse/CRM-18217 On the website front-end, CiviCRM page heading should
262 start from h2 and not h1
263 ([23324](https://github.com/civicrm/civicrm-core/pull/23324))**
264
265 - **Disable scrolling on time inputs
266 ([dev/user-interface#47](https://lab.civicrm.org/dev/user-interface/-/issues/47):
267 [23264](https://github.com/civicrm/civicrm-core/pull/23264))**
268
269 - **SearchKit - Fix selection of fields when creating a Data Segment
270 ([23265](https://github.com/civicrm/civicrm-core/pull/23265))**
271
272 - **APIv4 - Fix fatal error on getFields when passing in contact id
273 ([23389](https://github.com/civicrm/civicrm-core/pull/23389))**
274
275 - **ACLCache: Efficiency. Fix duplicate inserts
276 ([21993](https://github.com/civicrm/civicrm-core/pull/21993))**
277
278 - **Update expired root certs (5.50)
279 ([23387](https://github.com/civicrm/civicrm-core/pull/23387))**
280
281 - **Fix 'Table already exists' error when running 5.50 upgrade twice
282 ([23355](https://github.com/civicrm/civicrm-core/pull/23355))**
283
284 - **5.50.alpha1.mysql.tpl - Escape `grouping` (reserved word in MySQL 8.0)
285 ([23396](https://github.com/civicrm/civicrm-core/pull/23396))**
286
287 - **Import code cleanup (Work Towards
288 [dev/core#3414](https://lab.civicrm.org/dev/core/-/issues/3414):
289 [23291](https://github.com/civicrm/civicrm-core/pull/23291))**
290
291 Stop dropping temp table on finish of contact import job.
292
293 - **[Import] Upgrade saved import names for contacts
294 ([23288](https://github.com/civicrm/civicrm-core/pull/23288))**
295
296 Fixes the Contact import such that the name field hold the name of the field
297 being upgraded to rather than the label (and fixes the import such that it
298 expects name going forwards).
299
300 - **[Import] Enotice fix on contact import field mapping screen
301 ([23306](https://github.com/civicrm/civicrm-core/pull/23306))**
302
303 - **[Import] Output errors, duplicates csvs directly from the user job table
304 ([23292](https://github.com/civicrm/civicrm-core/pull/23292))**
305
306 - **Import - fix comment
307 ([23361](https://github.com/civicrm/civicrm-core/pull/23361))**
308
309 - **resolve TypeError: unsupported operand types: string + int;
310 ([23015](https://github.com/civicrm/civicrm-core/pull/23015))**
311
312 - **Ensure tags fields are assigned to tpl for email form test
313 ([23183](https://github.com/civicrm/civicrm-core/pull/23183))**
314
315 - **Don't overescape links in pledge tab
316 ([23206](https://github.com/civicrm/civicrm-core/pull/23206))**
317
318 - **Don't overescape tab links
319 ([23205](https://github.com/civicrm/civicrm-core/pull/23205))**
320
321 - **🪲 🪳 Bug Fix: The option "Enable multiple bulk email address for a contact"
322 does not apply when editing a Contact, only works for inline edit of email
323 addresses ([23082](https://github.com/civicrm/civicrm-core/pull/23082))**
324
325 - **Translation - distinguish between 'On' for date and 'On'/'Off'
326 ([23379](https://github.com/civicrm/civicrm-core/pull/23379))**
327
328 - **getSelfServiceEligibility: fix string translation
329 ([23163](https://github.com/civicrm/civicrm-core/pull/23163))**
330
331 - **Centralise skipColumnHeader to one function (fixes notices, cleans code)
332 ([23135](https://github.com/civicrm/civicrm-core/pull/23135))**
333
334 - **✍🏼 Fix spelling of "additional". Numerous uses of "additonal"
335 ([23162](https://github.com/civicrm/civicrm-core/pull/23162))**
336
337 - **Ensure deleteURL variable for ContactImage.tpl
338 ([23150](https://github.com/civicrm/civicrm-core/pull/23150))**
339
340 - **Don't overescape weights in default-escape mode
341 ([23152](https://github.com/civicrm/civicrm-core/pull/23152))**
342
343 - **Avoid PHP notices on FinancialAccount table
344 ([23151](https://github.com/civicrm/civicrm-core/pull/23151))**
345
346 - **Apply nodefaults to row actions
347 ([23207](https://github.com/civicrm/civicrm-core/pull/23207))**
348
349 - **Add nodefaults to access.tpl
350 ([23208](https://github.com/civicrm/civicrm-core/pull/23208))**
351
352 - **Add nodefaults to group edit form
353 ([23225](https://github.com/civicrm/civicrm-core/pull/23225))**
354
355 - **Add smarty:nodefaults to ManageEvent page.
356 ([23173](https://github.com/civicrm/civicrm-core/pull/23173))**
357
358 - **Add smarty:nodefaults to default.tpl form.
359 ([23153](https://github.com/civicrm/civicrm-core/pull/23153))**
360
361 - **Apply nodefaults to contact tabs for escape-on-output
362 ([23232](https://github.com/civicrm/civicrm-core/pull/23232))**
363
364 - **MultipleRecordFieldsListing.tpl - JS strings should us JS escaping
365 ([23499](https://github.com/civicrm/civicrm-core/pull/23499))**
366
367 ### CiviCampaign
368
369 - **update-supporter-url
370 ([23287](https://github.com/civicrm/civicrm-core/pull/23287))**
371
372 ### CiviCase
373
374 - **Case Resources cuts off at 25 contacts when creating case activity
375 ([dev/core#3431](https://lab.civicrm.org/dev/core/-/issues/3431):
376 [23327](https://github.com/civicrm/civicrm-core/pull/23327))**
377
378 Case activity only has 25 contacts listed from Case Resources in the Send Copy
379 section.
380
381 ### CiviContribute
382
383 - **Paypal pro, a.net ipn - do not update start date, status
384 ([23156](https://github.com/civicrm/civicrm-core/pull/23156))**
385
386 - **Compare currencies as well as amounts on template Contribution change
387 ([23298](https://github.com/civicrm/civicrm-core/pull/23298))**
388
389 - **Start to fix misnamed FinancialTrxn bao
390 ([23190](https://github.com/civicrm/civicrm-core/pull/23190))**
391
392 - **ensure checkbox custom fields on contributions import properly
393 ([23246](https://github.com/civicrm/civicrm-core/pull/23246))**
394
395 - **Always assign pay_later_receipt
396 ([23080](https://github.com/civicrm/civicrm-core/pull/23080))**
397
398 - **Contribution dashboard links work in escape-on-output mode
399 ([23174](https://github.com/civicrm/civicrm-core/pull/23174))**
400
401 - **Improve financial trxn spec to require required fields
402 ([22571](https://github.com/civicrm/civicrm-core/pull/22571))**
403
404 - **Always use cancelSubscription form for cancelling recurring contributions
405 ([23210](https://github.com/civicrm/civicrm-core/pull/23210))**
406
407 - **financialacls core extension uses a global callback in
408 hook_civicrm_container, which might be iffy
409 ([dev/core#3184](https://lab.civicrm.org/dev/core/-/issues/3184):
410 [23268](https://github.com/civicrm/civicrm-core/pull/23268))**
411
412 Definitively load main files during bootstrap.
413
414 - **Fix empty money handling
415 ([23528](https://github.com/civicrm/civicrm-core/pull/23528))**
416
417 Tokens representing money fields will now default to 0 for empty values.
418
419 - **Calculate unit_price based on qty
420 ([23566](https://github.com/civicrm/civicrm-core/pull/23566))**
421
422 This resolves a bug when a template contribution was created for a recurring
423 contribution: the unit_price on the line item was set to match the line_total,
424 ignoring qty.
425
426 ### CiviEvent
427
428 - **batch geocode API does not process event addresses
429 ([dev/core#3439](https://lab.civicrm.org/dev/core/-/issues/3439):
430 [23351](https://github.com/civicrm/civicrm-core/pull/23351))**
431
432 - **Event template scheduled reminders lost when creating a new event using API4
433 ([dev/core#3183](https://lab.civicrm.org/dev/core/-/issues/3183):
434 [23238](https://github.com/civicrm/civicrm-core/pull/23238))**
435
436 - **Scheduled Reminders "Additional Recipients" feature sends at wrong time, is
437 incompatible with tokens
438 ([dev/core#1836](https://lab.civicrm.org/dev/core/-/issues/1836):
439 [23101](https://github.com/civicrm/civicrm-core/pull/23101))**
440
441 - **Event self-service cancel: allow cancelling Waitlist registration
442 ([23164](https://github.com/civicrm/civicrm-core/pull/23164))**
443
444 ### CiviMail
445
446 - **send group subscription welcome email only if template is enabled
447 ([23139](https://github.com/civicrm/civicrm-core/pull/23139))**
448
449 ### CiviMember
450
451 - **Limit issue fix
452 ([23229](https://github.com/civicrm/civicrm-core/pull/23229))**
453
454 Remove limit when printing labels from member search action.
455
456 - **Set default values on MembershipView to stop PHP notices
457 ([22664](https://github.com/civicrm/civicrm-core/pull/22664))**
458
459 ### Drupal Integration
460
461 - **Epic: Drupal 10 readiness (Work Towards
462 [dev/drupal#176](https://lab.civicrm.org/dev/drupal/-/issues/176):
463 [23302](https://github.com/civicrm/civicrm-core/pull/23302))**
464
465 Fixes the 'Error: Class "Symfony\Cmf\Component\Routing\RouteObjectInterface"
466 not found' when using cv in drupal 9 and 10.
467
468 ## <a name="misc"></a>Miscellany
469
470 - **ManagedEntities - Allow targeted reconciliation. Add hook parameter.
471 Simplify logic.
472 ([22959](https://github.com/civicrm/civicrm-core/pull/22959))**
473
474 - **DAOs out of date
475 ([23362](https://github.com/civicrm/civicrm-core/pull/23362))**
476
477 - **[Import] Rename dedupe rule id field from dedupe to dedupe_rule_id field
478 ([23263](https://github.com/civicrm/civicrm-core/pull/23263))**
479
480 - **Add import function to parser
481 ([23338](https://github.com/civicrm/civicrm-core/pull/23338))**
482
483 - **I have no words
484 ([23244](https://github.com/civicrm/civicrm-core/pull/23244))**
485
486 - **Update phpleague/csv from 9.2 to 9.6 (supports php 8)
487 ([dev/core#3172](https://lab.civicrm.org/dev/core/-/issues/3172):
488 [23180](https://github.com/civicrm/civicrm-core/pull/23180))**
489
490 - **Stop adding obsolete currencies to new installs
491 ([23345](https://github.com/civicrm/civicrm-core/pull/23345))**
492
493 - **Managed entity cleanup
494 ([23251](https://github.com/civicrm/civicrm-core/pull/23251))**
495
496 - **Take a reality check on moneyCleaning in test
497 ([23215](https://github.com/civicrm/civicrm-core/pull/23215))**
498
499 - **Minor simplification of getAmountLevelText
500 ([23159](https://github.com/civicrm/civicrm-core/pull/23159))**
501
502 - **Standardise activity datasource text
503 ([23217](https://github.com/civicrm/civicrm-core/pull/23217))**
504
505 - **Standardise participant import text
506 ([23218](https://github.com/civicrm/civicrm-core/pull/23218))**
507
508 - **Standardize DataSource file for Contribution & Membership
509 ([23186](https://github.com/civicrm/civicrm-core/pull/23186))**
510
511 - **Release - Set version compatibility for core extensions when updating core
512 ([23143](https://github.com/civicrm/civicrm-core/pull/23143))**
513
514 - **Make static function static - processCaseTags
515 ([23278](https://github.com/civicrm/civicrm-core/pull/23278))**
516
517 - **Whitespace cleanup in template file
518 ([23277](https://github.com/civicrm/civicrm-core/pull/23277))**
519
520 - **IDE cheer - cast var explicitly to an int
521 ([23350](https://github.com/civicrm/civicrm-core/pull/23350))**
522
523 - **Remove unused variable
524 ([23352](https://github.com/civicrm/civicrm-core/pull/23352))**
525
526 - **Minor function simplification in private function
527 ([23364](https://github.com/civicrm/civicrm-core/pull/23364))**
528
529 - **ManagedEntities - Update version number for mgd-php
530 ([23422](https://github.com/civicrm/civicrm-core/pull/23422))**
531
532 - **Minor readability improvement
533 ([23157](https://github.com/civicrm/civicrm-core/pull/23157))**
534
535 - **Cleanup crmMailing/Templates.js
536 ([23188](https://github.com/civicrm/civicrm-core/pull/23188))**
537
538 - **Further simplify variable retrieval
539 ([23172](https://github.com/civicrm/civicrm-core/pull/23172))**
540
541 - **Remove unused parameter from private function
542 ([23194](https://github.com/civicrm/civicrm-core/pull/23194))**
543
544 - **Remove code only needed by Drupal6
545 ([23212](https://github.com/civicrm/civicrm-core/pull/23212))**
546
547 - **Remove unused function
548 ([23200](https://github.com/civicrm/civicrm-core/pull/23200))**
549
550 - **Remove an unset variable
551 ([23285](https://github.com/civicrm/civicrm-core/pull/23285))**
552
553 - **Remove some copy & paste
554 ([23171](https://github.com/civicrm/civicrm-core/pull/23171))**
555
556 - **Remove another good intention - unused variables
557 ([23275](https://github.com/civicrm/civicrm-core/pull/23275))**
558
559 - **Reduce use of reference
560 ([23165](https://github.com/civicrm/civicrm-core/pull/23165))**
561
562 - **Remove-single-value-loop
563 ([23155](https://github.com/civicrm/civicrm-core/pull/23155))**
564
565 - **[REF] [Import] Use shared file instead of now-identical files
566 ([23216](https://github.com/civicrm/civicrm-core/pull/23216))**
567
568 - **[REF] [Import] Standardise import text for CustomData import
569 ([23219](https://github.com/civicrm/civicrm-core/pull/23219))**
570
571 - **[Ref] [Import] [csv] Remove non-functional code
572 ([23195](https://github.com/civicrm/civicrm-core/pull/23195))**
573
574 - **[REF] [Import] Handle limit with more sanity
575 ([23262](https://github.com/civicrm/civicrm-core/pull/23262))**
576
577 - **[Import] [Ref] Simplify string concatenation
578 ([23330](https://github.com/civicrm/civicrm-core/pull/23330))**
579
580 - **[REF][Import] (minor) Extract getHightlightedFields
581 ([23304](https://github.com/civicrm/civicrm-core/pull/23304))**
582
583 - **[REF] [Import] Obsolete if removal
584 ([23253](https://github.com/civicrm/civicrm-core/pull/23253))**
585
586 - **[REF] [Import] [Custom] Remove another in-between class
587 ([23222](https://github.com/civicrm/civicrm-core/pull/23222))**
588
589 - **[REF] [Import] [Trivial] Minor test fixes
590 ([23341](https://github.com/civicrm/civicrm-core/pull/23341))**
591
592 - **[REF] [Import] Trivial - simplify variable
593 ([23347](https://github.com/civicrm/civicrm-core/pull/23347))**
594
595 - **[REF] [Import] Ensure jobID is set in contact flow
596 ([23280](https://github.com/civicrm/civicrm-core/pull/23280))**
597
598 - **[REF] [Import] call non-deprecated function instead of deprecated
599 ([23293](https://github.com/civicrm/civicrm-core/pull/23293))**
600
601 - **[REF] [Import] [Trivial] Make 'mapper' field available as a submittable
602 value throughout the flow
603 ([23308](https://github.com/civicrm/civicrm-core/pull/23308))**
604
605 - **[REF] [Import] Extract getContactType
606 ([23284](https://github.com/civicrm/civicrm-core/pull/23284))**
607
608 - **[REF] [Import] [Trivial] Make mapperKeys parameter optional in construct
609 ([23307](https://github.com/civicrm/civicrm-core/pull/23307))**
610
611 - **[REF] [Import] [Trivial] Extract duplicate match options
612 ([23300](https://github.com/civicrm/civicrm-core/pull/23300))**
613
614 - **[REF] [Import] Remove another good intention from the import class
615 ([23261](https://github.com/civicrm/civicrm-core/pull/23261))**
616
617 - **[REF] [Import] Stop overloading dataSource form
618 ([23237](https://github.com/civicrm/civicrm-core/pull/23237))**
619
620 - **[REF] [Import] Remove meaningless code
621 ([23242](https://github.com/civicrm/civicrm-core/pull/23242))**
622
623 - **[REF] [Import] remove pointless fini functions.
624 ([23241](https://github.com/civicrm/civicrm-core/pull/23241))**
625
626 - **[REF] [Import] Remove warning count - never returned
627 ([23240](https://github.com/civicrm/civicrm-core/pull/23240))**
628
629 - **[Ref] [Import] Remove another good intention....mapField
630 ([23236](https://github.com/civicrm/civicrm-core/pull/23236))**
631
632 - **[REF] [Import] Remove last in-between parser class
633 ([23227](https://github.com/civicrm/civicrm-core/pull/23227))**
634
635 - **[Ref] [Import] Remove another 'in-between' class
636 ([23221](https://github.com/civicrm/civicrm-core/pull/23221))**
637
638 - **[REF] [Import] [Contact] Remove in-between class
639 ([23223](https://github.com/civicrm/civicrm-core/pull/23223))**
640
641 - **[Ref] [Import] Cleanup cleanup on old tables for form re-submission
642 ([23276](https://github.com/civicrm/civicrm-core/pull/23276))**
643
644 - **[REF] [Import] Trivial - simplify variable
645 ([23360](https://github.com/civicrm/civicrm-core/pull/23360))**
646
647 - **[REF][Import] [Contact] Clean up preview screen
648 ([23340](https://github.com/civicrm/civicrm-core/pull/23340))**
649
650 - **[Import] [Ref] [Contact] Extract row mapping and add test
651 ([23342](https://github.com/civicrm/civicrm-core/pull/23342))**
652
653 - **[Ref] [Import] Add extra functions to DataSource
654 ([23344](https://github.com/civicrm/civicrm-core/pull/23344))**
655
656 - **[REF] [Import] Trivial - simplify variable
657 ([23349](https://github.com/civicrm/civicrm-core/pull/23349))**
658
659 - **(REF) CryptoRegistry - Fix type declaration
660 ([23220](https://github.com/civicrm/civicrm-core/pull/23220))**
661
662 - **[REF] [Import] extract validation functionality
663 ([23371](https://github.com/civicrm/civicrm-core/pull/23371))**
664
665 - **[REF] [Import] Trivial - simplify variables
666 ([23369](https://github.com/civicrm/civicrm-core/pull/23369))**
667
668 - **[Ref] Get rid of private deprecated legacy function
669 ([23375](https://github.com/civicrm/civicrm-core/pull/23375))**
670
671 - **[REF] Do not treat site having a default location type as optional
672 ([23282](https://github.com/civicrm/civicrm-core/pull/23282))**
673
674 - **[REF] Minor code simplifcation - reduce silly lines
675 ([23368](https://github.com/civicrm/civicrm-core/pull/23368))**
676
677 - **[REF] [Import] Remove unused tpl assign showColNames
678 ([23366](https://github.com/civicrm/civicrm-core/pull/23366))**
679
680 - **[Import] [Ref] [Minor] Simplify error handling with a try-catch block
681 ([23370](https://github.com/civicrm/civicrm-core/pull/23370))**
682
683 - **[Ref][Import] Remove another good intention - random email counting
684 ([23367](https://github.com/civicrm/civicrm-core/pull/23367))**
685
686 - **[REF] [Import] Simplify dataSource contract - remove unused preProcess
687 ([23272](https://github.com/civicrm/civicrm-core/pull/23272))**
688
689 - **[REF] [Import] Trivial - simplify variables
690 ([23363](https://github.com/civicrm/civicrm-core/pull/23363))**
691
692 - **(REF) Fix test to use full flow
693 ([23160](https://github.com/civicrm/civicrm-core/pull/23160))**
694
695 - **[REF] Extract getContributionRecurID
696 ([23158](https://github.com/civicrm/civicrm-core/pull/23158))**
697
698 - **[REF] [Import] Stop passing submittedValues as parameters
699 ([23343](https://github.com/civicrm/civicrm-core/pull/23343))**
700
701 - **[REF] [Import] Remove another good intention - import 'conflicts'
702 ([23380](https://github.com/civicrm/civicrm-core/pull/23380))**
703
704 - **[REF] Code cleanup on location entities for the Contact Summary screen
705 ([22967](https://github.com/civicrm/civicrm-core/pull/22967))**
706
707 - **[REF] Fix test to use form flow / helper
708 ([23211](https://github.com/civicrm/civicrm-core/pull/23211))**
709
710 - **[REF][Test] Update loadMappingTest to use form flow
711 ([23286](https://github.com/civicrm/civicrm-core/pull/23286))**
712
713 - **[REF] Do not pass form properties within the form
714 ([23213](https://github.com/civicrm/civicrm-core/pull/23213))**
715
716 - **(NFC) authx - Update descriptions and links in `info.xml`
717 ([23169](https://github.com/civicrm/civicrm-core/pull/23169))**
718
719 - **(NFC) mixin/**.php - Add @since tags
720 ([23423](https://github.com/civicrm/civicrm-core/pull/23423) and
721 [23440](https://github.com/civicrm/civicrm-core/pull/23440))**
722
723 - **(NFC) Skip CliRunnerTest on php80+drush+Backdrop
724 ([23184](https://github.com/civicrm/civicrm-core/pull/23184))**
725
726 - **NFC Minor cleanup to Participant confirm
727 ([23357](https://github.com/civicrm/civicrm-core/pull/23357))**
728
729 - **[NFC] Fix APIv4 docblock annotations for Managed API
730 ([23359](https://github.com/civicrm/civicrm-core/pull/23359))**
731
732 - **E2E_Core_ErrorTest - Demonstrate whether error pages are well-formed
733 ([23257](https://github.com/civicrm/civicrm-core/pull/23257))**
734
735 - **(E2E) `testErrorChrome` - Update assertions for page-chrome
736 ([23397](https://github.com/civicrm/civicrm-core/pull/23397))**
737
738 - **(E2E) testErrorChrome - Skip Backdrop and D8+ (much like D7)
739 ([23398](https://github.com/civicrm/civicrm-core/pull/23398))**
740
741 ## <a name="credits"></a>Credits
742
743 This release was developed by the following code authors:
744
745 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman;
746 Benjamin W; BrightMinded Ltd - Bradley Taylor; Circle Interactive - Pradeep
747 Nayak; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop
748 SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Freeform Solutions - Herb
749 van den Dool; Ginkgo Street Labs - Michael Z Daryabeygi; iXiam - Luciano
750 Spiegel; JMA Consulting - Monish Deb, Seamus Lee; John Kingsnorth; Joinery -
751 Allen Shaw; Lighthouse Consulting and Design - Brian Shaughnessy; Megaphone
752 Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Progressive
753 Technology Project - Jamie McClelland; Third Sector Design - Kurund Jalmi;
754 Wikimedia Foundation - Eileen McNaughton
755
756 Most authors also reviewed code for this release; in addition, the following
757 reviewers contributed their comments:
758
759 Andreas Howiller; Andy Burns; Artful Robot - Rich Lott; Australian Greens - John
760 Twyman; Betty Dolfing; Christian Wach; Circle Interactive - Dave Jenkins, Matt
761 Trim; CiviCoop - Jaap Jansma; iXiam - Vangelis Pantazis; JMA Consulting - Edsel
762 Lopez; John Kingsnorth; Joinery - Allen Shaw; Nicol Wistreich; Tadpole
763 Collective - Kevin Cristiano
764
765 ## <a name="feedback"></a>Feedback
766
767 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
768 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
769 and contact `@agh1`.