5 - **[Synopsis](#synopsis)**
6 - **[Features](#features)**
7 - **[Bugs resolved](#bugs)**
8 - **[Miscellany](#misc)**
9 - **[Credits](#credits)**
10 - **[Feedback](#feedback)**
12 ## <a name="synopsis"></a>Synopsis
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** |
24 ## <a name="features"></a>Features
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))**
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.
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))**
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.
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))**
55 Changes the text of the confirm contribution (and event registration) button
58 - **APIv4 - Add Dashboard & DashboardContact entities
59 ([16867](https://github.com/civicrm/civicrm-core/pull/16867))**
61 Adds APIv4 support for Dashboard & DashboardContact and does some cleanup in
62 the BAO and API layers for improved consistency.
64 - **add nl_BE language
65 ([17014](https://github.com/civicrm/civicrm-core/pull/17014))**
67 Adds a new translation option for "Dutch (Netherlands)".
69 - **Add hook to alter display value or Custom field value
70 ([16921](https://github.com/civicrm/civicrm-core/pull/16921))**
72 Adds a hook to alter display value or Custom field value.
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))**
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.
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))**
91 Alters the "Add Payment" form to permit payments to be added even if a
92 contribution is fully paid.
94 - **Add privacy fields to ContributionDetail report
95 ([16674](https://github.com/civicrm/civicrm-core/pull/16674))**
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".
100 - **Add "pledge id" as column and filter in Contribution Detail report.
101 ([16868](https://github.com/civicrm/civicrm-core/pull/16868))**
103 Improves the Contribution Detail Report by adding "pledge id" as a filter and
106 ### WordPress Integration
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))**
112 Makes Personal Campaign Pages available as a shortcode.
114 ## <a name="bugs"></a>Bugs resolved
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))**
123 Fixes an issue for some builds when upgrading caused by the activation of the
124 `sequentialcreditnotes` extension.
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))**
130 Fixes a bug where deleting a contact does not delete tags associated with the
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))**
137 Ensures Auto-complete search results are consistent with other searches.
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))**
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.
147 - **Activity Detail report gives syntax error with force=1 if include case
149 ([dev/core#1710](https://lab.civicrm.org/dev/core/issues/1710):
150 [17128](https://github.com/civicrm/civicrm-core/pull/17128))**
152 The case activity table wasn't properly loaded when the Activity Detail report
153 including case activities would go straight to displaying results.
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))**
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.
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))**
168 Changes the data type for the `form_values` column on the
169 `civicrm_report_instance` from TEXT to LONGTEXT.
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))**
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))**
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))**
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))**
188 - **profile Public Title (frontend_title column) is not used in profile
190 ([dev/core#1683](https://lab.civicrm.org/dev/core/-/issues/1683):
191 [16945](https://github.com/civicrm/civicrm-core/pull/16945))**
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))**
198 - **Fix checking permissions in api3 profile get
199 ([16848](https://github.com/civicrm/civicrm-core/pull/16848))**
201 - **APIv4 - convert Result object to array when running through json_encode
202 ([16828](https://github.com/civicrm/civicrm-core/pull/16828))**
204 - **Api4 AJAX endpoint: change required permission to access AJAX API.
205 ([16705](https://github.com/civicrm/civicrm-core/pull/16705))**
207 Makes it possible to use the API4 AJAX endpoint as an anonymous user.
209 - **Make api4 select query object more sane
210 ([16889](https://github.com/civicrm/civicrm-core/pull/16889))**
212 - **APIv4 - bugfix in select query
213 ([16900](https://github.com/civicrm/civicrm-core/pull/16900))**
215 - **APIv4 - Don't advertise implicit multi-joins in Explorer
216 ([17205](https://github.com/civicrm/civicrm-core/pull/17205))**
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.
221 - **CRM_Core_I18n - Provide a better label for new/unknown locales
222 ([17021](https://github.com/civicrm/civicrm-core/pull/17021))**
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))**
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))**
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))**
235 - **Fix display of payment processor title in cancelSubscription form
236 ([16857](https://github.com/civicrm/civicrm-core/pull/16857))**
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))**
241 - **Respect 'Donot notify activity type' setting
242 ([16800](https://github.com/civicrm/civicrm-core/pull/16800))**
244 - **Fix batch contact/activity update with radio options
245 ([16855](https://github.com/civicrm/civicrm-core/pull/16855))**
247 - **Fix CustomDataView.tpl plain empty memo field.
248 ([16839](https://github.com/civicrm/civicrm-core/pull/16839))**
250 Ensure note custom fields display on their own lines
252 - **Fix setting outBound_option readonly in UI
253 ([16774](https://github.com/civicrm/civicrm-core/pull/16774))**
255 Display the SMTP outbound option as read only.
257 - **Make the 'billing address is the same' checkbox respond to the change event
258 ([16496](https://github.com/civicrm/civicrm-core/pull/16496))**
260 Make the "billing address is the same.." checkbox respond to javascript.
262 - **Use dbAlias to generate where clause for date field in activity report
263 ([16689](https://github.com/civicrm/civicrm-core/pull/16689))**
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))**
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
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))**
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))**
282 Fixes log messages generated when opening the relationship tab on the Manage
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))**
289 Ensures the Merge Case Modal shows all relevant cases.
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))**
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
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))**
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))**
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))**
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.
319 - **Invoice action not shown when invoicing enabled
320 ([17164](https://github.com/civicrm/civicrm-core/pull/17164))**
322 The "Invoices - print or email" action was not available for contribution
323 search results even when invoicing was enabled.
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))**
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.
333 - **Fix Bug where Payment Balance is sometimes miscalculated
334 ([16546](https://github.com/civicrm/civicrm-core/pull/16546))**
336 Fixes a bug where Add Refund is displayed instead of Add Payment on partially
337 paid event contributions.
339 - **CRM-20553 Stop contact being overwritten with paypal account name
340 ([14667](https://github.com/civicrm/civicrm-core/pull/14667))**
342 Ensures when a user creates a donation via paypal their CiviCRM contact name
343 is not overwritten to be their paypal account name.
345 - **Fix use col "Soft Credit Amount Stats" and any filter of contribution…
346 ([16591](https://github.com/civicrm/civicrm-core/pull/16591))**
348 Ensures that one can use "Soft Credit Amount Stats" with all filters.
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))**
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))**
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))**
365 - **Remove additional display of buttons for events
366 ([16550](https://github.com/civicrm/civicrm-core/pull/16550))**
370 - **Follow up on fix on updating memberships when a contact is deceased
371 ([16787](https://github.com/civicrm/civicrm-core/pull/16787))**
373 Improves the messages displayed when editing a membership for a contact that
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))**
380 Fixes an 'Invalid currency "$"' error when sending a receipt for a membership
381 created from an offline membership form.
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))**
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))**
391 ### Drupal Integration
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))**
398 - **Generalise typo3/phar-stream-wrapper so CiviCRM can be installed on D8.7
399 ([17085](https://github.com/civicrm/civicrm-core/pull/17085))**
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))**
405 Fixes installing CiviCRM on Drupal8 sites on windows using civicrm-setup / cv
408 ### WordPress Integration
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))**
414 - **Merge REST API wrapper code
415 ([160](https://github.com/civicrm/civicrm-wordpress/pull/160))**
417 Adds routes for CiviCRM scripts in extern.
419 - **Set "cms.root" URL in addition to Path
420 ([188](https://github.com/civicrm/civicrm-wordpress/pull/188))**
422 Resolves "Cannot resolve path using 'cms.root.url'" exception thrown on the
423 "Settings - Resource URLs" screen incorrectly on WordPress Multisite Subsite.
425 ## <a name="misc"></a>Miscellany
427 - **Add recurring contribution ID to doCancelRecurring
428 ([16741](https://github.com/civicrm/civicrm-core/pull/16741))**
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))**
434 - **Added pseudoconstant for acl_id
435 ([16925](https://github.com/civicrm/civicrm-core/pull/16925))**
437 - **Added pseudoconstant for state province
438 ([16799](https://github.com/civicrm/civicrm-core/pull/16799))**
440 - **add pseudoconstant for location type
441 ([16758](https://github.com/civicrm/civicrm-core/pull/16758))**
443 - **Added pseudoconstant for priceset
444 ([16754](https://github.com/civicrm/civicrm-core/pull/16754))**
446 - **pseudoconstant for bounce type
447 ([16727](https://github.com/civicrm/civicrm-core/pull/16727))**
449 - **Added pseudoconstant for civicrm_tag.parent_id
450 ([16703](https://github.com/civicrm/civicrm-core/pull/16703))**
452 - **Event Cart cleanup
453 ([16691](https://github.com/civicrm/civicrm-core/pull/16691))**
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))**
459 - **Skip expensive smarty Processing when nothing to see here
460 ([16731](https://github.com/civicrm/civicrm-core/pull/16731))**
462 - **UFMatch - deprecate unused functions
463 ([16849](https://github.com/civicrm/civicrm-core/pull/16849))**
465 - **Shifted UpdateMemberhsip to BAO Layer
466 ([16690](https://github.com/civicrm/civicrm-core/pull/16690))**
468 - **Add DAO::writeRecord and DAO::deleteRecord methods
469 ([16856](https://github.com/civicrm/civicrm-core/pull/16856))**
471 - **Add some deprecation notices, stop calling PrevNext::cleanupCache
472 ([16697](https://github.com/civicrm/civicrm-core/pull/16697))**
474 - **Remove assigns for atypefile
475 ([16895](https://github.com/civicrm/civicrm-core/pull/16895))**
477 - **Deprecate use of in OptionGroup::add() function
478 ([16910](https://github.com/civicrm/civicrm-core/pull/16910))**
480 - **Improve APIv4 selectUtils to handle join paths in fieldnames.
481 ([16904](https://github.com/civicrm/civicrm-core/pull/16904))**
483 - **Upgrade jQuery validation version to v1.19.1
484 ([16625](https://github.com/civicrm/civicrm-core/pull/16625))**
486 - **APIv3 - Use new DAO::deleteRecord method
487 ([16869](https://github.com/civicrm/civicrm-core/pull/16869))**
489 - **Improve conditional in api3 ChainSubscriber
490 ([16718](https://github.com/civicrm/civicrm-core/pull/16718))**
492 - **Mark unused function as deprecated
493 ([16688](https://github.com/civicrm/civicrm-core/pull/16688))**
495 - **CRM/Contact - Cleanup boolean expressions
496 ([16844](https://github.com/civicrm/civicrm-core/pull/16844))**
498 - **CRM/Contribute - Cleanup boolean expressions
499 ([16853](https://github.com/civicrm/civicrm-core/pull/16853))**
501 - **Civi/Test - Refactor out CRM_Utils_Array::value
502 ([16871](https://github.com/civicrm/civicrm-core/pull/16871))**
504 - **Cleanup reverse boolean expressions
505 ([16850](https://github.com/civicrm/civicrm-core/pull/16850))**
507 - **CRM/Core - Cleanup boolean expressions
508 ([16852](https://github.com/civicrm/civicrm-core/pull/16852))**
510 - **CRM/Utils - Cleanup boolean expressions
511 ([16851](https://github.com/civicrm/civicrm-core/pull/16851))**
513 - **CRM - Cleanup boolean expressions
514 ([16854](https://github.com/civicrm/civicrm-core/pull/16854))**
516 - **Fix another instance of silly use of CRM_Utils_Array::value
517 ([16712](https://github.com/civicrm/civicrm-core/pull/16712))**
519 - **Fix passing a non-array to CRM_Utils_Array::value
520 ([16701](https://github.com/civicrm/civicrm-core/pull/16701))**
522 - **Fix another instance of NULL being passed to CRM_Utils_Array::value
523 ([16711](https://github.com/civicrm/civicrm-core/pull/16711))**
525 - **Remove an instance of passing non-arraay to CRM_Utils_Array::value(
526 ([16706](https://github.com/civicrm/civicrm-core/pull/16706))**
528 - **Remove calls & deprecate CRM_Core_BAO_PrevNextCache::setItem
529 ([16696](https://github.com/civicrm/civicrm-core/pull/16696))**
531 - **(POC) Add `hook_civicrm_postCommit`, a less foot-gunny variant of
533 ([15338](https://github.com/civicrm/civicrm-core/pull/15338))**
535 - **Fix typos in xml/dao
536 ([16827](https://github.com/civicrm/civicrm-core/pull/16827))**
538 - **Deprecate unused/unneeded pseudoconstant functions
539 ([16771](https://github.com/civicrm/civicrm-core/pull/16771))**
541 - **Deprecate calling contactTrashRestore function
542 ([16824](https://github.com/civicrm/civicrm-core/pull/16824))**
545 ([16835](https://github.com/civicrm/civicrm-core/pull/16835))**
547 - **Remove deprecated cleaning of money in the BAO layer
548 ([16950](https://github.com/civicrm/civicrm-core/pull/16950))**
550 - **Remove unused deprecated function
551 ([16812](https://github.com/civicrm/civicrm-core/pull/16812))**
553 - **Remove deprecated function
554 ([16907](https://github.com/civicrm/civicrm-core/pull/16907))**
556 - **Remove unused code
557 ([16914](https://github.com/civicrm/civicrm-core/pull/16914))**
559 - **Remove deprecated parameter
560 ([16813](https://github.com/civicrm/civicrm-core/pull/16813))**
562 - **fix typo ([16865](https://github.com/civicrm/civicrm-core/pull/16865))**
564 - **API tests - remove unnecessary check for v4
565 ([16866](https://github.com/civicrm/civicrm-core/pull/16866))**
567 - **[NFC] APIv4 - Add test coverage for expected fields from join
568 ([16920](https://github.com/civicrm/civicrm-core/pull/16920))**
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))**
573 - **[NFC] Use strict comparison where possible
574 ([16896](https://github.com/civicrm/civicrm-core/pull/16896))**
576 - **[NFC] Code formatting
577 ([16906](https://github.com/civicrm/civicrm-core/pull/16906))**
579 - **[NFC] minor form cleanup.
580 ([16905](https://github.com/civicrm/civicrm-core/pull/16905))**
582 - **(NFC) Minor typo: receipients > recipients
583 ([16810](https://github.com/civicrm/civicrm-core/pull/16810))**
585 - **[NFC] Minor code cleanup
586 ([16823](https://github.com/civicrm/civicrm-core/pull/16823))**
588 - **[NFC] Deprecate passing in silly data
589 ([16818](https://github.com/civicrm/civicrm-core/pull/16818))**
591 - **[NFC] Test cleanup
592 ([16817](https://github.com/civicrm/civicrm-core/pull/16817))**
594 - **[NFC] Test cleanup, remove duplicate test
595 ([16755](https://github.com/civicrm/civicrm-core/pull/16755))**
597 - **(NFC) Minor string error : for for > for
598 ([16773](https://github.com/civicrm/civicrm-core/pull/16773))**
600 - **(NFC) Minor typo: contacts(s) -> contact(s)
601 ([16804](https://github.com/civicrm/civicrm-core/pull/16804))**
603 - **(NFC) Query.php / Minor typo: Genrated -> Generated
604 ([16803](https://github.com/civicrm/civicrm-core/pull/16803))**
606 - **[NFC] Fix comments, use single quotes
607 ([16693](https://github.com/civicrm/civicrm-core/pull/16693))**
609 - **[NFC] Mark unused function deprecated, fix some comments & formatting
610 ([16698](https://github.com/civicrm/civicrm-core/pull/16698))**
612 - **[NFC] cleanup in test class
613 ([16764](https://github.com/civicrm/civicrm-core/pull/16764))**
615 - **[NFC] Use helper / api to delete contacts in tests
616 ([16825](https://github.com/civicrm/civicrm-core/pull/16825))**
618 - **[NFC/TEST] Resurrect unfinished test for getRelatedCases()
619 ([16885](https://github.com/civicrm/civicrm-core/pull/16885))**
621 - **[Test] Remove skip that seems no longer required
622 ([16912](https://github.com/civicrm/civicrm-core/pull/16912))**
624 - **Test for PR 13809
625 ([16474](https://github.com/civicrm/civicrm-core/pull/16474))**
627 - **[TEST] Add test for to time processing
628 ([16861](https://github.com/civicrm/civicrm-core/pull/16861))**
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))**
634 - **[REF] Cleanup api3 DashboardContact
635 ([16792](https://github.com/civicrm/civicrm-core/pull/16792))**
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))**
641 - **[REF] Remove calls to fatal()
642 ([16746](https://github.com/civicrm/civicrm-core/pull/16746))**
644 - **[REF] Cleanup uses of CRM_Utils_Array::value related to numbers
645 ([16778](https://github.com/civicrm/civicrm-core/pull/16778))**
647 - **[REF] cleanup financial type form - remove complex inheritence
648 ([16777](https://github.com/civicrm/civicrm-core/pull/16777))**
650 - **[REF] Use ?? operator instead of CRM_Utils_Array::value()
651 ([16710](https://github.com/civicrm/civicrm-core/pull/16710))**
653 - **[REF] dev/core#1116 - Remove unused misnamed activityTypeName variable
654 ([16730](https://github.com/civicrm/civicrm-core/pull/16730))**
656 - **REF Switch to getter on cancelSubscription form
657 ([16740](https://github.com/civicrm/civicrm-core/pull/16740))**
659 - **[REF] Minor code simplification
660 ([16734](https://github.com/civicrm/civicrm-core/pull/16734))**
662 - **[REF] Hopefully fix regularly failing conformance test
663 ([16732](https://github.com/civicrm/civicrm-core/pull/16732))**
665 - **[REF] Use empty() instead of CRM_Utils_Array::value() in inline conditionals
666 ([16729](https://github.com/civicrm/civicrm-core/pull/16729))**
668 - **[REF] Use ?? operator instead of CRM_Utils_Array::value() in return
669 statements ([16719](https://github.com/civicrm/civicrm-core/pull/16719))**
671 - **[REF] CRM_Utils_Array::value() -> empty()
672 ([16704](https://github.com/civicrm/civicrm-core/pull/16704))**
674 - **[REF] Cleanup is_array(CRM_Utils_Array::value()) pattern
675 ([16875](https://github.com/civicrm/civicrm-core/pull/16875))**
677 - **[REF] Remove redundant call to build permissions
678 ([16862](https://github.com/civicrm/civicrm-core/pull/16862))**
680 - **[REF] Replace CRM_Utils_Array::value with ?? in variable assignments
681 ([16768](https://github.com/civicrm/civicrm-core/pull/16768))**
683 - **[REF] Replace coalesce pattern with coalesce operator
684 ([16802](https://github.com/civicrm/civicrm-core/pull/16802))**
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))**
690 - **[REF] move buildQuickForm function to the trait
691 ([16948](https://github.com/civicrm/civicrm-core/pull/16948))**
693 - **[REF] Move properties to Trait
694 ([16940](https://github.com/civicrm/civicrm-core/pull/16940))**
696 - **[REF] Start transitioning EmailCommon class to a trait
697 ([16935](https://github.com/civicrm/civicrm-core/pull/16935))**
699 - **[REF] Remove fatal, fix some code comments
700 ([16928](https://github.com/civicrm/civicrm-core/pull/16928))**
702 - **[REF] extract code to getEmails
703 ([16929](https://github.com/civicrm/civicrm-core/pull/16929))**
705 - **[REF] Minor simplification - do not use variable variables
706 ([16927](https://github.com/civicrm/civicrm-core/pull/16927))**
708 - **[REF] Extract code used to render a pseudoconstant when a table is defined.
709 ([16902](https://github.com/civicrm/civicrm-core/pull/16902))**
711 - **[REF] Move form specific handling back to the relevant form.
712 ([16913](https://github.com/civicrm/civicrm-core/pull/16913))**
714 - **[REF] APIv4 - Preserve order when expanding select wildcards
715 ([16909](https://github.com/civicrm/civicrm-core/pull/16909))**
717 - **[REF] Remove & from before variable
718 ([16897](https://github.com/civicrm/civicrm-core/pull/16897))**
720 - **[REF] Replace \CRM_Utils_Array::value with ??
721 ([16872](https://github.com/civicrm/civicrm-core/pull/16872))**
723 - **[REF] Civi/Api4 - Refactor out 'use CRM_Utils_Array'
724 ([16873](https://github.com/civicrm/civicrm-core/pull/16873))**
726 - **[REF] BAO_Contact - Remove CRM_Utils_Array::value and other unnecessary code
727 ([16874](https://github.com/civicrm/civicrm-core/pull/16874))**
729 - **[REF] APIv4 - Restructure the way get query objects are constucted
730 ([16878](https://github.com/civicrm/civicrm-core/pull/16878))**
732 - **[REF] Fix PCP getPcpDashboardInfo to be tested & use sensible functions
733 ([16790](https://github.com/civicrm/civicrm-core/pull/16790))**
735 - **[REF] Simplify obtuse boolean expressions
736 ([16822](https://github.com/civicrm/civicrm-core/pull/16822))**
738 - **[REF] Replace CRM_Utils_Array::value with ?? in variable assignments
739 ([16820](https://github.com/civicrm/civicrm-core/pull/16820))**
741 - **[REF] cleanups on array operator
742 ([16821](https://github.com/civicrm/civicrm-core/pull/16821))**
744 - **[REF] Simplify obtuse boolean expressions
745 ([16819](https://github.com/civicrm/civicrm-core/pull/16819))**
747 - **[REF] Remove titleHeader var
748 ([16816](https://github.com/civicrm/civicrm-core/pull/16816))**
750 - **[REF] simplify references to civicrm_acl
751 ([16671](https://github.com/civicrm/civicrm-core/pull/16671))**
753 - **[REF] Fix retrieving invoice related settings when doing complete
754 transaction ([17218](https://github.com/civicrm/civicrm-core/pull/17218))**
756 ## <a name="credits"></a>Credits
758 This release was developed by the following code authors:
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
772 Most authors also reviewed code for this release; in addition, the following
773 reviewers contributed their comments:
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;
783 ## <a name="feedback"></a>Feedback
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