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