3 Released October 7, 2020
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 - **APIv4 Explorer: Generate short cv code
29 ([18089](https://github.com/civicrm/civicrm-core/pull/18089))**
31 Improves the APIv4 Explorer user interface by including cv code to run the API
34 - **Optimise proximity custom search, by reducing addGeocodingData fn call
35 ([18248](https://github.com/civicrm/civicrm-core/pull/18248))**
37 Improves performance of the proximity custom search.
39 - **Support more table names for utf8mb4 conversions and database name
40 ([18249](https://github.com/civicrm/civicrm-core/pull/18249))**
42 Improves the System.utf8conversion API so that one can specify table patterns
45 - **distmaker - Autogenerate civicrm-*-patchset.tar.gz
46 ([18229](https://github.com/civicrm/civicrm-core/pull/18229))**
48 Adds a script to autogenerate `civicrm-*-patchset.tar.gz` instead of having to
49 manually generate it every release.
51 - **Finish allowing use of SSL to connect to database
52 (Work Towards [dev/core#1926](https://lab.civicrm.org/dev/core/-/issues/1926):
53 [18095](https://github.com/civicrm/civicrm-core/pull/18095))**
55 Code cleanup towards the goal of allowing SSL database connections.
57 - **Profile settings - Add new contacts to a Group? is misleading
58 ([dev/core#1950](https://lab.civicrm.org/dev/core/-/issues/1950):
59 [18153](https://github.com/civicrm/civicrm-core/pull/18153))**
61 Improves user experience by editing the help text and description for the "Add
62 new contacts to a Group?" setting.
64 - **API4: Inconsistent behavior on Role ID
65 ([dev/event#37](https://lab.civicrm.org/dev/event/-/issues/37):
66 [18285](https://github.com/civicrm/civicrm-core/pull/18285))**
68 Allows searching within arrays or serialized strings via APIv4 (and the new
71 - **APIv4 - Fix output of CustomValue create/save/update
72 ([18195](https://github.com/civicrm/civicrm-core/pull/18195))**
74 Improves APIv4 output when saving custom pseudo-entities so that it outputs
75 the values saved instead of `[is_error => 0, result => true]`.
77 - **Add ability to enable query logging per process
78 ([18335](https://github.com/civicrm/civicrm-core/pull/18335))**
80 Makes it possible to enable logging by process as opposed to all processes or
83 - **Expose field label to APIv4 and Search creator
84 ([18255](https://github.com/civicrm/civicrm-core/pull/18255) and
85 [18256](https://github.com/civicrm/civicrm-core/pull/18256))**
87 Progress towards codifying the difference between a field's title and
91 - expose labels to APIv4
92 - switch to using labels in the new search extension.
93 - separates titles from labels in exportable fields.
94 - attempts to clarify the difference between titles and labels in the
95 getfields description as:
96 - title: "Technical name of field, shown in API and exports"
97 - label: "User-facing label, shown on most forms and displays"
99 - **Metadata fix - phone_type_id, location_type_id, gender_id
100 ([18114](https://github.com/civicrm/civicrm-core/pull/18114))**
102 Improves metadata for various fields to align with new title and label
105 - **CRM_Utils_VersionCheck - respect force param
106 ([18183](https://github.com/civicrm/civicrm-core/pull/18183))**
108 Makes the versionCheck job more consistent with other checks by respecting
109 APIv4's "force" setting to run even if disabled.
111 - **Add Serialize key to payment_processor field for Event & Contribution Page
112 ([18110](https://github.com/civicrm/civicrm-core/pull/18110))**
114 Use metatdata rather than code handling to save array of processors. This
115 makes it so that the DAO can handle arrays if it knows the format.
119 - **Shell Financial ACLs extension
120 ([18269](https://github.com/civicrm/civicrm-core/pull/18269))**
122 Begins work to move Financial ACL code into an extension.
124 - **Add Line Item v4 API (Work Towards
125 [dev/core#1980](https://lab.civicrm.org/dev/core/-/issues/1980):
126 [18275](https://github.com/civicrm/civicrm-core/pull/18275) and
127 [18293](https://github.com/civicrm/civicrm-core/pull/18293))**
129 Extends permission handling for LineItem delete and LineItem ACLs from APIv3 to
130 to APIv4 by moving it to the `financialacls` extension.
132 - **Book keeping Report : Add Time field for Transaction Date and Receive Date
133 field ([dev/report#47](https://lab.civicrm.org/dev/report/-/issues/47):
134 [18268](https://github.com/civicrm/civicrm-core/pull/18268))**
136 Adds a time field to the "Transaction Date" and "Receive Date" filters on the
141 - **Wrap "not you" message in crmRegion
142 ([18236](https://github.com/civicrm/civicrm-core/pull/18236))**
144 Wraps the "Not you, do you want to register for someone else" message in a
145 crmRegion so that it can be removed/replaced by the buildForm hook.
149 - **Add new columns to mailing summary report
150 ([dev/core#1944](https://lab.civicrm.org/dev/core/-/issues/1944):
151 [18132](https://github.com/civicrm/civicrm-core/pull/18132))**
153 Adds two new columns to the mailing summary report: "Sender Name" and "Sender
156 - **Add disable_smarty option to MessageTemplate.send API
157 ([18118](https://github.com/civicrm/civicrm-core/pull/18118))**
159 Improves the `MessageTemplate.send` API by adding a new optional parameter
160 "disable_smarty", when "disable_smarty" is set to true smarty is not applied
161 to the contents of the message.
163 ### WordPress Integration
165 - **Switch WP over to new installer
166 ([dev/wordpress#37](https://lab.civicrm.org/dev/wordpress/-/issues/37):
167 [215](https://github.com/civicrm/civicrm-wordpress/pull/215))**
169 Switch to new CiviCRM Installer.
171 ### Drupal Integration
173 - **Allow for the setting of an additional constant CIVICRM_DRUSH_DSN
174 ([613](https://github.com/civicrm/civicrm-drupal/pull/613))**
176 Allows sites to configure CIVICRM_DRUSH_DSN for drush to use to set up
177 database connections.
179 ## <a name="bugs"></a>Bugs resolved
183 - **Increase size of mysql field in export table for column with
184 CRM_Utils_Type::T_INT type
185 ([dev/core#1661](https://lab.civicrm.org/dev/core/-/issues/1661):
186 [17956](https://github.com/civicrm/civicrm-core/pull/17956))**
188 Fixes some data too long for column errors when exporting.
190 - **Improve robustness of api/class.api.php
191 ([18283](https://github.com/civicrm/civicrm-core/pull/18283))**
193 Ensures that the API mode is set to "local" when an empty string is passed
196 - **add serialize data to actionschedule
197 ([18289](https://github.com/civicrm/civicrm-core/pull/18289))**
199 Ensures one can create a scheduled reminder via the API that triggers on two
202 - **API - Add upgrade-safe checks to ensure table exists before reading
203 ([18135](https://github.com/civicrm/civicrm-core/pull/18135))**
205 Adds efficient checks into the API (v3 and v4) to ensure a DAO table
206 exists before trying to read from it. This prevents hard-crashes in the UI
207 when there are pending updates (or during the upgrade process itself),
209 - **DB_DataObject - Read CIVICRM_DEBUG_LOG_QUERY correctly
210 ([305](https://github.com/civicrm/civicrm-packages/pull/305))**
212 Makes The value of `CIVICRM_DEBUG_LOG_QUERY` TRUE-ish or FALSE-ish instead of
213 considering any value true.
215 - **APIv4 Explorer - Fix possible undefined index
216 ([18093](https://github.com/civicrm/civicrm-core/pull/18093))**
218 - **Option value cache key missing domain ID can result in wrong value retrieved
219 for domain ([dev/core#1971](https://lab.civicrm.org/dev/core/-/issues/1971):
220 [18252](https://github.com/civicrm/civicrm-core/pull/18252))**
222 - **Upgrade screen - show success instead of error if already upgraded
223 ([18181](https://github.com/civicrm/civicrm-core/pull/18181))**
225 - **trim white space when checking dedupe
226 ([18234](https://github.com/civicrm/civicrm-core/pull/18234))**
230 - **Fix js for case type status change on load
231 ([18254](https://github.com/civicrm/civicrm-core/pull/18254))**
235 - **Clean money for non-deductible amount
236 ([18300](https://github.com/civicrm/civicrm-core/pull/18300))**
238 Ensures that the Contribution API cleans data entered into the "non-deductible
239 amount" field the same way it cleans the other money fields.
241 - **Processors - remove gross_amount param from processors
242 ([18177](https://github.com/civicrm/civicrm-core/pull/18177))**
244 The gross_amount param is returned by a bunch of processors but is not used so
247 - **{contribution.receipt_date} token does not use any CiviCRM date formatter,
248 output in YYYY-MM-DD HH:MM:SS format and {contribution.receive_date} also uses
249 a non-standard format
250 ([18176](https://github.com/civicrm/civicrm-core/pull/18176))**
252 - **Fix PHP notice on contribution page
253 ([18116](https://github.com/civicrm/civicrm-core/pull/18116))**
255 - **E_NOTICE on contribution page widget tab
256 ([18189](https://github.com/civicrm/civicrm-core/pull/18189))**
258 - **change payment instrument when pending payment paid through credit card
259 ([dev/core#912](https://lab.civicrm.org/dev/core/-/issues/912):
260 [18266](https://github.com/civicrm/civicrm-core/pull/18266))**
264 - **Allow the "Cancellation or transfer time limit (hours)" to be negative
265 ([dev/event#34](https://lab.civicrm.org/dev/event/-/issues/34):
266 [18067](https://github.com/civicrm/civicrm-core/pull/18067))**
268 Ensures that entering a negative value into "Cancellation or transfer time
269 limit (hours)" saves correctly and works as expected.
271 - **Batch Update via Profile does not supply data for editing when custom fields
272 created after participant added to event
273 ([18235](https://github.com/civicrm/civicrm-core/pull/18235))**
275 - **E_WARNING when saving event fees admin page if there's no discounts set
276 ([18169](https://github.com/civicrm/civicrm-core/pull/18169))**
280 - **Unexpected behavior from api.MailingEventSubscribe.create
281 (Work Towards [dev/mail#24](https://lab.civicrm.org/dev/mail/-/issues/24):
282 [18325](https://github.com/civicrm/civicrm-core/pull/18325))**
284 Fixes labels for APIv3 `MailingEventSubscribe.create` so that they accurately
285 represent the behavior (unsubscribe v subscribe).
287 - **Mass SMS: Limit group selection to mailing groups
288 ([18154](https://github.com/civicrm/civicrm-core/pull/18154))**
290 Ensures that the fields "Include Groups" and "Exclude Groups" on the "New SMS" form
291 only list groups of the type "Mailing List".
293 ### Drupal Integration
295 - **Fix : Enable Drupal Watchdog Logging for Drupal 8
296 ([dev/core#1943](https://lab.civicrm.org/dev/core/-/issues/1943):
297 [18115](https://github.com/civicrm/civicrm-core/pull/18115))**
299 Ensure the setting `Enable Drupal Watchdog Logging` works on Drupal 8 sites.
301 ### WordPress Integration
303 - **Check if $post defined before trying to use its field values.
304 ([18168](https://github.com/civicrm/civicrm-core/pull/18168))**
306 This fixes php notices like `PHP Notice: Trying to get property 'post_name'
307 of non-object in <webroot
308 path>\wp-content\plugins\civicrm\civicrm\CRM\Utils\System\WordPress.php on
311 ## <a name="misc"></a>Miscellany
313 - **Fix regen and update civicrm_generated
314 ([18273](https://github.com/civicrm/civicrm-core/pull/18273))**
316 - **Do not pass by reference for createRelatedMemberships
317 ([18243](https://github.com/civicrm/civicrm-core/pull/18243))**
319 - **Typo in groups dropdown on scheduled reminders admin form
320 ([dev/core#1956](https://lab.civicrm.org/dev/core/-/issues/1956):
321 [18323](https://github.com/civicrm/civicrm-core/pull/18323))**
323 - **Replace CRM_Utils_Array::value in contribution/confirm and bao/membership
324 ([18157](https://github.com/civicrm/civicrm-core/pull/18157))**
326 - **Cleanup contactID variables in event/contribution register buildQuickForm
327 ([18208](https://github.com/civicrm/civicrm-core/pull/18208))**
329 - **Use already determined value for contributionRecurID
330 ([18265](https://github.com/civicrm/civicrm-core/pull/18265))**
332 - **Minor code cleanup to Order API
333 ([18217](https://github.com/civicrm/civicrm-core/pull/18217))**
335 - **CodeGen - Add use statement to extensions DAO files
336 ([18094](https://github.com/civicrm/civicrm-core/pull/18094))**
338 - **Use more appropriate money format function
339 ([18151](https://github.com/civicrm/civicrm-core/pull/18151))**
341 - **Metadata fix in activity search
342 ([18216](https://github.com/civicrm/civicrm-core/pull/18216))**
344 - **Replace deprecated Drupal 8 constants
345 ([18240](https://github.com/civicrm/civicrm-core/pull/18240))**
347 - **Spelling mistake "separator" not "seperator"
348 ([18238](https://github.com/civicrm/civicrm-core/pull/18238))**
350 - **Remove unused variables from repeatTransaction
351 ([18209](https://github.com/civicrm/civicrm-core/pull/18209))**
353 - **Remove first_contribution key from repeattransaction
354 ([18197](https://github.com/civicrm/civicrm-core/pull/18197))**
356 - **Remove unnecessary transformation of upgrade msg severity
357 ([18182](https://github.com/civicrm/civicrm-core/pull/18182))**
359 - **Remove old dropped items from the schema xml
360 ([18244](https://github.com/civicrm/civicrm-core/pull/18244))**
362 - **Remove 1 of 2 remaining places where relatedObjects is called in
363 completeOrder ([18257](https://github.com/civicrm/civicrm-core/pull/18257))**
365 - **Remove last pass-by-reference in completeOrder signature
366 ([18258](https://github.com/civicrm/civicrm-core/pull/18258))**
368 - **Remove legacy handling for 'fixing' line_item.entity_id
369 ([18155](https://github.com/civicrm/civicrm-core/pull/18155))**
371 - **Remove deprecated code ids['userId']
372 ([18156](https://github.com/civicrm/civicrm-core/pull/18156))**
374 - **Remove 'hack' that overwrites result of searchColumns hook in mailings list
375 ([18237](https://github.com/civicrm/civicrm-core/pull/18237))**
377 - **Remove unused variable
378 ([18108](https://github.com/civicrm/civicrm-core/pull/18108))**
380 - **Remove handling for 4.2 DBs
381 ([612](https://github.com/civicrm/civicrm-drupal/pull/612))**
383 - **Remove ref to logging time
384 ([18221](https://github.com/civicrm/civicrm-core/pull/18221))**
386 - **Remove 2019 deprecated function
387 ([18242](https://github.com/civicrm/civicrm-core/pull/18242))**
389 - **remove dropped tables for activity target and assignment
390 ([18280](https://github.com/civicrm/civicrm-core/pull/18280))**
392 - **Deprecate 'trapException' in DAO::executeQuery
393 ([18138](https://github.com/civicrm/civicrm-core/pull/18138))**
395 - **Deprecate/remove unused checkVersion() functions
396 ([18134](https://github.com/civicrm/civicrm-core/pull/18134))**
398 - **[REF] Ensure that the form param _id is set when adding a new group w…
399 ([18250](https://github.com/civicrm/civicrm-core/pull/18250))**
401 - **[REF] Update recent replacement for CRM_Utils_Array::value
402 ([18172](https://github.com/civicrm/civicrm-core/pull/18172))**
404 - **[REF] Remove usages of CRM_Utils_Money::format that pass in a blank s…
405 ([18142](https://github.com/civicrm/civicrm-core/pull/18142))**
407 - **[REF] Move isSSLDSN() function to avoid potential problems
408 ([18131](https://github.com/civicrm/civicrm-core/pull/18131))**
410 - **(REF) CRM_Core_Region - Remove unused bits
411 ([18139](https://github.com/civicrm/civicrm-core/pull/18139))**
413 - **[REF] Move Auto DSN Switching into a core function
414 ([18270](https://github.com/civicrm/civicrm-core/pull/18270))**
416 - **[REF] Remove DB Package as it is now deployed using composer
417 ([302](https://github.com/civicrm/civicrm-packages/pull/302))**
419 - **[REF] Deploy Pear DB package using composer
420 ([18027](https://github.com/civicrm/civicrm-core/pull/18027))**
422 - **[REF] Update subtypeInfo function to leverage getAllContactTypes
423 ([17934](https://github.com/civicrm/civicrm-core/pull/17934))**
425 - **[REF] Fix metadata label for contribution_page_id
426 ([18047](https://github.com/civicrm/civicrm-core/pull/18047))**
428 - **REF Remove unused passbyreference and var from ipn_process_transaction
429 ([18311](https://github.com/civicrm/civicrm-core/pull/18311))**
431 - **[REF] Clean up return variables on updateContributionStatus,
432 updatePendingOnlineContribution
433 ([18303](https://github.com/civicrm/civicrm-core/pull/18303))**
435 - **[REF] Move function to delete merged contacts to the Merger class and
436 include all instances of the pair
437 ([17980](https://github.com/civicrm/civicrm-core/pull/17980))**
439 - **[REF] Remove most interaction with $objects in completeOrder
440 ([18315](https://github.com/civicrm/civicrm-core/pull/18315))**
442 - **[REF] Fix financial item allocation of negative payments against completed
443 payments ([17810](https://github.com/civicrm/civicrm-core/pull/17810))**
445 - **[REF] Separate and move line-item specific portion of checkTaxAmount to
446 LineItem api ([18294](https://github.com/civicrm/civicrm-core/pull/18294))**
448 - **[REF] [test] Slight increase in test cover & make functions more re-usable
449 ([18291](https://github.com/civicrm/civicrm-core/pull/18291))**
451 - **[REF] simplify retrieval of existing membership on membership renewal form
452 ([18296](https://github.com/civicrm/civicrm-core/pull/18296))**
454 - **[REF] Extract function to get locations to merge, rename 'operation' …
455 ([17991](https://github.com/civicrm/civicrm-core/pull/17991))**
457 - **[REF] Deprecate unused SQL temptable functions
458 ([18171](https://github.com/civicrm/civicrm-core/pull/18171))**
460 - **Minor cleanup in test class
461 ([18170](https://github.com/civicrm/civicrm-core/pull/18170))**
463 - **Add line item acl tests
464 ([18274](https://github.com/civicrm/civicrm-core/pull/18274))**
466 - **Fix test set up to call Order.create to create the correct line items
467 ([18279](https://github.com/civicrm/civicrm-core/pull/18279))**
469 - **Test & remove handling for max_related in renewal form
470 ([18295](https://github.com/civicrm/civicrm-core/pull/18295))**
472 - **Add test to check, remove unnecessary lines
473 ([18292](https://github.com/civicrm/civicrm-core/pull/18292))**
475 - **[Test framework] - Remove test for deprecated way of calling hook invoke
476 ([18136](https://github.com/civicrm/civicrm-core/pull/18136))**
478 - **(NFC) Update various DAO checksums
479 ([18184](https://github.com/civicrm/civicrm-core/pull/18184))**
481 - **[NFC] Add code comments about hidden but still used buttons
482 ([18119](https://github.com/civicrm/civicrm-core/pull/18119))**
484 - **[NFC] [Test] Initial testing on event payment forms.
485 ([18112](https://github.com/civicrm/civicrm-core/pull/18112))**
487 - **[NFC] Update locale over-ride documentation to mention that it is mos…
488 ([17919](https://github.com/civicrm/civicrm-core/pull/17919))**
490 - **(NFC) Add some tests to the `resources` group
491 ([18211](https://github.com/civicrm/civicrm-core/pull/18211))**
493 - **[NFC] Some DAO checksums not updated
494 ([18239](https://github.com/civicrm/civicrm-core/pull/18239))**
496 - **[NFC] Array formatting
497 ([18109](https://github.com/civicrm/civicrm-core/pull/18109))**
499 - **[NFC] IDE cleanup - arrays, single quotes
500 ([614](https://github.com/civicrm/civicrm-drupal/pull/614))**
502 ## <a name="credits"></a>Credits
504 This release was developed by the following code authors:
506 AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Justin Freeman, Pengyi
507 Zhang; Circle Interactive - Pradeep Nayak; CiviCRM - Coleman Watts, Tim Otten;
508 CiviDesk - Sunil Pawar, Yashodha Chaku; Dave D; Flinders University of South
509 Australia - Tom Anderson; JMA Consulting - Monish Deb, Seamus Lee; John
510 Kingsnorth; Lemniscus - Noah Miller; Lighthouse Consulting and Design - Brian
511 Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MillerTech - Chamil
512 Wijesooriya; MJW Consulting - Matthew Wire; Squiffle Consulting - Aidan
513 Saunders; Wikimedia Foundation - Eileen McNaughton, Maggie Epps; Wildsight -
516 Most authors also reviewed code for this release; in addition, the following
517 reviewers contributed their comments:
519 Artful Robot - Rich Lott; Christian Wach; Circle Interactive - Martin Castle;
520 Dave D; Fuzion - Jitendra Purohit; Greenpeace Central and Eastern Europe -
521 Patrick Figel; MJCO - Mikey O'Toole; Semper IT - Karin Gerritsen; Squiffle
522 Consulting - Aidan Saunders; Tadpole Collective - Kevin Cristiano;
524 ## <a name="feedback"></a>Feedback
526 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
527 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm