Merge pull request #20929 from eileenmcnaughton/5.40
[civicrm-core.git] / release-notes / 5.40.0.md
1 # CiviCRM 5.40.0
2
3 Released August 4, 2021
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? | no |
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 - **Move check for presence of the phone strip function to a Check (currently
29 done whenever a phone number is edited)
30 ([dev/core#27](https://lab.civicrm.org/dev/core/-/issues/27):
31 [20757](https://github.com/civicrm/civicrm-core/pull/20757))**
32
33 CiviCRM relies on a MySQL function to generate a numeric-only version of phone
34 numbers. This change adds a system check to ensure the function exists
35 instead of checking for the function each time a phone number is added or
36 edited.
37
38 - **Add calling function to deprecatedWarning log message
39 ([20719](https://github.com/civicrm/civicrm-core/pull/20719))**
40
41 Improves logging.
42
43 - **Add contact-summary-image region
44 ([20662](https://github.com/civicrm/civicrm-core/pull/20662))**
45
46 Adds a new region around the contact summary image.
47
48 - **Replace extension key with description in 'Add New' tab
49 ([20720](https://github.com/civicrm/civicrm-core/pull/20720))**
50
51 Improves the "Extensions" -> "Add New" form user experience by displaying the
52 description below the extension name instead of the extension key.
53
54 - **User experience improvement - Remove the confusing mixed terminology used to
55 describe Tags: "Tags (Categories)" and "Tag (Category)"
56 ([20268](https://github.com/civicrm/civicrm-core/pull/20268))**
57
58 Improves user experience by removing the term "Category" when referencing
59 tags.
60
61 - **Improve output triggers when logged to file
62 ([20472](https://github.com/civicrm/civicrm-core/pull/20472))**
63
64 Improves output triggers when logged to a file by adding an asort, putting all
65 the triggers into an array keyed by the statement and opening and closing the
66 delimiters just once.
67
68 - **Show smarty E-notices when in debug mode
69 ([20640](https://github.com/civicrm/civicrm-core/pull/20640))**
70
71 Improves the user experience in debug mode by showing php notices (e.g.
72 "undefined variable").
73
74 - **Add pseudoconstant to acl_entity_role
75 ([20566](https://github.com/civicrm/civicrm-core/pull/20566))**
76
77 Adds a pseudoconstant for `acl_entity_role`.
78
79 - **[php8-compact] Allow for CiviCRM to be installed by 3rd parties using
80 composer on php8 systems
81 ([20625](https://github.com/civicrm/civicrm-core/pull/20625))**
82
83 Makes it so sites can install and update CiviCRM via CLI when their CLI uses
84 PHP8.
85
86 ### Afform and SearchKit
87
88 - **Searchkit display with event location data
89 ([dev/core#2676](https://lab.civicrm.org/dev/core/-/issues/2676):
90 [20746](https://github.com/civicrm/civicrm-core/pull/20746))**
91
92 Adds LocBlock entity to display event location data in SearchKit.
93
94 - **SearchKit - Allow super admins to disable Search Display access checks
95 ([20607](https://github.com/civicrm/civicrm-core/pull/20607))**
96
97 Allows users with 'all CiviCRM permissions and ACLs' to configure a search
98 display to bypass permission checks and display all records to the user.
99
100 - **SearchKit - Add translatable descriptions to entities
101 ([20598](https://github.com/civicrm/civicrm-core/pull/20598))**
102
103 Adds user-friendly descriptions to the top-level entities in SearchKit, and
104 makes it possible to add them to other entities as well.
105
106 - **SearchKit - Show Pledge as a primary entity
107 ([20589](https://github.com/civicrm/civicrm-core/pull/20589))**
108
109 Shows Pledges as a primary entity in SearchKit, since it has its own tab on
110 the contact summary screen.
111
112 - **SearchKit - Add ability to join on multi-select ContactRef fields
113 ([20764](https://github.com/civicrm/civicrm-core/pull/20764))**
114
115 Improves support for custom contact Reference fields in APIv4, SearchKit, and
116 Afform. Makes it possible to save, search for, and filter by serialized
117 (multi-select) custom Contact Reference fields.
118
119 ### API version 4
120
121 - **Improve api consistency on custom field creation
122 ([20743](https://github.com/civicrm/civicrm-core/pull/20743))**
123
124 Makes it so the parameter "option_type" is not needed to create an
125 option_value in APIv4.
126
127 - **APIv4 Explorer: show joins for write actions
128 ([20731](https://github.com/civicrm/civicrm-core/pull/20731))**
129
130 Displays information about joins for write operations in the API Explorer.
131
132 - **APIv4 - Add `@since` annotation to each entity
133 ([20701](https://github.com/civicrm/civicrm-core/pull/20701))**
134
135 Adds since version for each entity to APIv4 code documentation.
136
137 - **APIv4 - Allow FK dot notation in create/update/save actions
138 ([20677](https://github.com/civicrm/civicrm-core/pull/20677))**
139
140 Makes it possible to reference other entities during create without knowing
141 their ID when using the APIv4. Makes it easier to package entities e.g. with
142 civicrm_managed.
143
144 - **APIv4 - Add filter for entity tags
145 ([20573](https://github.com/civicrm/civicrm-core/pull/20573))**
146
147 Adds a SearchKit/APIv4 filter for tags similar to the "groups" filter recently
148 added to SearchKit.
149
150 - **APIv4 - add is_current as a pseudo (calculated) field
151 ([20586](https://github.com/civicrm/civicrm-core/pull/20586))**
152
153 Adds an "is_current" field to SearchKit for relationships, events & campaigns.
154 It checks that the record is active and has a non-past end date and a
155 non-future start date.
156
157 - **APIv4 Explorer - When joining via EntityBridge, make bridge fields
158 selectable ([20721](https://github.com/civicrm/civicrm-core/pull/20721))**
159
160 Improves the APIv4 Explorer by displaying bridge fields.
161
162 - **Canonize API for storing translated data (Work Towards
163 [dev/translation#67](https://lab.civicrm.org/dev/translation/-/issues/67):
164 [20606](https://github.com/civicrm/civicrm-core/pull/20606) and
165 [20584](https://github.com/civicrm/civicrm-core/pull/20584))**
166
167 Adds APIv4 support for the "Translation" entity. Allows translation of fields
168 which lack an explicit HTML type.
169
170 - **Apiv4 entity parity
171 (Work Towards [dev/core#2486](https://lab.civicrm.org/dev/core/-/issues/2486):
172 [20553](https://github.com/civicrm/civicrm-core/pull/20553))**
173
174 Adds a foreign key on civicrm_contribution_product.product_id.
175
176 ### CiviContribute
177
178 - **Move financialACLs to a core extension (Work Towards
179 [dev/core#2115](https://lab.civicrm.org/dev/core/-/issues/2115):
180 [20761](https://github.com/civicrm/civicrm-core/pull/20761),
181 [20762](https://github.com/civicrm/civicrm-core/pull/20762) and
182 [20769](https://github.com/civicrm/civicrm-core/pull/20769))**
183
184 Moves financial acl code out of APIv3 Contribution.create and assorted cleanup
185 towards moving the Financial ACL code to an extension.
186
187 - **Proposal - make future recurring contribution instances modifiable & not
188 fail if the only contribution is deleted. (Work Towards
189 [dev/financial#6](https://lab.civicrm.org/dev/financial/-/issues/6):
190 [20452](https://github.com/civicrm/civicrm-core/pull/20452),
191 [20451](https://github.com/civicrm/civicrm-core/pull/20451) and
192 [20450](https://github.com/civicrm/civicrm-core/pull/20450))**
193
194 Work to make it possible to edit recurring contributions.
195
196 - **Make Order api easier to use for default price set
197 ([20681](https://github.com/civicrm/civicrm-core/pull/20681))**
198
199 Improves the order api by making it not necessary to figure out the details of
200 the default price set when using it to create memberships.
201
202 ### CiviSMS
203
204 - **Display SMS segment count when constructing a Mass SMS
205 ([dev/core#1711](https://lab.civicrm.org/dev/core/-/issues/1711):
206 [20722](https://github.com/civicrm/civicrm-core/pull/20722) and
207 [20220](https://github.com/civicrm/civicrm-core/pull/20220))**
208
209 Modifies the javascript that shows the character count when creating a SMS
210 message so that it also shows how many SMS segments are required to send the
211 message.
212
213 ### WordPress Integration
214
215 - **Fail gracefully when errors are detected
216 ([251](https://github.com/civicrm/civicrm-wordpress/pull/251))**
217
218 Rewrites the error checking that the WordPress plugin performs and fails
219 gracefully instead of throwing fatal errors and making WordPress inoperable.
220 Introduces a "CiviCRM Troubleshooting" page to help diagnose and fix problems.
221
222 ## <a name="bugs"></a>Bugs resolved
223
224 ### Core CiviCRM
225
226 - **Regression: Smart group rebuild in default config crashes cron
227 ([dev/core#2687](https://lab.civicrm.org/dev/core/-/issues/2687):
228 [20835](https://github.com/civicrm/civicrm-core/pull/20835))**
229
230 - **Syntax errors when loading sample data
231 ([dev/drupal#161](https://lab.civicrm.org/dev/drupal/-/issues/161):
232 [20925](https://github.com/civicrm/civicrm-core/pull/20925))**
233
234 - **During upgrade ConfigAndLog has errors about crm-l10n.js for every upgrade
235 step because assets aren't built during upgrade
236 ([dev/core#2666](https://lab.civicrm.org/dev/core/-/issues/2666):
237 [20890](https://github.com/civicrm/civicrm-core/pull/20890))**
238
239 - **Exporting in localized civicrm crashes due to long translation for
240 preferred_mail_format varchar(8) field.
241 ([dev/core#2645](https://lab.civicrm.org/dev/core/-/issues/2645):
242 [20626](https://github.com/civicrm/civicrm-core/pull/20626))**
243
244 - **failing update Smart Groups for installs with none
245 ([dev/core#2659](https://lab.civicrm.org/dev/core/-/issues/2659):
246 [20756](https://github.com/civicrm/civicrm-core/pull/20756))**
247
248 - **Menu link for "New Tag" doesn't quite work
249 ([dev/core#2660](https://lab.civicrm.org/dev/core/-/issues/2660):
250 [20686](https://github.com/civicrm/civicrm-core/pull/20686))**
251
252 Points the "New Tag" menu link to form to create a new tag instead of "Manage
253 Tags" form.
254
255 - **Special characters in password cause trouble.
256 ([dev/core#2663](https://lab.civicrm.org/dev/core/-/issues/2663):
257 [20713](https://github.com/civicrm/civicrm-core/pull/20713))**
258
259 - **Upgrade to Nightly (5.40.alpha1) from Stable (5.38.1) fails with DB Error:
260 constraint violation
261 ([dev/core#2680](https://lab.civicrm.org/dev/core/-/issues/2680):
262 [20814](https://github.com/civicrm/civicrm-core/pull/20814))**
263
264 - **[php8-compact] Add in more protection for unset variables in various smarty
265 templates ([20546](https://github.com/civicrm/civicrm-core/pull/20546) and
266 [20547](https://github.com/civicrm/civicrm-core/pull/20547))**
267
268 - **Force cleanup of setting value type "checkboxes" when is empty
269 ([20600](https://github.com/civicrm/civicrm-core/pull/20600))**
270
271 Fixes a bug where custom settings of the type "checkboxes" with no checked
272 values were not saving to the database correctly.
273
274 - **Fix activity_date_time_relative filter when `preserve_activity_tab_filter`
275 setting is on ([20602](https://github.com/civicrm/civicrm-core/pull/20602))**
276
277 - **Support saving more than 25 records in Profile.submit api
278 ([20744](https://github.com/civicrm/civicrm-core/pull/20744))**
279
280 - **Fix schema support for composite primary keys
281 ([20705](https://github.com/civicrm/civicrm-core/pull/20705))**
282
283 - **Fix sorting for drop triggers
284 ([20693](https://github.com/civicrm/civicrm-core/pull/20693))**
285
286 - **Fix Schema calculation of usePrefix to cope with rpow:
287 ([20471](https://github.com/civicrm/civicrm-core/pull/20471))**
288
289 - **Fixed url ([20641](https://github.com/civicrm/civicrm-core/pull/20641))**
290
291 - **Ensure custom group name does not conflict with existing field
292 ([20694](https://github.com/civicrm/civicrm-core/pull/20694))**
293
294 - **Force the right path in github action script
295 ([20688](https://github.com/civicrm/civicrm-core/pull/20688))**
296
297 The original script ran in a repo called civicrm-regen, but because the name
298 of this repo is civicrm-core and hence the github workspace folder contains
299 the literal "civicrm-core" in it, the civicrm.config.php file determines that
300 this must be a composer install, and so it gets the path to
301 civicrm.settings.php wrong.
302
303 - **Always assign mode to smarty
304 ([20664](https://github.com/civicrm/civicrm-core/pull/20664))**
305
306 - **AngularLoader - Emit warning when setModules method is used.
307 ([20628](https://github.com/civicrm/civicrm-core/pull/20628))**
308
309 Emits a warning when extensions do something that could potentially cause
310 problems with other extensions.
311
312 - **Throw exception when baoName is not found
313 ([20696](https://github.com/civicrm/civicrm-core/pull/20696) and
314 [20742](https://github.com/civicrm/civicrm-core/pull/20742))**
315
316 - **Convert Notes to use option_group instead of hardcoded list
317 ([20554](https://github.com/civicrm/civicrm-core/pull/20554))**
318
319 - **Fix a few more undefined template vars
320 ([20577](https://github.com/civicrm/civicrm-core/pull/20577) and
321 [20684](https://github.com/civicrm/civicrm-core/pull/20684))**
322
323 - **CKEditor - Fix .tpl insertion on every form
324 ([20846](https://github.com/civicrm/civicrm-core/pull/20846))**
325
326 - **Fix undefined tpl vars in CiviReport
327 ([20797](https://github.com/civicrm/civicrm-core/pull/20797))**
328
329 - **smarty notice - title is only set for a list of existing report instances
330 ([20771](https://github.com/civicrm/civicrm-core/pull/20771))**
331
332 - **smarty notice - confirm_message is usually irrelevant in report listings
333 ([20772](https://github.com/civicrm/civicrm-core/pull/20772))**
334
335 - **Minor tpl simplificaiton, notice reduction
336 ([20663](https://github.com/civicrm/civicrm-core/pull/20663))**
337
338 - **Fix undefined tpl variables on contact summary
339 ([20659](https://github.com/civicrm/civicrm-core/pull/20659))**
340
341 - **Some php warnings on new case
342 ([20712](https://github.com/civicrm/civicrm-core/pull/20712))**
343
344 - **Remove deprecated use of format money
345 ([20697](https://github.com/civicrm/civicrm-core/pull/20697))**
346
347 - **Fix possibly undefined custom groupTree tpl variable
348 ([20737](https://github.com/civicrm/civicrm-core/pull/20737))**
349
350 - **Fix undefined tpl vars on contact summary page
351 ([20754](https://github.com/civicrm/civicrm-core/pull/20754))**
352
353 - **Tpl enotice fix
354 ([20735](https://github.com/civicrm/civicrm-core/pull/20735))**
355
356 - **Fix undefined indexes in tpls
357 ([20781](https://github.com/civicrm/civicrm-core/pull/20781))**
358
359 - **Enotice fix Remove references to savedFieldMapping in page 2 of the import
360 ([20738](https://github.com/civicrm/civicrm-core/pull/20738))**
361
362 - **Fix undefined tpl vars on custom field page
363 ([20726](https://github.com/civicrm/civicrm-core/pull/20726))**
364
365 - **Fix often undefined variable $row.class in tpl tables
366 ([20725](https://github.com/civicrm/civicrm-core/pull/20725))**
367
368 - **Throw exception rather than allow php fail
369 ([20565](https://github.com/civicrm/civicrm-core/pull/20565))**
370
371 Throws an exception rather than allow php fail when the api class is not
372 found.
373
374 - **Proposal - store metadata on membership renewal on line item (Work Towards
375 [dev/membership#29](https://lab.civicrm.org/dev/membership/-/issues/29):
376 [20672](https://github.com/civicrm/civicrm-core/pull/20672))**
377
378 Adds a new column to the civicrm_line_item table: membership_num_terms.
379
380 ### Afform and SearchKit
381
382 - **Afform - cosmetic fixes in palette panel
383 ([20755](https://github.com/civicrm/civicrm-core/pull/20755))**
384
385 - **Search-kit - declaring joins breaks deduping
386 ([dev/core#2656](https://lab.civicrm.org/dev/core/-/issues/2656):
387 [20631](https://github.com/civicrm/civicrm-core/pull/20631) and
388 [20639](https://github.com/civicrm/civicrm-core/pull/20639))**
389
390 - **SearchKit - use primary_key info instead of assuming 'id'
391 ([20763](https://github.com/civicrm/civicrm-core/pull/20763))**
392
393 Fixes a bug in SearchKit when dealing with entities without "id" as their
394 primary key field.
395
396 - **SearchKit - Remove automatic filter from address
397 ([20803](https://github.com/civicrm/civicrm-core/pull/20803))**
398
399 Usability fix for SearchKit - stops automatically add "Location Type" to the
400 search when joining with Address.
401
402 - **OR term in WHERE clause crashes Search Kit
403 ([dev/report#71](https://lab.civicrm.org/dev/report/-/issues/71):
404 [20824](https://github.com/civicrm/civicrm-core/pull/20824))**
405
406 Fixes an error when saving or opening a search with an OR group in a clause.
407
408 ### API version 4
409
410 - **APIv4 - Silently ignore non-permissioned fields instead of throwing
411 exceptions ([20724](https://github.com/civicrm/civicrm-core/pull/20724))**
412
413 - **APIv4 - Fix same-table joins and remove unused code
414 ([20715](https://github.com/civicrm/civicrm-core/pull/20715))**
415
416 - **APIv4 - Don't assume the identifier field for a table is named 'id'
417 ([20707](https://github.com/civicrm/civicrm-core/pull/20707) and
418 [20749](https://github.com/civicrm/civicrm-core/pull/20749))**
419
420 - **APIv4 - Deprecate Entity::getLinks action
421 ([20727](https://github.com/civicrm/civicrm-core/pull/20727))**
422
423 - **APIv4 - Deprecate passing 'id' to basic actions
424 ([20765](https://github.com/civicrm/civicrm-core/pull/20765))**
425
426 - **APIv4 Explorer - Only apply default limit 25 for "get" action
427 ([20698](https://github.com/civicrm/civicrm-core/pull/20698))**
428
429 - **Failing api4 test
430 api.v4.Action.CreateWithOptionGroupTest.testWithCustomDataForMultipleContacts
431 ([dev/core#2699](https://lab.civicrm.org/dev/core/-/issues/2699):
432 [20928](https://github.com/civicrm/civicrm-core/pull/20928))**
433
434 ### CiviCase
435
436 - **Case Manager is not shown for closed cases.
437 ([dev/core#542](https://lab.civicrm.org/dev/core/-/issues/542) and
438 [dev/core#1947](https://lab.civicrm.org/dev/core/-/issues/1947):
439 [19737](https://github.com/civicrm/civicrm-core/pull/19737))**
440
441 Ensures inactive active case role are shown for closed cases.
442
443 - **Some php warnings on case dashboard
444 ([20711](https://github.com/civicrm/civicrm-core/pull/20711))**
445
446 - **smarty notice - case dashboard when no upcoming/recent cases
447 ([20770](https://github.com/civicrm/civicrm-core/pull/20770))**
448
449 - **smarty notices - New case screen - Case.hlp
450 ([20795](https://github.com/civicrm/civicrm-core/pull/20795))**
451
452 - **Error when sorting case roles table by end date
453 ([20728](https://github.com/civicrm/civicrm-core/pull/20728))**
454
455 ### CiviContribute
456
457 - **Can't remove previously-added currencies
458 ([dev/financial#175](https://lab.civicrm.org/dev/financial/-/issues/175):
459 [20627](https://github.com/civicrm/civicrm-core/pull/20627))**
460
461 - **civicrm/payment/form url got empty currency argument in backoffice live CC
462 form ([dev/financial#150](https://lab.civicrm.org/dev/financial/-/issues/150):
463 [18517](https://github.com/civicrm/civicrm-core/pull/18517))**
464
465 - **"Non-static method CRM_Financial_Form_BatchTransaction::links() should not
466 be called statically" when viewing accounting batch
467 ([dev/core#2647](https://lab.civicrm.org/dev/core/-/issues/2647):
468 [20691](https://github.com/civicrm/civicrm-core/pull/20691))**
469
470 - **pre hook is not triggered for LineItem delete
471 ([dev/core#2657](https://lab.civicrm.org/dev/core/-/issues/2657):
472 [20644](https://github.com/civicrm/civicrm-core/pull/20644))**
473
474 - **Undefined variable ids in CRM\Core\Payment\AuthorizeNetIPN.php
475 ([dev/core#2685](https://lab.civicrm.org/dev/core/-/issues/2685):
476 [20818](https://github.com/civicrm/civicrm-core/pull/20818))**
477
478 - **Send pcp notification only when the contribution is completed
479 ([20523](https://github.com/civicrm/civicrm-core/pull/20523))**
480
481 - **Add missing "View Recurring Contribution" link to contribution view
482 ([20750](https://github.com/civicrm/civicrm-core/pull/20750))**
483
484 Add missing "View Recurring Contribution" link to contribution view when
485 displaying line items.
486
487 ### CiviEvent
488
489 - **Fix bug where only one participant registration is completed
490 ([20654](https://github.com/civicrm/civicrm-core/pull/20654))**
491
492 ### CiviMail
493
494 - **Unwanted mail blast sent by Scheduled Reminders
495 ([dev/core#365](https://lab.civicrm.org/dev/core/-/issues/365):
496 [20432](https://github.com/civicrm/civicrm-core/pull/20432) and
497 [19973](https://github.com/civicrm/civicrm-core/pull/19973))**
498
499 Adds Effective start and end date to the Schedule Reminder UI.
500
501 - **Specifying a "Selection Method" without a location type gives a DB error
502 ([dev/mail#96](https://lab.civicrm.org/dev/mail/-/issues/96):
503 [20536](https://github.com/civicrm/civicrm-core/pull/20536))**
504
505 - **Mailing label prints name twice
506 ([dev/core#2681](https://lab.civicrm.org/dev/core/-/issues/2681):
507 [20783](https://github.com/civicrm/civicrm-core/pull/20783))**
508
509 - **Fix invalid defaults for Mailing.update_email_resetdate API
510 ([20751](https://github.com/civicrm/civicrm-core/pull/20751))**
511
512 - **Use mysql to set mailing.created_date
513 ([20630](https://github.com/civicrm/civicrm-core/pull/20630))**
514
515 ### Drupal Integration
516
517 - **hook_civicrm_buildProfile not working on Drupal 8
518 ([dev/drupal#113](https://lab.civicrm.org/dev/drupal/-/issues/113):
519 [65](https://github.com/civicrm/civicrm-drupal-8/pull/65))**
520
521 ## <a name="misc"></a>Miscellany
522
523 - **Unused smarty variable
524 ([20796](https://github.com/civicrm/civicrm-core/pull/20796))**
525
526 - **Remove unreachable code from admin page
527 ([20642](https://github.com/civicrm/civicrm-core/pull/20642))**
528
529 - **replace unnecessary function call with string literal
530 ([20634](https://github.com/civicrm/civicrm-core/pull/20634))**
531
532 - **APIv4 - Remove POC code leftover from early alpha development
533 ([20709](https://github.com/civicrm/civicrm-core/pull/20709))**
534
535 - **Move upgrade code to correct version
536 ([20643](https://github.com/civicrm/civicrm-core/pull/20643))**
537
538 - **Move determination of priceSetID to the internal order class
539 ([20669](https://github.com/civicrm/civicrm-core/pull/20669))**
540
541 - **CRM_Utils_Array::asColumns() - Add helper to rotate a matrix (from rows to
542 columns) ([20788](https://github.com/civicrm/civicrm-core/pull/20788))**
543
544 - **CRM_Utils_Array - Implement pathUnset() method
545 ([20787](https://github.com/civicrm/civicrm-core/pull/20787))**
546
547 - **Handle participant payment create in line item
548 ([20790](https://github.com/civicrm/civicrm-core/pull/20790))**
549
550 - **APIv4 Explorer - Render joins using addJoin function in OOP
551 ([20723](https://github.com/civicrm/civicrm-core/pull/20723))**
552
553 - **Deprecate duplicate getLoggedInContactID() function
554 ([20321](https://github.com/civicrm/civicrm-core/pull/20321))**
555
556 - **Remove deprecated function
557 ([20760](https://github.com/civicrm/civicrm-core/pull/20760))**
558
559 - **Hopefully fix time rollover problem in MessageTemplateTest
560 ([20714](https://github.com/civicrm/civicrm-core/pull/20714))**
561
562 - **Extract feeBlock to it's own tpl
563 ([20679](https://github.com/civicrm/civicrm-core/pull/20679))**
564
565 - **Deprecate passing in 'null' for tax
566 ([20671](https://github.com/civicrm/civicrm-core/pull/20671))**
567
568 - **Add test validation for Membership & participant payments
569 ([20621](https://github.com/civicrm/civicrm-core/pull/20621))**
570
571 - **Fix up on invalid test data
572 ([20667](https://github.com/civicrm/civicrm-core/pull/20667))**
573
574 - **Fix test to use valid amounts
575 ([20668](https://github.com/civicrm/civicrm-core/pull/20668))**
576
577 - **Fix test to use valid financials
578 ([20676](https://github.com/civicrm/civicrm-core/pull/20676))**
579
580 - **Improve CustomGroupTest
581 ([20617](https://github.com/civicrm/civicrm-core/pull/20617))**
582
583 - **Test cleanup - specify return
584 ([20570](https://github.com/civicrm/civicrm-core/pull/20570))**
585
586 - **Clean up code to determine line items for membership batch entry
587 ([20779](https://github.com/civicrm/civicrm-core/pull/20779))**
588
589 - **AssetBuilderTest - Raise threshold for timeout
590 ([20810](https://github.com/civicrm/civicrm-core/pull/20810))**
591
592 - **Reduce test api calls with no 'return'
593 ([20574](https://github.com/civicrm/civicrm-core/pull/20574))**
594
595 - **Fix BaseIPN test to (mostly) pass invalid financials checks
596 ([20785](https://github.com/civicrm/civicrm-core/pull/20785))**
597
598 - **Fix test set up to user Order api
599 ([20780](https://github.com/civicrm/civicrm-core/pull/20780))**
600
601 - **[REF] Membership api for v4 (Work Towards
602 [dev/core#2634](https://lab.civicrm.org/dev/core/-/issues/2634):
603 [20759](https://github.com/civicrm/civicrm-core/pull/20759))**
604
605 - **[Ref] Remove (more) unreachable code from order api
606 ([20793](https://github.com/civicrm/civicrm-core/pull/20793))**
607
608 - **[REF] Add in template guard for not being always set as per html format
609 ([20747](https://github.com/civicrm/civicrm-core/pull/20747))**
610
611 - **[REF] Remove isPayLater from membership batch screen
612 ([20396](https://github.com/civicrm/civicrm-core/pull/20396))**
613
614 - **[REF] Extend testing on membership batch entry & minor cleanup
615 ([20394](https://github.com/civicrm/civicrm-core/pull/20394))**
616
617 - **[REF] Fix trying to access array offset from boolean value
618 ([20734](https://github.com/civicrm/civicrm-core/pull/20734))**
619
620 - **[REF] Alter new Setup process to use CiviCRM's Event Dispatcher
621 ([20717](https://github.com/civicrm/civicrm-core/pull/20717))**
622
623 - **[REF] - Improve efficiency of APIv4 GetInfo
624 ([20708](https://github.com/civicrm/civicrm-core/pull/20708))**
625
626 - **REF - Get Contact Summary tab counts after calling hook to avoid wasting
627 time ([20673](https://github.com/civicrm/civicrm-core/pull/20673))**
628
629 - **[REF] Remove always false if
630 ([20653](https://github.com/civicrm/civicrm-core/pull/20653))**
631
632 - **[REF] Extract CKEditor into its own core extension
633 ([20392](https://github.com/civicrm/civicrm-core/pull/20392))**
634
635 - **(REF) crmUi - Support onCrmUiSelect for using select2 as a picklist
636 ([20789](https://github.com/civicrm/civicrm-core/pull/20789))**
637
638 - **[REF] Tidy up param transforms
639 ([20778](https://github.com/civicrm/civicrm-core/pull/20778))**
640
641 - **[REF] Follow up clean up - remove contribution_mode
642 ([20656](https://github.com/civicrm/civicrm-core/pull/20656))**
643
644 - **[REF] Remove unnecessary variable wrangling in case roles section
645 ([20729](https://github.com/civicrm/civicrm-core/pull/20729))**
646
647 - **[REF] Follow up fix to fixing note entity tables in views
648 ([144](https://github.com/civicrm/civicrm-backdrop/pull/144))**
649
650 - **[REF] Follow up fix to fixing note entity tables in views
651 ([646](https://github.com/civicrm/civicrm-drupal/pull/646))**
652
653 - **[NFC] - update code comment
654 ([20599](https://github.com/civicrm/civicrm-core/pull/20599))**
655
656 - **[NFC] Fix test failure on MySQL8 because of lack of order in API
657 ([20605](https://github.com/civicrm/civicrm-core/pull/20605))**
658
659 - **[NFC] [Test] Remove duplicate cleanup
660 ([20647](https://github.com/civicrm/civicrm-core/pull/20647))**
661
662 - **[NFC] [TEST] cleanup, more use of return in ActivityTest
663 ([20633](https://github.com/civicrm/civicrm-core/pull/20633))**
664
665 - **[NFC] Cleanup on membership test
666 ([20636](https://github.com/civicrm/civicrm-core/pull/20636))**
667
668 - **[NFC] [Test] Remove duplicate cleanup
669 ([20637](https://github.com/civicrm/civicrm-core/pull/20637))**
670
671 - **[NFC] Cleanup on contribution v3 api test
672 ([20638](https://github.com/civicrm/civicrm-core/pull/20638))**
673
674 - **[NFC] Add in unit test to lock in the fix for the is_deleted in where clause
675 issue ([20733](https://github.com/civicrm/civicrm-core/pull/20733))**
676
677 - **[NFC] Afform - Regenerate civix files
678 ([20615](https://github.com/civicrm/civicrm-core/pull/20615))**
679
680 - **[NFC] Fix test setup on a couple of tests to make them pass in php8
681 ([20614](https://github.com/civicrm/civicrm-core/pull/20614))**
682
683 - **[NFC] Update various npm depdencies used only in unit testing
684 ([20748](https://github.com/civicrm/civicrm-core/pull/20748))**
685
686 - **[NFC] Improve use of return parameters in ContributionPage test class
687 ([20648](https://github.com/civicrm/civicrm-core/pull/20648))**
688
689 - **[NFC] Unit test for 20602
690 ([20745](https://github.com/civicrm/civicrm-core/pull/20745))**
691
692 - **[NFC] Remove boilerplate comment block from APIv4 classes
693 ([20700](https://github.com/civicrm/civicrm-core/pull/20700))**
694
695 - **[NFC] Github action script to run regen.sh for you
696 ([20680](https://github.com/civicrm/civicrm-core/pull/20680))**
697
698 - **[NFC] Regenerate ContributeProduct DAO and also fix search_kit install on
699 MySQL 5.6 on test boxes
700 ([20674](https://github.com/civicrm/civicrm-core/pull/20674))**
701
702 - **[NFC] Fixes an issue in this unit test where we are trying to do an array
703 access on an integer
704 ([20652](https://github.com/civicrm/civicrm-core/pull/20652))**
705
706 - **[NFC] [Test] Cleanup on membership type test
707 ([20649](https://github.com/civicrm/civicrm-core/pull/20649))**
708
709 - **[NFC/Unit test] - Add a test for getCaseRoles when there's a lot of roles
710 assigned ([20657](https://github.com/civicrm/civicrm-core/pull/20657))**
711
712 - **[NFC] [TEST] cleanup, more use of return in AddressTest
713 ([20635](https://github.com/civicrm/civicrm-core/pull/20635))**
714
715 - **[NFC] [Test] Specify return values on get calls
716 ([20632](https://github.com/civicrm/civicrm-core/pull/20632))**
717
718 - **[TEST][NFC] CiviCRM reaching MySQL join limit (Work Towards
719 [dev/core#1191](https://lab.civicrm.org/dev/core/-/issues/1191):
720 [20618](https://github.com/civicrm/civicrm-core/pull/20618) and
721 [20622](https://github.com/civicrm/civicrm-core/pull/20622))**
722
723 - **[php8-compact][NFC] Update testGroupClause unit test to work on php8
724 ([20624](https://github.com/civicrm/civicrm-core/pull/20624))**
725
726 - **[php8-compact][REF] Fix failing custom group test on php8 by better handling
727 strings in 2nd key of the extends array and also validating the child and main
728 entity work ([20616](https://github.com/civicrm/civicrm-core/pull/20616))**
729
730 - **[php8-compact] Fix APIv4 Group Concat Test by setting dataType to be NULL if
731 the first expression is a SQL Function
732 ([20655](https://github.com/civicrm/civicrm-core/pull/20655))**
733
734 - **[php8-compact] Fix issues with participant message templates causing Event
735 Tests to fail ([20613](https://github.com/civicrm/civicrm-core/pull/20613))**
736
737 - **[php8-compact] Add in guards into common templates to assit with fixing test
738 failures on php8
739 ([20543](https://github.com/civicrm/civicrm-core/pull/20543))**
740
741 - **[php8-compact] Fix Array to String in formButtons in CRM_Core_FormTest
742 ([20608](https://github.com/civicrm/civicrm-core/pull/20608))**
743
744 - **[php8-compact] Fix Event Form test for php8 by setting totalAmount in the
745 form params ([20623](https://github.com/civicrm/civicrm-core/pull/20623))**
746
747 - **[php8-compat] Alternate to the alternate for testOpeningForms
748 ([20603](https://github.com/civicrm/civicrm-core/pull/20603))**
749
750 - **[php8-compact] Fix apiv4 tests in php8 by not incrementing an array
751 ([20594](https://github.com/civicrm/civicrm-core/pull/20594))**
752
753 - **[php8-compact] Further test fixes for php8
754 ([20597](https://github.com/civicrm/civicrm-core/pull/20597))**
755
756 - **[php8-compact] Fix failing AuthorizeNetIPN tests on php8
757 ([20596](https://github.com/civicrm/civicrm-core/pull/20596))**
758
759 - **[php8-compact] Fix failing CRM_Core_InvokeTest on php8
760 ([20595](https://github.com/civicrm/civicrm-core/pull/20595))**
761
762 - **[php8-compact] Fix Session Test errors in php8
763 ([20593](https://github.com/civicrm/civicrm-core/pull/20593))**
764
765 - **[php8-compact] Fix Case Activity Message Template to fix test failure in
766 php8 ([20592](https://github.com/civicrm/civicrm-core/pull/20592))**
767
768 - **[php8-compact] Fix PDF Letter Test by ensuring that all actual DB fields
769 are in the tokens array and also by resetting the static cache of tokens
770 ([20591](https://github.com/civicrm/civicrm-core/pull/20591))**
771
772 - **[php8-compact] Add in guards into various templates to fix the
773 CRM_Contact_Form_IndividualTest suite
774 ([20579](https://github.com/civicrm/civicrm-core/pull/20579))**
775
776 - **[php8-compact] Fixes test failures in the
777 CRM_Contribute_Form_ContributionTest class due to template issues
778 ([20581](https://github.com/civicrm/civicrm-core/pull/20581))**
779
780 - **[php8-compact] Fix Dashboard Tests by adding in if guards into smarty
781 templates ([20575](https://github.com/civicrm/civicrm-core/pull/20575))**
782
783 - **[php8-compact] Add in guards into various templates to fix issues in test
784 runs on php8 ([20544](https://github.com/civicrm/civicrm-core/pull/20544))**
785
786 ## <a name="credits"></a>Credits
787
788 This release was developed by the following code authors:
789
790 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Francis Whittle, Justin
791 Freeman; Akos Garai; Australian Greens - John Twyman; Blackfly Solutions - Alan
792 Dixon; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap
793 Jansma; CiviCRM - Coleman Watts, Tim Otten; CompuCorp - Debarshi Bhaumik; Dave
794 D; Gokhalemethod- Sadashiv; iXiam - Luciano Spiegel; JMA Consulting - Monish
795 Deb, Seamus Lee; Lemniscus - Noah Miller; Lighthouse Consulting and Design -
796 Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJW
797 Consulting - Matthew Wire; Skvare - Sunil Pawar; Wikimedia Foundation - Eileen
798 McNaughton
799
800 Most authors also reviewed code for this release; in addition, the following
801 reviewers contributed their comments:
802
803 Artful Robot - Rich Lott; Bob Silvern; CiviCoop - Klaas Eikelboom; CiviDesk -
804 Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Freeform Solutions - Herb van
805 den Dool; Fuzion - Jitendra Purohit; JMA Consulting - Joe Murray; Ray Wright;
806 Semper IT - Karin Gerritsen; Squiffle Consulting - Aidan Saunders; Tadpole
807 Collective - Kevin Cristiano; Tech To The People - Xavier Dutoit; Third Sector
808 Design - Michael McAndrew; Web Access - Kurund Jalmi
809
810 ## <a name="feedback"></a>Feedback
811
812 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
813 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
814 and contact `@agh1`.