Afform - convert afEntity and afField to components, standardize js filenames
[civicrm-core.git] / release-notes / 5.31.0.md
1 # CiviCRM 5.31.0
2
3 Released November 4, 2020
4
5 - **[Synopsis](#synopsis)**
6 - **[Features](#features)**
7 - **[Bugs resolved](#bugs)**
8 - **[Miscellany](#misc)**
9 - **[Credits](#credits)**
10 - **[Feedback](#feedback)**
11
12 ## <a name="synopsis"></a>Synopsis
13
14 | *Does this version...?* | |
15 |:--------------------------------------------------------------- |:-------:|
16 | Fix security vulnerabilities? | no |
17 | **Change the database schema?** | **yes** |
18 | **Alter the API?** | **yes** |
19 | **Require attention to configuration options?** | **yes** |
20 | **Fix problems installing or upgrading to a previous version?** | **yes** |
21 | **Introduce features?** | **yes** |
22 | **Fix bugs?** | **yes** |
23
24 ## <a name="features"></a>Features
25
26 ### Core CiviCRM
27
28 - **Implement more nuanced "Administer CiviCRM" permisions
29 ([16482](https://github.com/civicrm/civicrm-core/pull/16482) and
30 [18671](https://github.com/civicrm/civicrm-core/pull/18671))**
31
32 Actions that required the "Administer CiviCRM" permission now require one of
33 two separate permissions: "administer CiviCRM system" and "administer CiviCRM
34 data". The "Administer CiviCRM" permission still exists, and users having it
35 are treated as implicitly having both of the new permissions.
36
37 However, it is now possible to grant permission to configure profiles,
38 scheduled reminders, and set admin-only price options independently of
39 granting permission to configure scheduled jobs, install extensions, and view
40 the system check. An organization might grant the former to senior staff and
41 the latter to technical staff.
42
43 - **Buttonrama ([18410](https://github.com/civicrm/civicrm-core/pull/18410),
44 [18820](https://github.com/civicrm/civicrm-core/pull/18820),
45 [18834](https://github.com/civicrm/civicrm-core/pull/18834),
46 [18799](https://github.com/civicrm/civicrm-core/pull/18799), and
47 [307](https://github.com/civicrm/civicrm-packages/pull/307))**
48
49 This ensures icons and text within buttons are aligned vertically, and it
50 makes form buttons appear consistent with links that are rendered to appear
51 like buttons.
52
53 Specifically, most buttons are now `<button>` elements rather than `<input
54 type="button">`, and button styling now applies to the button itself rather
55 than a wrapper. Extension and theme developers should confirm that CSS and
56 DOM selectors accurately identify the intended button elements.
57
58 - **Custom field form reform
59 ([18419](https://github.com/civicrm/civicrm-core/pull/18419))**
60
61 This improves the form for creating or updating custom fields by improving
62 validation, making defaults easier to select, and allowing more flexibility
63 around changing the widget type.
64
65 - **Add higher-level support for "bundles" and "collections" of resources
66 ([18247](https://github.com/civicrm/civicrm-core/pull/18247))**
67
68 "Resources" refers to CSS, Javascript, and DOM variables that developers can
69 add to certain pages. These can now be bundled together to reduce redundant
70 code and can be modified with the new `hook_civicrm_alterBundle()`.
71
72 The core styles and other resources are now included as bundles, allowing them
73 to be modified in a standard way.
74
75 In addition, page regions, bundles, and (to some extent) page resources are
76 now treated as "collections" which share a common interface for adding and
77 retrieving individual resources.
78
79 - **Bootstrap3 CSS
80 ([dev/user-interface#27](https://lab.civicrm.org/dev/user-interface/-/issues/27):
81 [18354](https://github.com/civicrm/civicrm-core/pull/18354),
82 [18465](https://github.com/civicrm/civicrm-core/pull/18465),
83 [18550](https://github.com/civicrm/civicrm-core/pull/18550),
84 [18583](https://github.com/civicrm/civicrm-core/pull/18583), and
85 [18579](https://github.com/civicrm/civicrm-core/pull/18579))**
86
87 CiviCRM introduced a theming system several years ago, but the existing look
88 and feel was left as a "default", with the *de facto* theming code spread
89 throughout the application. The new themes have generally used Bootstrap 3 as
90 a user interface framework.
91
92 A handful of new CiviCRM features have been developed that depend on Bootstrap
93 3 for core functionality or at least for basic look and feel. Sites lacking a
94 newer theme need a way to load at least a minimal set of Bootstrap 3 code for
95 these features to be functional and attractive.
96
97 This change introduces a new CiviCRM theme extension, named "Greenwich", that
98 is enabled and hidden by default for all sites. It provides Bootstrap 3 when
99 needed. In addition, it can serve as a vehicle for moving theming code out of
100 core.
101
102 - **APIv4 Search: Improve GROUP_CONCAT with :label prefix
103 ([18572](https://github.com/civicrm/civicrm-core/pull/18572))**
104
105 This improves the Search UI by exposing the DISTINCT modifier and fixing
106 currency formatting.
107
108 - **Search ext: rename to Search Kit, mark as beta
109 ([18672](https://github.com/civicrm/civicrm-core/pull/18672))**
110
111 An extension to replace the search user interface has been included, but
112 hidden, in CiviCRM for several months. Named Search Kit, it is now available
113 to be enabled for sites.
114
115 - **Search extension: edit smart groups
116 ([18431](https://github.com/civicrm/civicrm-core/pull/18431))**
117
118 Search Kit can now edit smart groups. When installed, the "edit smart group
119 criteria" link will open the classic search forms or Search Kit as
120 appropriate.
121
122 - **Search ext: support complex joins & HAVING clause in api4 smart groups
123 ([18644](https://github.com/civicrm/civicrm-core/pull/18644))**
124
125 Improves the new search extension and APIv4 smart groups in core to support
126 any entity that can join with Contact, including full support for calculated
127 fields and the HAVING clause.
128
129 - **Select field fixes for screen reader
130 ([17675](https://github.com/civicrm/civicrm-core/pull/17675),
131 [18873](https://github.com/civicrm/civicrm-core/pull/18873),
132 [18889](https://github.com/civicrm/civicrm-core/pull/18889))**
133
134 The placeholder text for select drop-down fields now reflects the field label.
135 The Select2 widget makes it difficult for screen readers to identify the
136 field's label, so this helps identify the field for users who rely on screen
137 readers.
138
139 - **Add modified_date to list of activity tokens
140 ([18611](https://github.com/civicrm/civicrm-core/pull/18611))**
141
142 Adds Modified date to the list of available activity tokens.
143
144 - **Add an 'Execute Now' button to the job log
145 ([18593](https://github.com/civicrm/civicrm-core/pull/18593))**
146
147 Adds an "Execute Now" button to the Job log to make it easier to rerun a
148 scheduled job if needed.
149
150 - **Send email to contacts when clicking on their email address on the contact's
151 card ([dev/core#1790](https://lab.civicrm.org/dev/core/-/issues/1790):
152 [18623](https://github.com/civicrm/civicrm-core/pull/18623))**
153
154 Improves the contact card by making the email a link which takes the user to a
155 form to send an email to that contact.
156
157 - **Ability to Search Smart or Normal Group using additional filter on Manage
158 Group page ([dev/report#45](https://lab.civicrm.org/dev/report/-/issues/45):
159 [18379](https://github.com/civicrm/civicrm-core/pull/18379) and
160 [18246](https://github.com/civicrm/civicrm-core/pull/18246))**
161
162 Adds a filter "Group Type" to the Manage Groups page which can be used
163 to filter by normal or smart groups.
164
165 - **Ability to Send Invoice with modified subject and CC it
166 ([dev/user-interface#30](https://lab.civicrm.org/dev/user-interface/-/issues/30):
167 [18286](https://github.com/civicrm/civicrm-core/pull/18286))**
168
169 Adds the ability to edit the subject and cc fields when emailing an invoice
170 from a contribution.
171
172 - **Add ability to segment query logs
173 ([dev/core#2032](https://lab.civicrm.org/dev/core/-/issues/2032):
174 [18471](https://github.com/civicrm/civicrm-core/pull/18471) and
175 [309](https://github.com/civicrm/civicrm-packages/pull/309))**
176
177 SQL queries can be sent to a debugging log when the `CIVICRM_DEBUG_LOG_QUERY`
178 environment variable is set. Now, the value of that variable can specify a
179 file name for the log.
180
181 ### CiviContribute
182
183 - **Move ACls on LineItem create to financialacls core extension
184 ([18339](https://github.com/civicrm/civicrm-core/pull/18339))**
185
186 Simplifies the code base by moving the financial ACL handling from the
187 LineItem BAO to the financialacls core extension.
188
189 - **Convert core processors to use Guzzle and bring them under CI (Work Towards
190 [dev/financial#143](https://lab.civicrm.org/dev/financial/-/issues/143):
191 [18350](https://github.com/civicrm/civicrm-core/pull/18350))**
192
193 The PayPal Pro payment processor integration now uses the Guzzle library for
194 HTTP requests. This improves consistency and allows for unit testing of the
195 request handling.
196
197 - **Migrate Eway(Single Currency) Payment Processor Type out into its own
198 extension ([18349](https://github.com/civicrm/civicrm-core/pull/18349))**
199
200 The Eway payment processor is now a separate extension, albeit shipped with
201 core.
202
203 - **Make 'Record Payment' & 'Record Refund' visible regardless of whether the
204 balance 'requires' one
205 ([dev/financial#86](https://lab.civicrm.org/dev/financial/-/issues/86):
206 [18417](https://github.com/civicrm/civicrm-core/pull/18417))**
207
208 Makes it so the "Record Payment" and "Record Refund" links on Contributions
209 are always visible.
210
211 - **Alter the default of send notification to contributor checkbox on cancel or
212 edit recurring to off
213 ([dev/core#1986](https://lab.civicrm.org/dev/core/-/issues/1986):
214 [18537](https://github.com/civicrm/civicrm-core/pull/18537))**
215
216 The "notify contributor" checkbox on the form to cancel or edit a recurring
217 donation is now unchecked by default.
218
219 - **PCP action links support for hook_civicrm_links
220 ([dev/core#2061](https://lab.civicrm.org/dev/core/-/issues/2061):
221 [18570](https://github.com/civicrm/civicrm-core/pull/18570))**
222
223 This allows `hook_civicrm_links` to be used by extension developers to modify the
224 list of actions offered to personal campaign page creators.
225
226 - **Add Line Item v4 API
227 ([dev/core#1980](https://lab.civicrm.org/dev/core/-/issues/1980):
228 [18388](https://github.com/civicrm/civicrm-core/pull/18388) and
229 [18352](https://github.com/civicrm/civicrm-core/pull/18352))**
230
231 Adds the "Line Item" entity to APIv4.
232
233 - **Improve metadata on LineItem DAO
234 ([18521](https://github.com/civicrm/civicrm-core/pull/18521))**
235
236 Adds labels to line item meta data.
237
238 ### CiviMail
239
240 - **Add options to Mail Account settings to improve inbound mail processing
241 ([18624](https://github.com/civicrm/civicrm-core/pull/18624))**
242
243 Two new options are added to the Mail Account settings form to improve inbound
244 email processing:
245
246 1. 'Skip emails which do not have a Case ID or Case token'
247 2. 'Do not create new contacts when filing emails'
248
249 - **Change wording on the Opt Out and Unsubscribe pages
250 ([18338](https://github.com/civicrm/civicrm-core/pull/18338))**
251
252 Improves messaging to end user on Opt Out and Unsubscribe pages.
253
254 ### CiviMember
255
256 - **Add custom field groups to Membership Contribution Detail report
257 ([dev/report#49](https://lab.civicrm.org/dev/report/-/issues/49):
258 [18420](https://github.com/civicrm/civicrm-core/pull/18420))**
259
260 Contact custom fields are now available on the Membership Contribution Detail
261 report.
262
263 ### Drupal Integration
264
265 - **Drupal 9 deprecations
266 ([dev/drupal#138](https://lab.civicrm.org/dev/drupal/-/issues/138):
267 [18461](https://github.com/civicrm/civicrm-core/pull/18461))**
268
269 Drupal now allows for smooth upgrades between major versions by gradually
270 introducing new API functions and deprecating others through the cycle of a
271 major version. A new major version starts by simply removing deprecated
272 function from the latest release of the prior major version.
273
274 This removes the use of a number of functions that have been deprecated since
275 Drupal 8.5 and are removed in Drupal 9. The result is that CiviCRM 5.31 is no
276 longer compatible with Drupal versions prior to 8.5 but is compatible with
277 Drupal 9.
278
279 - **Finish allowing use of SSL to connect to database
280 (Work Towards [dev/core#1926](https://lab.civicrm.org/dev/core/-/issues/1926):
281 [18264](https://github.com/civicrm/civicrm-core/pull/18264))**
282
283 The setup screen now attempts to identify if the Drupal database connection
284 uses SSL and fills the configuration options to match.
285
286 - **drush civicrm-ext-list add ext's status filter and show version number
287 ([597](https://github.com/civicrm/civicrm-drupal/pull/597))**
288
289 Extends the drush command `drush civicrm-ext-list` so that users can:
290
291 - Filter by the extension's status (installed, uninstalled, disabled)
292 - Show the extension version number in the result list
293 - Use the `--out` option to print results as json or as a pretty table
294
295 ## <a name="bugs"></a>Bugs resolved
296
297 ### Core CiviCRM
298
299 - **"Network Error" when sorting contact search results by City, Postcode or
300 Country ([dev/core#2132](https://lab.civicrm.org/dev/core/-/issues/2132):
301 [18857](https://github.com/civicrm/civicrm-core/pull/18857))**
302
303 - **Public contribution form and Checksums: billing information not loaded if
304 using multiple processors
305 ([dev/core#334](https://lab.civicrm.org/dev/core/-/issues/334):
306 [18642](https://github.com/civicrm/civicrm-core/pull/18642))**
307
308 Custom data tables for contacts are now created with the charset and collation
309 to match the `civicrm_contact` table.
310
311 This resolves a bug when the billing information is not filled when visiting a
312 contribution page with multiple payment processors via a checksum link.
313
314 - **Deadlocks on acl_cache
315 (Work Towards [dev/core#1486](https://lab.civicrm.org/dev/core/-/issues/1486):
316 [18403](https://github.com/civicrm/civicrm-core/pull/18403))**
317
318 Removes foreign keys from the ACL cache tables as they are likely to
319 hinder performance.
320
321 - **APIv4 - revisit required parameters on location entities
322 ([dev/core#2044](https://lab.civicrm.org/dev/core/-/issues/2044):
323 [18575](https://github.com/civicrm/civicrm-core/pull/18575))**
324
325 Makes it so that APIv4 can be used for creating event locations by making
326 contact_id optional for the Address, Phone and Email entities.
327
328 - **Eliminate "No extensions available for this version of CiviCRM"
329 ([dev/core#2063](https://lab.civicrm.org/dev/core/-/issues/2063):
330 [18596](https://github.com/civicrm/civicrm-core/pull/18596))**
331
332 Fixes warning thrown when no public extensions directory is found.
333
334 - **Group ids in profile fields are not correct
335 ([dev/core#2125](https://lab.civicrm.org/dev/core/-/issues/2125):
336 [18776](https://github.com/civicrm/civicrm-core/pull/18776))**
337
338 Fixes DB errors when using the groups field in a profile.
339
340 - **Drupal 7 + 9 Groups dont show in edit with version 5.30.1
341 ([dev/core#2136](https://lab.civicrm.org/dev/core/-/issues/2136):
342 [18831](https://github.com/civicrm/civicrm-core/pull/18831))**
343
344 - **Rebuild triggers after utf8mb4 conversion
345 ([18751](https://github.com/civicrm/civicrm-core/pull/18751))**
346
347 When the `System.utf8conversion` API call is run, this ensures that the
348 triggers for relationship_cache are updated to use the right encoding.
349
350 - **Remove explicit COLLATE utf8_bin from RelationshipCache trigger
351 ([18721](https://github.com/civicrm/civicrm-core/pull/18721))**
352
353 Ensure that relationship types can be edited after switching to utf8mb4.
354
355 - **Fix way of identifying custom serialized fields
356 ([18360](https://github.com/civicrm/civicrm-core/pull/18360))**
357
358 Removes references to field types that no longer exist, specifically the
359 'Multi-Select', 'Multi-Select State/Province', and 'Multi-Select Country',
360 custom field types, which were all removed in 5.27.
361
362 - **Exclude api4 from IDS check
363 ([18695](https://github.com/civicrm/civicrm-core/pull/18695))**
364
365 Fixes false-positive "suspicious activity" warnings in the IDS (Intrusion
366 Detection System) when using APIv4.
367
368 - **Fix complexity on cache key
369 ([18650](https://github.com/civicrm/civicrm-core/pull/18650))**
370
371 Ensures that the cacheKey does not cross-populate values from different users.
372
373 - **Use title instead name in status message
374 ([18406](https://github.com/civicrm/civicrm-core/pull/18406))**
375
376 Fixes help text when an option group is saved to show the title of the option
377 group instead of the name.
378
379 - **Export fix on long custom fields
380 ([18146](https://github.com/civicrm/civicrm-core/pull/18146))**
381
382 This resolves problems exporting custom fields that have long option values.
383
384 - **Contact form task delete php spelling fix
385 ([18399](https://github.com/civicrm/civicrm-core/pull/18399))**
386
387 - **Component Titles are not translated on the Configuration Checklist page
388 ([dev/translation#54](https://lab.civicrm.org/dev/translation/-/issues/54):
389 [18690](https://github.com/civicrm/civicrm-core/pull/18690))**
390
391 - **Error when viewing contact merged to permanently deleted contact
392 ([dev/core#1838](https://lab.civicrm.org/dev/core/-/issues/1838):
393 [18564](https://github.com/civicrm/civicrm-core/pull/18564))**
394
395 When one contact is merged to another contact, the first contact remains in
396 the trash and refers to the second. However, there was a bug preventing that
397 first contact from being viewed if the second contact was deleted permanently.
398
399 - **E_WARNING when editing custom field with trigger-based logging turned on
400 ([dev/core#1989](https://lab.civicrm.org/dev/core/-/issues/1989):
401 [18386](https://github.com/civicrm/civicrm-core/pull/18386))**
402
403 - **Northern Ireland / Wales counties are out of date
404 ([dev/core#2027](https://lab.civicrm.org/dev/core/-/issues/2027):
405 [18470](https://github.com/civicrm/civicrm-core/pull/18470))**
406
407 - **Multiple email activity cc recipients get scrunched together in recorded
408 activity details field
409 ([dev/core#2040](https://lab.civicrm.org/dev/core/-/issues/2040):
410 [18504](https://github.com/civicrm/civicrm-core/pull/18504))**
411
412 - **When exporting for composer-style deployment, exclude the `.gitignore` file
413 ([18673](https://github.com/civicrm/civicrm-core/pull/18673))**
414
415 - **Fix patently silly code
416 ([18652](https://github.com/civicrm/civicrm-core/pull/18652))**
417
418 - **Fix cache bypass
419 ([18643](https://github.com/civicrm/civicrm-core/pull/18643))**
420
421 - **Fix bug in primary handling where TRUE rather than 1 used
422 ([18598](https://github.com/civicrm/civicrm-core/pull/18598))**
423
424 - **Greenwich - fix conflict btw bootstrap & jQuery UI button
425 ([18696](https://github.com/civicrm/civicrm-core/pull/18696))**
426
427 - **Remove double exception handling in repeattransaction
428 ([18594](https://github.com/civicrm/civicrm-core/pull/18594))**
429
430 - **Preferred Language in a profile doesn't show/behave as required when so
431 configured ([dev/core#1883](https://lab.civicrm.org/dev/core/-/issues/1883):
432 [18595](https://github.com/civicrm/civicrm-core/pull/18595))**
433
434 - **Fix deprecation notice
435 ([18541](https://github.com/civicrm/civicrm-core/pull/18541))**
436
437 - **Replace '&' to 'and' in button label
438 ([18405](https://github.com/civicrm/civicrm-core/pull/18405))**
439
440 - **Performance - meta issue for hunting down memory leaks
441 ([dev/core#2073](https://lab.civicrm.org/dev/core/-/issues/2073):
442 [18640](https://github.com/civicrm/civicrm-core/pull/18640),
443 [18701](https://github.com/civicrm/civicrm-core/pull/18701),
444 [18699](https://github.com/civicrm/civicrm-core/pull/18699),
445 [18702](https://github.com/civicrm/civicrm-core/pull/18702),
446 [18700](https://github.com/civicrm/civicrm-core/pull/18700),
447 [18692](https://github.com/civicrm/civicrm-core/pull/18692),
448 [18693](https://github.com/civicrm/civicrm-core/pull/18693),
449 [18633](https://github.com/civicrm/civicrm-core/pull/18633),
450 [18641](https://github.com/civicrm/civicrm-core/pull/18641) and
451 [18632](https://github.com/civicrm/civicrm-core/pull/18632))**
452
453 - **E_NOTICE viewing an activity that has no details contents
454 ([dev/core#2075](https://lab.civicrm.org/dev/core/-/issues/2075):
455 [18637](https://github.com/civicrm/civicrm-core/pull/18637))**
456
457 - **Undefined index on contact's activity tab when there's an activity that has
458 no With Contact
459 ([dev/core#2090](https://lab.civicrm.org/dev/core/-/issues/2090):
460 [18669](https://github.com/civicrm/civicrm-core/pull/18669))**
461
462 - **Undefined index 'class' on new individual form
463 ([dev/core#2093](https://lab.civicrm.org/dev/core/-/issues/2093):
464 [18678](https://github.com/civicrm/civicrm-core/pull/18678))**
465
466 - **Deprecation warnings when making thank-you letters
467 ([dev/core#2108](https://lab.civicrm.org/dev/core/-/issues/2108):
468 [18717](https://github.com/civicrm/civicrm-core/pull/18717) and
469 [18716](https://github.com/civicrm/civicrm-core/pull/18716))**
470
471 This affects all PDF letters.
472
473 - **Fix the output of the full text custom search form
474 ([18890](https://github.com/civicrm/civicrm-core/pull/18890))**
475
476 This resolves styling issues on the full text search form.
477
478 - **For countries without a province N/A is not accepted as a state in a profile
479 ([dev/core#2149](https://lab.civicrm.org/dev/core/-/issues/2149):
480 [18877](https://github.com/civicrm/civicrm-core/pull/18877))**
481
482 - **IN operator not working in Search
483 ([dev/core#2147](https://lab.civicrm.org/dev/core/-/issues/2147):
484 [18898](https://github.com/civicrm/civicrm-core/pull/18898))**
485
486 This changes the group search field in the basic "Find Contacts" search back
487 to a plain select drop-down rather than a Select2 widget.
488
489 ### CiviCampaign
490
491 - **Fix default report permissions when creating reports from CiviCampaign
492 ([18493](https://github.com/civicrm/civicrm-core/pull/18493))**
493
494 Ensures that CiviCampaign report titles are not accessible to users without
495 proper permissions to view the report.
496
497 ### CiviCase
498
499 - **Incorrect comparison of status_id when changing status of linked cases
500 ([dev/core#1979](https://lab.civicrm.org/dev/core/-/issues/1979):
501 [18309](https://github.com/civicrm/civicrm-core/pull/18309))**
502
503 ### CiviContribute
504
505 - **View Payment owned by Different contact on Membership and Participant View.
506 ([dev/report#48](https://lab.civicrm.org/dev/report/-/issues/48):
507 [18281](https://github.com/civicrm/civicrm-core/pull/18281))**
508
509 This ensures that related payments are displayed when viewing a Membership or
510 Participant even if they come from a different contact.
511
512 - **Dropdown for country seems to have reverted to a regular select instead of
513 select2 ([dev/core#2030](https://lab.civicrm.org/dev/core/-/issues/2030):
514 [18533](https://github.com/civicrm/civicrm-core/pull/18533))**
515
516 This resolves a bug in the display of the Country field in the billing address
517 section of a contribution page.
518
519 - **Fix formatLocaleNumericRoundedByCurrency
520 ([18409](https://github.com/civicrm/civicrm-core/pull/18409))**
521
522 Ensures that currencies are rounded to the correct decimal point instead of
523 always 2 decimal points.
524
525 - **change civicrm_price_set.min_amount to float
526 ([18677](https://github.com/civicrm/civicrm-core/pull/18677))**
527
528 Updates the price set minimum amount field to be float (not int).
529
530 - **Incorrect rounding up with priceset fields
531 ([dev/core#2003](https://lab.civicrm.org/dev/core/-/issues/2003):
532 [18297](https://github.com/civicrm/civicrm-core/pull/18297) and
533 [18416](https://github.com/civicrm/civicrm-core/pull/18416))**
534
535 Ensures the amount is saved to the database correctly for price field values
536 when a value is entered longer than two decimals.
537
538 - **Display url_site and url_recur based on if the form elements exist
539 ([18324](https://github.com/civicrm/civicrm-core/pull/18324))**
540
541 Ensures developers can remove fields from the payment processor configuration
542 form using the build form hook.
543
544 - **LineItem pre Hook non-standard on edit
545 ([dev/core#1994](https://lab.civicrm.org/dev/core/-/issues/1994):
546 [18340](https://github.com/civicrm/civicrm-core/pull/18340))**
547
548 This resolves a bug in the entity ID sent to `hook_civicrm_pre` when editing
549 line items.
550
551 - **Performance - do not retrieve soft credits & pcps when not required
552 ([dev/core#2056](https://lab.civicrm.org/dev/core/-/issues/2056):
553 [18556](https://github.com/civicrm/civicrm-core/pull/18556))**
554
555 - **Remove ajax timeout from contribution page on behalf of
556 ([18140](https://github.com/civicrm/civicrm-core/pull/18140))**
557
558 - **property bag's setAmount should ensure dot decimal point
559 ([18429](https://github.com/civicrm/civicrm-core/pull/18429))**
560
561 ### CiviEvent
562
563 - **Contact Dashboard does not show event registrations for non-admins
564 ([dev/event#43](https://lab.civicrm.org/dev/event/-/issues/43):
565 [18758](https://github.com/civicrm/civicrm-core/pull/18758))**
566
567 - **Set participant status notification to false by default
568 ([18544](https://github.com/civicrm/civicrm-core/pull/18544))**
569
570 The "Send Notification" checkbox is now always unchecked when editing a participant's status. Previously it would be checked by default when changing a status to "Cancelled" or from "Waitlist" or "Pending waitlist".
571
572 - **ParticipantListing Report: only display the View link for web, unhardcode
573 others ([18704](https://github.com/civicrm/civicrm-core/pull/18704))**
574
575 Ensures that when exporting the Participant Listing report the view links are
576 not included.
577
578 - **Scheduled reminder: "Additional recipients" receive reminders under
579 circumstances where they ought not to
580 ([dev/core#1590](https://lab.civicrm.org/dev/core/-/issues/1590):
581 [17641](https://github.com/civicrm/civicrm-core/pull/17641))**
582
583 Ensures that "Additional recipients" do not receive reminders for deleted
584 events.
585
586 - **Email & Phone storage issues in event location
587 ([dev/core#1973](https://lab.civicrm.org/dev/core/-/issues/1973):
588 [18488](https://github.com/civicrm/civicrm-core/pull/18488))**
589
590 Ensures second email and phone values are saved for event locations.
591
592 - **Creating new event without email fails
593 ([dev/core#2096](https://lab.civicrm.org/dev/core/-/issues/2096):
594 [18710](https://github.com/civicrm/civicrm-core/pull/18710))**
595
596 - **Changing address on event hangs
597 ([dev/core#2102](https://lab.civicrm.org/dev/core/-/issues/2102):
598 [18713](https://github.com/civicrm/civicrm-core/pull/18713))**
599
600 ### CiviGrant
601
602 - **Grant dashboard counts trashed contacts
603 ([dev/core#2009](https://lab.civicrm.org/dev/core/-/issues/2009):
604 [18428](https://github.com/civicrm/civicrm-core/pull/18428))**
605
606 ### CiviMail
607
608 - **Possible regression on deleted contacts
609 ([dev/core#2119](https://lab.civicrm.org/dev/core/-/issues/2119):
610 [18763](https://github.com/civicrm/civicrm-core/pull/18763))**
611
612 Ensures contacts deleted after a mailing is created do not get the mailing.
613
614 ### CiviMember
615
616 - **Membership Renewal form re 'fixMembershipBeforeRenew'
617 ([dev/membership#27](https://lab.civicrm.org/dev/membership/-/issues/27):
618 [18621](https://github.com/civicrm/civicrm-core/pull/18621))**
619
620 The status of an existing membership is now recalculated prior to loading the
621 renewal form. This allows an accurate status to be displayed and used for
622 calculating renewal dates.
623
624 - **Membership status does not get updated during membership import when status
625 override is set
626 ([dev/membership#30](https://lab.civicrm.org/dev/membership/-/issues/30):
627 [18821](https://github.com/civicrm/civicrm-core/pull/18821))**
628
629 - **Bug When Restoring Overridden Status on Related Memberships
630 ([dev/core#1854](https://lab.civicrm.org/dev/core/-/issues/1854):
631 [17742](https://github.com/civicrm/civicrm-core/pull/17742))**
632
633 Ensures related memberships do not get deleted when running the membership
634 status calculation scheduled job.
635
636 - **Fix for ongoing issues with static upsetting the apple cart
637 ([18245](https://github.com/civicrm/civicrm-core/pull/18245))**
638
639 Ensures that inherited relationships are created more reliably.
640
641 - **Multiple Memberships Status Not updated when payment status changed from
642 pending to Completed
643 ([dev/core#1942](https://lab.civicrm.org/dev/core/-/issues/1942):
644 [18232](https://github.com/civicrm/civicrm-core/pull/18232))**
645
646 - **Make period_type mandatory for MembershipType
647 ([18395](https://github.com/civicrm/civicrm-core/pull/18395))**
648
649 ### Backdrop Integration
650
651 - **Check if BACKDROP_ROOT is defined already
652 ([18545](https://github.com/civicrm/civicrm-core/pull/18545))**
653
654 Fixes the "Constant BACKDROP_ROOT already defined..." notice.
655
656 ### Drupal Integration
657
658 - **Make symfony aliased services public
659 ([18443](https://github.com/civicrm/civicrm-core/pull/18443))**
660
661 Fixes a warning on the extensions form for Drupal 8 sites.
662
663 - **Tarball includes a symlink that goes nowhere, which causes alternate drupal
664 install method to fail
665 ([dev/core#1393](https://lab.civicrm.org/dev/core/-/issues/1393):
666 [18472](https://github.com/civicrm/civicrm-core/pull/18472),
667 [18605](https://github.com/civicrm/civicrm-core/pull/18605) and
668 [18659](https://github.com/civicrm/civicrm-core/pull/18659))**
669
670 - **Exception handling - 'Allowed memory size' exhasted issues
671 ([dev/drupal#119](https://lab.civicrm.org/dev/drupal/-/issues/119):
672 [18610](https://github.com/civicrm/civicrm-core/pull/18610))**
673
674 Avoid crashes from recursion on unhandled exceptions (most often an issue in
675 Drupal 8).
676
677 - **inheritLocale regression
678 ([dev/translation#51](https://lab.civicrm.org/dev/translation/-/issues/51):
679 [18447](https://github.com/civicrm/civicrm-core/pull/18447))**
680
681 Ensures that CiviCRM in multilingual mode respects the Drupal language.
682
683 - **Do not block user incase 'Require approval' is checked
684 ([18329](https://github.com/civicrm/civicrm-core/pull/18329))**
685
686 Ensures users created via a profile are set to active in Drupal8 to prevent
687 issues with the email verification step.
688
689 - **Fix customGroup getTableNameByEntityName to recognize all entities
690 ([18546](https://github.com/civicrm/civicrm-core/pull/18546))**
691
692 This ensures that all entities are recognized by Webform integration.
693
694 - **Custom field values not showing in Drupal 7 Views filter
695 ([dev/core#1929](https://lab.civicrm.org/dev/core/-/issues/1929):
696 [611](https://github.com/civicrm/civicrm-drupal/pull/611))**
697
698 - **Fix theme configuration section on Display preference and improve
699 `isFrontendPage` function for Drupal CMS
700 ([dev/core#1987](https://lab.civicrm.org/dev/core/-/issues/1987):
701 [18396](https://github.com/civicrm/civicrm-core/pull/18396) and
702 [18397](https://github.com/civicrm/civicrm-core/pull/18397))**
703
704 - **Drupal 7 - Groups children now get shown with SPAN CSS error
705 ([dev/core#2105](https://lab.civicrm.org/dev/core/-/issues/2105):
706 [18719](https://github.com/civicrm/civicrm-core/pull/18719))**
707
708 - **composer.json - Update compile-lib and compile-plugin
709 ([18670](https://github.com/civicrm/civicrm-core/pull/18670))**
710
711 ## <a name="misc"></a>Miscellany
712
713 - **Take the guesswork out of rendering clientside CRM variables
714 ([18262](https://github.com/civicrm/civicrm-core/pull/18262))**
715
716 - **Improve consistency of metadata type declarations
717 ([18147](https://github.com/civicrm/civicrm-core/pull/18147))**
718
719 - **Use eventID rather than the object in completeTransaction
720 ([18358](https://github.com/civicrm/civicrm-core/pull/18358))**
721
722 - **Load event title from participantID
723 ([18376](https://github.com/civicrm/civicrm-core/pull/18376))**
724
725 - **Fix Invoice class to not call validateData
726 ([18372](https://github.com/civicrm/civicrm-core/pull/18372))**
727
728 - **Finish deprecating BaseIPN->completeTransaction
729 ([18381](https://github.com/civicrm/civicrm-core/pull/18381))**
730
731 - **Add postAssert to check payments and contributions are valid on all tests.
732 ([18317](https://github.com/civicrm/civicrm-core/pull/18317))**
733
734 - **Switch frontend contribution form to cached/non-deprecated functions for
735 membershipTypes
736 ([18404](https://github.com/civicrm/civicrm-core/pull/18404))**
737
738 - **Ensure DAO base class contains functions to be removed from generated files
739 ([18492](https://github.com/civicrm/civicrm-core/pull/18492))**
740
741 - **Switch backend membership form to use non-deprecated/cached functions to get
742 membership types
743 ([18427](https://github.com/civicrm/civicrm-core/pull/18427))**
744
745 - **Fix civi version for greenwich
746 ([18542](https://github.com/civicrm/civicrm-core/pull/18542))**
747
748 - **Switch to passing payment_processor_id as input param to completeOrder
749 ([18528](https://github.com/civicrm/civicrm-core/pull/18528))**
750
751 - **Switch membership BAO to use non-deprecated cached functions to get
752 membershipType details
753 ([18515](https://github.com/civicrm/civicrm-core/pull/18515))**
754
755 - **Separate export into separate classes to allow unravelling of component
756 handling (Member)
757 ([18512](https://github.com/civicrm/civicrm-core/pull/18512))**
758
759 - **Simplify CRM_Core_BAO_Location::createLocBlock by moving eventLocation
760 specific handling back to the class
761 ([18578](https://github.com/civicrm/civicrm-core/pull/18578))**
762
763 - **Update the post-upgrade thank you message to include URLs to CiviCRM
764 contributors, CiviCRM members and minor rewrite
765 ([18559](https://github.com/civicrm/civicrm-core/pull/18559))**
766
767 - **Simplify call to loadRelatedObjects in repeat/completetransaction
768 ([18613](https://github.com/civicrm/civicrm-core/pull/18613))**
769
770 - **Move membership tab add/submit membership buttons to PHP layer
771 ([18143](https://github.com/civicrm/civicrm-core/pull/18143))**
772
773 - **Remove extraneous UF match queries
774 ([dev/core#2087](https://lab.civicrm.org/dev/core/-/issues/2087):
775 [18667](https://github.com/civicrm/civicrm-core/pull/18667) and
776 [18675](https://github.com/civicrm/civicrm-core/pull/18675))**
777
778 - **Can't send SMS to mailing group whose parent isn't a mailing group (Clean up
779 [dev/core#2053](https://lab.civicrm.org/dev/core/-/issues/2053):
780 [18698](https://github.com/civicrm/civicrm-core/pull/18698))**
781
782 - **Merge - ensure location entities remaining on deleted contacts have
783 is_primary integrity
784 (Clean up [dev/core#2047](https://lab.civicrm.org/dev/core/-/issues/2047):
785 [18499](https://github.com/civicrm/civicrm-core/pull/18499) and
786 [18500](https://github.com/civicrm/civicrm-core/pull/18500))**
787
788 - **[cq] Do not pass by reference where avoidable
789 (Work Towards [dev/core#2043](https://lab.civicrm.org/dev/core/-/issues/2043):
790 [18484](https://github.com/civicrm/civicrm-core/pull/18484) and
791 [18485](https://github.com/civicrm/civicrm-core/pull/18485))**
792
793 - **Fix the Test Result (1 failure / -190)
794 E2E.Core.PrevNextTest.testDeleteByCacheKey recurring test issue
795 ([dev/core#2029](https://lab.civicrm.org/dev/core/-/issues/2029):
796 [18587](https://github.com/civicrm/civicrm-core/pull/18587) and
797 [18565](https://github.com/civicrm/civicrm-core/pull/18565))**
798
799 - **SyntaxConformance::testSqlOperators cleanup fix - ensure entities are
800 deleted ([18569](https://github.com/civicrm/civicrm-core/pull/18569))**
801
802 - **Move afform to be a core extension
803 ([dev/core#2000](https://lab.civicrm.org/dev/core/-/issues/2000):
804 [18423](https://github.com/civicrm/civicrm-core/pull/18423))**
805
806 - **Upgrade Angular from 1.5 => 1.8
807 ([dev/core#1818](https://lab.civicrm.org/dev/core/-/issues/1818):
808 [18635](https://github.com/civicrm/civicrm-core/pull/18635))**
809
810 - **Extraneous queries - activities (Work Towards
811 [dev/core#2057](https://lab.civicrm.org/dev/core/-/issues/2057):
812 [18625](https://github.com/civicrm/civicrm-core/pull/18625),
813 [18566](https://github.com/civicrm/civicrm-core/pull/18566),
814 [18609](https://github.com/civicrm/civicrm-core/pull/18609),
815 [18636](https://github.com/civicrm/civicrm-core/pull/18636) and
816 [18567](https://github.com/civicrm/civicrm-core/pull/18567))**
817
818 - **Eliminate unused query on CRM_Core_BAO_CustomQuery::_construct
819 ([dev/core#2079](https://lab.civicrm.org/dev/core/-/issues/2079):
820 [18654](https://github.com/civicrm/civicrm-core/pull/18654),
821 [18653](https://github.com/civicrm/civicrm-core/pull/18653),
822 [18665](https://github.com/civicrm/civicrm-core/pull/18665),
823 [18664](https://github.com/civicrm/civicrm-core/pull/18664),
824 [18656](https://github.com/civicrm/civicrm-core/pull/18656),
825 [18657](https://github.com/civicrm/civicrm-core/pull/18657) and
826 [18655](https://github.com/civicrm/civicrm-core/pull/18655))**
827
828 - **Rationalise BAO create vs add functions (Work Towards
829 [dev/core#2046](https://lab.civicrm.org/dev/core/-/issues/2046):
830 [18682](https://github.com/civicrm/civicrm-core/pull/18682),
831 [18658](https://github.com/civicrm/civicrm-core/pull/18658),
832 [18495](https://github.com/civicrm/civicrm-core/pull/18495),
833 [18588](https://github.com/civicrm/civicrm-core/pull/18588),
834 [18661](https://github.com/civicrm/civicrm-core/pull/18661),
835 [18607](https://github.com/civicrm/civicrm-core/pull/18607) and
836 [18606](https://github.com/civicrm/civicrm-core/pull/18606))**
837
838 - **Address extraneous location queries
839 ([dev/core#2039](https://lab.civicrm.org/dev/core/-/issues/2039):
840 [18496](https://github.com/civicrm/civicrm-core/pull/18496),
841 [18498](https://github.com/civicrm/civicrm-core/pull/18498),
842 [18497](https://github.com/civicrm/civicrm-core/pull/18497),
843 [18494](https://github.com/civicrm/civicrm-core/pull/18494),
844 [18501](https://github.com/civicrm/civicrm-core/pull/18501),
845 [18480](https://github.com/civicrm/civicrm-core/pull/18480),
846 [18489](https://github.com/civicrm/civicrm-core/pull/18489),
847 [18684](https://github.com/civicrm/civicrm-core/pull/18684) and
848 [18663](https://github.com/civicrm/civicrm-core/pull/18663))**
849
850 - **Remove unused functions (Work Towards
851 [dev/core#2017](https://lab.civicrm.org/dev/core/-/issues/2017):
852 [18662](https://github.com/civicrm/civicrm-core/pull/18662),
853 [18430](https://github.com/civicrm/civicrm-core/pull/18430),
854 [18433](https://github.com/civicrm/civicrm-core/pull/18433),
855 [18463](https://github.com/civicrm/civicrm-core/pull/18463),
856 [18458](https://github.com/civicrm/civicrm-core/pull/18458))**
857
858 - **Remove unneccessary isoToDate function
859 ([dev/core#1921](https://lab.civicrm.org/dev/core/-/issues/1921):
860 [18422](https://github.com/civicrm/civicrm-core/pull/18422),
861 [18576](https://github.com/civicrm/civicrm-core/pull/18576),
862 [18359](https://github.com/civicrm/civicrm-core/pull/18359),
863 [18469](https://github.com/civicrm/civicrm-core/pull/18469),
864 [18456](https://github.com/civicrm/civicrm-core/pull/18456),
865 [18457](https://github.com/civicrm/civicrm-core/pull/18457),
866 [18374](https://github.com/civicrm/civicrm-core/pull/18374),
867 [18383](https://github.com/civicrm/civicrm-core/pull/18383) and
868 [18468](https://github.com/civicrm/civicrm-core/pull/18468))**
869
870 - **Deprecate BaseIPN functions validateData & LoadObject (Work Towards
871 [dev/financial#148](https://lab.civicrm.org/dev/financial/-/issues/148):
872 [18479](https://github.com/civicrm/civicrm-core/pull/18479) and
873 [18571](https://github.com/civicrm/civicrm-core/pull/18571))**
874
875 - **Separate out Search participant register form from backoffice form
876 ([dev/event#42](https://lab.civicrm.org/dev/event/-/issues/42):
877 [18486](https://github.com/civicrm/civicrm-core/pull/18486))**
878
879 - **Add try catch to main loops on core ipn classes
880 ([18384](https://github.com/civicrm/civicrm-core/pull/18384))**
881
882 - **Rename variable $key to $participantID to make it clear what it is
883 ([18371](https://github.com/civicrm/civicrm-core/pull/18371))**
884
885 - **Stop passing / using object when all we need is the id
886 ([18331](https://github.com/civicrm/civicrm-core/pull/18331))**
887
888 - **Minor code cleanup - this is only ever called from one place so component is
889 always event ([18343](https://github.com/civicrm/civicrm-core/pull/18343))**
890
891 - **Membership form test cleanup, date cleanup on form
892 ([18413](https://github.com/civicrm/civicrm-core/pull/18413))**
893
894 - **Search ext: misc cleanup & fixes
895 ([18723](https://github.com/civicrm/civicrm-core/pull/18723))**
896
897 - **Switch to non-deprecated/cached functions for membership pricesets
898 ([18568](https://github.com/civicrm/civicrm-core/pull/18568))**
899
900 - **Fix parameters for MembershipTest
901 ([18467](https://github.com/civicrm/civicrm-core/pull/18467))**
902
903 - **Update code comments
904 ([18460](https://github.com/civicrm/civicrm-core/pull/18460))**
905
906 - **Pass in activity type rather than calculate it
907 ([18450](https://github.com/civicrm/civicrm-core/pull/18450))**
908
909 - **Move definition of userName to where it is used and remove an unused
910 parameter ([18452](https://github.com/civicrm/civicrm-core/pull/18452))**
911
912 - **Minor code simplification on date handling in getMembershipStatusByDate
913 ([18421](https://github.com/civicrm/civicrm-core/pull/18421))**
914
915 - **Offer singular entity titles
916 ([18434](https://github.com/civicrm/civicrm-core/pull/18434))**
917
918 - **(REF) GenerateData - Make it possible to call this via PHP
919 ([18491](https://github.com/civicrm/civicrm-core/pull/18491))**
920
921 - **[REF] Simplify array construction
922 ([18432](https://github.com/civicrm/civicrm-core/pull/18432))**
923
924 - **[REF] minor tidy up on membershipStatus::create & add
925 ([18435](https://github.com/civicrm/civicrm-core/pull/18435))**
926
927 - **[REF] Folllow up cleanup - remove now unused param
928 ([18438](https://github.com/civicrm/civicrm-core/pull/18438))**
929
930 - **[REF] Start the process of separating the search action from the participant
931 form ([18464](https://github.com/civicrm/civicrm-core/pull/18464))**
932
933 - **[Ref] Code simplification - remove conditional chunk
934 ([18445](https://github.com/civicrm/civicrm-core/pull/18445))**
935
936 - **[ref] Extract failContribution code
937 ([18418](https://github.com/civicrm/civicrm-core/pull/18418))**
938
939 - **[REF] Fix visibility of afform_scanner container service for Symfony …
940 ([18505](https://github.com/civicrm/civicrm-core/pull/18505))**
941
942 - **[REF] Refactor price field form to allow for unit testing of the form
943 ([18414](https://github.com/civicrm/civicrm-core/pull/18414))**
944
945 - **[REF] Minor readability fix
946 ([18415](https://github.com/civicrm/civicrm-core/pull/18415))**
947
948 - **[REF] change deprecated function to API4 call
949 ([18076](https://github.com/civicrm/civicrm-core/pull/18076))**
950
951 - **[NFC] Cleanup in test class
952 ([18539](https://github.com/civicrm/civicrm-core/pull/18539))**
953
954 - **[REF] Remove now used parameter & make function protected
955 ([18543](https://github.com/civicrm/civicrm-core/pull/18543))**
956
957 - **[REF] Consolidate input params that are primarily used for the membership
958 entity action to an array
959 ([18451](https://github.com/civicrm/civicrm-core/pull/18451))**
960
961 - **[REF] Extract the code to determine the DAO name into a functions
962 ([18513](https://github.com/civicrm/civicrm-core/pull/18513))**
963
964 - **[REF] Fix deprecated array and string offset access using curly brace…
965 ([18529](https://github.com/civicrm/civicrm-core/pull/18529))**
966
967 - **[REF] Code cleanup on membership renewal & test
968 ([18365](https://github.com/civicrm/civicrm-core/pull/18365))**
969
970 - **[REF] Improve the human readable name of the eway upgrade step to be …
971 ([18401](https://github.com/civicrm/civicrm-core/pull/18401))**
972
973 - **[REF] Simplify loading of related objects in transition components
974 ([18373](https://github.com/civicrm/civicrm-core/pull/18373))**
975
976 - **[REF] simplify interaction with objects in complete order
977 ([18385](https://github.com/civicrm/civicrm-core/pull/18385))**
978
979 - **[REF] Mark CRM_Contribute_BAO_Contribution_Utils::formatAmount deprec…
980 ([18387](https://github.com/civicrm/civicrm-core/pull/18387))**
981
982 - **[REF] Swap out CRM_Utils_Array::value() - partial pull out from PR 18207
983 ([18391](https://github.com/civicrm/civicrm-core/pull/18391))**
984
985 - **[REF] Remove unused lines from loadObjects
986 ([18389](https://github.com/civicrm/civicrm-core/pull/18389))**
987
988 - **[REF] Ensure that all bundle container services are public for Symfon…
989 ([18368](https://github.com/civicrm/civicrm-core/pull/18368))**
990
991 - **[REF] Parse ids before sending to single function (minor simplification)
992 ([18630](https://github.com/civicrm/civicrm-core/pull/18630))**
993
994 - **[REF] Hide eway extension in UI and only install it if the original e…
995 ([18377](https://github.com/civicrm/civicrm-core/pull/18377))**
996
997 - **[REF] Simplify logic on calling self::updateContributionStatus
998 ([18357](https://github.com/civicrm/civicrm-core/pull/18357))**
999
1000 - **[REF] Fix adding in the accessKey based on the button array
1001 ([18674](https://github.com/civicrm/civicrm-core/pull/18674))**
1002
1003 - **[REF] Add in frontend fields for title and description of group Schem…
1004 ([18599](https://github.com/civicrm/civicrm-core/pull/18599))**
1005
1006 - **[REF] Remove unused taskName variable
1007 ([18590](https://github.com/civicrm/civicrm-core/pull/18590))**
1008
1009 - **[REF] IPN - move unshared chunk of code out of shared function
1010 ([18600](https://github.com/civicrm/civicrm-core/pull/18600))**
1011
1012 - **[REF] Paypal std ipn Move not-actually shared-code out of shared code
1013 function ([18536](https://github.com/civicrm/civicrm-core/pull/18536))**
1014
1015 - **[REF] Remove some unused params, move one to where it is used
1016 ([18614](https://github.com/civicrm/civicrm-core/pull/18614))**
1017
1018 - **[Ref] Extract getOrderParams
1019 ([18617](https://github.com/civicrm/civicrm-core/pull/18617))**
1020
1021 - **REF Filter params in completetransaction
1022 ([18321](https://github.com/civicrm/civicrm-core/pull/18321))**
1023
1024 - **[REF] Fix compatability with Drupal 9 installing of var_dumper
1025 ([18679](https://github.com/civicrm/civicrm-core/pull/18679))**
1026
1027 - **[REF] Add test for existing Participant batch update cancel and fix to not
1028 call BaseIPN->cancelled
1029 ([18318](https://github.com/civicrm/civicrm-core/pull/18318))**
1030
1031 - **[REF] Use helper function to check if multiLingual
1032 ([604](https://github.com/civicrm/civicrm-drupal/pull/604))**
1033
1034 - **[REF] Update Versions file and remove Net_URL class as doesn't appear…
1035 ([310](https://github.com/civicrm/civicrm-packages/pull/310))**
1036
1037 - **[REF] Remove Eway Libraries and XML_Util as they are now shipped as p…
1038 ([306](https://github.com/civicrm/civicrm-packages/pull/306))**
1039
1040 - **[REF] Add in css classes to make the save and preview button on the C…
1041 ([18647](https://github.com/civicrm/civicrm-core/pull/18647))**
1042
1043 - **[REF] Move daoName generation so we don't need to pass the variable name
1044 ([18552](https://github.com/civicrm/civicrm-core/pull/18552))**
1045
1046 - **[REF] Very minor cleanup
1047 ([18604](https://github.com/civicrm/civicrm-core/pull/18604))**
1048
1049 - **[REF] Fix Event location to create it's locations directly rather than via
1050 shared methods ([18586](https://github.com/civicrm/civicrm-core/pull/18586))**
1051
1052 - **[REF] Consolidate retrieval of searchFormValues
1053 ([18591](https://github.com/civicrm/civicrm-core/pull/18591))**
1054
1055 - **[REF] Include recently added core extensions into distmaker
1056 ([18597](https://github.com/civicrm/civicrm-core/pull/18597))**
1057
1058 - **[Ref] Extract getFormValues
1059 ([18510](https://github.com/civicrm/civicrm-core/pull/18510))**
1060
1061 - **[REF] Remove checks as to whether entityShortName is in the component array
1062 ([18538](https://github.com/civicrm/civicrm-core/pull/18538))**
1063
1064 - **[Ref] Merge code - Move determination about location type to the
1065 getDAOForLocation…
1066 ([18562](https://github.com/civicrm/civicrm-core/pull/18562))**
1067
1068 - **[REF] Remove unreachable lines
1069 ([18535](https://github.com/civicrm/civicrm-core/pull/18535))**
1070
1071 - **[REF] Remove wrangling on activityType param
1072 ([18558](https://github.com/civicrm/civicrm-core/pull/18558))**
1073
1074 - **[REF] Finally remove deprecated ids handling
1075 ([18557](https://github.com/civicrm/civicrm-core/pull/18557))**
1076
1077 - **[REF] Update composer compile plugin to latest version
1078 ([18553](https://github.com/civicrm/civicrm-core/pull/18553))**
1079
1080 - **(REF) Make it easier for extensions to define basic bundles
1081 ([18660](https://github.com/civicrm/civicrm-core/pull/18660))**
1082
1083 - **[REF] Follow up cleanup from Event Location
1084 ([18608](https://github.com/civicrm/civicrm-core/pull/18608))**
1085
1086 - **(REF) Switch to composer-compile-lib
1087 ([18646](https://github.com/civicrm/civicrm-core/pull/18646))**
1088
1089 - **[REF] Remove XML_Util dependancy within ewaysingle extension
1090 ([18676](https://github.com/civicrm/civicrm-core/pull/18676))**
1091
1092 - **Remove long-deprecated hook_civicrm_tabs
1093 ([18503](https://github.com/civicrm/civicrm-core/pull/18503))**
1094
1095 - **Remove redundant custom field types
1096 ([18378](https://github.com/civicrm/civicrm-core/pull/18378) and
1097 ([622](https://github.com/civicrm/civicrm-drupal/pull/622))**
1098
1099 - **Remove unnecessary call to 'validateData' from pdf generator
1100 ([18367](https://github.com/civicrm/civicrm-core/pull/18367))**
1101
1102 - **Remove unnecessary debug from tests which messes up array output
1103 ([18446](https://github.com/civicrm/civicrm-core/pull/18446))**
1104
1105 - **Remove error handling from loadObjects
1106 ([18393](https://github.com/civicrm/civicrm-core/pull/18393))**
1107
1108 - **Remove deprecated code lines
1109 ([18490](https://github.com/civicrm/civicrm-core/pull/18490))**
1110
1111 - **Remove CRM_Contact_BAO_Contact::getPrimaryOpenId
1112 ([18424](https://github.com/civicrm/civicrm-core/pull/18424))**
1113
1114 - **Remove inaccessible call to baseIPN failed
1115 ([18369](https://github.com/civicrm/civicrm-core/pull/18369))**
1116
1117 - **Remove pass-by-ref in PaypalProIPN::single
1118 ([18337](https://github.com/civicrm/civicrm-core/pull/18337))**
1119
1120 - **Remove obsolete load-bootstrap.js
1121 ([18551](https://github.com/civicrm/civicrm-core/pull/18551))**
1122
1123 - **Remove deprecated ids param
1124 ([18375](https://github.com/civicrm/civicrm-core/pull/18375))**
1125
1126 - **Remove unused deprecated handling for partial_amount_to_pay
1127 ([18328](https://github.com/civicrm/civicrm-core/pull/18328))**
1128
1129 - **Minor test data fix up - ensure domain contact's email is primary
1130 ([18561](https://github.com/civicrm/civicrm-core/pull/18561))**
1131
1132 - **Minor test fix
1133 ([18560](https://github.com/civicrm/civicrm-core/pull/18560))**
1134
1135 - **Preliminary cleanup on test
1136 ([18346](https://github.com/civicrm/civicrm-core/pull/18346))**
1137
1138 - **Fix test to use validateAllContributions
1139 ([18348](https://github.com/civicrm/civicrm-core/pull/18348))**
1140
1141 - **Afform Tests - Fix extension tests when run via `civi-test-run`
1142 ([18511](https://github.com/civicrm/civicrm-core/pull/18511))**
1143
1144 - **Test fix - use valid membership type
1145 ([18507](https://github.com/civicrm/civicrm-core/pull/18507))**
1146
1147 - **Test cleanup fix
1148 ([18601](https://github.com/civicrm/civicrm-core/pull/18601))**
1149
1150 - **[Civi\Test] Fix test output noise
1151 ([18638](https://github.com/civicrm/civicrm-core/pull/18638))**
1152
1153 - **[Test framework] Wrong group id in mailing test setup
1154 ([18626](https://github.com/civicrm/civicrm-core/pull/18626))**
1155
1156 - **Add test to cover existing v3 api setting of tax_amount on line items
1157 ([18351](https://github.com/civicrm/civicrm-core/pull/18351))**
1158
1159 - **Add unit test that ultimately failed to hit the desired code but does add
1160 cover ([18708](https://github.com/civicrm/civicrm-core/pull/18708))**
1161
1162 - **[NFC/Test] Unit test activity-contact variations
1163 ([18619](https://github.com/civicrm/civicrm-core/pull/18619))**
1164
1165 - **[NFC/Test] Unit test for target contacts on Bulk Email when mailing in
1166 batches ([18584](https://github.com/civicrm/civicrm-core/pull/18584))**
1167
1168 - **[NFC] Remove trailing whitespace
1169 ([18476](https://github.com/civicrm/civicrm-core/pull/18476))**
1170
1171 - **[NFC] Aim to reduce memory usage in create single value alter test by…
1172 ([18394](https://github.com/civicrm/civicrm-core/pull/18394))**
1173
1174 - **[NFC/Test framework] Make class name match file name
1175 ([18392](https://github.com/civicrm/civicrm-core/pull/18392))**
1176
1177 - **[NFC] Minor cleanup - use strict comparison where possible
1178 ([18573](https://github.com/civicrm/civicrm-core/pull/18573))**
1179
1180 - **[NFC] Enable APIv4 Testing on the statusPrefence API Tests
1181 ([18366](https://github.com/civicrm/civicrm-core/pull/18366))**
1182
1183 - **NFC Clarify what CRM_Price_BAO_Priceset::getMembershipCount does
1184 ([18426](https://github.com/civicrm/civicrm-core/pull/18426))**
1185
1186 - **[NFC] Enable APIv4 testing on the Fin ACL Extension Line Item test
1187 ([18478](https://github.com/civicrm/civicrm-core/pull/18478))**
1188
1189 - **Enotice fix ([18620](https://github.com/civicrm/civicrm-core/pull/18620))**
1190
1191 - **Enotice fix ([18707](https://github.com/civicrm/civicrm-core/pull/18707))**
1192
1193 - **Update civicrm_handler_field_contact_image.inc
1194 ([625](https://github.com/civicrm/civicrm-drupal/pull/625))**
1195
1196 Fixes a notice.
1197
1198 - **Update civicrm_handler_field_pseudo_constant.inc
1199 ([626](https://github.com/civicrm/civicrm-drupal/pull/626))**
1200
1201 Fixes a notice.
1202
1203 - **Update composer-download-plugin to v3.0.0 to support usage of composer 2.x
1204 ([18899](https://github.com/civicrm/civicrm-core/pull/18899))**
1205
1206 ## <a name="credits"></a>Credits
1207
1208 This release was developed by the following code authors:
1209
1210 AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Justin Freeman; Bastien
1211 Ho; Blackfly Solutions - Alan Dixon; CEDC - Laryn Kragt Bakker; Christian Wach;
1212 Circle Interactive - Pradeep Nayak; CiviCRM - Coleman Watts, Tim Otten;
1213 CiviDesk - Sunil Pawar; CompuCorp - Camilo Rodriguez, Ivan; Coop SymbioTIC -
1214 Mathieu Lutfy; Dave D; iXiam - Luciano Spiegel; JMA Consulting - Monish Deb,
1215 Seamus Lee; John Kingsnorth; Lighthouse Consulting and Design - Brian
1216 Shaughnessy; Megaphone Technology Consulting - Dennis P. Osorio, Jon Goldberg;
1217 MJW Consulting - Matthew Wire; QED42 - Swastik Pareek; Richard van Oosterhout;
1218 Semper IT - Karin Gerritsen; Squiffle Consulting - Aidan Saunders; Tadpole
1219 Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton
1220
1221 Most authors also reviewed code for this release; in addition, the following
1222 reviewers contributed their comments:
1223
1224 Abeilles en Vélo / Bees on a bike; Artful Robot - Rich Lott; Betty Dolfing;
1225 CiviCoop - Jaap Jansma; CiviCRM - Josh Gowans; CiviDesk - Nicolas Ganivet,
1226 Yashodha Chaku; CompuCorp - René Olivo; Freeform Solutions - Herb van den Dool;
1227 Fuzion - Jitendra Purohit, Luke Stewart; Irene Meisel; JMA Consulting - Joe
1228 Murray; Lemniscus - Noah Miller; MJCO - Mikey O'Toole; Tony Maynard-Smith;
1229 Wikimedia Foundation - Maggie Epps
1230
1231 ## <a name="feedback"></a>Feedback
1232
1233 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
1234 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
1235 and contact `@agh1`.