Merge pull request #18332 from totten/5.29-norm-basepage
[civicrm-core.git] / release-notes / 5.29.0.md
1 # CiviCRM 5.29.0
2
3 Released September 2, 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?** | **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 - **Contact export is very slow, creates huge temporary tables
29 ([dev/core#1725](https://lab.civicrm.org/dev/core/-/issues/1725):
30 [17458](https://github.com/civicrm/civicrm-core/pull/17458))**
31
32 Improves performance when exporting contacts by only exporting primary address
33 fields.
34
35 - **Allow different output formats for CiviReport results, like native excel
36 format, and untangle code
37 ([dev/core#1855](https://lab.civicrm.org/dev/core/-/issues/1855):
38 [17901](https://github.com/civicrm/civicrm-core/pull/17901))**
39
40 This makes it possible to extend CiviReport by reworking the PDF and CSV
41 generation code as new output handlers, and allowing for extension developers
42 to add new ones.
43
44 - **Icon in status message after saving a civireport is misleading
45 ([dev/report#43](https://lab.civicrm.org/dev/report/-/issues/43):
46 [17863](https://github.com/civicrm/civicrm-core/pull/17863))**
47
48 Improves icons in Status Messages for reports.
49
50 - **Show cron warning on Scheduled Jobs admin page
51 ([18065](https://github.com/civicrm/civicrm-core/pull/18065))**
52
53 A pop-up message will appear on the Scheduled Jobs page if cron has not been
54 running.
55
56 - **Add APIv4 and pseudoconstants for RelationshipCache
57 ()**
58
59 - **RelationshipCache - Add a high-level index to facilitate relationship
60 queries (more fields)
61 ([17781](https://github.com/civicrm/civicrm-core/pull/17781) and
62 [17879](https://github.com/civicrm/civicrm-core/pull/17879))**
63
64 A new table caches relationships to provide a single resource for tracking
65 relationships from a specified contact's perspective. The RelationshipCache
66 records the "near" and "far" contacts and relationship names along with the
67 orientation and relationship type. Each record from `civicrm_relationship`
68 will have two records in `civicrm_relationship_cache`, one for each
69 orientation.
70
71 - **Remove ORDER BY and GROUP BY from alphabetQuery to improve performance
72 ([16877](https://github.com/civicrm/civicrm-core/pull/16877))**
73
74 - **Differentiate smart group from regular group using icon in select2 field
75 ([dev/core#785](https://lab.civicrm.org/dev/core/-/issues/785):
76 [17927](https://github.com/civicrm/civicrm-core/pull/17927))**
77
78 Improves Group's select2 by adding icon next to smart groups.
79
80 - **Feature: Ability to enable SSL for database connection.
81 ([dev/core#1137](https://lab.civicrm.org/dev/core/-/issues/1137):
82 [17706](https://github.com/civicrm/civicrm-core/pull/17706))**
83
84 Makes it so sites can use ssl to connect to mysql.
85
86 - **Add in hook to allow for altering of Profile Schemas
87 ([dev/core#1913](https://lab.civicrm.org/dev/core/-/issues/1913):
88 [17986](https://github.com/civicrm/civicrm-core/pull/17986))**
89
90 Extensions that allow additional fields to be added to profiles can now add
91 schemas so that fields can be added from new entities.
92
93 - **Why not make the buttons flat?
94 ([18054](https://github.com/civicrm/civicrm-core/pull/18054))**
95
96 Buttons no longer have a gradient background.
97
98 - **SystemCheck: add ability to efficiently run only specified checks
99 ([17824](https://github.com/civicrm/civicrm-core/pull/17824))**
100
101 The APIv4 system check action can now filter on name, running just the
102 specified check(s).
103
104 - **Change inform-icon to fa-info-circle
105 ([18001](https://github.com/civicrm/civicrm-core/pull/18001))**
106
107 The information icon is now produced with Font Awesome rather than a sprite.
108
109 - **APIv4 - Add keyword to select all custom fields
110 ([17955](https://github.com/civicrm/civicrm-core/pull/17955))**
111
112 You can now use a wildcard to select all custom fields on an entity without
113 specifying each individually.
114
115 - **Improve caching of current domain
116 ([17916](https://github.com/civicrm/civicrm-core/pull/17916))**
117
118 Domain information is now cached in one central place, making it more
119 straightforward to use and flush.
120
121 - **APIv4 - Specify BridgeEntities to assist with joins
122 ([17808](https://github.com/civicrm/civicrm-core/pull/17808))**
123
124 Minor entities that intermediate many-to-many relationships are now specified
125 as bridge entities and extend from a new base class. This will allow them to
126 be distinguished better in the future.
127
128 - **APIv4 - Add shorthand for setCheckPermissions()
129 ([17834](https://github.com/civicrm/civicrm-core/pull/17834) and
130 [17874](https://github.com/civicrm/civicrm-core/pull/17874))**
131
132 The CRUD functions of APIv4 now accept a boolean argument that corresponds to
133 the value sent to `setCheckPermissions()`. This provides a shorthand for a
134 very common use case.
135
136 - **Add search extension
137 ([17775](https://github.com/civicrm/civicrm-core/pull/17775),
138 [17789](https://github.com/civicrm/civicrm-core/pull/17789), and
139 [17864](https://github.com/civicrm/civicrm-core/pull/17864))**
140
141 An extension that replaces Search Builder is now shipped with core, though it
142 is hidden from the extensions user interface because it is currently
143 incompatible with the default theming framework.
144
145 ### CiviContribute
146
147 - **Add configure and priceset url icons on public contribution & event pages
148 ([dev/core#1905](https://lab.civicrm.org/dev/core/-/issues/1905):
149 [17942](https://github.com/civicrm/civicrm-core/pull/17942),
150 [18088](https://github.com/civicrm/civicrm-core/pull/18088) and
151 [18064](https://github.com/civicrm/civicrm-core/pull/18064))**
152
153 A "Configure" button now appears to administrators when viewing a contribution
154 page or event, or a priceset within either, from the frontend. This links to
155 the corresponding form to administer the contribution page, event, or
156 priceset.
157
158 ### CiviEvent
159
160 - **Move Event Cart to extension
161 ([17741](https://github.com/civicrm/civicrm-core/pull/17741),
162 [17743](https://github.com/civicrm/civicrm-core/pull/17743),
163 [17861](https://github.com/civicrm/civicrm-core/pull/17861),
164 [17884](https://github.com/civicrm/civicrm-core/pull/17884),
165 [17885](https://github.com/civicrm/civicrm-core/pull/17885), and
166 [17891](https://github.com/civicrm/civicrm-core/pull/17891))**
167
168 The event cart features have been moved to a separate extension that is
169 shipped with core.
170
171 ### CiviMember
172
173 - **Option to update expired memberships as part of the job.process_membership
174 ([dev/membership#18](https://lab.civicrm.org/dev/membership/-/issues/18):
175 [16298](https://github.com/civicrm/civicrm-core/pull/16298))**
176
177 Improves the Job.process_membership API/Scheduled job by adding some new
178 parameters, specifically:
179
180 - exclude_test_memberships: Exclude test memberships from calculations
181 (default = TRUE)
182 - only_active_membership_types: Exclude disabled membership types from
183 calculations (default = TRUE)
184 - exclude_membership_status_ids: Default: Exclude Pending, Cancelled,
185 Expired.
186
187 Deceased will always be excluded
188
189 - **Add auto-renew status to membership detail report
190 ([17683](https://github.com/civicrm/civicrm-core/pull/17683) and
191 [17911](https://github.com/civicrm/civicrm-core/pull/17911))**
192
193 The membership detail report can now display and filter on the auto-renew
194 status of each membership.
195
196 ### Backdrop Integration
197
198 - **Support for installing CiviCRM-Backdrop via "setup" UI
199 ([17749](https://github.com/civicrm/civicrm-core/pull/17749) and
200 [121](https://github.com/civicrm/civicrm-backdrop/pull/121))**
201
202 Improves the installation and Setup process for Backdrop integration's so that
203 one enables the CiviCRM module like any other module and then is directed to
204 the setup screen to complete installation as opposed to having to navigate to
205 a specific link.
206
207 ### Drupal Integration
208
209 - **Upgrading a site that still has "mysql" in the dsn string breaks in latest
210 master ([dev/core#1937](https://lab.civicrm.org/dev/core/-/issues/1937):
211 [18174](https://github.com/civicrm/civicrm-core/pull/18174))**
212
213 This adds an upgrade message for 5.29.0 warning that Composer patching will
214 need to be enabled before upgrading to 5.30.0 or higher.
215
216 The "mysql" in the DSN (as opposed to "mysqli") will not be a problem, but the
217 solution for this is in a package patch that appears in 5.30.
218
219 - **Installation - Support "activate first" w/setup UI
220 ([606](https://github.com/civicrm/civicrm-drupal/pull/606))**
221
222 The new setup user interface for Backdrop and WordPress installations is now
223 available for Drupal 7.
224
225 ### WordPress Integration
226
227 - **Add system check to ensure WP base page exists
228 ([17698](https://github.com/civicrm/civicrm-core/pull/17698))**
229
230 A new system check will display a message if the base page, as set in CiviCRM,
231 doesn't match an existing page in WordPress. No message will display if
232 WordPress multisite is enabled.
233
234 ## <a name="bugs"></a>Bugs resolved
235
236 ### Core CiviCRM
237
238 - **CRM_Dedupe_Finder parses phone key incorrectly
239 ([dev/core#1767](https://lab.civicrm.org/dev/core/-/issues/1767):
240 [17361](https://github.com/civicrm/civicrm-core/pull/17361) and
241 [17882](https://github.com/civicrm/civicrm-core/pull/17882))**
242
243 The process to match duplicate contacts was not accurately identifying phone
244 fields, causing contacts with matching phone numbers to be treated as if they
245 didn't match.
246
247 - **Dedupe: Location type is treated inconsistently
248 ([dev/core#1826](https://lab.civicrm.org/dev/core/-/issues/1826):
249 [17645](https://github.com/civicrm/civicrm-core/pull/17645))**
250
251 Duplicate matching now ignores location type for postal address fields, now
252 consistent with how it has ignored phone and email location types.
253
254 - **Installing drupal 8 using civicrm-setup leads to "incorrect resource url"
255 system status check errors
256 ([dev/drupal#114](https://lab.civicrm.org/dev/drupal/-/issues/114) and
257 [dev/core#1647](https://lab.civicrm.org/dev/core/-/issues/1647):
258 [17754](https://github.com/civicrm/civicrm-core/pull/17754))**
259
260 Removes the resource url status check.
261
262 - **API4: 500 error on chain with custom field
263 ([dev/core#1578](https://lab.civicrm.org/dev/core/-/issues/1578):
264 [17866](https://github.com/civicrm/civicrm-core/pull/17866))**
265
266 - **MySQL uses filesort index when building the query which can cause
267 performance issues
268 ([dev/core#1665](https://lab.civicrm.org/dev/core/-/issues/1665):
269 [18052](https://github.com/civicrm/civicrm-core/pull/18052))**
270
271 - **Custom fields not copied on shared address
272 ([dev/core#1670](https://lab.civicrm.org/dev/core/-/issues/1670):
273 [17580](https://github.com/civicrm/civicrm-core/pull/17580))**
274
275 - **Email template permissions
276 ([dev/core#1751](https://lab.civicrm.org/dev/core/-/issues/1751):
277 [17480](https://github.com/civicrm/civicrm-core/pull/17480))**
278
279 Users sending an email are no longer able to save or modify a template if they
280 lack the "edit message templates" permission.
281
282 - **Using Parent tag in search form doesn't pull contacts marked with child tag
283 in search form result
284 ([dev/core#1795](https://lab.civicrm.org/dev/core/-/issues/1795):
285 [17513](https://github.com/civicrm/civicrm-core/pull/17513))**
286
287 - **Activity Search : Tags are not working
288 ([dev/core#1827](https://lab.civicrm.org/dev/core/-/issues/1827):
289 [17655](https://github.com/civicrm/civicrm-core/pull/17655) and
290 [17755](https://github.com/civicrm/civicrm-core/pull/17755))**
291
292 - **Autocomplete-select custom field is not searchable
293 ([dev/core#1805](https://lab.civicrm.org/dev/core/-/issues/1805):
294 [17569](https://github.com/civicrm/civicrm-core/pull/17569))**
295
296 - **Do not allow enabling database logging when using multilingual
297 ([dev/core#1812](https://lab.civicrm.org/dev/core/-/issues/1812):
298 [17815](https://github.com/civicrm/civicrm-core/pull/17815))**
299
300 This has never worked, with network errors as the result. This prevents it
301 from being set.
302
303 - **Can't remove subtype if any required custom field is based on it
304 ([dev/core#1853](https://lab.civicrm.org/dev/core/-/issues/1853):
305 [17765](https://github.com/civicrm/civicrm-core/pull/17765))**
306
307 - **User account form action not passing along contact id correctly possibly
308 leading to duplicate contacts
309 ([dev/core#1858](https://lab.civicrm.org/dev/core/-/issues/1858):
310 [17769](https://github.com/civicrm/civicrm-core/pull/17769))**
311
312 When creating a user account from a contact record, the contact ID was not
313 properly passed along. Depending upon your unsupervised duplicate matching
314 rule, it would potentially create a duplicate contact record.
315
316 - **Cannot edit a profile field of "Email" to use the Location Type "Primary"
317 ([dev/core#1861](https://lab.civicrm.org/dev/core/-/issues/1861):
318 [17812](https://github.com/civicrm/civicrm-core/pull/17812))**
319
320 The location type would get reset to your default location type rather than
321 staying as "primary".
322
323 - **Downgrade checkEnvironment level and skip non-prod checks (part of
324 [dev/core#1863](https://lab.civicrm.org/dev/core/-/issues/1863):
325 [17807](https://github.com/civicrm/civicrm-core/pull/17807))**
326
327 In non-production environments, a system check produces a message saying so.
328 This downgrades it from an "Alert" to a more appropriate level of "Notice",
329 and it also suppresses cron and CiviMail system checks in this situation.
330
331 - **Slew of E_NOTICES on Profiles admin page and description field is always
332 blank ([dev/core#1868](https://lab.civicrm.org/dev/core/-/issues/1868):
333 [17786](https://github.com/civicrm/civicrm-core/pull/17786))**
334
335 - **CiviReport sent as email via mail_report job with a CSV attachment doesn't
336 show UTF8 characters properly in Excel
337 ([dev/core#1869](https://lab.civicrm.org/dev/core/-/issues/1869):
338 [17806](https://github.com/civicrm/civicrm-core/pull/17806))**
339
340 - **References to packages path in security status checks are assumed to be
341 under civicrm root
342 ([dev/core#1872](https://lab.civicrm.org/dev/core/-/issues/1872):
343 [17844](https://github.com/civicrm/civicrm-core/pull/17844))**
344
345 This changes how package and vendor paths are calculated in system checks
346 since (in Drupal 8 and potentially elsewhere) they may not be within the
347 CiviCRM root folder.
348
349 - **custom data insert/update error if using reserved words
350 ([dev/core#1880](https://lab.civicrm.org/dev/core/-/issues/1880):
351 [17848](https://github.com/civicrm/civicrm-core/pull/17848))**
352
353 - **Advanced Search (search by complete or partial name) returns all contacts
354 ([dev/core#1895](https://lab.civicrm.org/dev/core/-/issues/1895):
355 [17950](https://github.com/civicrm/civicrm-core/pull/17950))**
356
357 The ability to search first/last name was recently added to core. The primary
358 intent was to properly handle advanced searches that originate from
359 quicksearch first/last name filters. While that was working, a first/last name
360 search that originated directly from an advanced search was not working. This
361 fixes the issue.
362
363 - **Miscellaneous E_NOTICES
364 ([dev/core#1909](https://lab.civicrm.org/dev/core/-/issues/1909):
365 [18006](https://github.com/civicrm/civicrm-core/pull/18006),
366 [17962](https://github.com/civicrm/civicrm-core/pull/17962),
367 [17964](https://github.com/civicrm/civicrm-core/pull/17964),
368 [17959](https://github.com/civicrm/civicrm-core/pull/17959), and
369 [17985](https://github.com/civicrm/civicrm-core/pull/17985))**
370
371 - **CRM_Core_Key::valid() does backwards comparison
372 ([dev/core#1918](https://lab.civicrm.org/dev/core/-/issues/1918):
373 [18007](https://github.com/civicrm/civicrm-core/pull/18007))**
374
375 This removes legacy code that appeared to attempt to check for a valid
376 quickForm key but wasn't effectively doing so.
377
378 - **Upgrade fails for 4.6 => 5.29 during status-check
379 ([dev/core#1932](https://lab.civicrm.org/dev/core/-/issues/1932):
380 [18085](https://github.com/civicrm/civicrm-core/pull/18085))**
381
382 - **Installation doclinks not getting url-rewritten
383 ([18175](https://github.com/civicrm/civicrm-core/pull/18175))**
384
385 Links to the new installation documentation are now handled in the same way as
386 other documentation sites.
387
388 - **Wrap multi record custom field inside a div
389 ([17966](https://github.com/civicrm/civicrm-core/pull/17966))**
390
391 - **Fixed filling default values for tagssets in the advanced search form
392 ([17978](https://github.com/civicrm/civicrm-core/pull/17978))**
393
394 - **Simplify caching of status checks
395 ([17817](https://github.com/civicrm/civicrm-core/pull/17817))**
396
397 - **ensure custom field checkboxes are populated in profiles
398 ([17977](https://github.com/civicrm/civicrm-core/pull/17977))**
399
400 - **Upgrade PEAR/mail_mime package to be compliant with PHP7.4 and deploy it
401 using composer ([17948](https://github.com/civicrm/civicrm-core/pull/17948))**
402
403 - **Setup UI - Validate that at least one "Component" is enabled
404 ([17778](https://github.com/civicrm/civicrm-core/pull/17778))**
405
406 This prevents you from proceeding with installation without enabling at least
407 one component. Not enabling any components causes a messy failed
408 installation.
409
410 - **Call apiv4 from Contribution create rather than fugly addActivity function
411 ([17881](https://github.com/civicrm/civicrm-core/pull/17881))**
412
413 - **Search debug ([17887](https://github.com/civicrm/civicrm-core/pull/17887))**
414
415 - **Simplify flushing group contact cache query to reduce table locking and
416 improve performance
417 ([17846](https://github.com/civicrm/civicrm-core/pull/17846))**
418
419 - **Make api get upgrade-safe
420 ([17729](https://github.com/civicrm/civicrm-core/pull/17729))**
421
422 This avoids database errors when the code and database versions don't match by
423 preventing the API from accessing fields that are unsupported in the database.
424
425 - **CheckEnv - Give new installs a grace period before 'Cron Not Running' msg
426 ([17800](https://github.com/civicrm/civicrm-core/pull/17800))**
427
428 The system check will lower the severity of the "cron not running" check for
429 the first 24 hours after a site has been installed.
430
431 - **Sort permittedActivityTypes
432 ([17794](https://github.com/civicrm/civicrm-core/pull/17794))**
433
434 This improves performance on filtering activity types by making it possible to
435 compare a list of permitted types with the overall list of activity type IDs.
436
437 - **APIv4 - Fix saving custom fields with same name
438 ([17791](https://github.com/civicrm/civicrm-core/pull/17791))**
439
440 - **Status Checks - Use more specific label regarding "Domain"/"Organization"
441 check ([17776](https://github.com/civicrm/civicrm-core/pull/17776))**
442
443 - **SQL temp table not using utf8mb4 if server default already set to utf8mb4
444 ([18012](https://github.com/civicrm/civicrm-core/pull/18012))**
445
446 - **Wrong link to admin page in error message about FROM address on PCP page
447 ([17996](https://github.com/civicrm/civicrm-core/pull/17996))**
448
449 - **Fix sticky table header on "Find Activities" page
450 ([17917](https://github.com/civicrm/civicrm-core/pull/17917))**
451
452 - **Fixed DB Error: syntax error if line item refers to civicrm_case
453 ([16626](https://github.com/civicrm/civicrm-core/pull/16626))**
454
455 - **Fix potential js error on summary screen when reloading blocks
456 ([17865](https://github.com/civicrm/civicrm-core/pull/17865))**
457
458 - **Fix 'Undefined variable: jsSet in CRM_Core_BAO_Mapping::loadSavedMapping()'
459 ([17816](https://github.com/civicrm/civicrm-core/pull/17816))**
460
461 - **Fixed notice error on Relationships report
462 ([17787](https://github.com/civicrm/civicrm-core/pull/17787))**
463
464 - **Fix obscure dedupe scenario where 'bad' location data can overwrite good
465 data ([17993](https://github.com/civicrm/civicrm-core/pull/17993))**
466
467 - **Fix JQuery Validation for radios
468 ([17937](https://github.com/civicrm/civicrm-core/pull/17937))**
469
470 ### CiviCase
471
472 - **Fix case activity field set to allow long details to be exported
473 ([17970](https://github.com/civicrm/civicrm-core/pull/17970))**
474
475 - **Case export has two fields that are not what they say they are
476 ([dev/core#1916](https://lab.civicrm.org/dev/core/-/issues/1916):
477 [18043](https://github.com/civicrm/civicrm-core/pull/18043))**
478
479 - **Collapsed custom field set for activities with a required radio makes case
480 activity buttons seem disabled
481 ([dev/core#1928](https://lab.civicrm.org/dev/core/-/issues/1928):
482 [18080](https://github.com/civicrm/civicrm-core/pull/18080))**
483
484 - **CRM_Utils_Check_Component_Case - Guard against post-upgrade crash
485 ([17944](https://github.com/civicrm/civicrm-core/pull/17944))**
486
487 ### CiviContribute
488
489 - **Define the logic that sets (or not) contribution receive_date in relation to
490 payments
491 ([dev/financial#139](https://lab.civicrm.org/dev/financial/-/issues/139):
492 [17777](https://github.com/civicrm/civicrm-core/pull/17777) and
493 [18000](https://github.com/civicrm/civicrm-core/pull/18000))**
494
495 This undoes a regression where the contribution date of a pay-later
496 contribution would change when a payment completes the contribution. The
497 contribution date is the accrual date and is distinct from the date the
498 contribution is entered and the date when all payments have been received.
499
500 In the process, this changes the "Update pending contribution status" search
501 action to be "Record payments for contributions". The result is generally the
502 same, but the status change comes about because the payments complete the
503 contributions. You can modify contribution statuses in bulk with a profile by
504 using the "Update multiple contributions" action.
505
506 - **Disable frequency/interval fields if not required. Mark required if they are
507 so they are validated before submit
508 ([17526](https://github.com/civicrm/civicrm-core/pull/17526))**
509
510 The frequency and interval fields for recurring contributions now use jQuery
511 validation to disable or require them as appropriate.
512
513 - **Paypal IPN sometimes fails to update the next scheduled payment date when
514 recording the latest recurring payment
515 ([dev/core#1679](https://lab.civicrm.org/dev/core/-/issues/1679):
516 [17744](https://github.com/civicrm/civicrm-core/pull/17744))**
517
518 - **Contribution Details Statistics are multiplied under many circumstances
519 ([dev/report#21](https://lab.civicrm.org/dev/report/-/issues/21):
520 [15435](https://github.com/civicrm/civicrm-core/pull/15435) and
521 [17809](https://github.com/civicrm/civicrm-core/pull/17809))**
522
523 - **Contribution Summary Report: The "general total" row does not take the
524 currency filtered
525 ([dev/report#27](https://lab.civicrm.org/dev/report/-/issues/27):
526 [16736](https://github.com/civicrm/civicrm-core/pull/16736))**
527
528 When the contribution summary report is used by filtering for a currency other
529 than the site's default currency, the "grand total" row shows the sign of the
530 default currency instead of the filtered currency.
531
532 - **Fix PaypalIPN single function to not receive-by-reference
533 ([18044](https://github.com/civicrm/civicrm-core/pull/18044))**
534
535 - **Allow Failed -> Completed status for contributions
536 ([dev/core#1906](https://lab.civicrm.org/dev/core/-/issues/1906):
537 [17943](https://github.com/civicrm/civicrm-core/pull/17943))**
538
539 - **Fix currency symbol for Total Amount on contribution page
540 ([17703](https://github.com/civicrm/civicrm-core/pull/17703))**
541
542 This resolves a but where the total amount would show the default system
543 currency symbol regardless of the currency configured on the contribution
544 page.
545
546 - **On behalf label / Honoree Title / Honoree Description not translatable on
547 contribution page
548 ([dev/core#1280](https://lab.civicrm.org/dev/core/-/issues/1280):
549 [16838](https://github.com/civicrm/civicrm-core/pull/16838))**
550
551 - **Load contribution page if live payment processor is disabled but test is
552 available ([17828](https://github.com/civicrm/civicrm-core/pull/17828))**
553
554 - **Remove requirement to pass 'contribution_status_id' => Pending from
555 order.create ([18018](https://github.com/civicrm/civicrm-core/pull/18018))**
556
557 - **Use saved contribution's line items rather than the primaryContributionID
558 ([18033](https://github.com/civicrm/civicrm-core/pull/18033))**
559
560 - **Do not overwrite values saved from the repeatContribution routine
561 ([17972](https://github.com/civicrm/civicrm-core/pull/17972))**
562
563 - **"Contribution Source" profile field has no effect on new contribution
564 ([dev/core#1902](https://lab.civicrm.org/dev/core/-/issues/1902):
565 [17930](https://github.com/civicrm/civicrm-core/pull/17930))**
566
567 - **Incorrect check for "soft_credit" after making pcp donation
568 ([dev/core#1915](https://lab.civicrm.org/dev/core/-/issues/1915):
569 [18002](https://github.com/civicrm/civicrm-core/pull/18002))**
570
571 - **Total Tax Amount on the Contribution (generated in backoffice/offline) no
572 longer adds up to sum of the Tax Amount for the individual line items
573 ([dev/core#1983](https://lab.civicrm.org/dev/core/-/issues/1983):
574 [18290](https://github.com/civicrm/civicrm-core/pull/18290))**
575
576 - **Downloaded Invoice activity attaches non wkhtmltopdf invoice
577 ([dev/core#1922](https://lab.civicrm.org/dev/core/-/issues/1922):
578 [18056](https://github.com/civicrm/civicrm-core/pull/18056))**
579
580 Downloading an invoice would ignore whether wkhtmltopdf was configured and
581 always use dompdf.
582
583 - **Fix repeattransaction api to use custom data from the template contribution
584 ([17975](https://github.com/civicrm/civicrm-core/pull/17975))**
585
586 The Contribution.repeattransaction API will now copy custom data from the
587 template rather than the earliest related contribution.
588
589 ### CiviEvent
590
591 - **Can't meaningfully disable self-service transfer/cancellation once enabled
592 ([dev/event#35](https://lab.civicrm.org/dev/event/-/issues/35):
593 [18040](https://github.com/civicrm/civicrm-core/pull/18040))**
594
595 - **Event registration form has inconsistent labeling
596 ([dev/event#38](https://lab.civicrm.org/dev/event/-/issues/38):
597 [17695](https://github.com/civicrm/civicrm-core/pull/17695))**
598
599 - **Event cart hidden/enabled in buildkit 5.29 RC
600 ([dev/event#40](https://lab.civicrm.org/dev/event/-/issues/40):
601 [18101](https://github.com/civicrm/civicrm-core/pull/18101))**
602
603 Ensures that the Event Cart functionality defaults to off.
604
605 ### CiviMail
606
607 - **Remove url-tracking in mass SMS
608 ([dev/core#1843](https://lab.civicrm.org/dev/core/-/issues/1843):
609 [17700](https://github.com/civicrm/civicrm-core/pull/17700))**
610
611 Rewritten URLs were confusing and made SMS messages unnecessarily long. There
612 also have never been SMS tracking reports to use them anyway.
613
614 - **Test mailings create new contacts even when "Add Contacts" permission is not
615 present. ([dev/mail#70](https://lab.civicrm.org/dev/mail/-/issues/70):
616 [17867](https://github.com/civicrm/civicrm-core/pull/17867))**
617
618 Ensures contacts are not created when a user without permissions to create
619 contacts sends a test email.
620
621 - **Mailing Subscription form does not validate reCaptcha
622 ([dev/core#1755](https://lab.civicrm.org/dev/core/-/issues/1755):
623 [17305](https://github.com/civicrm/civicrm-core/pull/17305))**
624
625 - **Text version of unsubscribed email is missing the link to resubscribe
626 ([dev/core#1919](https://lab.civicrm.org/dev/core/-/issues/1919):
627 [18015](https://github.com/civicrm/civicrm-core/pull/18015))**
628
629 - **Add CiviMail synchronisation frequency setting
630 (in support of [dev/core#1768](https://lab.civicrm.org/dev/core/-/issues/1768):
631 [17709](https://github.com/civicrm/civicrm-core/pull/17709))**
632
633 This adds a setting for updating how frequently the database should be updated
634 with the status of emails that have been sent. Updating the database more
635 frequently can slow the process down, but it reduces the likelihood that a
636 recipient will be re-emailed when recovering from a stalled mailing.
637
638 - **Make new email open and url routes 'public'
639 ([17813](https://github.com/civicrm/civicrm-core/pull/17813))**
640
641 This denotes the paths for open and URL tracking as "public" pages as they are
642 meant to be used by unauthenticated email clients and recipients.
643
644 ### CiviMember
645
646 - **Decimal Separator - Invalid value "total_amount" (NaN,N) creating or editing
647 a membership ([dev/core#1113](https://lab.civicrm.org/dev/core/-/issues/1113):
648 [16429](https://github.com/civicrm/civicrm-core/pull/16429))**
649
650 - **Offline Membership Renewal Tax Calculation is incorrect [regression]
651 ([dev/core#1972](https://lab.civicrm.org/dev/core/-/issues/1972):
652 [18271](https://github.com/civicrm/civicrm-core/pull/18271))**
653
654 ### Drupal Integration
655
656 - **Drupal 8 - Using Create User Record action on a contact with no email is too
657 quiet. Also CRM_Core_Session::setStatus is sometimes ignored.
658 ([dev/drupal#127](https://lab.civicrm.org/dev/drupal/-/issues/127):
659 [17914](https://github.com/civicrm/civicrm-core/pull/17914) and
660 [17915](https://github.com/civicrm/civicrm-core/pull/17915))**
661
662 Require email when adding a user and ensure that errors show.
663
664 - **The following PHP variables are not set: $_SERVER[HTTP_HOST]
665 ([dev/core#750](https://lab.civicrm.org/dev/core/-/issues/750):
666 [17636](https://github.com/civicrm/civicrm-core/pull/17636))**
667
668 Skip the server variable checks if running in a CLI environment, removing an
669 error when running Drush commands against Drupal 8 and Drupal 9 based sites.
670
671 - **Can't find recaptcha in Drupal 8
672 ([dev/core#1871](https://lab.civicrm.org/dev/core/-/issues/1871):
673 [17822](https://github.com/civicrm/civicrm-core/pull/17822))**
674
675 - **Fixed for multi-select filter
676 ([615](https://github.com/civicrm/civicrm-drupal/pull/615))**
677
678 This fixes filters for multi-select fields in Views.
679
680 - **fix url for file field
681 ([608](https://github.com/civicrm/civicrm-drupal/pull/608))**
682
683 This fixes the generated URL for file fields in Views.
684
685 ### Wordpress Integration
686
687 - **[civicrm.files] token doesn't work in some cases since 5.27
688 ([dev/wordpress#66](https://lab.civicrm.org/dev/wordpress/-/issues/66):
689 [18068](https://github.com/civicrm/civicrm-core/pull/18068))**
690
691 Ensures the [civicrm.files] token plays nice for sites with older wordpress
692 file directory set ups.
693
694 - **CiviCRM and the WordPress Pods plugin (since version 2.7.13) is incompatible
695 due to Pods including marionette v3.3.1 for backbone, newer than CiviCRM's
696 bundled marionette v1.0.3
697 ([dev/core#1090](https://lab.civicrm.org/dev/core/-/issues/1090):
698 [17855](https://github.com/civicrm/civicrm-core/pull/17855))**
699
700 Ensures CiviCRM plays nicely with recent versions of Elementor Plugin.
701
702 - **Fix PHP notice on wordpress permissions form
703 ([17758](https://github.com/civicrm/civicrm-core/pull/17758))**
704
705 - **Slow down the frequency of WordPress "heartbeat" calls in CiviCRM admin
706 ([dev/wordpress#67](https://lab.civicrm.org/dev/wordpress/-/issues/67):
707 [214](https://github.com/civicrm/civicrm-wordpress/pull/214))**
708
709 ## <a name="misc"></a>Miscellany
710
711 - **APIv4 - Add BasicEntity helper class
712 ([17899](https://github.com/civicrm/civicrm-core/pull/17899))**
713
714 - **Bump minimum upgradable version to 4.4.7
715 ([17750](https://github.com/civicrm/civicrm-core/pull/17750))**
716
717 - **Update version in the test_data_second_domain file and also update the
718 setVersion script to update the file version as necessary
719 ([17897](https://github.com/civicrm/civicrm-core/pull/17897))**
720
721 - **Be a little less supportive to cvs
722 ([17896](https://github.com/civicrm/civicrm-core/pull/17896))**
723
724 - **Replace a load of references to the wiki with docs links
725 ([17900](https://github.com/civicrm/civicrm-core/pull/17900))**
726
727 - **Remove unneccessary isoToDate function
728 ([dev/core#1921](https://lab.civicrm.org/dev/core/-/issues/1921):
729 [18025](https://github.com/civicrm/civicrm-core/pull/18025))**
730
731 - **CRM_Activity_Form_SearchTest::testQill can fail semi-randomly
732 ([dev/core#1894](https://lab.civicrm.org/dev/core/-/issues/1894):
733 [17902](https://github.com/civicrm/civicrm-core/pull/17902))**
734
735 - **Test for fatal error on new individual form
736 ([dev/core#1874](https://lab.civicrm.org/dev/core/-/issues/1874):
737 [17835](https://github.com/civicrm/civicrm-core/pull/17835))**
738
739 - **Bump lodash from 4.17.15 to 4.17.19
740 ([17858](https://github.com/civicrm/civicrm-core/pull/17858))**
741
742 - **Update regen.sh with new & upcoming core extensions
743 ([17839](https://github.com/civicrm/civicrm-core/pull/17839))**
744
745 - **APIv4 - Add activity contacts to APIv4 field spec
746 ([17766](https://github.com/civicrm/civicrm-core/pull/17766))**
747
748 - **Adjust mysql SET NAMES in remaining places as we agreed this was the go
749 ([17825](https://github.com/civicrm/civicrm-core/pull/17825))**
750
751 - **CRM_Utils_SQL - Add "onDuplicate()" and "syncInto()" helpers
752 ([17780](https://github.com/civicrm/civicrm-core/pull/17780))**
753
754 - **Improve efficiency of findFiles
755 ([17745](https://github.com/civicrm/civicrm-core/pull/17745))**
756
757 - **APIv4 Explorer: Improve selection of fields for HAVING
758 ([17746](https://github.com/civicrm/civicrm-core/pull/17746))**
759
760 - **Convert CRM.utils.formatDate tests to karma
761 ([17757](https://github.com/civicrm/civicrm-core/pull/17757))**
762
763 - **Teach CRM.utils.formatDate to also show time
764 ([17684](https://github.com/civicrm/civicrm-core/pull/17684))**
765
766 - **CRM_Utils_Hook: deprecation warning and short array syntax
767 ([17995](https://github.com/civicrm/civicrm-core/pull/17995))**
768
769 - **Remove check for valid email in synchronizeUFMatch
770 ([17771](https://github.com/civicrm/civicrm-core/pull/17771))**
771
772 - **Remove unused "ufUniqID" session variable
773 ([17904](https://github.com/civicrm/civicrm-core/pull/17904))**
774
775 - **Remove duplicate cache flush
776 ([17988](https://github.com/civicrm/civicrm-core/pull/17988))**
777
778 - **Remove extraneous opportunistic cache flush.
779 ([17936](https://github.com/civicrm/civicrm-core/pull/17936))**
780
781 - **Hooks/Dispatcher - Close loopholes that occur around "preboot" hooks
782 ([17831](https://github.com/civicrm/civicrm-core/pull/17831))**
783
784 - **Use PrematureExit exception instead of weird hack in tests
785 ([17870](https://github.com/civicrm/civicrm-core/pull/17870))**
786
787 - **Remove unnecessary try/catch per #17729
788 ([17823](https://github.com/civicrm/civicrm-core/pull/17823))**
789
790 - **handlePaymentNotification() should not be declared as a static method
791 ([17849](https://github.com/civicrm/civicrm-core/pull/17849))**
792
793 - **MembershipRenewalTest - Fix failure
794 ([17830](https://github.com/civicrm/civicrm-core/pull/17830))**
795
796 - **Remove hard coded charset.
797 ([17826](https://github.com/civicrm/civicrm-core/pull/17826))**
798
799 - **getLoggedInContactID() is a static function
800 ([17783](https://github.com/civicrm/civicrm-core/pull/17783))**
801
802 - **Remove PaymentExpress ipn class
803 ([17763](https://github.com/civicrm/civicrm-core/pull/17763))**
804
805 - **Remove unused, deprecated functions
806 ([17761](https://github.com/civicrm/civicrm-core/pull/17761))**
807
808 - **CIVICRM_BAO_CACHE_ADAPTER - Remove obsolete option
809 ([17990](https://github.com/civicrm/civicrm-core/pull/17990))**
810
811 - **More unused functions in GenCode
812 ([17756](https://github.com/civicrm/civicrm-core/pull/17756))**
813
814 - **Temporary tables should follow consistent naming convention
815 ([dev/core#183](https://lab.civicrm.org/dev/core/-/issues/183):
816 [17827](https://github.com/civicrm/civicrm-core/pull/17827))**
817
818 - **CRM_Core_BAO_Cache - Remove functions deprecated a year ago
819 ([17989](https://github.com/civicrm/civicrm-core/pull/17989))**
820
821 - **Fix all core processors to implement doPayment and not doTransferPayment or
822 doDirectPayment
823 ([https://lab.civicrm.org/dev/financial/-/issues/135](https://lab.civicrm.org/dev/financial/-/issues/135):
824 [18078](https://github.com/civicrm/civicrm-core/pull/18078) and
825 [18072](https://github.com/civicrm/civicrm-core/pull/18072))**
826
827 - **[REF] Extract setUserContext on contribution form & cleanup on backend add
828 membership form
829 ([17968](https://github.com/civicrm/civicrm-core/pull/17968))**
830
831 - **[REF] remove unnecessary variable variables
832 ([17903](https://github.com/civicrm/civicrm-core/pull/17903))**
833
834 - **[REF] - Add helper function for the repetitive task of fetching multilingual
835 ([17650](https://github.com/civicrm/civicrm-core/pull/17650))**
836
837 - **[Ref] Unit test attempt to create reported bugs , minor cleanup
838 ([17560](https://github.com/civicrm/civicrm-core/pull/17560))**
839
840 - **REF Extract addToRecentItems from membership create
841 ([17524](https://github.com/civicrm/civicrm-core/pull/17524))**
842
843 - **[REF] Fix a couple of jQuery errors that have cropped up
844 ([17871](https://github.com/civicrm/civicrm-core/pull/17871))**
845
846 - **(REF) regen.sh - Remove unusual handling of `zipcodes.mysql`
847 ([17869](https://github.com/civicrm/civicrm-core/pull/17869))**
848
849 - **[REF] ScheduledJob cleanup, remove unused var
850 ([17862](https://github.com/civicrm/civicrm-core/pull/17862))**
851
852 - **[REF] Migrate Event Cart Setting into the Extension
853 ([17841](https://github.com/civicrm/civicrm-core/pull/17841))**
854
855 - **[REF] Only printOnly once
856 ([17850](https://github.com/civicrm/civicrm-core/pull/17850))**
857
858 - **(REF) APIv4 ConformanceTest - Split apart into per-entity sub-tests
859 ([17845](https://github.com/civicrm/civicrm-core/pull/17845))**
860
861 - **(REF) WebsiteTest - Mitigate flaky failures
862 ([17833](https://github.com/civicrm/civicrm-core/pull/17833))**
863
864 - **[REF] Follow up cleanup
865 ([17788](https://github.com/civicrm/civicrm-core/pull/17788))**
866
867 - **[REF] Remove ACL join on temp table creation in Member ContributionDetail
868 report ([17723](https://github.com/civicrm/civicrm-core/pull/17723))**
869
870 - **[REF] Do or do not - there is no try
871 ([17795](https://github.com/civicrm/civicrm-core/pull/17795))**
872
873 - **[REF] Unused interface CRM_Report_Interface
874 ([17767](https://github.com/civicrm/civicrm-core/pull/17767))**
875
876 - **REF - Cleanup StatusPreference BAO to be more standard
877 ([17801](https://github.com/civicrm/civicrm-core/pull/17801))**
878
879 - **[REF] Reduce interaction between dedupe code and createProfileContact
880 ([17920](https://github.com/civicrm/civicrm-core/pull/17920))**
881
882 - **[Ref] Simplify field reference
883 ([17941](https://github.com/civicrm/civicrm-core/pull/17941))**
884
885 - **[REF] [Test] Minor simplification on test
886 ([18019](https://github.com/civicrm/civicrm-core/pull/18019))**
887
888 - **[Ref] Simplify is_email_receipt in sendMail
889 ([18029](https://github.com/civicrm/civicrm-core/pull/18029))**
890
891 - **[REF] Remove transaction from BaseIPN completeTransaction call
892 ([18042](https://github.com/civicrm/civicrm-core/pull/18042))**
893
894 - **[REF] Simplify membership status date handling
895 ([18030](https://github.com/civicrm/civicrm-core/pull/18030))**
896
897 - **[REF] Clean up handling of financial_type_id override
898 ([18032](https://github.com/civicrm/civicrm-core/pull/18032))**
899
900 - **[REF] Remove transaction from completeOrder signature
901 ([18046](https://github.com/civicrm/civicrm-core/pull/18046))**
902
903 - **[Ref] Remove transaction instantiation in PaypalPro
904 ([18026](https://github.com/civicrm/civicrm-core/pull/18026))**
905
906 - **[REF] Stop instantiating transaction in PaypalIPN
907 ([18020](https://github.com/civicrm/civicrm-core/pull/18020))**
908
909 - **[REF] Remove pass-by-reference & always empty param
910 ([17984](https://github.com/civicrm/civicrm-core/pull/17984))**
911
912 - **[REF] Tighten up function signature for dedupePair
913 ([17923](https://github.com/civicrm/civicrm-core/pull/17923))**
914
915 - **[Ref] Move noisily deprecate BaseIPN->sendMail, call api from it rather
916 than BAO function
917 ([17982](https://github.com/civicrm/civicrm-core/pull/17982))**
918
919 - **[REF] Use CRM_Utils_Mail::send for sending emails for confirming unsubscribe
920 resubscribe auto replies and subscribing
921 ([17396](https://github.com/civicrm/civicrm-core/pull/17396))**
922
923 - **[REF] Reduce calls to CRM_Member_PseudoConstant::membershipType
924 ([17987](https://github.com/civicrm/civicrm-core/pull/17987))**
925
926 - **[REF] Use Standard function cacheClause to re-use contact acl cache table
927 ([17707](https://github.com/civicrm/civicrm-core/pull/17707))**
928
929 - **[REF] Make explicit what we are doing with 'values' in this code
930 ([17979](https://github.com/civicrm/civicrm-core/pull/17979))**
931
932 - **[REF] Minor code clean up
933 ([17974](https://github.com/civicrm/civicrm-core/pull/17974))**
934
935 - **[REF] Grant cleanup
936 ([17967](https://github.com/civicrm/civicrm-core/pull/17967))**
937
938 - **[REF] Refactor to use the standard CRM_Core_Form::addRadio function for a
939 number of radio elements
940 ([17932](https://github.com/civicrm/civicrm-core/pull/17932))**
941
942 - **[REF] Fix the default to_financial_account_id for generated transactions
943 ([17938](https://github.com/civicrm/civicrm-core/pull/17938))**
944
945 - **[REF] Upgrade dompdf version to be more compatible with PHP7.4
946 ([17946](https://github.com/civicrm/civicrm-core/pull/17946))**
947
948 - **[REF] [Tests] Cleanup test declaration to take advantage of mapping
949 improvements ([17939](https://github.com/civicrm/civicrm-core/pull/17939))**
950
951 - **[REF] Remove unnecessary complexity on im export
952 ([17949](https://github.com/civicrm/civicrm-core/pull/17949))**
953
954 - **[REF] GroupContact BAO - Minor code cleanup
955 ([17928](https://github.com/civicrm/civicrm-core/pull/17928))**
956
957 - **[REF] Minor function signuture cleanup
958 ([17922](https://github.com/civicrm/civicrm-core/pull/17922))**
959
960 - **[REF] Do not pass variable by reference
961 ([17921](https://github.com/civicrm/civicrm-core/pull/17921))**
962
963 - **[REF] remove first attempt to set currency in repeattransaction flow
964 ([18055](https://github.com/civicrm/civicrm-core/pull/18055))**
965
966 - **[REF] Even less variable variables
967 ([18058](https://github.com/civicrm/civicrm-core/pull/18058))**
968
969 - **[REF] Move handling of form elements back to the Form
970 ([17981](https://github.com/civicrm/civicrm-core/pull/17981))**
971
972 - **[REF] Simplify location metadata handling in Export class
973 ([17951](https://github.com/civicrm/civicrm-core/pull/17951))**
974
975 - **[REF] Do not pass by reference to the recur function
976 ([18057](https://github.com/civicrm/civicrm-core/pull/18057))**
977
978 - **[REF] Simplify getMembershipStatusByDate more
979 ([18051](https://github.com/civicrm/civicrm-core/pull/18051))**
980
981 - **[REF] Remove mail_mime package as now supplied by composer
982 ([300](https://github.com/civicrm/civicrm-packages/pull/300))**
983
984 - **[REF] Remove some deprecated size function calls replaced with length
985 ([299](https://github.com/civicrm/civicrm-packages/pull/299))**
986
987 - **Refactor "applyLocale" and remove references to "language" column in UFMatch
988 table ([18049](https://github.com/civicrm/civicrm-core/pull/18049))**
989
990 - **[NFC] Fix provider unit test on PHP7.4
991 ([18073](https://github.com/civicrm/civicrm-core/pull/18073))**
992
993 - **NFC - Docblock cleanup
994 ([610](https://github.com/civicrm/civicrm-drupal/pull/610))**
995
996 - **[NFC] Update versions file to remove reference to Mail_mime and Mail
997 ([301](https://github.com/civicrm/civicrm-packages/pull/301))**
998
999 - **[NFC] Re run regen after recent merges
1000 ([17842](https://github.com/civicrm/civicrm-core/pull/17842))**
1001
1002 - **[NFC] Fix nonstandard header comments
1003 ([17880](https://github.com/civicrm/civicrm-core/pull/17880))**
1004
1005 - **[NFC] Add in a unit test of calling the contribution page widget endpoint
1006 and remove unneeded file
1007 ([17965](https://github.com/civicrm/civicrm-core/pull/17965))**
1008
1009 - **[NFC] Improve docs for APIv4 Save action
1010 ([18004](https://github.com/civicrm/civicrm-core/pull/18004))**
1011
1012 - **NFC - Docblock cleanup
1013 ([17945](https://github.com/civicrm/civicrm-core/pull/17945))**
1014
1015 - **[NFC] Update a few doc/wiki links in code comments
1016 ([17918](https://github.com/civicrm/civicrm-core/pull/17918))**
1017
1018 - **[NFC] Comment block cleanup
1019 ([17872](https://github.com/civicrm/civicrm-core/pull/17872))**
1020
1021 - **[Test] Update hook signature in test
1022 ([609](https://github.com/civicrm/civicrm-drupal/pull/609))**
1023
1024 - **Test - attempt to replicate #17852
1025 ([18038](https://github.com/civicrm/civicrm-core/pull/18038))**
1026
1027 - **[Test fix] We might need this to ensure really quick test runs don't fail
1028 ([18045](https://github.com/civicrm/civicrm-core/pull/18045))**
1029
1030 - **Add testing to Authorize.net and remove the lines that are repeated
1031 ([18028](https://github.com/civicrm/civicrm-core/pull/18028))**
1032
1033 - **Add test on status calculation
1034 ([18037](https://github.com/civicrm/civicrm-core/pull/18037))**
1035
1036 - **Fix for failing test
1037 ([18036](https://github.com/civicrm/civicrm-core/pull/18036))**
1038
1039 - **[Test framework] re-re-fix test and add test for test
1040 ([18013](https://github.com/civicrm/civicrm-core/pull/18013))**
1041
1042 - **Re-fix test ([18009](https://github.com/civicrm/civicrm-core/pull/18009))**
1043
1044 - **[Test framework] - Update failing test
1045 ([18003](https://github.com/civicrm/civicrm-core/pull/18003))**
1046
1047 - **[Test framework] - Combine triplicate createCase functions
1048 ([17957](https://github.com/civicrm/civicrm-core/pull/17957))**
1049
1050 - **Remove error checking by-pass in tests
1051 ([17940](https://github.com/civicrm/civicrm-core/pull/17940))**
1052
1053 - **[Test Framework] - Tests for report downloads
1054 ([17892](https://github.com/civicrm/civicrm-core/pull/17892))**
1055
1056 - **api_v3_TaxContributionPageTest fix - remove hard coded processor id
1057 ([17860](https://github.com/civicrm/civicrm-core/pull/17860))**
1058
1059 - **API tests - label versions in dataprovider versionThreeAndFour
1060 ([17847](https://github.com/civicrm/civicrm-core/pull/17847))**
1061
1062 - **Extract code to set isEmailReceipt in Contribution.completeOrder
1063 ([18039](https://github.com/civicrm/civicrm-core/pull/18039))**
1064
1065 - **Do not pass-by-reference to recur function
1066 ([18071](https://github.com/civicrm/civicrm-core/pull/18071))**
1067
1068 - **Unused functions in GenCode
1069 ([17753](https://github.com/civicrm/civicrm-core/pull/17753))**
1070
1071 - **Fix typo in templates/CRM/Report/Form/Tabs/GroupBy.tpl
1072 ([17747](https://github.com/civicrm/civicrm-core/pull/17747))**
1073
1074 - **Remove unused "ufUniqID" session variable
1075 ([213](https://github.com/civicrm/civicrm-wordpress/pull/213))**
1076
1077 - **Remove Net packages Net_Curl Net_DIME as they do not appear to be used
1078 ([294](https://github.com/civicrm/civicrm-packages/pull/294))**
1079
1080 - **Update contributor key for Andrew
1081 ([18230](https://github.com/civicrm/civicrm-core/pull/18230))**
1082
1083 - **Fix qill typo
1084 ([18041](https://github.com/civicrm/civicrm-core/pull/18041))**
1085
1086 - **Update flexmailer release information
1087 ([17912](https://github.com/civicrm/civicrm-core/pull/17912))**
1088
1089 - **Remove invalid use of crmMoney formatter
1090 ([18031](https://github.com/civicrm/civicrm-core/pull/18031))**
1091
1092 - **Remove main PaymentExpress class
1093 ([18010](https://github.com/civicrm/civicrm-core/pull/18010))**
1094
1095 - **Remove unused parameter ids['billing']
1096 ([18021](https://github.com/civicrm/civicrm-core/pull/18021))**
1097
1098 - **Cache loader - remove legacy handling, handle null result from setting
1099 ([17999](https://github.com/civicrm/civicrm-core/pull/17999))**
1100
1101 - **Use case id to get relationship for activity creation
1102 ([17256](https://github.com/civicrm/civicrm-core/pull/17256) and
1103 [17764](https://github.com/civicrm/civicrm-core/pull/17764))**
1104
1105 ## <a name="credits"></a>Credits
1106
1107 This release was developed by the following code authors:
1108
1109 AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Justin Freeman;
1110 Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma,
1111 Klaas Eikelboom; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku;
1112 Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Fuzion - Jitendra
1113 Purohit; iXiam - César Ramos, Diego Muñio; JMA Consulting - Monish Deb, Seamus
1114 Lee; John Kingsnorth; Joinery - Allen Shaw; Lighthouse Consulting and Design -
1115 Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MillerTech -
1116 Chamil Wijesooriya; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire;
1117 Progressive Technology Project - Jamie McClelland; Squiffle Consulting - Aidan
1118 Saunders; Stephen Palmstrom; Tadpole Collective - Kevin Cristiano; Timbsoft
1119 Technologies - Tunbola Ogunwande; Wikimedia Foundation - Eileen McNaughton
1120
1121 Most authors also reviewed code for this release; in addition, the following
1122 reviewers contributed their comments:
1123
1124 Agileware - Pengyi Zhang; Andrew Thompson; Artful Robot - Rich Lott; Australian
1125 Greens - Andrew Cormick-Dockery, John Twyman; Bastien Ho; Blackfly Solutions -
1126 Alan Dixon; Carlos Capote; CompuCorp - Jamie Novick; DevApp - Adam Kwiatkowski;
1127 Francesc Bassas i Bullich; Freeform Solutions - Herb van den Dool; Greenpeace
1128 Central and Eastern Europe - Patrick Figel; Irene Meisel; JMA Consulting - Joe
1129 Murray; Korlon - Stuart Gaston; Nicol Wistreich; Rar9; Ray Wright; Semper IT -
1130 Karin Gerritsen; Third Sector Design - Michael McAndrew
1131
1132 ## <a name="feedback"></a>Feedback
1133
1134 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
1135 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
1136 and contact `@agh1`.