Merge pull request #23934 from eileenmcnaughton/url_tokens
[civicrm-core.git] / release-notes / 5.51.0.md
1 # CiviCRM 5.51.0
2
3 Released July 6, 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? | no |
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="features"></a>Features
26
27 ### CiviCRM Core
28
29 - **Import validate related contacts in the same way as the main contact
30 ([23455](https://github.com/civicrm/civicrm-core/pull/23455))**
31
32 Improves validation of related contacts when importing by using the same
33 logic that is used for the main contact.
34
35 - **Import - make tracking fields import-specific
36 ([23692](https://github.com/civicrm/civicrm-core/pull/23692))**
37
38 Makes it so administrators can define the fields they track when importing.
39
40 - **Use UI Queue runner for import
41 ([23669](https://github.com/civicrm/civicrm-core/pull/23669) and
42 [23712](https://github.com/civicrm/civicrm-core/pull/23712))**
43
44 Improves Import experience by using UI Queue runner.
45
46 - **Civi::queue() - Add support for 'template' queues
47 ([23679](https://github.com/civicrm/civicrm-core/pull/23679))**
48
49 Adds support for creating template queues.
50
51 - **CRM_Queue_Task - Track an optional `$runAs` property
52 ([23743](https://github.com/civicrm/civicrm-core/pull/23743))**
53
54 Adds tracking for the Queue task `$runAs` property.
55
56 - **CRM_Queue_Runner - Add basic/skeletal support for `runAllInteractively()`
57 ([23746](https://github.com/civicrm/civicrm-core/pull/23746))**
58
59 Adds a third Queue Runner mechanism/helper `runAllInteractively`.
60
61 - **Queue - When UserJob has no more tasks, update status & fire hook
62 ([23711](https://github.com/civicrm/civicrm-core/pull/23711))**
63
64 Updates the queue status when all tasks in the queue have been completed.
65
66 - **Define more usable queue DX for multithreaded background work (Work Towards
67 [dev/core#1304](https://lab.civicrm.org/dev/core/-/issues/1304):
68 [22762](https://github.com/civicrm/civicrm-core/pull/22762) and
69 [23667](https://github.com/civicrm/civicrm-core/pull/23667))**
70
71 Defines 'status' and 'error' columns for `civicrm_queue` table and allows
72 background worker to drive tasks via APIv4.
73
74 - **Enable ability to require tags in profiles
75 ([23645](https://github.com/civicrm/civicrm-core/pull/23645))**
76
77 Enables the ability to make the Tag field required in a profile.
78
79 - **Add view link to user job monitoring page
80 ([23838](https://github.com/civicrm/civicrm-core/pull/23838))**
81
82 Improves user experience by adding a view link to the user job monitoring
83 page.
84
85 - **Add upgrade for label to name conversion in `civicrm_mapping_field` for
86 multiple custom imports
87 ([23737](https://github.com/civicrm/civicrm-core/pull/23737))**
88
89 Improves import experience when importing custom fields that allow multiple
90 values.
91
92 - **RelationshipCache - Set 'get' permissions
93 ([23684](https://github.com/civicrm/civicrm-core/pull/23684))**
94
95 Gives lesser-permissioned users access to the RelationshipCache entity, for
96 Search Kit.
97
98 - **Make this error message more informative.
99 ([23599](https://github.com/civicrm/civicrm-core/pull/23599))**
100
101 Improves error message text.
102
103 - **Add Authx settings to navigation
104 ([23631](https://github.com/civicrm/civicrm-core/pull/23631))**
105
106 Adds Authx settings to the Navigation menu.
107
108 - **APIv4 - Filter custom fields based on supplied values
109 ([23489](https://github.com/civicrm/civicrm-core/pull/23489))**
110
111 Improves APIv4 metadata, allows targeted getfields for a particular entity or
112 type of entity.
113
114 - **APIv4 - Export options along with custom field
115 ([23452](https://github.com/civicrm/civicrm-core/pull/23452))**
116
117 Exports option groups and option values along with a custom field.
118
119 - **Search kit grand totals
120 ([23454](https://github.com/civicrm/civicrm-core/pull/23454))**
121
122 Adds a row to SearchKit table displays for grand totals, averages, counts and
123 other statistics. The aggregation method used can be configured per-column.
124
125 - **SearchKit - Default to simple pager when creating new table display
126 ([23436](https://github.com/civicrm/civicrm-core/pull/23436))**
127
128 Improves SearchKit user experience by defaulting to a simple pager.
129
130 - **SearchKit - add address proximity (map radius) search
131 ([23597](https://github.com/civicrm/civicrm-core/pull/23597))**
132
133 Allows searching for addresses within a given distance of a location in
134 SearchKit.
135
136 - **SearchKit - Allow SearchSegments to be packaged as .mgd.php
137 ([23578](https://github.com/civicrm/civicrm-core/pull/23578))**
138
139 Allows SearchSegments to be packaged and distributed in extensions, along
140 with Saved Searches and Search Displays.
141
142 - **SearchKit - Make loading placeholders configurable
143 ([23702](https://github.com/civicrm/civicrm-core/pull/23702))**
144
145 Allows administrators to control how many (if any) skeleton results are shown
146 during ajax loading. It also lightens the colors to make the animation a bit
147 more subtle.
148
149 - **Search-kit - allow functions in the GROUP BY clause
150 ([dev/core#2485](https://lab.civicrm.org/dev/core/-/issues/2485):
151 [23434](https://github.com/civicrm/civicrm-core/pull/23434))**
152
153 Improves SearchKit so that one can have functions in the GROUP BY clause.
154
155 - **SearchKit - Default to search for individuals
156 ([23385](https://github.com/civicrm/civicrm-core/pull/23385))**
157
158 When clicking "+ New Search" in Search Kit, defaults to search for Individuals
159 instead of all contacts.
160
161 - **Make SearchKit available to non-admin users
162 ([dev/core#3457](https://lab.civicrm.org/dev/core/-/issues/3457):
163 [23670](https://github.com/civicrm/civicrm-core/pull/23670))**
164
165 Makes SearchKit available to non-admins by adding a new permission.
166
167 - **Dashboard - Efficiency tweak
168 ([23439](https://github.com/civicrm/civicrm-core/pull/23439))**
169
170 Improves the efficiency of the Dashboard.
171
172 - **Dashboard - Sort available dashlets alphabetically, add search box
173 ([23438](https://github.com/civicrm/civicrm-core/pull/23438))**
174
175 Improves user experience of the Dashboard by adding a search box and sorting
176 available dashlets alphabetically.
177
178 - **Dashboard - Show full title when hovering an inactive dashlet
179 ([23433](https://github.com/civicrm/civicrm-core/pull/23433))**
180
181 Improves user experience on the Dashboard by showing the full title when
182 hovering over an inactive dashlet.
183
184 - **Afform - support relationships
185 ([23296](https://github.com/civicrm/civicrm-core/pull/23296))**
186
187 Adds support for Relationships to Afform.
188
189 - **Afform - Add undo/redo buttons to the Admin UI
190 ([23648](https://github.com/civicrm/civicrm-core/pull/23648))**
191
192 Improves user experience of Afform by adding undo and redo buttons to the
193 Admin UI.
194
195 - **Afform - Add 'administer afform' permission
196 ([23687](https://github.com/civicrm/civicrm-core/pull/23687))**
197
198 Adds a new permission to allow non-system-admins to access Form Builder
199
200 - **Afform - dispatch event when loading afforms
201 ([23488](https://github.com/civicrm/civicrm-core/pull/23488))**
202
203 Adds a hook-event which allows extensions to dynamically add Afforms.
204
205 ### CiviCase
206
207 - **Make CaseType usable in Afform & SearchKit
208 ([23640](https://github.com/civicrm/civicrm-core/pull/23640))**
209
210 Adds the `CaseType` entity to Afform and Searchkit.
211
212 ### CiviContribute
213
214 - **Add price set entity api4 support
215 ([23694](https://github.com/civicrm/civicrm-core/pull/23694))**
216
217 Extends APIv4 to support the `PriceSet` entity.
218
219 - **Proposal - make future recurring contribution instances modifiable & not
220 fail if the only contribution is deleted. (Work Towards
221 [dev/financial#6](https://lab.civicrm.org/dev/financial/-/issues/6):
222 [22487](https://github.com/civicrm/civicrm-core/pull/22487))**
223
224 Makes it so `Contribution.repeattransaction` uses the template contribution.
225
226 ### CiviGrant
227
228 - **CiviGrant - Add prefix to permission label
229 ([23668](https://github.com/civicrm/civicrm-core/pull/23668))**
230
231 Makes CiviGrant permissions easier to read on the Manage Permissions page.
232
233 ### CiviMail
234
235 - **Mailing List Subscription: remove the cancel button
236 ([23696](https://github.com/civicrm/civicrm-core/pull/23696))**
237
238 Improves user experience by removing the cancel button from the Mailing List
239 Subscription form.
240
241 ### Drupal Integration
242
243 - **Epic: Drupal 10 readiness: Allow wider range of psr-log versions to be
244 installed (Work Towards
245 [dev/drupal#176](https://lab.civicrm.org/dev/drupal/-/issues/176):
246 [23409](https://github.com/civicrm/civicrm-core/pull/23409))**
247
248 Work Towards Drupal 10 readiness specifically by allowing a wider range of
249 psr-log versions to be installed.
250
251 ## <a name="bugs"></a>Bugs resolved
252
253 ### Core CiviCRM
254
255 - **Dedupe rule creation should display labels of contact types, in case they
256 have been customised
257 ([dev/core#492](https://lab.civicrm.org/dev/core/-/issues/492):
258 [23460](https://github.com/civicrm/civicrm-core/pull/23460))**
259
260 - **Can not use Custom Fields defined on a contact_sub_type in dedupe rule
261 ([dev/core#2300](https://lab.civicrm.org/dev/core/-/issues/2300):
262 [23459](https://github.com/civicrm/civicrm-core/pull/23459))**
263
264 - **Activity import ignores time component of activity_date_time if the import
265 file includes seconds and always ignores time for custom date fields
266 ([dev/core#2325](https://lab.civicrm.org/dev/core/-/issues/2325):
267 [23754](https://github.com/civicrm/civicrm-core/pull/23754) and
268 [23708](https://github.com/civicrm/civicrm-core/pull/23708))**
269
270 - **Muti-select import not working for Activity
271 ([dev/core#2706](https://lab.civicrm.org/dev/core/-/issues/2706)
272 and [dev/core#2308](https://lab.civicrm.org/dev/core/-/issues/2308):
273 [23764](https://github.com/civicrm/civicrm-core/pull/23764))**
274
275 - **Import fails on adding contacts to a group using contact ID only
276 ([dev/core#3160](https://lab.civicrm.org/dev/core/-/issues/3160):
277 [23756](https://github.com/civicrm/civicrm-core/pull/23756))**
278
279 - **Add 'yesno' html_type in Settings metadata
280 ([dev/core#3475](https://lab.civicrm.org/dev/core/-/issues/3475):
281 [23525](https://github.com/civicrm/civicrm-core/pull/23525))**
282
283 Allows 'yesno' as a valid value of `html_type`.
284
285 - **Primary email is not visually marked as primary
286 ([dev/core#3481](https://lab.civicrm.org/dev/core/-/issues/3481):
287 [23686](https://github.com/civicrm/civicrm-core/pull/23686))**
288
289 Fixes bug where Primary email was not bolded on the contact summary page when
290 not using english.
291
292 - **Error when deleting a note: Undefined index: parent_id in
293 CRM_Note_Form_Note->postProcess()
294 ([dev/core#3483](https://lab.civicrm.org/dev/core/-/issues/3483):
295 [23730](https://github.com/civicrm/civicrm-core/pull/23730))**
296
297 - **Import Custom Data - Review of refactorings (Work Towards
298 [dev/core#3498](https://lab.civicrm.org/dev/core/-/issues/3498):
299 [23736](https://github.com/civicrm/civicrm-core/pull/23736))**
300
301 Fixes mishandled option values in import custom data code.
302
303 - **CiviCRM has not bootstrapped sufficiently to fire event
304 "hook_civicrm_entityTypes".
305 ([dev/core#3496](https://lab.civicrm.org/dev/core/-/issues/3496):
306 [23718](https://github.com/civicrm/civicrm-core/pull/23718))**
307
308 Missing extension leads to bootstrap error for "hook_civicrm_entityTypes".
309
310 - **CiviCRM has not bootstrapped sufficiently to fire event
311 "hook_civicrm_entity_supported_info"
312 ([dev/core#3502](https://lab.civicrm.org/dev/core/-/issues/3502):
313 [23785](https://github.com/civicrm/civicrm-core/pull/23785))**
314
315 Softer errors when CiviEventDispatcher is not-ready.
316
317 - **Import fixes for unicode url, Côte d’Ivoire
318 ([dev/core#3505](https://lab.civicrm.org/dev/core/-/issues/3505),
319 [dev/core#3506](https://lab.civicrm.org/dev/core/-/issues/3506) and
320 [dev/core#3052](https://lab.civicrm.org/dev/core/-/issues/3052):
321 [23755](https://github.com/civicrm/civicrm-core/pull/23755))**
322
323 - **After completing an activity import, it takes you to the contact import
324 screen ([dev/core#3513](https://lab.civicrm.org/dev/core/-/issues/3513):
325 [23766](https://github.com/civicrm/civicrm-core/pull/23766))**
326
327 Removes 'done' from the summary/import monitoring page.
328
329 - **Fix import activity & add tests
330 ([23707](https://github.com/civicrm/civicrm-core/pull/23707))**
331
332 Fixes a Fatal error in MapField.
333
334 - **Activity import error output missing the column the error is about
335 ([dev/core#3651](https://lab.civicrm.org/dev/core/-/issues/3651) and
336 [dev/core#1337](https://lab.civicrm.org/dev/core/-/issues/1337):
337 [23771](https://github.com/civicrm/civicrm-core/pull/23771))**
338
339 Fixes failure to show last column data in output, spaces in names.
340
341 - **Custom data type grouping mismatch
342 (Work Towards [dev/core#3658](https://lab.civicrm.org/dev/core/-/issues/3658):
343 [23842](https://github.com/civicrm/civicrm-core/pull/23842))**
344
345 Regenerates civicrm_generated to ensure that grouping is added on installs.
346
347 - **When upgrading an extension to use mixins, existing managed entities
348 get deleted ([dev/core#3660](https://lab.civicrm.org/dev/core/-/issues/3660):
349 [23824](https://github.com/civicrm/civicrm-core/pull/23824))**
350
351 - **Permissioned Relationship no longer set up for "On Behalf of Organization"
352 Membership Contribution Form submissions
353 ([dev/core#3675](https://lab.civicrm.org/dev/core/-/issues/3675):
354 [23865](https://github.com/civicrm/civicrm-core/pull/23865))**
355
356 - **Fix issue #116 api3 chain check_permissions
357 ([23671](https://github.com/civicrm/civicrm-core/pull/23671))**
358
359 - **Handle empty date token gracefully
360 ([23827](https://github.com/civicrm/civicrm-core/pull/23827))**
361
362 - **Fix Automatic renewal membership from front end contribution forms
363 ([23798](https://github.com/civicrm/civicrm-core/pull/23798))**
364
365 - **Fix target contact label back to include target
366 ([23763](https://github.com/civicrm/civicrm-core/pull/23763))**
367
368 - **Dedupe - Fix form buttons (again)
369 ([23757](https://github.com/civicrm/civicrm-core/pull/23757))**
370
371 - **Ensure setting deceased date sets is_deceased in the BAO
372 ([23521](https://github.com/civicrm/civicrm-core/pull/23521))**
373
374 - **Fix use of not-universally supported mysql field type
375 ([23501](https://github.com/civicrm/civicrm-core/pull/23501))**
376
377 - **Remove extra question mark from url
378 ([23480](https://github.com/civicrm/civicrm-core/pull/23480))**
379
380 - **Fix Schema System Check translation and show missing Custom Field ID
381 ([23469](https://github.com/civicrm/civicrm-core/pull/23469))**
382
383 - **php8.1 - Check null first before sending to strlen
384 ([23589](https://github.com/civicrm/civicrm-core/pull/23589))**
385
386 - **PHP8.1 - Fix deprecated passing null to glob
387 ([23713](https://github.com/civicrm/civicrm-core/pull/23713))**
388
389 - **Typo fix for Entity Id
390 ([23693](https://github.com/civicrm/civicrm-core/pull/23693))**
391
392 - **fix to get around link issues in ckeditor when opening scheduled reminder
393 in popup ([23510](https://github.com/civicrm/civicrm-core/pull/23510))**
394
395 - **fix disableUSPS since import running in separate context of Queue.
396 ([23777](https://github.com/civicrm/civicrm-core/pull/23777))**
397
398 - **Expand try-catch to whole function
399 ([23704](https://github.com/civicrm/civicrm-core/pull/23704))**
400
401 - **Make try-catch more catchy
402 ([23700](https://github.com/civicrm/civicrm-core/pull/23700))**
403
404 - **Print report permissions
405 ([dev/core#2540](https://lab.civicrm.org/dev/core/-/issues/2540):
406 [23616](https://github.com/civicrm/civicrm-core/pull/23616))**
407
408 Fixes a bug where when disabling the “access Report Criteria” permission, the
409 "Print report" and "Print to PDF" functions on a report appear, but do not
410 function.
411
412 - **Fix createEmployerRelationship to work with the data it has when doing a
413 lookup, test ([23603](https://github.com/civicrm/civicrm-core/pull/23603))**
414
415 - **Fix swapOptions writing over selected options on mapField page load.
416 ([23619](https://github.com/civicrm/civicrm-core/pull/23619))**
417
418 - **Release lock when deleting cache key
419 ([23624](https://github.com/civicrm/civicrm-core/pull/23624))**
420
421 - **Greeting handling - if email_greeting_custom (etc) isset &
422 email_greeting_id is not, set to 'Customized'
423 ([23537](https://github.com/civicrm/civicrm-core/pull/23537))**
424
425 - **Catch & convert Guzzle exception
426 ([23765](https://github.com/civicrm/civicrm-core/pull/23765))**
427
428 - **CRM_Utils_Check - Catch Guzzle exception, same as core exception
429 ([23466](https://github.com/civicrm/civicrm-core/pull/23466))**
430
431 - **Allow for custom base page in AJAX requests
432 ([23420](https://github.com/civicrm/civicrm-core/pull/23420))**
433
434 Fixes a bug where custom base page does not work for AJAX requests from
435 "frontend".
436
437 - **Add integer validation to import
438 ([23753](https://github.com/civicrm/civicrm-core/pull/23753))**
439
440 - **E-notice fix on import
441 ([23541](https://github.com/civicrm/civicrm-core/pull/23541))**
442
443 - **Import - ensure userID is set on parser
444 ([23636](https://github.com/civicrm/civicrm-core/pull/23636))**
445
446 - **Import locations - code cleanup, add tests, fix bugs
447 ([23563](https://github.com/civicrm/civicrm-core/pull/23563))**
448
449 Most of this is code cleanup and tests but there is also a fix for importing
450 contacts with a location of Australia.
451
452 - **Import - Relax "is_required" check for custom fields
453 ([23576](https://github.com/civicrm/civicrm-core/pull/23576))**
454
455 - **APIv4 - Respect max length for name with export action
456 ([23472](https://github.com/civicrm/civicrm-core/pull/23472))**
457
458 - **APIv4 - Exclude disabled custom fields
459 ([23583](https://github.com/civicrm/civicrm-core/pull/23583))**
460
461 - **APIv4 - Allow creator to read `UserJob` and `Queue` records
462 ([23690](https://github.com/civicrm/civicrm-core/pull/23690))**
463
464 - **SearchKit - Fix pager & tab count after creating a new record in a popup
465 ([23579](https://github.com/civicrm/civicrm-core/pull/23579))**
466
467 - **SearchKit - Only add filter values to Afform title if passed internally
468 ([23807](https://github.com/civicrm/civicrm-core/pull/23807))**
469
470 - **[REGRESSION] SearchKit - Fix angular console error when totalCount is not
471 given ([23759](https://github.com/civicrm/civicrm-core/pull/23759))**
472
473 - **SearchKit - Fix default aggregate function for grand total rows
474 ([23573](https://github.com/civicrm/civicrm-core/pull/23573))**
475
476 - **SearchKit - Fix in-place editing custom relationship fields
477 ([23496](https://github.com/civicrm/civicrm-core/pull/23496))**
478
479 - **Searchkit - can't export more than x rows
480 ([dev/core#2736](https://lab.civicrm.org/dev/core/-/issues/2736):
481 [23548](https://github.com/civicrm/civicrm-core/pull/23548))**
482
483 - **SearchKit - Make inline edit only available when applicable
484 ([23404](https://github.com/civicrm/civicrm-core/pull/23404))**
485
486 - **SearchKit - Pick better default for aggregate functions
487 ([23446](https://github.com/civicrm/civicrm-core/pull/23446))**
488
489 - **SearchKit - Don't transform case for fieldsets on admin screen (more
490 translation-friendly)
491 ([23437](https://github.com/civicrm/civicrm-core/pull/23437))**
492
493 - **Afform - fix dependency injection for autogenerated forms
494 ([23818](https://github.com/civicrm/civicrm-core/pull/23818))**
495
496 ## CiviCampaign
497
498 - **show honor roll only if it's enabled for the PCP page
499 ([23567](https://github.com/civicrm/civicrm-core/pull/23567))**
500
501 ### CiviCase
502
503 - **Update case via API4 fails
504 ([dev/core#3671](https://lab.civicrm.org/dev/core/-/issues/3671):
505 [23836](https://github.com/civicrm/civicrm-core/pull/23836))**
506
507 Fix regression where updating cases via APIv4 fails.
508
509 ### CiviContribute
510
511 - **Currency incorrectly displayed for price set text/quantity fields when
512 default currency is not USD
513 ([dev/core#3680](https://lab.civicrm.org/dev/core/-/issues/3680):
514 [23867](https://github.com/civicrm/civicrm-core/pull/23867))**
515
516 - **Fix editing and saving a template contribution via form
517 ([21471](https://github.com/civicrm/civicrm-core/pull/21471))**
518
519 - **Fix breakage in message preview on workflow contributions
520 ([23801](https://github.com/civicrm/civicrm-core/pull/23801))**
521
522 - **only check batch currency match when adding a financial_trxn
523 ([23788](https://github.com/civicrm/civicrm-core/pull/23788))**
524
525 - **Can no longer update Amount for Recurring Contributions even if it only has
526 one Lineitem
527 ([dev/financial#197](https://lab.civicrm.org/dev/financial/-/issues/197):
528 [23805](https://github.com/civicrm/civicrm-core/pull/23805))**
529
530 - **Additional Details section on Recurring Contribution template edit screen
531 doesn't load anymore
532 ([dev/financial#199](https://lab.civicrm.org/dev/financial/-/issues/199):
533 [23786](https://github.com/civicrm/civicrm-core/pull/23786))**
534
535 - **Fix Contribution import with pledge handling, add test
536 ([23717](https://github.com/civicrm/civicrm-core/pull/23717))**
537
538 - **Contribution import - tests & fixes on dates, amount
539 ([23688](https://github.com/civicrm/civicrm-core/pull/23688))**
540
541 - **[Import] Fix Contribution Import mapping fields to use labels
542 ([23519](https://github.com/civicrm/civicrm-core/pull/23519))**
543
544 - **Import contribution fails to update payment instrument in update mode
545 ([dev/core#3038](https://lab.civicrm.org/dev/core/-/issues/3038):
546 [23586](https://github.com/civicrm/civicrm-core/pull/23586))**
547
548 ### CiviEvent
549
550 - **Fix missing contactID when registering for paid event from waitlist
551 ([23358](https://github.com/civicrm/civicrm-core/pull/23358))**
552
553 - **Capitalise event setting title
554 ([23467](https://github.com/civicrm/civicrm-core/pull/23467))**
555
556 - **Participant import fix - broken uniqueName fields, mapping saving, etc.
557 ([23733](https://github.com/civicrm/civicrm-core/pull/23733))**
558
559 - **Fix Participant import, add tests
560 ([23703](https://github.com/civicrm/civicrm-core/pull/23703))**
561
562 Fixes a Fatal error in MapField.
563
564 - **CiviEvent Search does not show all results
565 ([dev/core#3459](https://lab.civicrm.org/dev/core/-/issues/3459):
566 [23609](https://github.com/civicrm/civicrm-core/pull/23609))**
567
568 ### CiviGrant
569
570 - **Installer - CiviGrant option no longer works
571 ([dev/core#3485](https://lab.civicrm.org/dev/core/-/issues/3485):
572 [23758](https://github.com/civicrm/civicrm-core/pull/23758))**
573
574 Removes CiviGrant from available components.
575
576 ### CiviMail
577
578 - **Prefer frontend_title for mailing groups in {mailing.group}
579 ([dev/core#3463](https://lab.civicrm.org/dev/core/-/issues/3463):
580 [23570](https://github.com/civicrm/civicrm-core/pull/23570))**
581
582 - **Greeting tokens are not replaced in bulk sms
583 ([dev/core#3177](https://lab.civicrm.org/dev/core/-/issues/3177):
584 [23516](https://github.com/civicrm/civicrm-core/pull/23516))**
585
586 Switches sms to use flexmailer token rendering.
587
588 ### CiviMember
589
590 - **Bug Fix: Merging an Organisation contact and de-selecting the merge
591 Membership checkbox causes all related Membership to not be removed and the
592 Primary Membership is linked to the deleted Organisation
593 ([22682](https://github.com/civicrm/civicrm-core/pull/22682))**
594
595 - **Added back 'Renewal Message' field on Membership renewal form
596 ([23726](https://github.com/civicrm/civicrm-core/pull/23726))**
597
598 - **Membership should be listed chronologically by join date, the most recent
599 member since first
600 ([dev/core#3141](https://lab.civicrm.org/dev/core/-/issues/3141):
601 [23056](https://github.com/civicrm/civicrm-core/pull/23056))**
602
603 ### Backdrop Integration
604
605 - **CiviCRM cron via HTTP on Backdrop isn't documented and doesn't work
606 ([dev/backdrop#8](https://lab.civicrm.org/dev/backdrop/-/issues/8):
607 [23620](https://github.com/civicrm/civicrm-core/pull/23620))**
608
609 ### Drupal Integration
610
611 - **Use correct user variable in hook_user_insert
612 ([74](https://github.com/civicrm/civicrm-drupal-8/pull/74))**
613
614 - **KCFinder on D9: You don't have permissions to browse server.
615 ([dev/drupal#179](https://lab.civicrm.org/dev/drupal/-/issues/179):
616 [342](https://github.com/civicrm/civicrm-packages/pull/342))**
617
618 - **Drupal8/9 Sync email own user from Civi
619 ([dev/core#3467](https://lab.civicrm.org/dev/core/-/issues/3467):
620 [23546](https://github.com/civicrm/civicrm-core/pull/23546))**
621
622 Drupal 8 - Skips requirement for password when changing your own civi contact's
623 email
624
625 ### Joomla Integration
626
627 - **[Joomla 4.0] Warnings when CiviCRM is uninstalled (Work towards
628 [dev/joomla#16](https://lab.civicrm.org/dev/joomla/-/issues/16):
629 [65](https://github.com/civicrm/civicrm-joomla/pull/65))**
630
631 Fixes CiviCRM logo not showing in Quick Icon plugin.
632
633 - **[Joomla 4.0] Fatal error on submitting Profile with CMS username/password
634 ([23549](https://github.com/civicrm/civicrm-core/pull/23549))**
635
636 - **Error when upgrading to 5.16.0
637 ([dev/drupal#79](https://lab.civicrm.org/dev/drupal/issues/79):
638 [51](https://github.com/civicrm/civicrm-joomla/pull/51))**
639
640 Updates PHP version checks to throw a more digestable error when the PHP
641 version is not compatible.
642
643 ## <a name="misc"></a>Miscellany
644
645 - **Afform - Trigger 'crmFormSuccess' event after submission
646 ([23735](https://github.com/civicrm/civicrm-core/pull/23735))**
647
648 - **Afform - allow ids to be passed directly into the directive
649 ([23656](https://github.com/civicrm/civicrm-core/pull/23656))**
650
651 - **SearchKit - Remove confusing extra joins between Contact & Related Contacts
652 ([23655](https://github.com/civicrm/civicrm-core/pull/23655))**
653
654 - **Authx - Mark extension as beta
655 ([23601](https://github.com/civicrm/civicrm-core/pull/23601))**
656
657 - **Duplicate function - divide & conquer
658 ([23542](https://github.com/civicrm/civicrm-core/pull/23542))**
659
660 - **Deprecate crazy BAO handling of preferred_communication_method
661 ([23623](https://github.com/civicrm/civicrm-core/pull/23623))**
662
663 - **Simplify return from createContact
664 ([23635](https://github.com/civicrm/civicrm-core/pull/23635))**
665
666 - **Simplify greeting handling, add test
667 ([23629](https://github.com/civicrm/civicrm-core/pull/23629))**
668
669 - **Deprecate stuff getting super deep into the BAO unformatted
670 ([23520](https://github.com/civicrm/civicrm-core/pull/23520))**
671
672 - **Add not-yet-used function to allow the import to run in static (queue)
673 context ([23691](https://github.com/civicrm/civicrm-core/pull/23691))**
674
675 - **FiveFiftyOne - Enable snapshots for data modified data
676 ([23783](https://github.com/civicrm/civicrm-core/pull/23783))**
677
678 - **Translation: remove support for CiviCRM pre-4.5 l10n file locations
679 ([23435](https://github.com/civicrm/civicrm-core/pull/23435))**
680
681 - **APIv3 - Fix regression in handling chained calls with `sequential`
682 ([23672](https://github.com/civicrm/civicrm-core/pull/23672))**
683
684 - **Update contributor-key.yml
685 ([23633](https://github.com/civicrm/civicrm-core/pull/23633))**
686
687 - **Whitespace cleanup - remove `if(1)`
688 ([23621](https://github.com/civicrm/civicrm-core/pull/23621))**
689
690 - **Reformat whitespace
691 ([23676](https://github.com/civicrm/civicrm-core/pull/23676))**
692
693 - **Another always-true-if
694 ([23559](https://github.com/civicrm/civicrm-core/pull/23559))**
695
696 - **Painstaking unravelling of function
697 ([23483](https://github.com/civicrm/civicrm-core/pull/23483))**
698
699 - **Consolidate datasource form - event import
700 ([23457](https://github.com/civicrm/civicrm-core/pull/23457))**
701
702 - **Trivial extraction - addFormButtons shared code
703 ([23709](https://github.com/civicrm/civicrm-core/pull/23709))**
704
705 - **Move validate field function to the parent class [Straight move]
706 ([23564](https://github.com/civicrm/civicrm-core/pull/23564))**
707
708 - **Add noisy deprecation to unused, deprecated, functions
709 ([23571](https://github.com/civicrm/civicrm-core/pull/23571))**
710
711 - **Minor simplification - use `$self->getContactType(),`
712 ([23710](https://github.com/civicrm/civicrm-core/pull/23710))**
713
714 - **Clean up function signature
715 ([23550](https://github.com/civicrm/civicrm-core/pull/23550))**
716
717 - **Minor cleanup on import return codes
718 ([23626](https://github.com/civicrm/civicrm-core/pull/23626))**
719
720 - **Cleanup sql query
721 ([23512](https://github.com/civicrm/civicrm-core/pull/23512))**
722
723 - **Cleanup gender handling in contact import + add test
724 ([23484](https://github.com/civicrm/civicrm-core/pull/23484))**
725
726 - **ProximityQuery - Remove unused code
727 ([23581](https://github.com/civicrm/civicrm-core/pull/23581))**
728
729 - **Remove unused class
730 ([23580](https://github.com/civicrm/civicrm-core/pull/23580))**
731
732 - **Remove unused properties
733 ([23701](https://github.com/civicrm/civicrm-core/pull/23701))**
734
735 - **Remove deprecated preferred_mail_format from more places...
736 ([23565](https://github.com/civicrm/civicrm-core/pull/23565))**
737
738 - **Remove some never used fields - copy & paste begone
739 ([23605](https://github.com/civicrm/civicrm-core/pull/23605))**
740
741 - **Remove obsolete code - this parameter is not possible
742 ([23625](https://github.com/civicrm/civicrm-core/pull/23625))**
743
744 - **Remove unused variables
745 ([23613](https://github.com/civicrm/civicrm-core/pull/23613))**
746
747 - **Remove no-longer-used function 29 points
748 ([23653](https://github.com/civicrm/civicrm-core/pull/23653))**
749
750 - **Remove legacy calls to `civicrm_error`, unpack return
751 ([23634](https://github.com/civicrm/civicrm-core/pull/23634))**
752
753 - **Remove some unused variables
754 ([23614](https://github.com/civicrm/civicrm-core/pull/23614))**
755
756 - **Remove do-nothing deprecated line
757 ([23556](https://github.com/civicrm/civicrm-core/pull/23556))**
758
759 - **Remove unreachable code
760 ([23551](https://github.com/civicrm/civicrm-core/pull/23551))**
761
762 - **Remove a couple of non-test tests - syntax conformance
763 ([23715](https://github.com/civicrm/civicrm-core/pull/23715))**
764
765 - **Remove some more unused code
766 ([23747](https://github.com/civicrm/civicrm-core/pull/23747))**
767
768 - **Remove always-true if-check
769 ([23530](https://github.com/civicrm/civicrm-core/pull/23530))**
770
771 - **Remove extraneous deprecated check
772 ([23532](https://github.com/civicrm/civicrm-core/pull/23532))**
773
774 - **Remove obsolete/unused code, fix notices - activity import
775 ([23745](https://github.com/civicrm/civicrm-core/pull/23745))**
776
777 - **Remove more obsolete import code
778 ([23742](https://github.com/civicrm/civicrm-core/pull/23742))**
779
780 - **Remove unused functions
781 ([23740](https://github.com/civicrm/civicrm-core/pull/23740))**
782
783 - **Remove always true if conditions (whitespace in next commit)
784 ([23533](https://github.com/civicrm/civicrm-core/pull/23533))**
785
786 - **Remove never-true fields, and impossible property handling from previously
787 shared function ([23545](https://github.com/civicrm/civicrm-core/pull/23545))**
788
789 - **Remove sets for no-longer gotten vars
790 ([23453](https://github.com/civicrm/civicrm-core/pull/23453))**
791
792 - **(NFC) karma - Enable all Civi components (not just CiviCase)
793 ([23450](https://github.com/civicrm/civicrm-core/pull/23450))**
794
795 - **[NFC] Improve comment blocks for mapper
796 ([23517](https://github.com/civicrm/civicrm-core/pull/23517))**
797
798 - **[NFC] Remove weird file
799 ([23539](https://github.com/civicrm/civicrm-core/pull/23539))**
800
801 - **[NFC] Remove weird test data file
802 ([23727](https://github.com/civicrm/civicrm-core/pull/23727))**
803
804 - **[NFC] Fix Since version in Price Set Entity APIv4
805 ([23698](https://github.com/civicrm/civicrm-core/pull/23698))**
806
807 - **[NFC] Mixin - update version tags and add comment for new version of mgd-php
808 ([23685](https://github.com/civicrm/civicrm-core/pull/23685))**
809
810 - **[NFC] Failing test for api chain using sequential
811 ([23675](https://github.com/civicrm/civicrm-core/pull/23675))**
812
813 - **(NFC) Scheduled Reminders - Reinstate and analyze test-case for "Also
814 Include" ([23628](https://github.com/civicrm/civicrm-core/pull/23628))**
815
816 - **[NFC] Bring back deleted activity email tests
817 ([23577](https://github.com/civicrm/civicrm-core/pull/23577))**
818
819 - **(NFC) CRM_Utils_Hook - Typo
820 ([23448](https://github.com/civicrm/civicrm-core/pull/23448))**
821
822 - **Ref Extract import validation
823 ([23498](https://github.com/civicrm/civicrm-core/pull/23498))**
824
825 - **[Ref] [Import] Cleanup function return
826 ([23511](https://github.com/civicrm/civicrm-core/pull/23511))**
827
828 - **[REF] [Import] Remove unused parameter
829 ([23495](https://github.com/civicrm/civicrm-core/pull/23495))**
830
831 - **[REF] [Import] Remove now-unused code
832 ([23461](https://github.com/civicrm/civicrm-core/pull/23461))**
833
834 - **[REF] [Import] Stop calling Parser in MapField mode (contact import)
835 ([23470](https://github.com/civicrm/civicrm-core/pull/23470))**
836
837 - **[REF] [Import] Minor simplification
838 ([23464](https://github.com/civicrm/civicrm-core/pull/23464))**
839
840 - **[REF] [Import] Remove unused variable
841 ([23463](https://github.com/civicrm/civicrm-core/pull/23463))**
842
843 - **[REF] [Import] Remove unused field get action (death to copy & paste)
844 ([23428](https://github.com/civicrm/civicrm-core/pull/23428))**
845
846 - **[REF] [Import] Simplify if - exit loop early
847 ([23427](https://github.com/civicrm/civicrm-core/pull/23427))**
848
849 - **[REF] [Import] Activity - clean up copy & paste
850 ([23289](https://github.com/civicrm/civicrm-core/pull/23289))**
851
852 - **[Import] [Ref] Trivial - fold function contents back into parent
853 ([23610](https://github.com/civicrm/civicrm-core/pull/23610))**
854
855 - **Extend import option handling to prefix, suffix, language,
856 communication_style
857 ([23535](https://github.com/civicrm/civicrm-core/pull/23535))**
858
859 - **[Import] Consolidate DataSource.tpl - template for first file on activity
860 import ([23456](https://github.com/civicrm/civicrm-core/pull/23456))**
861
862 - **[Import] Check subtype validity in validate rather than wait for 'imort'
863 ([23526](https://github.com/civicrm/civicrm-core/pull/23526))**
864
865 - **[Import] Use table rather than csvs for no-match & unparsed
866 ([23418](https://github.com/civicrm/civicrm-core/pull/23418))**
867
868 - **[Import] Unpack the weird wild error return
869 ([23474](https://github.com/civicrm/civicrm-core/pull/23474))**
870
871 - **[Import] Remove handling for unavailable field current_employer
872 ([23509](https://github.com/civicrm/civicrm-core/pull/23509))**
873
874 - **Contribution import - simplify error handling
875 ([23714](https://github.com/civicrm/civicrm-core/pull/23714))**
876
877 - **[Import] [Contribution] Cleanup templates & form variables, following
878 contact pattern
879 ([23683](https://github.com/civicrm/civicrm-core/pull/23683))**
880
881 - **Contact import - extract common code, make tags & groups queue-friendly
882 ([23680](https://github.com/civicrm/civicrm-core/pull/23680))**
883
884 - **Contact Import cleanup - includes fixes to contact machine
885 ([23666](https://github.com/civicrm/civicrm-core/pull/23666))**
886
887 - **[Import] Add some not-yet-used `getParser` functions that are prone to
888 conflict ([23590](https://github.com/civicrm/civicrm-core/pull/23590))**
889
890 - **[Import] Remove empty if
891 ([23531](https://github.com/civicrm/civicrm-core/pull/23531))**
892
893 - **[Import] Fix & test check on contact subtype change
894 ([23508](https://github.com/civicrm/civicrm-core/pull/23508))**
895
896 - **[Import] [Ref] Remove unused variable
897 ([23462](https://github.com/civicrm/civicrm-core/pull/23462))**
898
899 - **[Import] Remove silly param
900 ([23493](https://github.com/civicrm/civicrm-core/pull/23493))**
901
902 - **[Import] Remove svn whimsy - DUPLICATE_REPLACE
903 ([23504](https://github.com/civicrm/civicrm-core/pull/23504))**
904
905 - **[Import] Remove `if (1) {` (whitespace intensive)
906 ([23494](https://github.com/civicrm/civicrm-core/pull/23494))**
907
908 - **[Import] Cleanup Contribution flow - esp with regards to soft credits
909 ([23588](https://github.com/civicrm/civicrm-core/pull/23588))**
910
911 - **[Import] [Ref] [Contribution] Additional functions, typo fix
912 ([23637](https://github.com/civicrm/civicrm-core/pull/23637))**
913
914 - **[Import] Test + fix for failure to reject invalid ex identifier
915 ([23560](https://github.com/civicrm/civicrm-core/pull/23560))**
916
917 - **[Import] [ref] Move function to parent for use by siblings
918 ([23592](https://github.com/civicrm/civicrm-core/pull/23592))**
919
920 - **[Import] Add tests for contact type & contact subtype handling
921 ([23475](https://github.com/civicrm/civicrm-core/pull/23475))**
922
923 - **[Import] Simplify checking contact type is valid
924 ([23476](https://github.com/civicrm/civicrm-core/pull/23476))**
925
926 - **[Import] Stop passing unused parameter
927 ([23421](https://github.com/civicrm/civicrm-core/pull/23421))**
928
929 - **[Ref] [Import][Member] Remove unused params
930 ([23425](https://github.com/civicrm/civicrm-core/pull/23425))**
931
932 - **[REF] [Import] Create user-job records for Memership imports
933 ([23416](https://github.com/civicrm/civicrm-core/pull/23416))**
934
935 - **(REF) Importer - Remove unused parameters. Simplify signature.
936 ([23401](https://github.com/civicrm/civicrm-core/pull/23401))**
937
938 - **[REF] Import - make condition clearer
939 ([23382](https://github.com/civicrm/civicrm-core/pull/23382))**
940
941 - **[REF] [Import] Contribution import - clarify return codes
942 ([23290](https://github.com/civicrm/civicrm-core/pull/23290))**
943
944 - **[REF] [Import] Summary tpl - remove always-true ifs
945 ([23406](https://github.com/civicrm/civicrm-core/pull/23406))**
946
947 - **[REF][Import] Remove some, now unused, parameters
948 ([23405](https://github.com/civicrm/civicrm-core/pull/23405))**
949
950 - **[REF] [Import] Parser cleanup
951 ([23442](https://github.com/civicrm/civicrm-core/pull/23442))**
952
953 - **[REF] [Import] Minor code cleanup
954 ([23444](https://github.com/civicrm/civicrm-core/pull/23444))**
955
956 - **[Import] Reduce unused copy & paste
957 ([23400](https://github.com/civicrm/civicrm-core/pull/23400))**
958
959 - **[REF] [Import] Stop passing unused parameters
960 ([23386](https://github.com/civicrm/civicrm-core/pull/23386))**
961
962 - **[Import] [Ref] Iterate through the mapping of fields
963 ([23384](https://github.com/civicrm/civicrm-core/pull/23384))**
964
965 - **[Ref][Import] Remove now-unused code
966 ([23395](https://github.com/civicrm/civicrm-core/pull/23395))**
967
968 - **[TEST ONLY] APIv4 - Remove unused extras from ConformanceTest
969 ([23410](https://github.com/civicrm/civicrm-core/pull/23410))**
970
971 - **[TEST ONLY] APIv4 - ensure test records are cleaned up in non-transaction
972 tests ([23441](https://github.com/civicrm/civicrm-core/pull/23441))**
973
974 - **Test cleanup - use names keys in mapper array where possible for clarity
975 ([23627](https://github.com/civicrm/civicrm-core/pull/23627))**
976
977 - **Additional test
978 ([23562](https://github.com/civicrm/civicrm-core/pull/23562))**
979
980 - **Add location import testing
981 ([23540](https://github.com/civicrm/civicrm-core/pull/23540))**
982
983 - **Test fix
984 ([23561](https://github.com/civicrm/civicrm-core/pull/23561))**
985
986 - **Add unit tests to cover date field imports
987 ([23502](https://github.com/civicrm/civicrm-core/pull/23502))**
988
989 - **Payment forms test fixes
990 ([23524](https://github.com/civicrm/civicrm-core/pull/23524))**
991
992 - **Re-use code in test
993 ([23523](https://github.com/civicrm/civicrm-core/pull/23523))**
994
995 - **Fix test to validate forms & remove some unused code
996 ([23734](https://github.com/civicrm/civicrm-core/pull/23734))**
997
998 - **Reduce test output spam
999 ([23750](https://github.com/civicrm/civicrm-core/pull/23750))**
1000
1001 - **Fix for failing test in master
1002 ([23751](https://github.com/civicrm/civicrm-core/pull/23751))**
1003
1004 - **[REF] [TEST ONLY] APIv4 - Reorganize test classes, don't use transactions
1005 for custom field tests
1006 ([23402](https://github.com/civicrm/civicrm-core/pull/23402))**
1007
1008 - **[REF] Fix second output in customFormat function and extend unit test
1009 ([23815](https://github.com/civicrm/civicrm-core/pull/23815))**
1010
1011 - **(REF) CRM_Dedupe_BAO_DedupeRule - Support third party fields and tables in
1012 rules ([23332](https://github.com/civicrm/civicrm-core/pull/23332))**
1013
1014 - **Update guzzle to 6.5.7
1015 ([23748](https://github.com/civicrm/civicrm-core/pull/23748))**
1016
1017 - **[REF] Update Guzzle to be 6.5.8
1018 ([23858](https://github.com/civicrm/civicrm-core/pull/23858))**
1019
1020 - **[REF] Fix PHP8.1 issue with passing NULL to trim()
1021 ([23317](https://github.com/civicrm/civicrm-core/pull/23317))**
1022
1023 - **[REF] Remove handling for non-existent 'savedMapping' field
1024 ([23283](https://github.com/civicrm/civicrm-core/pull/23283))**
1025
1026 - **[REF] Improve Get Coordinates by supporting other geocoding providers…
1027 ([23646](https://github.com/civicrm/civicrm-core/pull/23646))**
1028
1029 - **[REF] Minor simplification on input
1030 ([23536](https://github.com/civicrm/civicrm-core/pull/23536))**
1031
1032 - **(REF) CRM_Upgrade_Form - Remove silly method `runQuery`
1033 ([23492](https://github.com/civicrm/civicrm-core/pull/23492))**
1034
1035 - **[REF] APIv4 - Simplify entity creation in test suite
1036 ([23432](https://github.com/civicrm/civicrm-core/pull/23432))**
1037
1038 - **[REF] Move list of fields that have been upgraded
1039 ([23518](https://github.com/civicrm/civicrm-core/pull/23518))**
1040
1041 - **[REF] Remove unreachable code
1042 ([23507](https://github.com/civicrm/civicrm-core/pull/23507))**
1043
1044 - **[REF] Simplify contact.create
1045 ([23515](https://github.com/civicrm/civicrm-core/pull/23515))**
1046
1047 - **[REF] Fix handling of NULL values in count_characters smarty modifier by
1048 creating a CiviCRM specific one that handles them
1049 ([23318](https://github.com/civicrm/civicrm-core/pull/23318))**
1050
1051 ## <a name="credits"></a>Credits
1052
1053 This release was developed by the following code authors:
1054
1055 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman;
1056 Benjamin W; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM -
1057 Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu
1058 Lutfy; Dave D; Davis Media Access - Darrick Servis; Deepak Srivastava;
1059 ES-Progress - Sandor Semsey; Freeform Solutions - Herb van den Dool;
1060 Fuzion - Luke Stewart; iXiam - CĂ©sar Ramos; JMA Consulting - Monish Deb, Seamus
1061 Lee; Klangsoft - David Reedy Jr; Lighthouse Consulting and Design - Brian
1062 Shaughnessy; Megaphone Technology Consulting - Brienne Kordis, Jon Goldberg;
1063 MJW Consulting - Matthew Wire; Nicol Wistreich; Progressive Technology
1064 Project - Jamie McClelland; Robert J. Lang; Squiffle Consulting - Aidan
1065 Saunders; Third Sector Design - Kurund Jalmi; Wikimedia Foundation - Eileen
1066 McNaughton
1067
1068 Most authors also reviewed code for this release; in addition, the following
1069 reviewers contributed their comments:
1070
1071 Agileware - Justin Freeman; ALL IN APPLI; Andy Clark; Artful Robot - Rich Lott;
1072 Australian Greens - Andrew Cormick-Dockery; Betty Dolfing; Blackfly
1073 Solutions - Alan Dixon; CiviCoop - Jaap Jansma; Coop SymbioTIC - Samuel Vanhove;
1074 DevApp - Adam Kwiatkowski; Francesc Bassas i Bullich; Fuzion - Peter Davis;
1075 Greenleaf Advancement - Guy Iaccarino; Humanists UK - Andrew West; jaomalley;
1076 Jens Schuppe; Semper IT - Karin Gerritsen; Tadpole Collective - Kevin Cristiano;