5.25.0 release notes: added late changes
[civicrm-core.git] / release-notes / 5.25.0.md
1 # CiviCRM 5.25.0
2
3 Released May 6, 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? | 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 - **Replace jcalendar instances with datepicker (Continued
29 Work [dev/core#561](https://lab.civicrm.org/dev/core/issues/561):
30 [15709](https://github.com/civicrm/civicrm-core/pull/15709) and
31 [16863](https://github.com/civicrm/civicrm-core/pull/16863))**
32
33 These changes continue work to move to datepicker from jcalendar by converting
34 report instances from using the legacy jcalendar to using datepicker for date
35 fields and deprecating the `addDateRange` function used by jcalendar.
36
37 - **End of life plans for php 7.0 & deprecate php 7.1
38 ([dev/core#1528](https://lab.civicrm.org/dev/core/issues/1528):
39 [16753](https://github.com/civicrm/civicrm-core/pull/16753),
40 [599](https://github.com/civicrm/civicrm-drupal/pull/599),
41 [598](https://github.com/civicrm/civicrm-drupal/pull/598),
42 [111](https://github.com/civicrm/civicrm-backdrop/pull/111),
43 [16678](https://github.com/civicrm/civicrm-core/pull/16678),
44 [114](https://github.com/civicrm/civicrm-backdrop/pull/114),
45 [187](https://github.com/civicrm/civicrm-wordpress/pull/187) and
46 [184](https://github.com/civicrm/civicrm-wordpress/pull/184))**
47
48 Consolidates to a single constant for minimum PHP version. Sets the Minimum
49 PHP version to be 7.1. Sets the Minimum Install version to be 7.1.
50
51 - **updating misleading labels on buttons to confirmation pages
52 ([dev/core#1613](https://lab.civicrm.org/dev/core/-/issues/1613):
53 [16651](https://github.com/civicrm/civicrm-core/pull/16651))**
54
55 Changes the text of the confirm contribution (and event registration) button
56 to "Review".
57
58 - **APIv4 - Add Dashboard & DashboardContact entities
59 ([16867](https://github.com/civicrm/civicrm-core/pull/16867))**
60
61 Adds APIv4 support for Dashboard & DashboardContact and does some cleanup in
62 the BAO and API layers for improved consistency.
63
64 - **add nl_BE language
65 ([17014](https://github.com/civicrm/civicrm-core/pull/17014))**
66
67 Adds a new translation option for "Dutch (Netherlands)".
68
69 - **Add hook to alter display value or Custom field value
70 ([16921](https://github.com/civicrm/civicrm-core/pull/16921))**
71
72 Adds a hook to alter display value or Custom field value.
73
74 - **APIv4 Query Improvements (Work Towards
75 [dev/report#31](https://lab.civicrm.org/dev/report/-/issues/31):
76 [16917](https://github.com/civicrm/civicrm-core/pull/16917) and
77 [16947](https://github.com/civicrm/civicrm-core/pull/16947))**
78
79 Builds out the APIv4 framework to support GROUP BY and different types of
80 expressions in clauses that previously only accepted the names of fields.
81 These expressions can now include numbers, NULL, strings, and whitelisted SQL
82 functions. The framework can in theory handle most SQL functions, but this
83 first PR adds support for the aggregate functions AVG, COUNT, MAX, MIN & SUM.
84
85 ### CiviContribute
86
87 - **Partial Refunds (Work Towards
88 [dev/financial#87](https://lab.civicrm.org/dev/financial/issues/87):
89 [16480](https://github.com/civicrm/civicrm-core/pull/16480))**
90
91 Alters the "Add Payment" form to permit payments to be added even if a
92 contribution is fully paid.
93
94 - **Add privacy fields to ContributionDetail report
95 ([16674](https://github.com/civicrm/civicrm-core/pull/16674))**
96
97 Adds columns for the following fields to the contribution detail report: "Do
98 Not Phone", "Do Not Mail", "Do Not SMS", "Do Not Trade".
99
100 - **Add "pledge id" as column and filter in Contribution Detail report.
101 ([16868](https://github.com/civicrm/civicrm-core/pull/16868))**
102
103 Improves the Contribution Detail Report by adding "pledge id" as a filter and
104 column.
105
106 ### WordPress Integration
107
108 - **Add shortcodes for Personal Campaign Pages
109 ([185](https://github.com/civicrm/civicrm-wordpress/pull/185) and
110 [16695](https://github.com/civicrm/civicrm-core/pull/16695))**
111
112 Makes Personal Campaign Pages available as a shortcode.
113
114 ## <a name="bugs"></a>Bugs resolved
115
116 ### Core CiviCRM
117
118 - **Making the poor performance associated with the creditnote_id field opt in
119 rather than opt out (Further Work
120 [dev/financial#84](https://lab.civicrm.org/dev/financial/issues/84):
121 [16971](https://github.com/civicrm/civicrm-core/pull/16971))**
122
123 Fixes an issue for some builds when upgrading caused by the activation of the
124 `sequentialcreditnotes` extension.
125
126 - **Deleting entities leaves obsolete EntityTag records
127 ([dev/core#667](https://lab.civicrm.org/dev/core/issues/667):
128 [16832](https://github.com/civicrm/civicrm-core/pull/16832))**
129
130 Fixes a bug where deleting a contact does not delete tags associated with the
131 contact.
132
133 - **Auto-complete search results not consistent with other searches
134 ([dev/core#787](https://lab.civicrm.org/dev/core/issues/787):
135 [13809](https://github.com/civicrm/civicrm-core/pull/13809))**
136
137 Ensures Auto-complete search results are consistent with other searches.
138
139 - **Don't freeze fields for auto-renew memberships
140 ([dev/core#1331](https://lab.civicrm.org/dev/core/issues/1331):
141 [16881](https://github.com/civicrm/civicrm-core/pull/16881) and
142 [16609](https://github.com/civicrm/civicrm-core/pull/16609))**
143
144 Ensures that the "Cancel auto-renew" button works for translated sites. Makes
145 it possible for admin users to edit all fields on auto-renew memberships.
146
147 - **Activity Detail report gives syntax error with force=1 if include case
148 activities is on
149 ([dev/core#1710](https://lab.civicrm.org/dev/core/issues/1710):
150 [17128](https://github.com/civicrm/civicrm-core/pull/17128))**
151
152 The case activity table wasn't properly loaded when the Activity Detail report
153 including case activities would go straight to displaying results.
154
155 - **Search Builder - Activity Type search not working.
156 ([dev/core#1714](https://lab.civicrm.org/dev/core/issues/1714):
157 [17215](https://github.com/civicrm/civicrm-core/pull/17215))**
158
159 In Search Builder, searching by activity type would return no results,
160 affecting not only direct searches but also smart groups that built with
161 Search Builder. This resolves the regression, which first appeared in 5.24.3.
162
163 - **Need to Increase Data Size for `form_values` column on
164 civicrm_report_instance table
165 ([dev/core#1569](https://lab.civicrm.org/dev/core/issues/1569):
166 [16836](https://github.com/civicrm/civicrm-core/pull/16836))**
167
168 Changes the data type for the `form_values` column on the
169 `civicrm_report_instance` from TEXT to LONGTEXT.
170
171 - **PHP warning on Add relationship form
172 ([dev/core#1663](https://lab.civicrm.org/dev/core/issues/1663):
173 [16845](https://github.com/civicrm/civicrm-core/pull/16845) and
174 [16941](https://github.com/civicrm/civicrm-core/pull/16941))**
175
176 - **Removing all the dashlets from the dashboard leads to E_NOTICE
177 ([dev/core#1668](https://lab.civicrm.org/dev/core/issues/1668):
178 [16883](https://github.com/civicrm/civicrm-core/pull/16883))**
179
180 - **Regression: Api4 causes container being rebuild on every request
181 ([dev/core#1674](https://lab.civicrm.org/dev/core/issues/1674):
182 [16919](https://github.com/civicrm/civicrm-core/pull/16919))**
183
184 - **E_NOTICE when using the New Individual popup/profile
185 ([dev/core#1676](https://lab.civicrm.org/dev/core/issues/1676):
186 [16924](https://github.com/civicrm/civicrm-core/pull/16924))**
187
188 - **profile Public Title (frontend_title column) is not used in profile
189 create/edit mode
190 ([dev/core#1683](https://lab.civicrm.org/dev/core/-/issues/1683):
191 [16945](https://github.com/civicrm/civicrm-core/pull/16945))**
192
193 - **[regression] CiviCRM reports smart groups won't work due to deleted custom
194 fields that aren't deleted
195 ([dev/core#1688](https://lab.civicrm.org/dev/core/-/issues/1688):
196 [16961](https://github.com/civicrm/civicrm-core/pull/16961))**
197
198 - **Fix checking permissions in api3 profile get
199 ([16848](https://github.com/civicrm/civicrm-core/pull/16848))**
200
201 - **APIv4 - convert Result object to array when running through json_encode
202 ([16828](https://github.com/civicrm/civicrm-core/pull/16828))**
203
204 - **Api4 AJAX endpoint: change required permission to access AJAX API.
205 ([16705](https://github.com/civicrm/civicrm-core/pull/16705))**
206
207 Makes it possible to use the API4 AJAX endpoint as an anonymous user.
208
209 - **Make api4 select query object more sane
210 ([16889](https://github.com/civicrm/civicrm-core/pull/16889))**
211
212 - **APIv4 - bugfix in select query
213 ([16900](https://github.com/civicrm/civicrm-core/pull/16900))**
214
215 - **APIv4 - Don't advertise implicit multi-joins in Explorer
216 ([17205](https://github.com/civicrm/civicrm-core/pull/17205))**
217
218 Implicit one-to-many joins in APIv4 have been problematic and may get removed.
219 As a soft deprecation, these are no longer displayed in the APIv4 explorer.
220
221 - **CRM_Core_I18n - Provide a better label for new/unknown locales
222 ([17021](https://github.com/civicrm/civicrm-core/pull/17021))**
223
224 - **Fixed fatal error for class not found when managed hook is invoked during
225 upgrade ([17004](https://github.com/civicrm/civicrm-core/pull/17004))**
226
227 - **log error message instead of throwing exception
228 ([16880](https://github.com/civicrm/civicrm-core/pull/16880) and
229 [16759](https://github.com/civicrm/civicrm-core/pull/16759))**
230
231 - **Fixed fatal error for Event Participants custom search if price set field
232 option is disabled after a registrant has already selected it
233 ([16894](https://github.com/civicrm/civicrm-core/pull/16894))**
234
235 - **Fix display of payment processor title in cancelSubscription form
236 ([16857](https://github.com/civicrm/civicrm-core/pull/16857))**
237
238 - **Fix bug where a % in a serialized array can lead to the data being broken
239 ([16694](https://github.com/civicrm/civicrm-core/pull/16694))**
240
241 - **Respect 'Donot notify activity type' setting
242 ([16800](https://github.com/civicrm/civicrm-core/pull/16800))**
243
244 - **Fix batch contact/activity update with radio options
245 ([16855](https://github.com/civicrm/civicrm-core/pull/16855))**
246
247 - **Fix CustomDataView.tpl plain empty memo field.
248 ([16839](https://github.com/civicrm/civicrm-core/pull/16839))**
249
250 Ensure note custom fields display on their own lines
251
252 - **Fix setting outBound_option readonly in UI
253 ([16774](https://github.com/civicrm/civicrm-core/pull/16774))**
254
255 Display the SMTP outbound option as read only.
256
257 - **Make the 'billing address is the same' checkbox respond to the change event
258 ([16496](https://github.com/civicrm/civicrm-core/pull/16496))**
259
260 Make the "billing address is the same.." checkbox respond to javascript.
261
262 - **Use dbAlias to generate where clause for date field in activity report
263 ([16689](https://github.com/civicrm/civicrm-core/pull/16689))**
264
265 - **[REF] Use composer patches to apply CiviCRM Customisations for CRM-1367 and
266 CRM-5946 ([16870](https://github.com/civicrm/civicrm-core/pull/16870))**
267
268 Migrates the patching of pear_mail from a script file to using composer
269 patches to ensure CiviCRM customisations for CRM-1367 and CRM-5946 are applied
270 consistently.
271
272 - **Membership join date checkbox on constituent detail report has lost its
273 label ([dev/report#28](https://lab.civicrm.org/dev/report/issues/28):
274 [16829](https://github.com/civicrm/civicrm-core/pull/16829))**
275
276 ### CiviCase
277
278 - **Various errors recorded in log message on Manage Case screen -> relationship
279 tab. ([dev/core#1664](https://lab.civicrm.org/dev/core/issues/1664):
280 [16846](https://github.com/civicrm/civicrm-core/pull/16846))**
281
282 Fixes log messages generated when opening the relationship tab on the Manage
283 Case form.
284
285 - **Merge Case Modal not showing relevant cases
286 ([dev/core#1646](https://lab.civicrm.org/dev/core/issues/1646):
287 [16798](https://github.com/civicrm/civicrm-core/pull/16798))**
288
289 Ensures the Merge Case Modal shows all relevant cases.
290
291 - **Adding a timeline to a case doesn't get the last activity in the timeline
292 right ([dev/core#1675](https://lab.civicrm.org/dev/core/issues/1675) and
293 [dev/core#1695](https://lab.civicrm.org/dev/core/issues/1695):
294 [289](https://github.com/civicrm/civicrm-packages/pull/289))**
295
296 Ensures case custom fields are saved when submitted via Drupal webform.
297 Additionally ensures that the last activity in the case timeline is set
298 correctly.
299
300 - **Check for Change Case Type in case activity form doesn't do anything
301 ([dev/core#1652](https://lab.civicrm.org/dev/core/issues/1652):
302 [16785](https://github.com/civicrm/civicrm-core/pull/16785))**
303
304 - **Alternate to #16650 - On Case Audit/Print Report richtext details field is
305 getting escaped when system is non-english
306 ([16659](https://github.com/civicrm/civicrm-core/pull/16659))**
307
308 ### CiviContribute
309
310 - **Changes to CiviContribute Component Settings not saved
311 ([dev/core#1724](https://lab.civicrm.org/dev/core/issues/1724):
312 [17188](https://github.com/civicrm/civicrm-core/pull/17188))**
313
314 The way that CiviContribute component settings were stored was updated for
315 5.23, but the transition during the upgrade was problematic. This replaces
316 the transition code, resolving issues for sites upgrading directly from 5.22.x
317 or earlier. Sites on 5.23.x or 5.24.x should review their settings, however.
318
319 - **Invoice action not shown when invoicing enabled
320 ([17164](https://github.com/civicrm/civicrm-core/pull/17164))**
321
322 The "Invoices - print or email" action was not available for contribution
323 search results even when invoicing was enabled.
324
325 - **Cumulative contributions not being calculated with the correct criteria
326 ([dev/core#1740](https://lab.civicrm.org/dev/core/issues/1740):
327 [17237](https://github.com/civicrm/civicrm-core/pull/17237))**
328
329 The cumulative contributions display from a contribution page would needlessly
330 filter contributions by date, with the end date being midnight on the current
331 date. That would exclude contributions received on the current day.
332
333 - **Fix Bug where Payment Balance is sometimes miscalculated
334 ([16546](https://github.com/civicrm/civicrm-core/pull/16546))**
335
336 Fixes a bug where Add Refund is displayed instead of Add Payment on partially
337 paid event contributions.
338
339 - **CRM-20553 Stop contact being overwritten with paypal account name
340 ([14667](https://github.com/civicrm/civicrm-core/pull/14667))**
341
342 Ensures when a user creates a donation via paypal their CiviCRM contact name
343 is not overwritten to be their paypal account name.
344
345 - **Fix use col "Soft Credit Amount Stats" and any filter of contribution…
346 ([16591](https://github.com/civicrm/civicrm-core/pull/16591))**
347
348 Ensures that one can use "Soft Credit Amount Stats" with all filters.
349
350 - **CRM_Core_Payment_PayPalProIPN should not call getPayPalPaymentProcessorID()
351 if processor_id is clearly provided in URL
352 ([dev/core#1579](https://lab.civicrm.org/dev/core/issues/1579):
353 [16479](https://github.com/civicrm/civicrm-core/pull/16479))**
354
355 - **Update pending contribution status action also send email without warning
356 ([dev/core#1640](https://lab.civicrm.org/dev/core/-/issues/1640):
357 [16742](https://github.com/civicrm/civicrm-core/pull/16742))**
358
359 - **PayPal Express Checkout fails on events
360 ([dev/financial#119](https://lab.civicrm.org/dev/financial/issues/119):
361 [16692](https://github.com/civicrm/civicrm-core/pull/16692))**
362
363 ### CiviEvent
364
365 - **Remove additional display of buttons for events
366 ([16550](https://github.com/civicrm/civicrm-core/pull/16550))**
367
368 ### CiviMember
369
370 - **Follow up on fix on updating memberships when a contact is deceased
371 ([16787](https://github.com/civicrm/civicrm-core/pull/16787))**
372
373 Improves the messages displayed when editing a membership for a contact that
374 is deceased.
375
376 - **Invalid currency "$" on sending offline membership receipt.
377 ([dev/core#1682](https://lab.civicrm.org/dev/core/issues/1682):
378 [16943](https://github.com/civicrm/civicrm-core/pull/16943))**
379
380 Fixes an 'Invalid currency "$"' error when sending a receipt for a membership
381 created from an offline membership form.
382
383 - **Deceased Contact via Inline doesn't update the Membership's status to
384 Deceased ([dev/core#1599](https://lab.civicrm.org/dev/core/issues/1599):
385 [16724](https://github.com/civicrm/civicrm-core/pull/16724))**
386
387 - **Membership auto-renew is not optional if using price set
388 ([dev/core#1630](https://lab.civicrm.org/dev/core/-/issues/1630):
389 [16762](https://github.com/civicrm/civicrm-core/pull/16762))**
390
391 ### Drupal Integration
392
393 - **Address no longer available as Relationship for Views in Drupal 7
394 ([dev/drupal#110](https://lab.civicrm.org/dev/drupal/issues/110):
395 [118](https://github.com/civicrm/civicrm-backdrop/pull/118) and
396 [600](https://github.com/civicrm/civicrm-drupal/pull/600))**
397
398 - **Generalise typo3/phar-stream-wrapper so CiviCRM can be installed on D8.7
399 ([17085](https://github.com/civicrm/civicrm-core/pull/17085))**
400
401 - **civicrm-setup and backward slashes in file paths on windows don't play nice
402 together ([dev/core#1643](https://lab.civicrm.org/dev/core/-/issues/1643):
403 [16886](https://github.com/civicrm/civicrm-core/pull/16886))**
404
405 Fixes installing CiviCRM on Drupal8 sites on windows using civicrm-setup / cv
406 core:install.
407
408 ### WordPress Integration
409
410 - **5.23 breaks WP admin menu links
411 ([dev/core#1637](https://lab.civicrm.org/dev/core/-/issues/1637):
412 [16713](https://github.com/civicrm/civicrm-core/pull/16713))**
413
414 - **Merge REST API wrapper code
415 ([160](https://github.com/civicrm/civicrm-wordpress/pull/160))**
416
417 Adds routes for CiviCRM scripts in extern.
418
419 - **Set "cms.root" URL in addition to Path
420 ([188](https://github.com/civicrm/civicrm-wordpress/pull/188))**
421
422 Resolves "Cannot resolve path using 'cms.root.url'" exception thrown on the
423 "Settings - Resource URLs" screen incorrectly on WordPress Multisite Subsite.
424
425 ## <a name="misc"></a>Miscellany
426
427 - **Add recurring contribution ID to doCancelRecurring
428 ([16741](https://github.com/civicrm/civicrm-core/pull/16741))**
429
430 - **Support PropertyBag in CRM_Utils_Array
431 ([16699](https://github.com/civicrm/civicrm-core/pull/16699) and
432 [16737](https://github.com/civicrm/civicrm-core/pull/16737))**
433
434 - **Added pseudoconstant for acl_id
435 ([16925](https://github.com/civicrm/civicrm-core/pull/16925))**
436
437 - **Added pseudoconstant for state province
438 ([16799](https://github.com/civicrm/civicrm-core/pull/16799))**
439
440 - **add pseudoconstant for location type
441 ([16758](https://github.com/civicrm/civicrm-core/pull/16758))**
442
443 - **Added pseudoconstant for priceset
444 ([16754](https://github.com/civicrm/civicrm-core/pull/16754))**
445
446 - **pseudoconstant for bounce type
447 ([16727](https://github.com/civicrm/civicrm-core/pull/16727))**
448
449 - **Added pseudoconstant for civicrm_tag.parent_id
450 ([16703](https://github.com/civicrm/civicrm-core/pull/16703))**
451
452 - **Event Cart cleanup
453 ([16691](https://github.com/civicrm/civicrm-core/pull/16691))**
454
455 - **Update cancelSubscription form to use updated methodology
456 ([16501](https://github.com/civicrm/civicrm-core/pull/16501) and
457 [16715](https://github.com/civicrm/civicrm-core/pull/16715))**
458
459 - **Skip expensive smarty Processing when nothing to see here
460 ([16731](https://github.com/civicrm/civicrm-core/pull/16731))**
461
462 - **UFMatch - deprecate unused functions
463 ([16849](https://github.com/civicrm/civicrm-core/pull/16849))**
464
465 - **Shifted UpdateMemberhsip to BAO Layer
466 ([16690](https://github.com/civicrm/civicrm-core/pull/16690))**
467
468 - **Add DAO::writeRecord and DAO::deleteRecord methods
469 ([16856](https://github.com/civicrm/civicrm-core/pull/16856))**
470
471 - **Add some deprecation notices, stop calling PrevNext::cleanupCache
472 ([16697](https://github.com/civicrm/civicrm-core/pull/16697))**
473
474 - **Remove assigns for atypefile
475 ([16895](https://github.com/civicrm/civicrm-core/pull/16895))**
476
477 - **Deprecate use of in OptionGroup::add() function
478 ([16910](https://github.com/civicrm/civicrm-core/pull/16910))**
479
480 - **Improve APIv4 selectUtils to handle join paths in fieldnames.
481 ([16904](https://github.com/civicrm/civicrm-core/pull/16904))**
482
483 - **Upgrade jQuery validation version to v1.19.1
484 ([16625](https://github.com/civicrm/civicrm-core/pull/16625))**
485
486 - **APIv3 - Use new DAO::deleteRecord method
487 ([16869](https://github.com/civicrm/civicrm-core/pull/16869))**
488
489 - **Improve conditional in api3 ChainSubscriber
490 ([16718](https://github.com/civicrm/civicrm-core/pull/16718))**
491
492 - **Mark unused function as deprecated
493 ([16688](https://github.com/civicrm/civicrm-core/pull/16688))**
494
495 - **CRM/Contact - Cleanup boolean expressions
496 ([16844](https://github.com/civicrm/civicrm-core/pull/16844))**
497
498 - **CRM/Contribute - Cleanup boolean expressions
499 ([16853](https://github.com/civicrm/civicrm-core/pull/16853))**
500
501 - **Civi/Test - Refactor out CRM_Utils_Array::value
502 ([16871](https://github.com/civicrm/civicrm-core/pull/16871))**
503
504 - **Cleanup reverse boolean expressions
505 ([16850](https://github.com/civicrm/civicrm-core/pull/16850))**
506
507 - **CRM/Core - Cleanup boolean expressions
508 ([16852](https://github.com/civicrm/civicrm-core/pull/16852))**
509
510 - **CRM/Utils - Cleanup boolean expressions
511 ([16851](https://github.com/civicrm/civicrm-core/pull/16851))**
512
513 - **CRM - Cleanup boolean expressions
514 ([16854](https://github.com/civicrm/civicrm-core/pull/16854))**
515
516 - **Fix another instance of silly use of CRM_Utils_Array::value
517 ([16712](https://github.com/civicrm/civicrm-core/pull/16712))**
518
519 - **Fix passing a non-array to CRM_Utils_Array::value
520 ([16701](https://github.com/civicrm/civicrm-core/pull/16701))**
521
522 - **Fix another instance of NULL being passed to CRM_Utils_Array::value
523 ([16711](https://github.com/civicrm/civicrm-core/pull/16711))**
524
525 - **Remove an instance of passing non-arraay to CRM_Utils_Array::value(
526 ([16706](https://github.com/civicrm/civicrm-core/pull/16706))**
527
528 - **Remove calls & deprecate CRM_Core_BAO_PrevNextCache::setItem
529 ([16696](https://github.com/civicrm/civicrm-core/pull/16696))**
530
531 - **(POC) Add `hook_civicrm_postCommit`, a less foot-gunny variant of
532 `hook_civicrm_post`
533 ([15338](https://github.com/civicrm/civicrm-core/pull/15338))**
534
535 - **Fix typos in xml/dao
536 ([16827](https://github.com/civicrm/civicrm-core/pull/16827))**
537
538 - **Deprecate unused/unneeded pseudoconstant functions
539 ([16771](https://github.com/civicrm/civicrm-core/pull/16771))**
540
541 - **Deprecate calling contactTrashRestore function
542 ([16824](https://github.com/civicrm/civicrm-core/pull/16824))**
543
544 - **Remove old stuff
545 ([16835](https://github.com/civicrm/civicrm-core/pull/16835))**
546
547 - **Remove deprecated cleaning of money in the BAO layer
548 ([16950](https://github.com/civicrm/civicrm-core/pull/16950))**
549
550 - **Remove unused deprecated function
551 ([16812](https://github.com/civicrm/civicrm-core/pull/16812))**
552
553 - **Remove deprecated function
554 ([16907](https://github.com/civicrm/civicrm-core/pull/16907))**
555
556 - **Remove unused code
557 ([16914](https://github.com/civicrm/civicrm-core/pull/16914))**
558
559 - **Remove deprecated parameter
560 ([16813](https://github.com/civicrm/civicrm-core/pull/16813))**
561
562 - **fix typo ([16865](https://github.com/civicrm/civicrm-core/pull/16865))**
563
564 - **API tests - remove unnecessary check for v4
565 ([16866](https://github.com/civicrm/civicrm-core/pull/16866))**
566
567 - **[NFC] APIv4 - Add test coverage for expected fields from join
568 ([16920](https://github.com/civicrm/civicrm-core/pull/16920))**
569
570 - **[NFC] Add in unit test to ensure that APIv4 Doesn't accept an invalid…
571 ([16893](https://github.com/civicrm/civicrm-core/pull/16893))**
572
573 - **[NFC] Use strict comparison where possible
574 ([16896](https://github.com/civicrm/civicrm-core/pull/16896))**
575
576 - **[NFC] Code formatting
577 ([16906](https://github.com/civicrm/civicrm-core/pull/16906))**
578
579 - **[NFC] minor form cleanup.
580 ([16905](https://github.com/civicrm/civicrm-core/pull/16905))**
581
582 - **(NFC) Minor typo: receipients > recipients
583 ([16810](https://github.com/civicrm/civicrm-core/pull/16810))**
584
585 - **[NFC] Minor code cleanup
586 ([16823](https://github.com/civicrm/civicrm-core/pull/16823))**
587
588 - **[NFC] Deprecate passing in silly data
589 ([16818](https://github.com/civicrm/civicrm-core/pull/16818))**
590
591 - **[NFC] Test cleanup
592 ([16817](https://github.com/civicrm/civicrm-core/pull/16817))**
593
594 - **[NFC] Test cleanup, remove duplicate test
595 ([16755](https://github.com/civicrm/civicrm-core/pull/16755))**
596
597 - **(NFC) Minor string error : for for > for
598 ([16773](https://github.com/civicrm/civicrm-core/pull/16773))**
599
600 - **(NFC) Minor typo: contacts(s) -> contact(s)
601 ([16804](https://github.com/civicrm/civicrm-core/pull/16804))**
602
603 - **(NFC) Query.php / Minor typo: Genrated -> Generated
604 ([16803](https://github.com/civicrm/civicrm-core/pull/16803))**
605
606 - **[NFC] Fix comments, use single quotes
607 ([16693](https://github.com/civicrm/civicrm-core/pull/16693))**
608
609 - **[NFC] Mark unused function deprecated, fix some comments & formatting
610 ([16698](https://github.com/civicrm/civicrm-core/pull/16698))**
611
612 - **[NFC] cleanup in test class
613 ([16764](https://github.com/civicrm/civicrm-core/pull/16764))**
614
615 - **[NFC] Use helper / api to delete contacts in tests
616 ([16825](https://github.com/civicrm/civicrm-core/pull/16825))**
617
618 - **[NFC/TEST] Resurrect unfinished test for getRelatedCases()
619 ([16885](https://github.com/civicrm/civicrm-core/pull/16885))**
620
621 - **[Test] Remove skip that seems no longer required
622 ([16912](https://github.com/civicrm/civicrm-core/pull/16912))**
623
624 - **Test for PR 13809
625 ([16474](https://github.com/civicrm/civicrm-core/pull/16474))**
626
627 - **[TEST] Add test for to time processing
628 ([16861](https://github.com/civicrm/civicrm-core/pull/16861))**
629
630 - **[REF] Case Activities Report includes core activities *always*
631 ([dev/core#1366](https://lab.civicrm.org/dev/core/issues/1366):
632 [16670](https://github.com/civicrm/civicrm-core/pull/16670))**
633
634 - **[REF] Cleanup api3 DashboardContact
635 ([16792](https://github.com/civicrm/civicrm-core/pull/16792))**
636
637 - **[REF] Fixes a bug in Message Template create API where by user permissions
638 checks were being done on system workflow messages
639 ([16788](https://github.com/civicrm/civicrm-core/pull/16788))**
640
641 - **[REF] Remove calls to fatal()
642 ([16746](https://github.com/civicrm/civicrm-core/pull/16746))**
643
644 - **[REF] Cleanup uses of CRM_Utils_Array::value related to numbers
645 ([16778](https://github.com/civicrm/civicrm-core/pull/16778))**
646
647 - **[REF] cleanup financial type form - remove complex inheritence
648 ([16777](https://github.com/civicrm/civicrm-core/pull/16777))**
649
650 - **[REF] Use ?? operator instead of CRM_Utils_Array::value()
651 ([16710](https://github.com/civicrm/civicrm-core/pull/16710))**
652
653 - **[REF] dev/core#1116 - Remove unused misnamed activityTypeName variable
654 ([16730](https://github.com/civicrm/civicrm-core/pull/16730))**
655
656 - **REF Switch to getter on cancelSubscription form
657 ([16740](https://github.com/civicrm/civicrm-core/pull/16740))**
658
659 - **[REF] Minor code simplification
660 ([16734](https://github.com/civicrm/civicrm-core/pull/16734))**
661
662 - **[REF] Hopefully fix regularly failing conformance test
663 ([16732](https://github.com/civicrm/civicrm-core/pull/16732))**
664
665 - **[REF] Use empty() instead of CRM_Utils_Array::value() in inline conditionals
666 ([16729](https://github.com/civicrm/civicrm-core/pull/16729))**
667
668 - **[REF] Use ?? operator instead of CRM_Utils_Array::value() in return
669 statements ([16719](https://github.com/civicrm/civicrm-core/pull/16719))**
670
671 - **[REF] CRM_Utils_Array::value() -> empty()
672 ([16704](https://github.com/civicrm/civicrm-core/pull/16704))**
673
674 - **[REF] Cleanup is_array(CRM_Utils_Array::value()) pattern
675 ([16875](https://github.com/civicrm/civicrm-core/pull/16875))**
676
677 - **[REF] Remove redundant call to build permissions
678 ([16862](https://github.com/civicrm/civicrm-core/pull/16862))**
679
680 - **[REF] Replace CRM_Utils_Array::value with ?? in variable assignments
681 ([16768](https://github.com/civicrm/civicrm-core/pull/16768))**
682
683 - **[REF] Replace coalesce pattern with coalesce operator
684 ([16802](https://github.com/civicrm/civicrm-core/pull/16802))**
685
686 - **[REF] Switch to using a non abandoned library for getting a mapping of
687 mimetypes to extensions
688 ([16436](https://github.com/civicrm/civicrm-core/pull/16436))**
689
690 - **[REF] move buildQuickForm function to the trait
691 ([16948](https://github.com/civicrm/civicrm-core/pull/16948))**
692
693 - **[REF] Move properties to Trait
694 ([16940](https://github.com/civicrm/civicrm-core/pull/16940))**
695
696 - **[REF] Start transitioning EmailCommon class to a trait
697 ([16935](https://github.com/civicrm/civicrm-core/pull/16935))**
698
699 - **[REF] Remove fatal, fix some code comments
700 ([16928](https://github.com/civicrm/civicrm-core/pull/16928))**
701
702 - **[REF] extract code to getEmails
703 ([16929](https://github.com/civicrm/civicrm-core/pull/16929))**
704
705 - **[REF] Minor simplification - do not use variable variables
706 ([16927](https://github.com/civicrm/civicrm-core/pull/16927))**
707
708 - **[REF] Extract code used to render a pseudoconstant when a table is defined.
709 ([16902](https://github.com/civicrm/civicrm-core/pull/16902))**
710
711 - **[REF] Move form specific handling back to the relevant form.
712 ([16913](https://github.com/civicrm/civicrm-core/pull/16913))**
713
714 - **[REF] APIv4 - Preserve order when expanding select wildcards
715 ([16909](https://github.com/civicrm/civicrm-core/pull/16909))**
716
717 - **[REF] Remove & from before variable
718 ([16897](https://github.com/civicrm/civicrm-core/pull/16897))**
719
720 - **[REF] Replace \CRM_Utils_Array::value with ??
721 ([16872](https://github.com/civicrm/civicrm-core/pull/16872))**
722
723 - **[REF] Civi/Api4 - Refactor out 'use CRM_Utils_Array'
724 ([16873](https://github.com/civicrm/civicrm-core/pull/16873))**
725
726 - **[REF] BAO_Contact - Remove CRM_Utils_Array::value and other unnecessary code
727 ([16874](https://github.com/civicrm/civicrm-core/pull/16874))**
728
729 - **[REF] APIv4 - Restructure the way get query objects are constucted
730 ([16878](https://github.com/civicrm/civicrm-core/pull/16878))**
731
732 - **[REF] Fix PCP getPcpDashboardInfo to be tested & use sensible functions
733 ([16790](https://github.com/civicrm/civicrm-core/pull/16790))**
734
735 - **[REF] Simplify obtuse boolean expressions
736 ([16822](https://github.com/civicrm/civicrm-core/pull/16822))**
737
738 - **[REF] Replace CRM_Utils_Array::value with ?? in variable assignments
739 ([16820](https://github.com/civicrm/civicrm-core/pull/16820))**
740
741 - **[REF] cleanups on array operator
742 ([16821](https://github.com/civicrm/civicrm-core/pull/16821))**
743
744 - **[REF] Simplify obtuse boolean expressions
745 ([16819](https://github.com/civicrm/civicrm-core/pull/16819))**
746
747 - **[REF] Remove titleHeader var
748 ([16816](https://github.com/civicrm/civicrm-core/pull/16816))**
749
750 - **[REF] simplify references to civicrm_acl
751 ([16671](https://github.com/civicrm/civicrm-core/pull/16671))**
752
753 - **[REF] Fix retrieving invoice related settings when doing complete
754 transaction ([17218](https://github.com/civicrm/civicrm-core/pull/17218))**
755
756 ## <a name="credits"></a>Credits
757
758 This release was developed by the following code authors:
759
760 a-n The Artists Information Company - William Mortada; AGH Strategies - Alice
761 Frumin, Andrew Hunt; Alexy Mikhailichenko; Andrei Mondoc; Christian Wach; Circle
762 Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts,
763 Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D;
764 Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; iXiam - César
765 Ramos; JMA Consulting - Seamus Lee; Joinery - Allen Shaw; Kartik Kathuria;
766 Lighthouse Design and Consulting - Brian Shaughnessy; Makoa - Usha F. Matisson;
767 Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire;
768 Naomi Rosenberg; Ray Wright; OSSeed Technologies LLP - Sushant Paste; SYSTOPIA
769 Organisationsberatung - Björn Endres; Timbsoft Technologies - Tunbola Ogunwande;
770 Wikimedia Foundation - Eileen McNaughton
771
772 Most authors also reviewed code for this release; in addition, the following
773 reviewers contributed their comments:
774
775 Agileware - Justin Freeman; Artful Robot - Rich Lott; British Humanist
776 Association - Andrew West; CiviDesk - Nicolas Ganivet; Coop SymbioTIC - Mathieu
777 Lutfy; Digitalcourage - Detlev Sieber; Freeform Solutions - S. Gray; Fuzion -
778 Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick Figel; Jamie
779 Tillman; JMA Consulting - Monish Deb; Korlon - Stuart Gaston; MJCO - Mikey
780 O'Toole; Richard van Oosterhout; Skvare - Mark Hanna; Squiffle Consulting -
781 Aidan Saunders; Tadpole Collective - Kevin Cristiano;
782
783 ## <a name="feedback"></a>Feedback
784
785 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
786 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
787 and contact `@agh1`.