5.53.0 release notes: added boilerplate
[civicrm-core.git] / release-notes / 5.22.0.md
1 # CiviCRM 5.22.0
2
3 Released February 5, 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 - **Field Names now Reserved Words in MySQL8
29 ([dev/core#1143](https://lab.civicrm.org/dev/core/issues/1143),
30 [dev/core#1144](https://lab.civicrm.org/dev/core/issues/1144) and
31 [dev/core#1480](https://lab.civicrm.org/dev/core/issues/1480):
32 [16179](https://github.com/civicrm/civicrm-core/pull/16179) and
33 [16182](https://github.com/civicrm/civicrm-core/pull/16182))**
34
35 Allows CiviCRM installations to run on MySQL8 and updates the test
36 infastructure to support MySQL8.
37
38 - **Add controlField metadata for ChainSelect fields
39 ([16164](https://github.com/civicrm/civicrm-core/pull/16164))**
40
41 Adds additional field metadata for state/province and county address fields
42 for the sake of autogenerated forms (afform).
43
44 - **Allow Angular modules to provide dynamic HTML snippets
45 ([16078](https://github.com/civicrm/civicrm-core/pull/16078))**
46
47 Supports afforms dynamic templates by allowing angular partials to be passed
48 as strings not just file paths.
49
50 - **Allow values to be passed to api4 GetFields
51 ([16154](https://github.com/civicrm/civicrm-core/pull/16154) and
52 [16162](https://github.com/civicrm/civicrm-core/pull/16162))**
53
54 Makes it possible to filter api4 `getFields` calls by contact
55 type, only returning custom fields appropriate to certain contact types.
56
57 - **Pass api4 getFields values through to getOptions
58 ([16168](https://github.com/civicrm/civicrm-core/pull/16168))**
59
60 Allows option filtering in api4, similar to how it works in api3.
61
62 - **Add api to check for missing indices
63 ([16145](https://github.com/civicrm/civicrm-core/pull/16145))**
64
65 Adds an api to check for missing mysql indices.
66
67 - **Add in Country and StateProvince APIv4 Entities
68 ([16110](https://github.com/civicrm/civicrm-core/pull/16110))**
69
70 Adds Country and StateProvince APIv4 Entities.
71
72 - **Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception
73 (Work Towards [dev/core#560](https://lab.civicrm.org/dev/core/issues/560):
74 [16141](https://github.com/civicrm/civicrm-core/pull/16141) and
75 [16067](https://github.com/civicrm/civicrm-core/pull/16067))**
76
77 Work towards throwing exceptions (instead of fatal errors).
78
79 - **Deadlocked queries cause an instant error for end-users, but are retried in
80 other circumstances (Work Towards
81 [dev/core#395](https://lab.civicrm.org/dev/core/issues/395):
82 [275](https://github.com/civicrm/civicrm-packages/pull/275) and
83 [16143](https://github.com/civicrm/civicrm-core/pull/16143))**
84
85 Improves logging from deadlocks specifically, before this change an error
86 recorded because of a deadlock query was recorded as "DBError::Unknown Error"
87 now they are recorded as "DBError::deadlock".
88
89 ### CiviContribute
90
91 - **We should give user feedback in case of a Payment Processor Exception
92 ([15676](https://github.com/civicrm/civicrm-core/pull/15676))**
93
94 Improves user experience when updating or canceling a recurring payment by
95 displaying any error message sent from the payment processor to the user.
96
97 - **Code cleanup Update Paypal invokeApi to only throw exceptions.
98 ([16072](https://github.com/civicrm/civicrm-core/pull/16072))**
99
100 Standardizes and improves error handling within PayPal.
101
102 ## <a name="bugs"></a>Bugs resolved
103
104 ### Core CiviCRM
105
106 - **CIVI-SA-2019-21 may lead to regressions when following typehints on
107 CRM_Core_BAO_Setting::setItem()
108 ([dev/core#1425](https://lab.civicrm.org/dev/core/issues/1425):
109 [15975](https://github.com/civicrm/civicrm-core/pull/15975))**
110
111 Deprecates old setItem & setOptionValue functions on
112 BAO_Setting to prevent regressions.
113
114 - **Deadlocks on acl_cache (Work Towards
115 [dev/core#1486](https://lab.civicrm.org/dev/core/issues/1486):
116 [16144](https://github.com/civicrm/civicrm-core/pull/16144))**
117
118 Adds an index to the `civicrm_acl_cache.modified_date` column to reduce
119 deadlocks when running the ACL Cache.
120
121 - **Port "+options" for constant-parameters to APIv4-PHP (Work Towards
122 [dev/core#1489](https://lab.civicrm.org/dev/core/issues/1489):
123 [16149](https://github.com/civicrm/civicrm-core/pull/16149))**
124
125 Ensures managed entities are not reconciled during upgrades.
126
127 - **Api4 - Fix auto serialize array input for CheckBox/MultiSelect fields
128 ([16152](https://github.com/civicrm/civicrm-core/pull/16152))**
129
130 In Api4, serialized fields should input/output as array data. This wasn't
131 working on the input side for custom entities. This fixes array input handling
132 and adds test coverage.
133
134 - **Fix output display in api4 explorer
135 ([16130](https://github.com/civicrm/civicrm-core/pull/16130))**
136
137 Ensures api4 explorer displays output with html entities properly.
138
139 - **Add in searchFieldMetadata for contact_tags, contact_type, group and
140 deleted_contacts fields for contribute, pledge searches
141 ([15942](https://github.com/civicrm/civicrm-core/pull/15942))**
142
143 Adds url support on search forms (other than the search builder) for the
144 following fields: `contact_tags`, `contact_type`, `group` and
145 `deleted_contacts`.
146
147 - **Update Smart Group form uses different labels for Group Title and Group
148 Description ([16042](https://github.com/civicrm/civicrm-core/pull/16042))**
149
150 Improves user experience by making the Smart Group field labels on the
151 Advanced Search from match the labels used on the Smart Group edit form.
152
153 - **Update Smart Group form unsets the existing Group Types
154 ([16043](https://github.com/civicrm/civicrm-core/pull/16043))**
155
156 Ensures the Mailing List group type remains set on the Update Smart Group
157 form.
158
159 - **loadServices: tighten up file match regex
160 ([16377](https://github.com/civicrm/civicrm-core/pull/16377))**
161
162 Ensures that CiviCRM code living under a path containing the characters 'php'
163 does not crash when loading services.
164
165 - **Activity type listing shows name instead label
166 ([dev/core#1470](https://lab.civicrm.org/dev/core/issues/1470):
167 [16094](https://github.com/civicrm/civicrm-core/pull/16094))**
168
169 - **Export doesn't work in Excel with diacritic chars
170 ([dev/core#1424](https://lab.civicrm.org/dev/core/issues/1424):
171 [16117](https://github.com/civicrm/civicrm-core/pull/16117) and
172 [15968](https://github.com/civicrm/civicrm-core/pull/15968))**
173
174 - **text missing from email column when custom search profile is used
175 in Advanced Search
176 ([dev/core#1474](https://lab.civicrm.org/dev/core/issues/1474):
177 [16101](https://github.com/civicrm/civicrm-core/pull/16101))**
178
179 - **Undefined offset and uninitialized string offset notices on upgrade to 5.21
180 ([dev/core#1555](https://lab.civicrm.org/dev/core/issues/1555):
181 [16417](https://github.com/civicrm/civicrm-core/pull/16417))**
182
183 ### CiviCase
184
185 - **Add case activity action links to activity report
186 ([15135](https://github.com/civicrm/civicrm-core/pull/15135))**
187
188 Ensures if an activity is linked to a case the "case activity" actions are
189 displayed instead of the standard activity actions (eg. move/copy to case
190 instead of file on case).
191
192 - **Activity Details CiviReport gives network error when paging to next page if
193 choose filter to include case activities
194 ([dev/core#1552](https://lab.civicrm.org/dev/core/issues/1552):
195 [16393](https://github.com/civicrm/civicrm-core/pull/16393))**
196
197 - **Case Detail 'Active Role?' filter excludes cases without relationships
198 ([dev/report#24](https://lab.civicrm.org/dev/report/issues/24):
199 [15972](https://github.com/civicrm/civicrm-core/pull/15972))**
200
201 - **Manager/Creator Information not being returned for case related contacts
202 when fetching Case Details
203 ([dev/core#1426](https://lab.civicrm.org/dev/core/issues/1426):
204 [16006](https://github.com/civicrm/civicrm-core/pull/16006))**
205
206 ### CiviContribute
207
208 - **Thousands-separator corrupts price field values (comma)
209 ([dev/core#1472](https://lab.civicrm.org/dev/core/issues/1472):
210 [16111](https://github.com/civicrm/civicrm-core/pull/16111))**
211
212 Fixes a bug where price options with thousands operators didn't submit
213 correctly.
214
215 - **E notice fix on Price set form
216 ([16096](https://github.com/civicrm/civicrm-core/pull/16096))**
217
218 Removes an e notice when submitting the price set form.
219
220 - **Advanced search fails to properly search for contribution source
221 ([dev/core#1468](https://lab.civicrm.org/dev/core/issues/1468):
222 [16083](https://github.com/civicrm/civicrm-core/pull/16083))**
223
224 ### CiviEvent
225
226 - **Event Participants actions (Print Name Badges, Export...) ignores search
227 criteria ([dev/core#1422](https://lab.civicrm.org/dev/core/issues/1422):
228 [16038](https://github.com/civicrm/civicrm-core/pull/16038))**
229
230 Ensures that the actions menu on the participant search form respects search
231 criteria.
232
233 ### CiviMail
234
235 - **Exception Malformed temp table category on New A/B Test
236 ([dev/core#1564](https://lab.civicrm.org/dev/core/issues/1564):
237 [16464](https://github.com/civicrm/civicrm-core/pull/16464))**
238
239 Fixes a regression in 5.21.2 where creating a new A/B Test resulted in a
240 session status Exception Malformed temp table.
241
242 ### CiviMember
243
244 - **Fix js error on choosing membership type
245 ([16058](https://github.com/civicrm/civicrm-core/pull/16058))**
246
247 Fixes a javascript error "Uncaught ReferenceError" when choosing a membership
248 type from the backend membership signup form.
249
250 ### Drupal Integration
251
252 - **Error when creating user record for Civi contact
253 ([dev/drupal#99](https://lab.civicrm.org/dev/drupal/issues/99):
254 [16157](https://github.com/civicrm/civicrm-core/pull/16157))**
255
256 Fixes an E-notice "Notice: Trying to get property 'id' of non-object in
257 CRM_Core_BAO_UFMatch::updateContactEmail() (line 449 of
258 /var/www/sitename/vendor/civicrm/civicrm-core/CRM/Core/BAO/UFMatch.php)." when
259 submitting the "Create User Record" form which can be found from the "Actions"
260 menu-button while viewing a CRM contact.
261
262 - **Missing address on `/user` when location type label differs from its name
263 ([dev/core#1473](https://lab.civicrm.org/dev/core/issues/1473):
264 [16100](https://github.com/civicrm/civicrm-core/pull/16100))**
265
266 ### Wordpress Integration
267
268 - **Fix basepage title for Yoast SEO when theme declares "title-tag" support
269 ([174](https://github.com/civicrm/civicrm-wordpress/pull/174))**
270
271 Fixes a bug for sites with the Yoast SEO plugin where the CiviCRM page title
272 was not being displayed properly. Specifically the Yoast SEO plugin
273 short-circuits the code in `wp_get_document_title()` by filtering via
274 `pre_get_document_title`. This means that the CiviCRM code to apply the
275 CiviCRM basepage title via the document_title_parts filter is never reached
276 and the basepage title does not reflect the CiviCRM content.
277
278 ## <a name="misc"></a>Miscellany
279
280 - **Fix typo, Mailign should be Mailing
281 ([16031](https://github.com/civicrm/civicrm-core/pull/16031))**
282
283 - **Switch static var to using Civi::statics
284 ([16138](https://github.com/civicrm/civicrm-core/pull/16138))**
285
286 - **Remove code to create a subscription history entry when a contact is created
287 ([dev/core#1482](https://lab.civicrm.org/dev/core/issues/1482):
288 [16125](https://github.com/civicrm/civicrm-core/pull/16125))**
289
290 - **Remove unnecessary query when updating org, if no name update.
291 ([16080](https://github.com/civicrm/civicrm-core/pull/16080))**
292
293 - **Remove unnecessary, and possibly incorrect query from email update
294 ([16079](https://github.com/civicrm/civicrm-core/pull/16079))**
295
296 - **Remove unneeded zendframwork/zend-validator and zendframwork/zend-stdlib
297 packages as not required by any other package
298 ([16112](https://github.com/civicrm/civicrm-core/pull/16112))**
299
300 - **Remove legacy_redirect_path handling
301 ([16134](https://github.com/civicrm/civicrm-core/pull/16134))**
302
303 - **Remove function marked as deprecated & unused by core nearly a year ago
304 ([16124](https://github.com/civicrm/civicrm-core/pull/16124))**
305
306 - **Remove vestige of apiv2
307 ([16115](https://github.com/civicrm/civicrm-core/pull/16115))**
308
309 - **Remove PEAR package Structures_Graph as there appears to be no use for it
310 ([279](https://github.com/civicrm/civicrm-packages/pull/279))**
311
312 - **Remove Net_UserAgent_Detect package
313 ([272](https://github.com/civicrm/civicrm-packages/pull/272))**
314
315 - **Paypal class cleanup
316 ([16088](https://github.com/civicrm/civicrm-core/pull/16088))**
317
318 - **2020 test fixes.
319 ([16172](https://github.com/civicrm/civicrm-core/pull/16172))**
320
321 - **Unit test for https://github.com/civicrm/civicrm-core/pull/16120
322 ([16127](https://github.com/civicrm/civicrm-core/pull/16127))**
323
324 - **Update unit tests to use name spaced format of phpunit test classes for
325 phpunit6 compatability
326 ([594](https://github.com/civicrm/civicrm-drupal/pull/594))**
327
328 - **Update to use the namespaced version of the PHPUnit test classes as this
329 will work for phpunit6 going forward as well as phpunit5
330 ([175](https://github.com/civicrm/civicrm-wordpress/pull/175))**
331
332 - **Update PHPUnit Test class declarations to use namespaced format for phpunit6
333 compatability ([108](https://github.com/civicrm/civicrm-backdrop/pull/108))**
334
335 - **[REF] Minor cleanup - declare exceptions, use single quotes, strict
336 comparison ([16137](https://github.com/civicrm/civicrm-core/pull/16137))**
337
338 - **[REF] remove CRM_Core_Error check
339 ([16136](https://github.com/civicrm/civicrm-core/pull/16136))**
340
341 - **[REF] Convert more petition signature fatals to status bounce
342 ([16075](https://github.com/civicrm/civicrm-core/pull/16075))**
343
344 - **[REF] Switch CRM_Utils_Error::fatal calls for CRM_Core_Exception in Grant.
345 utils, bin/ and Civi/Angular/ folders
346 ([16109](https://github.com/civicrm/civicrm-core/pull/16109))**
347
348 - **[REF] Minor simplification on additional_participants checks
349 ([16056](https://github.com/civicrm/civicrm-core/pull/16056))**
350
351 - **[REF] Refactor Contact Search form to use standardised getSortID function
352 ([16054](https://github.com/civicrm/civicrm-core/pull/16054))**
353
354 - **[REF] Refactor Activity Search to use parent getSortID function
355 ([16053](https://github.com/civicrm/civicrm-core/pull/16053))**
356
357 - **[REF] Refactor Campaign Search form to use standardised getSortID function
358 ([16055](https://github.com/civicrm/civicrm-core/pull/16055))**
359
360 - **[REF] Move wrangling of Front end form contribution param for autoRenew back
361 to form ([15927](https://github.com/civicrm/civicrm-core/pull/15927))**
362
363 - **[REF] Replace Deprecated function CRM_Core_BAO_Setting::setItem with the
364 relevant Civi::contactSettings function
365 ([16044](https://github.com/civicrm/civicrm-core/pull/16044))**
366
367 - **[REF] remove unused from getACLRoles
368 ([16180](https://github.com/civicrm/civicrm-core/pull/16180))**
369
370 - **[REF] simplify recordAdjustedAmt function
371 ([16135](https://github.com/civicrm/civicrm-core/pull/16135))**
372
373 - **[REF] extract member form batch update & add test
374 ([16151](https://github.com/civicrm/civicrm-core/pull/16151))**
375
376 - **[REF] Remove unused params from function signature for getACLs
377 ([16175](https://github.com/civicrm/civicrm-core/pull/16175))**
378
379 - **[REF] step towards wiping out $ids array in membership bao functions
380 ([16132](https://github.com/civicrm/civicrm-core/pull/16132))**
381
382 - **[Ref] improve readability of acl code
383 ([16131](https://github.com/civicrm/civicrm-core/pull/16131))**
384
385 - **[Ref] Remove php4 support from BAO_Acl class
386 ([16119](https://github.com/civicrm/civicrm-core/pull/16119))**
387
388 - **(NFC) Civi, CRM, tests - Update for
389 Drupal.Commenting.VariableComment.IncorrectVarType
390 ([16384](https://github.com/civicrm/civicrm-core/pull/16384))**
391
392 - **[NFC] Test clean up.
393 ([16133](https://github.com/civicrm/civicrm-core/pull/16133))**
394
395 - **[NFC] cleanup to declared exceptions, quotes, strict mode.
396 ([16114](https://github.com/civicrm/civicrm-core/pull/16114))**
397
398 - **[NFC] Declare exceptions, use single quotes where possible, use strict
399 comparison ([16142](https://github.com/civicrm/civicrm-core/pull/16142))**
400
401 - **[NFC] Add in unit test for dev/core#1460
402 ([16063](https://github.com/civicrm/civicrm-core/pull/16063))**
403
404 - **[NFC] code cleanup
405 ([16050](https://github.com/civicrm/civicrm-core/pull/16050))**
406
407 - **[NFC] Add in a unit test of passing an array into the Civi::settings set
408 facade and getting it back
409 ([16045](https://github.com/civicrm/civicrm-core/pull/16045))**
410
411 - **[NFC] Add test on buildMembershipTypeValues & cleanup class
412 ([16167](https://github.com/civicrm/civicrm-core/pull/16167))**
413
414 - **[NFC] Re-generate DAOs
415 ([16178](https://github.com/civicrm/civicrm-core/pull/16178))**
416
417 - **[NFC] Extract duplicated code lines in test
418 ([16165](https://github.com/civicrm/civicrm-core/pull/16165))**
419
420 - **[NFC] Clean up unit test
421 ([16163](https://github.com/civicrm/civicrm-core/pull/16163))**
422
423 - **[NFC] If statement is always true
424 ([16122](https://github.com/civicrm/civicrm-core/pull/16122))**
425
426 ## <a name="credits"></a>Credits
427
428 This release was developed by the following code authors:
429
430 AGH Strategies - Andie Hunt; Agileware - Justin Freeman; Australian Greens -
431 Seamus Lee; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM -
432 Coleman Watts, Tim Otten; Coop SymbioTIC - Mathieu Lutfy; Dave D; Fuzion -
433 Jitendra Purohit; MJW Consulting - Matthew Wire; Squiffle Consulting - Aidan
434 Saunders; Wikimedia Foundation - Eileen McNaughton
435
436 Most authors also reviewed code for this release; in addition, the following
437 reviewers contributed their comments:
438
439 AGH Strategies - Alice Frumin; Artful Robot - Rich Lott; CiviDesk - Yashodha
440 Chaku; Joinery - Allen Shaw; Megaphone Technology Consulting - Jon Goldberg;
441 Tadpole Collective - Kevin Cristiano;
442
443 ## <a name="feedback"></a>Feedback
444
445 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
446 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
447 and contact `@agh1`.