5.51.0 release notes: added late changes
[civicrm-core.git] / release-notes / 5.34.0.md
1 # CiviCRM 5.34.0
2
3 Released February 3, 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?** | **yes** |
20 | **Fix problems installing or upgrading to a previous version?** | **yes** |
21 | **Introduce features?** | **yes** |
22 | **Fix bugs?** | **yes** |
23
24 ## <a name="features"></a>Features
25
26 ### Core CiviCRM
27
28 - **Re-Thinking our Crypto implementation
29 ([dev/core#2258](https://lab.civicrm.org/dev/core/-/issues/2258):
30 [19236](https://github.com/civicrm/civicrm-core/pull/19236),
31 [19251](https://github.com/civicrm/civicrm-core/pull/19251),
32 [19239](https://github.com/civicrm/civicrm-core/pull/19239),
33 [19349](https://github.com/civicrm/civicrm-core/pull/19349),
34 [237](https://github.com/civicrm/civicrm-wordpress/pull/237),
35 [57](https://github.com/civicrm/civicrm-joomla/pull/57),
36 [125](https://github.com/civicrm/civicrm-backdrop/pull/125),
37 [635](https://github.com/civicrm/civicrm-drupal/pull/635), and
38 [57](https://github.com/civicrm/civicrm-drupal-8/pull/57))**
39
40 This adds a new framework for encrypting setting values that are stored in the
41 database. An encryption key is defined upon installation, and the key can be
42 rotated using APIv4. Keys can also be managed with a new
43 `hook_civicrm_crypto`. The system allows for old keys to be retained for
44 decrypting old values even as a new key is used for encrypting new ones.
45
46 The only setting that is changed at this point is the SMTP password, as that
47 was the only setting in core encrypted with `CRM_Utils_Crypt`. However, this
48 framework is available for extensions and will likely be adopted for other
49 sensitive settings.
50
51 You may optionally configure `CIVICRM_CRED_KEYS` in `civicrm.settings.php`
52 upon upgrade. Sites that define `smtpPassword` in their
53 `civicrm.settings.php` file may need to update the value. See
54 [pull request 19239](https://github.com/civicrm/civicrm-core/pull/19239) for
55 details.
56
57 Meanwhile, `CRM_Utils_Crypt` is retained (but deprecated) for compatibility
58 with the extensions that use it.
59
60 - **Add pre() and post() hooks for ufgroup entity
61 ([dev/core#2199](https://lab.civicrm.org/dev/core/-/issues/2199):
62 [18995](https://github.com/civicrm/civicrm-core/pull/18995))**
63
64 The pre and post hooks are now triggered when modifying profiles.
65
66 - **Add support for multi-value contact reference custom fields
67 ([18941](https://github.com/civicrm/civicrm-core/pull/18941))**
68
69 Makes it so users can configure a multi-value contact reference custom field.
70
71 - **Add missing state for South Korea
72 ([19157](https://github.com/civicrm/civicrm-core/pull/19157))**
73
74 This adds the special self-governing city Sejong to the state/province table
75 for South Korea.
76
77 - **CRM_Core_Key - Provide more debugging hints about mismatched `qfKey` values
78 ([19145](https://github.com/civicrm/civicrm-core/pull/19145))**
79
80 The qfKey now has a prefix that corresponds with the form name.
81
82 - **Add min-width to flex columns for responsive layout on small screens
83 ([19235](https://github.com/civicrm/civicrm-core/pull/19235))**
84
85 This adjusts 2-column layouts on the main CiviCRM dashboard and Search Kit to
86 collapse to 1 column on small screens.
87
88 - **APIv4 - Add "Permission.get" for listing available permissions
89 ([19115](https://github.com/civicrm/civicrm-core/pull/19115))**
90
91 Adds a new API method "Permission.get" to be used for administrative tools
92 that allow one to choose/assign a permission.
93
94 - **APIv4: Support relative date range input
95 ([19181](https://github.com/civicrm/civicrm-core/pull/19181))**
96
97 Extends APIv4 to support relative date range inputs.
98
99 - **Free the joins! APIv4 explicit joins - can we remove the requirement for
100 specific columns in the "on" clause? (Work Towards
101 [dev/core#2271](https://lab.civicrm.org/dev/core/-/issues/2271):
102 [19275](https://github.com/civicrm/civicrm-core/pull/19275))**
103
104 Allows greater flexibility in how explicit joins are performed in APIv4.
105
106 - **Non translatable fields in profile schema (Work Towards
107 [dev/core#527](https://lab.civicrm.org/dev/core/-/issues/527):
108 [19291](https://github.com/civicrm/civicrm-core/pull/19291))**
109
110 Ensures the public title is used and translatable for on behalf profiles,
111 confirm pages and thank you pages.
112
113 - **Proposal - add hook alterIndices
114 (Work Towards [dev/core#2279](https://lab.civicrm.org/dev/core/-/issues/2279):
115 [19293](https://github.com/civicrm/civicrm-core/pull/19293) and
116 [19288](https://github.com/civicrm/civicrm-core/pull/19288))**
117
118 Adds indexes to `campaign.name` and `civicrm_group.cache_date`.
119
120 ### CiviContribute
121
122 - **Wording change - change UI parts of contribution soft schema to soft credit
123 ([dev/financial#158](https://lab.civicrm.org/dev/financial/-/issues/158):
124 [19085](https://github.com/civicrm/civicrm-core/pull/19085))**
125
126 Improves user experience of Search Kit/Afform by cleaning up language
127 related to Soft Credits.
128
129 - **Cancel first contribution associated to membership, cancels the membership
130 (Work Towards [dev/core#927](https://lab.civicrm.org/dev/core/-/issues/927):
131 [19019](https://github.com/civicrm/civicrm-core/pull/19019))**
132
133 Completes moving the logic for the contribution statuses "Cancel" and "Fail"
134 from core to the `contributioncancelactions` extension.
135
136 - **Move financial acl warning from FinancialType BAO to extension.
137 ([19283](https://github.com/civicrm/civicrm-core/pull/19283))**
138
139 Moves more code from core to the financial acls extension.
140
141 - **Add ContributionSoft v4 api
142 ([19083](https://github.com/civicrm/civicrm-core/pull/19083))**
143
144 Adds the Contribution Soft entity to APIv4.
145
146 - **Add v4 api for financial type, financial account
147 ([19282](https://github.com/civicrm/civicrm-core/pull/19282))**
148
149 Adds "Financial Type" and "Financial Account" entities to APIv4.
150
151 - **[APIv4] Permit using other SQL functions such as CONCAT within a
152 GROUP_CONCAT ([19255](https://github.com/civicrm/civicrm-core/pull/19255))**
153
154 Allows for SQL functions such as CONCAT to be used within a GROUP CONCAT,
155 this maybe useful for example when trying to get all the line items associated with a
156 contribution into one field.
157
158 - **Add default for boolean fields on financial_type
159 ([19281](https://github.com/civicrm/civicrm-core/pull/19281) and
160 [19335](https://github.com/civicrm/civicrm-core/pull/19335))**
161
162 Sets default values for the "Financial Type" fields 'is_active' and
163 'is_reserved'.
164
165 - **Improve logging when a contribution is created/updated
166 ([19252](https://github.com/civicrm/civicrm-core/pull/19252))**
167
168 Improves logging when a Contribution is created/updated to improve the
169 debugging experience.
170
171 ### CiviEvent
172
173 - **Add a unique event ID so we can match pre/post Insert/Update
174 ([19209](https://github.com/civicrm/civicrm-core/pull/19209))**
175
176 Makes it so developers can use the event ID to link pre/post Insert/Update
177 events for the same change.
178
179 ### Search Kit
180
181 - **Search kit: Rewrite input widget to support IN sets, relative dates, BETWEEN
182 groups, etc. ([19229](https://github.com/civicrm/civicrm-core/pull/19229))**
183
184 Overhauls the input widget for all fields in Search Kit so that they support:
185 IN, BETWEEN etc.
186
187 - **Search kit: Improve token support
188 ([19260](https://github.com/civicrm/civicrm-core/pull/19260))**
189
190 Adds a token selector to the Search Kit UI when configuring displays.
191
192 ### WordPress Integration
193
194 - **Enhance CiviCRM's integration in WordPress
195 ([231](https://github.com/civicrm/civicrm-wordpress/pull/231))**
196
197 Improves user experience for WordPress sites by introducing sub menu items to the
198 WordPress SideBar "CiviCRM" Menu item including:
199 - Integration Page
200 - Settings Page
201
202 ## <a name="bugs"></a>Bugs resolved
203
204 ### Core CiviCRM
205
206 - **jquery.validate.js update (includes CVE-2021-21252)
207 ([dev/core#2324](https://lab.civicrm.org/dev/core/-/issues/2324):
208 [19457](https://github.com/civicrm/civicrm-core/pull/19457))**
209
210 The jQuery Validate library contained a regular expression that was vulnerable
211 to ReDoS (Regular Expression Denial of Service).
212
213 ReDoS, or Regular Expression Denial of Service, is a vulnerability affecting
214 poorly constructed and potentially inefficient regular expressions which can
215 make them perform extremely badly given a creatively constructed input string.
216
217 This offers security hardening by preventing a user from entering a string
218 that could tie up their browser in validating it.
219
220 - **Fix updating custom field schema when toggling search or multiple
221 ([18939](https://github.com/civicrm/civicrm-core/pull/18939))**
222
223 Fixes a crash & possible data loss when changing a custom field of type
224 "Country" or "State/Province" from a multi-select to single or vice versa.
225
226 - **Quick fix on summary actions conflict
227 ([19067](https://github.com/civicrm/civicrm-core/pull/19067))**
228
229 If multiple extensions insert items with the same weight into the contact
230 summary actions drop-down, this ensures all menu items are displayed.
231
232 - **Greenwich: Fix Select2 free-tagging css bug
233 ([19225](https://github.com/civicrm/civicrm-core/pull/19225))**
234
235 Adds a CSS tweak to Greenwich that fixes a style conflict between Bootstrap
236 and Select2.
237
238 - **APIv4: Normalize option list descriptions as plain text
239 ([19237](https://github.com/civicrm/civicrm-core/pull/19237))**
240
241 Ensures the description field comes through as plain text when fetching option
242 lists from APIv4.
243
244 - **Unwanted mail blast sent by Scheduled Reminders (Work Towards
245 [dev/core#365](https://lab.civicrm.org/dev/core/-/issues/365):
246 [19068](https://github.com/civicrm/civicrm-core/pull/19068))**
247
248 This adds a `created_date` column to the `action_schedule` table. This is in
249 anticipation of a change to prevent a newly-created scheduled reminder from
250 triggering reminders that would be due to send prior to the creation of the
251 reminder.
252
253 - **Editing a smartgroup created through the search builder renders the new
254 block by force
255 ([dev/core#2270](https://lab.civicrm.org/dev/core/-/issues/2270):
256 [19257](https://github.com/civicrm/civicrm-core/pull/19257))**
257
258 Ensures the new record type and operator line only appear on the new search
259 builder form (not when editing existing smart groups via search builder).
260
261 - **Merge all members into the same household when using select fields fails
262 with a db error
263 ([dev/core#2272](https://lab.civicrm.org/dev/core/-/issues/2272):
264 [19268](https://github.com/civicrm/civicrm-core/pull/19268))**
265
266 Fixes a DB Error when exporting contacts using the "Merge Household members
267 into their Households" setting and selecting fields for export.
268
269 - **civicrm-setup - Error during, uh, let's call them unit tests, if db port
270 isn't specified
271 ([dev/core#2286](https://lab.civicrm.org/dev/core/-/issues/2286):
272 [19324](https://github.com/civicrm/civicrm-core/pull/19324))**
273
274 Avoids a notice of a missing db port during install.
275
276 - **Move non-compliant trigger_error out of logging
277 ([dev/core#2241](https://lab.civicrm.org/dev/core/-/issues/2241) and
278 [dev/core#2240](https://lab.civicrm.org/dev/core/-/issues/2240):
279 [19256](https://github.com/civicrm/civicrm-core/pull/19256))**
280
281 Makes CRM_Core_Error_Log more PSR3-compliant by not throwing errors itself,
282 and removing dependence on the presence of a .git folder.
283
284 - **Tabs at top of extension list are no longer tabs
285 ([dev/core#2233](https://lab.civicrm.org/dev/core/-/issues/2233):
286 [19138](https://github.com/civicrm/civicrm-core/pull/19138))**
287
288 Fixes broken tabs on the profiles administration page.
289
290 - **Weird "null" after adding new tagset
291 ([dev/core#2234](https://lab.civicrm.org/dev/core/-/issues/2234):
292 [19131](https://github.com/civicrm/civicrm-core/pull/19131))**
293
294 Ensures the word 'null' is not displayed after adding a new tagset.
295
296 - **Stop preventing test runs and dev sites from seeing PHP deprecation notices
297 ([19330](https://github.com/civicrm/civicrm-core/pull/19330))**
298
299 Ensures notices appear based on the sites error reporting settings.
300
301 - **Unable to delete file with brackets in filename via ckeditor/kcfinder
302 ([dev/user-interface#25](https://lab.civicrm.org/dev/user-interface/-/issues/25):
303 [304](https://github.com/civicrm/civicrm-packages/pull/304))**
304
305 - **Obsolete wkhtmltopdfPath causes hard fail in event registration due to
306 internal fatal error for the missing package
307 ([dev/core#2028](https://lab.civicrm.org/dev/core/-/issues/2028):
308 [19311](https://github.com/civicrm/civicrm-core/pull/19311))**
309
310 If the setting for the path to wkhtmltopdf is set, but nothing is there at
311 that path, a system check message will appear and PDF generation will fall
312 back to domPDF.
313
314 - **Contact import by CSV fails when string ends with "à"
315 ([dev/core#2127](https://lab.civicrm.org/dev/core/-/issues/2127):
316 [19241](https://github.com/civicrm/civicrm-core/pull/19241))**
317
318 In certain encodings, the &agrave; character can have the same byte as a
319 non-breaking space. This ensures that trimming non-breaking spaces does not
320 accidentally snag multi-byte characters that share the same `0xA0` byte.
321
322 - **Activity Summary report is missing pagination
323 ([dev/core#2174](https://lab.civicrm.org/dev/core/-/issues/2174):
324 [19146](https://github.com/civicrm/civicrm-core/pull/19146))**
325
326 - **Export crashes when many contacts share an address and are merged
327 ([dev/core#2211](https://lab.civicrm.org/dev/core/-/issues/2211):
328 [19216](https://github.com/civicrm/civicrm-core/pull/19216))**
329
330 - **Deprecation warnings are implemented backwards
331 ([dev/core#2240](https://lab.civicrm.org/dev/core/-/issues/2240):
332 [19266](https://github.com/civicrm/civicrm-core/pull/19266))**
333
334 - **CiviCRM Export, Saved Export Field Mapping that contains custom fields which
335 have been disabled or deleted are still loaded as "clear" values and cause the
336 export download to fail with "DB Error: no such field"
337 ([dev/core#2242](https://lab.civicrm.org/dev/core/-/issues/2242):
338 [19199](https://github.com/civicrm/civicrm-core/pull/19199))**
339
340 - **Inline email edit form fails to set is_bulkmail flag
341 ([dev/core#2254](https://lab.civicrm.org/dev/core/-/issues/2254):
342 [19224](https://github.com/civicrm/civicrm-core/pull/19224))**
343
344 - **Accept PHP memory_limit of -1 as meeting requirement
345 ([19340](https://github.com/civicrm/civicrm-core/pull/19340))**
346
347 - **Fix hook_civicrm_permission upgrade failure. Defer system-flush to
348 'upgrade.finish' phase.
349 ([19346](https://github.com/civicrm/civicrm-core/pull/19346))**
350
351 On Drupal and Backdrop sites, the system flush was triggered after each
352 incremental database update. It is now deferred until the end of the upgrade
353 process.
354
355 - **Fix APIv3 profile.getfields to return correctly keyed phone field
356 ([19321](https://github.com/civicrm/civicrm-core/pull/19321))**
357
358 - **Reports don't filter with empty custom fields
359 ([dev/core#2173](https://lab.civicrm.org/dev/core/-/issues/2173):
360 [19057](https://github.com/civicrm/civicrm-core/pull/19057))**
361
362 - **Fatal error on contribution summary report (and probably others) when adding
363 contacts to group
364 ([19250](https://github.com/civicrm/civicrm-core/pull/19250))**
365
366 This disables full group by mode for reports that are not optimized to work
367 with it.
368
369 - **Stop passing ids as reference
370 ([19204](https://github.com/civicrm/civicrm-core/pull/19204))**
371
372 - **Fix extensions tabs following deprecation of old tab code
373 ([19130](https://github.com/civicrm/civicrm-core/pull/19130))**
374
375 - **php 7.4 compatibility
376 ([19355](https://github.com/civicrm/civicrm-core/pull/19355),
377 [19350](https://github.com/civicrm/civicrm-core/pull/19350),
378 [19331](https://github.com/civicrm/civicrm-core/pull/19331),
379 [19353](https://github.com/civicrm/civicrm-core/pull/19353) and
380 [19354](https://github.com/civicrm/civicrm-core/pull/19354))**
381
382 Assorted changes to make the code compatible with php 7.4.
383
384 ### CiviCampaign
385
386 - **Menu links for Petitions, Surveys do not open correct tab
387 ([dev/core#2215](https://lab.civicrm.org/dev/core/-/issues/2215):
388 [19066](https://github.com/civicrm/civicrm-core/pull/19066))**
389
390 ### CiviCase
391
392 - **Add timeline dropdown on manage case no longer working
393 ([dev/core#2292](https://lab.civicrm.org/dev/core/-/issues/2292):
394 [19356](https://github.com/civicrm/civicrm-core/pull/19356))**
395
396 ### CiviContribute
397
398 - **Error creating thank you letter with multiple contributions
399 ([dev/core#2344](https://lab.civicrm.org/dev/core/-/issues/2344):
400 [19480](https://github.com/civicrm/civicrm-core/pull/19480),
401 [19481](https://github.com/civicrm/civicrm-core/pull/19481), and
402 [19482](https://github.com/civicrm/civicrm-core/pull/19482))**
403
404 This resolves an invalid currency error when generating a thank you letter
405 grouping multiple contributions per contact.
406
407 - **fix email receipt flag for recurring record
408 ([19299](https://github.com/civicrm/civicrm-core/pull/19299))**
409
410 Ensures receipts are not sent for each recurring payment.
411
412 - **Owner notification email sending before payment (Work Towards
413 [dev/core#521](https://lab.civicrm.org/dev/core/-/issues/521):
414 [19259](https://github.com/civicrm/civicrm-core/pull/19259))**
415
416 Code clean up towards ensuring that owner notification emails do not get sent
417 before the payment is made.
418
419 - **Fully remove contributionTypeID (Work Towards
420 [dev/financial#163](https://lab.civicrm.org/dev/financial/-/issues/163):
421 [19174](https://github.com/civicrm/civicrm-core/pull/19174) and
422 [19166](https://github.com/civicrm/civicrm-core/pull/19166))**
423
424 Work to remove legacy references to `contributionTypeID`.
425
426 - **Line items are added from default price set on recurring contributions for
427 financial types with tax accounts.
428 ([dev/financial#159](https://lab.civicrm.org/dev/financial/-/issues/159):
429 [19086](https://github.com/civicrm/civicrm-core/pull/19086))**
430
431 - **Allocation of "fee amount" is incorrect if fee is added after contribution
432 is created
433 ([dev/financial#160](https://lab.civicrm.org/dev/financial/-/issues/160):
434 [19152](https://github.com/civicrm/civicrm-core/pull/19152))**
435
436 - **Owner notification email sending every time the contribution is resaved
437 ([dev/core#537](https://lab.civicrm.org/dev/core/-/issues/537):
438 [19095](https://github.com/civicrm/civicrm-core/pull/19095))**
439
440 - **Default currency shown on invoices if payment is made with different
441 currency ([dev/core#2269](https://lab.civicrm.org/dev/core/-/issues/2269):
442 [19290](https://github.com/civicrm/civicrm-core/pull/19290))**
443
444 - **Contact type incorrectly set to Contribution due to 'Honoree Profile'
445 ([dev/core#2273](https://lab.civicrm.org/dev/core/-/issues/2273):
446 [19277](https://github.com/civicrm/civicrm-core/pull/19277))**
447
448 - **Disable frequency/interval fields if not required on backend contribution
449 forms ([17889](https://github.com/civicrm/civicrm-core/pull/17889))**
450
451 - **Fix Contribution.tpl mismatched ts.
452 ([19343](https://github.com/civicrm/civicrm-core/pull/19343))**
453
454 - **Fix preferred repeattransaction flow to correctly create the activity
455 contacts for the contribution
456 ([19200](https://github.com/civicrm/civicrm-core/pull/19200))**
457
458 - **Fix pledge on contribution page when the site has a Word Replacement for
459 "contribution" ([19238](https://github.com/civicrm/civicrm-core/pull/19238))**
460
461 - **Fix Contribution.create to not attempt to set contacts on activity update
462 ([19202](https://github.com/civicrm/civicrm-core/pull/19202))**
463
464 - **Allow Sendconfirmation api to override pay later receipt text
465 ([19129](https://github.com/civicrm/civicrm-core/pull/19129))**
466
467 ### CiviEvent
468
469 - **New Event using a template - clicking "Continue" doesn't save custom data
470 ([dev/core#766](https://lab.civicrm.org/dev/core/-/issues/766):
471 [19308](https://github.com/civicrm/civicrm-core/pull/19308))**
472
473 - **Use the proper content type for ICalendar link
474 ([dev/core#2282](https://lab.civicrm.org/dev/core/-/issues/2282):
475 [19316](https://github.com/civicrm/civicrm-core/pull/19316))**
476
477 The iCalendar feed link now specifies that it is `text/calendar` so it will be
478 handled correctly if the icon is clicked.
479
480 - **Import Participants fails
481 ([dev/core#2348](https://lab.civicrm.org/dev/core/-/issues/2348):
482 [19483](https://github.com/civicrm/civicrm-core/pull/19483))**
483
484 This was an unreleased regression in 5.34.beta.
485
486 - **Manage Event: avoid E_NOTICE in smarty
487 ([19137](https://github.com/civicrm/civicrm-core/pull/19137))**
488
489 - **Fatal error Incorrect datetime value: '0' for column 'transaction_date' when
490 editing a participant record and recording payment with no received date
491 ([dev/core#2251](https://lab.civicrm.org/dev/core/-/issues/2251):
492 [19307](https://github.com/civicrm/civicrm-core/pull/19307))**
493
494 - **Allow overriding participant_status_id in Order API
495 ([18096](https://github.com/civicrm/civicrm-core/pull/18096))**
496
497 ### CiviMail
498
499 - **Proposal replace PEAR mailer classes in core extension (Work Towards
500 [dev/core#2159](https://lab.civicrm.org/dev/core/-/issues/2159):
501 [18905](https://github.com/civicrm/civicrm-core/pull/18905))**
502
503 Handles exceptions in Mail:send class.
504
505 ### CiviMember
506
507 - **Simplify decision as to whether to use a pdf on membership emails
508 ([dev/financial#162](https://lab.civicrm.org/dev/financial/-/issues/162):
509 [19165](https://github.com/civicrm/civicrm-core/pull/19165))**
510
511 Makes decision to include a PDF in Membership emails dependent on settings
512 instead of whether the tax-amount is non-zero.
513
514 - **Membership renewal with 0 tax creating extra line item
515 ([dev/core#2024](https://lab.civicrm.org/dev/core/-/issues/2024):
516 [18838](https://github.com/civicrm/civicrm-core/pull/18838))**
517
518 ### CiviPledge
519
520 - **Rename PledgePayment create function
521 ([19298](https://github.com/civicrm/civicrm-core/pull/19298))**
522
523 Standardizes create function for a pledge payment.
524
525 - **Pledge: mark needed fields as required in schema
526 ([19309](https://github.com/civicrm/civicrm-core/pull/19309))**
527
528 ### Joomla Integration
529
530 - **distmaker - Don't require dummy config file for building Joomla
531 ([19357](https://github.com/civicrm/civicrm-core/pull/19357))**
532
533 ### WordPress Integration
534
535 - **Mailing default domain error: force a backend URL for WP
536 ([19319](https://github.com/civicrm/civicrm-core/pull/19319))**
537
538 - **Allow wp-cli upgrade command to proceed when there is only a single settings
539 file ([224](https://github.com/civicrm/civicrm-wordpress/pull/224))**
540
541 - **Prevent "add_action" from being called multiple times
542 ([dev/core#2217](https://lab.civicrm.org/dev/core/-/issues/2217):
543 [19061](https://github.com/civicrm/civicrm-core/pull/19061))**
544
545 ## <a name="misc"></a>Miscellany
546
547 - **Membership BAO - do not require date fields to be passed in on update
548 ([18794](https://github.com/civicrm/civicrm-core/pull/18794))**
549
550 - **Rename internal references to contributionTypeId
551 ([19169](https://github.com/civicrm/civicrm-core/pull/19169))**
552
553 - **Switch to non-static functions
554 ([19164](https://github.com/civicrm/civicrm-core/pull/19164))**
555
556 - **Duplicate processFormContribution only Membership form
557 ([19211](https://github.com/civicrm/civicrm-core/pull/19211))**
558
559 - **Only do cms account create from the one relevant place
560 ([19234](https://github.com/civicrm/civicrm-core/pull/19234))**
561
562 - **Convert previously shared function from static to non-static
563 ([19231](https://github.com/civicrm/civicrm-core/pull/19231))**
564
565 - **Fix Payment edit form to use Payment.cancel & payment.create api
566 ([19116](https://github.com/civicrm/civicrm-core/pull/19116))**
567
568 - **Fold deprecated function into the only function that calls it
569 ([19270](https://github.com/civicrm/civicrm-core/pull/19270))**
570
571 - **Use specific function when formatting money for a default
572 ([19285](https://github.com/civicrm/civicrm-core/pull/19285))**
573
574 - **Stop using refresh_date in civicrm_group table
575 ([19287](https://github.com/civicrm/civicrm-core/pull/19287))**
576
577 - **Simplify handling of ids in Authorize.net now that related_contact is no
578 longer used ([19273](https://github.com/civicrm/civicrm-core/pull/19273))**
579
580 - **CRM_Member_Form_MembershipRenewalTest - Started failing circa Jan 1, 2021
581 ([dev/core#2284](https://lab.civicrm.org/dev/core/-/issues/2284):
582 [19306](https://github.com/civicrm/civicrm-core/pull/19306))**
583
584 - **preliminary cleanup - extract a couple of functions in the payment processor
585 form for readability (Work Towards
586 [dev/financial#157](https://lab.civicrm.org/dev/financial/-/issues/157):
587 [19072](https://github.com/civicrm/civicrm-core/pull/19072))**
588
589 - **finish 'this round' of completeOrder cleanup (Work Towards
590 [dev/financial#152](https://lab.civicrm.org/dev/financial/-/issues/152):
591 [19017](https://github.com/civicrm/civicrm-core/pull/19017))**
592
593 - **Squash 2 if clauses into 1
594 ([19190](https://github.com/civicrm/civicrm-core/pull/19190))**
595
596 - **Clean up error handling in legacy functions in import parser
597 ([19160](https://github.com/civicrm/civicrm-core/pull/19160))**
598
599 - **Unused writeLegacyWarnings() in PropertyBag
600 ([19167](https://github.com/civicrm/civicrm-core/pull/19167))**
601
602 - **Update docs links
603 ([624](https://github.com/civicrm/civicrm-drupal/pull/624))**
604
605 - **Preliminary cleanup -remove unused params from function signature
606 ([19110](https://github.com/civicrm/civicrm-core/pull/19110))**
607
608 - **Minor code cleanup
609 ([19220](https://github.com/civicrm/civicrm-core/pull/19220))**
610
611 - **Move processConfirm function from Utils file back to form class
612 ([19212](https://github.com/civicrm/civicrm-core/pull/19212))**
613
614 - **Remove use of ignoreException from SMTP settings form
615 ([19315](https://github.com/civicrm/civicrm-core/pull/19315))**
616
617 - **Remove constant CIVICRM_MYSQL_STRICT
618 ([dev/core#2252](https://lab.civicrm.org/dev/core/-/issues/2252):
619 [19244](https://github.com/civicrm/civicrm-core/pull/19244))**
620
621 - **Removes default for is_active & is_reserved since they now have DB defaults
622 ([19296](https://github.com/civicrm/civicrm-core/pull/19296))**
623
624 - **Remove code to retrieve premium data
625 ([19262](https://github.com/civicrm/civicrm-core/pull/19262))**
626
627 - **Remove use of ignoreException on import form
628 ([19314](https://github.com/civicrm/civicrm-core/pull/19314))**
629
630 - **Remove unreachable customGroup section in online event receipt
631 ([19069](https://github.com/civicrm/civicrm-core/pull/19069))**
632
633 - **Remove never-used IMAP_XOAUTH2 option value before it gets more confusing
634 ([dev/core#2264](https://lab.civicrm.org/dev/core/-/issues/2264):
635 [19243](https://github.com/civicrm/civicrm-core/pull/19243))**
636
637 - **Remove the print_array modifier as it is now supplied in civicrm-core
638 ([314](https://github.com/civicrm/civicrm-packages/pull/314))**
639
640 - **Remove deprecated function
641 ([19213](https://github.com/civicrm/civicrm-core/pull/19213))**
642
643 - **Remove some more variable variables + some test cleanup
644 ([19208](https://github.com/civicrm/civicrm-core/pull/19208))**
645
646 - **Remove unreachable code.
647 ([19203](https://github.com/civicrm/civicrm-core/pull/19203))**
648
649 - **Remove some deprecated code chunks
650 ([19191](https://github.com/civicrm/civicrm-core/pull/19191))**
651
652 - **Remove extraneous elses
653 ([19182](https://github.com/civicrm/civicrm-core/pull/19182))**
654
655 - **Remove obsolete IF
656 ([19108](https://github.com/civicrm/civicrm-core/pull/19108))**
657
658 - **Remove extraneous elses
659 ([19171](https://github.com/civicrm/civicrm-core/pull/19171))**
660
661 - **Remove extraneous handling duplicated from createProfileContact
662 ([19109](https://github.com/civicrm/civicrm-core/pull/19109))**
663
664 - **Remove or hard-code variables from previously shared function
665 ([19227](https://github.com/civicrm/civicrm-core/pull/19227))**
666
667 - **Remove code deprecated +1 year ago - case_from_XX / case_to_XXX search
668 parameters ([19158](https://github.com/civicrm/civicrm-core/pull/19158))**
669
670 - **Remove extraneous elses
671 ([19168](https://github.com/civicrm/civicrm-core/pull/19168))**
672
673 - **Remove meaningless calls to ignoreException
674 ([19155](https://github.com/civicrm/civicrm-core/pull/19155))**
675
676 - **Remove some unused variables
677 ([19156](https://github.com/civicrm/civicrm-core/pull/19156))**
678
679 - **Remove functions from EmailCommon that were moved to the trait
680 ([19214](https://github.com/civicrm/civicrm-core/pull/19214))**
681
682 - **Remove duplicated tax assignments from copied code
683 ([19228](https://github.com/civicrm/civicrm-core/pull/19228))**
684
685 - **Remove unused tpl assigns
686 ([19226](https://github.com/civicrm/civicrm-core/pull/19226))**
687
688 - **Remove all handling related to pledge, cms user from newly separated
689 function ([19222](https://github.com/civicrm/civicrm-core/pull/19222))**
690
691 - **[REF] Extract determination of subscription status information
692 ([19193](https://github.com/civicrm/civicrm-core/pull/19193))**
693
694 - **[REF] extract getIdsOfMatchingContact
695 ([19172](https://github.com/civicrm/civicrm-core/pull/19172))**
696
697 - **[REF] Extract function to retrieve the membership labels.
698 ([18854](https://github.com/civicrm/civicrm-core/pull/18854))**
699
700 - **REF Allow for fields of type Blob or Mediumblob in Apiv4
701 ([19196](https://github.com/civicrm/civicrm-core/pull/19196))**
702
703 - **#REF Migrate the print_array smarty plugin from in packages into core…
704 ([19206](https://github.com/civicrm/civicrm-core/pull/19206))**
705
706 - **[REF] Move function to shared parent so MemberForm can use it too
707 ([19205](https://github.com/civicrm/civicrm-core/pull/19205))**
708
709 - **[REF] Relocate function from DeprecatedUtils to the class that actually
710 calls it ([19247](https://github.com/civicrm/civicrm-core/pull/19247))**
711
712 - **[REF] Clean up on $ids['contribution']
713 ([19207](https://github.com/civicrm/civicrm-core/pull/19207))**
714
715 - **[REF] Simplify membership form code towards simplifying BAO
716 ([18855](https://github.com/civicrm/civicrm-core/pull/18855))**
717
718 - **[REF] Convert previously shared function to non-static, remove unrelated
719 code ([19258](https://github.com/civicrm/civicrm-core/pull/19258))**
720
721 - **[REF] Move another deprecated function to the class that uses it
722 ([19253](https://github.com/civicrm/civicrm-core/pull/19253))**
723
724 - **[REF] Switch to using shared function to call deprecated function
725 ([19246](https://github.com/civicrm/civicrm-core/pull/19246))**
726
727 - **[REF] Relocate another function from DeprecatedUtils to the calling c…
728 ([19249](https://github.com/civicrm/civicrm-core/pull/19249))**
729
730 - **REF use addRadio function to add in the radio fields to these forms
731 ([19265](https://github.com/civicrm/civicrm-core/pull/19265))**
732
733 - **[REF] Relocate another deprecated utils function to the only class that
734 calls it. ([19248](https://github.com/civicrm/civicrm-core/pull/19248))**
735
736 - **[REF] Deprecate passing a blank currecny to CRM_Utils_Money::format a…
737 ([19099](https://github.com/civicrm/civicrm-core/pull/19099))**
738
739 - **[REF] Fix tax_amount to be consistent & load from the templateContribution
740 ([19274](https://github.com/civicrm/civicrm-core/pull/19274))**
741
742 - **[REF] Unshared another function back onto Membership_Form
743 ([19269](https://github.com/civicrm/civicrm-core/pull/19269))**
744
745 - **[REF] Unshare code to build an array of params for the recurring
746 contribution ([19271](https://github.com/civicrm/civicrm-core/pull/19271))**
747
748 - **[REF] Extract duplicate handling code
749 ([19103](https://github.com/civicrm/civicrm-core/pull/19103))**
750
751 - **[REF] Duplicate possibly-used parts of createProfileContact onto
752 Parser_Contact ([19098](https://github.com/civicrm/civicrm-core/pull/19098))**
753
754 - **[REF] use early return for errors rather than confusing assignment
755 ([19102](https://github.com/civicrm/civicrm-core/pull/19102))**
756
757 - **[REF] Remove unreachable code
758 ([19279](https://github.com/civicrm/civicrm-core/pull/19279))**
759
760 - **[REF] Minor cleanup, remove variable variables
761 ([19292](https://github.com/civicrm/civicrm-core/pull/19292))**
762
763 - **REF use centralised addRadio function more
764 ([19272](https://github.com/civicrm/civicrm-core/pull/19272))**
765
766 - **(REF) Civi\Test\Invasive - Add helper for checking protected/private members
767 ([19294](https://github.com/civicrm/civicrm-core/pull/19294))**
768
769 - **[REF] Move another deprecated function back to the only class that calls it
770 ([19300](https://github.com/civicrm/civicrm-core/pull/19300))**
771
772 - **[REF] Minor cleanup on contactGroup function
773 ([19286](https://github.com/civicrm/civicrm-core/pull/19286))**
774
775 - **[REF] Remove some variables not relevant to backoffice member form
776 ([19284](https://github.com/civicrm/civicrm-core/pull/19284))**
777
778 - **[REF] Rationalise financialType variable
779 ([19280](https://github.com/civicrm/civicrm-core/pull/19280))**
780
781 - **[REF] Extract code that assigns isPendingOutcome variable on thank yo…
782 ([19232](https://github.com/civicrm/civicrm-core/pull/19232))**
783
784 - **[REF] extract and share code to determine if required contact fields are
785 present ([19302](https://github.com/civicrm/civicrm-core/pull/19302))**
786
787 - **[REF] Fix import signature on activity parser, add preliminary test
788 ([19301](https://github.com/civicrm/civicrm-core/pull/19301))**
789
790 - **Add test to check pcp notification is sent
791 ([19117](https://github.com/civicrm/civicrm-core/pull/19117))**
792
793 - **Extend test to cover membership logs
794 ([19023](https://github.com/civicrm/civicrm-core/pull/19023))**
795
796 - **[tests] Fix join syntax conversion for APIv4 in v3 unit tests
797 ([19318](https://github.com/civicrm/civicrm-core/pull/19318))**
798
799 - **(NFC) DispatchPolicy - Add comments to docblock
800 ([19215](https://github.com/civicrm/civicrm-core/pull/19215))**
801
802 - **[NFC] Convert civi.tag-deprecated to use central function
803 ([19179](https://github.com/civicrm/civicrm-core/pull/19179))**
804
805 - **(NFC) Fix issue reporting link to go to the corresponding `core` project.
806 ([19240](https://github.com/civicrm/civicrm-core/pull/19240))**
807
808 - **[NFC] Cleanup in test class
809 ([19322](https://github.com/civicrm/civicrm-core/pull/19322))**
810
811 - **[NFC] Code reformat pledge class
812 ([19336](https://github.com/civicrm/civicrm-core/pull/19336))**
813
814 - **[NFC] Fix Contribution Soft Credit entity translation
815 ([19351](https://github.com/civicrm/civicrm-core/pull/19351) and
816 [19359](https://github.com/civicrm/civicrm-core/pull/19359))**
817
818 - **NFC When printing out the result of the correctly update in single va…
819 ([19198](https://github.com/civicrm/civicrm-core/pull/19198))**
820
821 - **[NFC] Update comments in CRM/Core/Key
822 ([19197](https://github.com/civicrm/civicrm-core/pull/19197))**
823
824 - **(POC#C) MembershipRenewalTest - Address assertions that started failing
825 circa Jan 1, 2021
826 ([19305](https://github.com/civicrm/civicrm-core/pull/19305))**
827
828 - **REF Bump the composer-compile-plugin version
829 ([19377](https://github.com/civicrm/civicrm-core/pull/19377))**
830
831 - **Test framework - API4 DateTest::testRelativeDateRanges will fail on the last
832 day of Jan, Mar, May, Aug, Oct
833 ([dev/core#2339](https://lab.civicrm.org/dev/core/-/issues/2339):
834 [19466](https://github.com/civicrm/civicrm-core/pull/19466))**
835
836 - **Fix for ReportTest when launching a pdf
837 ([19497](https://github.com/civicrm/civicrm-core/pull/19497))**
838
839 This fixes a unit test failure caused by a recent merge on testing Report
840 output.
841
842 - **Enotice fix ([19201](https://github.com/civicrm/civicrm-core/pull/19201))**
843
844 - **Fix notice error on using max() with only one variable
845 ([19149](https://github.com/civicrm/civicrm-core/pull/19149))**
846
847 - **Minor typos in schema files
848 ([19142](https://github.com/civicrm/civicrm-core/pull/19142))**
849
850 ## <a name="credits"></a>Credits
851
852 This release was developed by the following code authors:
853
854 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Francis Whittle;
855 Bluehorn Digital - Matt Glaman; CEDC - Laryn Kragt Bakker; Christian Wach;
856 CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Sunil Pawar, Yashodha Chaku;
857 CompuCorp - Ahed; Coop SymbioTIC - Mathieu Lutfy; Dave D; Fuzion - Jitendra
858 Purohit; iXiam - César Ramos, Vangelis Pantazis; Jarek; JMA Consulting - Monish
859 Deb, Seamus Lee; lucky091588; maynardsmith; Megaphone Technology Consulting -
860 Jon Goldberg; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire; Nishant
861 Bhorodia; Tadpole Collective - Kevin Cristiano; Wikimedia Foundation - Eileen
862 McNaughton
863
864 Most authors also reviewed code for this release; in addition, the following
865 reviewers contributed their comments:
866
867 Agileware - Justin Freeman; Artful Robot - Rich Lott; iXiam - Luciano Spiegel;
868 JMA Consulting - Joe Murray; Joinery - Allen Shaw; Nicol Wistreich; Semper IT -
869 Karin Gerritsen; Third Sector Design - Michael McAndrew
870
871 ## <a name="feedback"></a>Feedback
872
873 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
874 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
875 and contact `@agh1`.