5.53.0 release notes: added boilerplate
[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 - **Mark the new routes for "open.php" and "url.php" as 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 - **Be more forgiving about slash in wpBasePage ([dev/wordpress#73](https://lab.civicrm.org/dev/wordpress/issues/73):
710 [18332](https://github.com/civicrm/civicrm-core/pull/18332))**
711
712 ## <a name="misc"></a>Miscellany
713
714 - **APIv4 - Add BasicEntity helper class
715 ([17899](https://github.com/civicrm/civicrm-core/pull/17899))**
716
717 - **Bump minimum upgradable version to 4.4.7
718 ([17750](https://github.com/civicrm/civicrm-core/pull/17750))**
719
720 - **Update version in the test_data_second_domain file and also update the
721 setVersion script to update the file version as necessary
722 ([17897](https://github.com/civicrm/civicrm-core/pull/17897))**
723
724 - **Be a little less supportive to cvs
725 ([17896](https://github.com/civicrm/civicrm-core/pull/17896))**
726
727 - **Replace a load of references to the wiki with docs links
728 ([17900](https://github.com/civicrm/civicrm-core/pull/17900))**
729
730 - **Remove unneccessary isoToDate function
731 ([dev/core#1921](https://lab.civicrm.org/dev/core/-/issues/1921):
732 [18025](https://github.com/civicrm/civicrm-core/pull/18025))**
733
734 - **CRM_Activity_Form_SearchTest::testQill can fail semi-randomly
735 ([dev/core#1894](https://lab.civicrm.org/dev/core/-/issues/1894):
736 [17902](https://github.com/civicrm/civicrm-core/pull/17902))**
737
738 - **Test for fatal error on new individual form
739 ([dev/core#1874](https://lab.civicrm.org/dev/core/-/issues/1874):
740 [17835](https://github.com/civicrm/civicrm-core/pull/17835))**
741
742 - **Bump lodash from 4.17.15 to 4.17.19
743 ([17858](https://github.com/civicrm/civicrm-core/pull/17858))**
744
745 - **Update regen.sh with new & upcoming core extensions
746 ([17839](https://github.com/civicrm/civicrm-core/pull/17839))**
747
748 - **APIv4 - Add activity contacts to APIv4 field spec
749 ([17766](https://github.com/civicrm/civicrm-core/pull/17766))**
750
751 - **Adjust mysql SET NAMES in remaining places as we agreed this was the go
752 ([17825](https://github.com/civicrm/civicrm-core/pull/17825))**
753
754 - **CRM_Utils_SQL - Add "onDuplicate()" and "syncInto()" helpers
755 ([17780](https://github.com/civicrm/civicrm-core/pull/17780))**
756
757 - **Improve efficiency of findFiles
758 ([17745](https://github.com/civicrm/civicrm-core/pull/17745))**
759
760 - **APIv4 Explorer: Improve selection of fields for HAVING
761 ([17746](https://github.com/civicrm/civicrm-core/pull/17746))**
762
763 - **Convert CRM.utils.formatDate tests to karma
764 ([17757](https://github.com/civicrm/civicrm-core/pull/17757))**
765
766 - **Teach CRM.utils.formatDate to also show time
767 ([17684](https://github.com/civicrm/civicrm-core/pull/17684))**
768
769 - **CRM_Utils_Hook: deprecation warning and short array syntax
770 ([17995](https://github.com/civicrm/civicrm-core/pull/17995))**
771
772 - **Remove check for valid email in synchronizeUFMatch
773 ([17771](https://github.com/civicrm/civicrm-core/pull/17771))**
774
775 - **Remove unused "ufUniqID" session variable
776 ([17904](https://github.com/civicrm/civicrm-core/pull/17904))**
777
778 - **Remove duplicate cache flush
779 ([17988](https://github.com/civicrm/civicrm-core/pull/17988))**
780
781 - **Remove extraneous opportunistic cache flush.
782 ([17936](https://github.com/civicrm/civicrm-core/pull/17936))**
783
784 - **Hooks/Dispatcher - Close loopholes that occur around "preboot" hooks
785 ([17831](https://github.com/civicrm/civicrm-core/pull/17831))**
786
787 - **Use PrematureExit exception instead of weird hack in tests
788 ([17870](https://github.com/civicrm/civicrm-core/pull/17870))**
789
790 - **Remove unnecessary try/catch per #17729
791 ([17823](https://github.com/civicrm/civicrm-core/pull/17823))**
792
793 - **handlePaymentNotification() should not be declared as a static method
794 ([17849](https://github.com/civicrm/civicrm-core/pull/17849))**
795
796 - **MembershipRenewalTest - Fix failure
797 ([17830](https://github.com/civicrm/civicrm-core/pull/17830))**
798
799 - **Remove hard coded charset.
800 ([17826](https://github.com/civicrm/civicrm-core/pull/17826))**
801
802 - **getLoggedInContactID() is a static function
803 ([17783](https://github.com/civicrm/civicrm-core/pull/17783))**
804
805 - **Remove PaymentExpress ipn class
806 ([17763](https://github.com/civicrm/civicrm-core/pull/17763))**
807
808 - **Remove unused, deprecated functions
809 ([17761](https://github.com/civicrm/civicrm-core/pull/17761))**
810
811 - **CIVICRM_BAO_CACHE_ADAPTER - Remove obsolete option
812 ([17990](https://github.com/civicrm/civicrm-core/pull/17990))**
813
814 - **More unused functions in GenCode
815 ([17756](https://github.com/civicrm/civicrm-core/pull/17756))**
816
817 - **Temporary tables should follow consistent naming convention
818 ([dev/core#183](https://lab.civicrm.org/dev/core/-/issues/183):
819 [17827](https://github.com/civicrm/civicrm-core/pull/17827))**
820
821 - **CRM_Core_BAO_Cache - Remove functions deprecated a year ago
822 ([17989](https://github.com/civicrm/civicrm-core/pull/17989))**
823
824 - **Fix all core processors to implement doPayment and not doTransferPayment or
825 doDirectPayment
826 ([https://lab.civicrm.org/dev/financial/-/issues/135](https://lab.civicrm.org/dev/financial/-/issues/135):
827 [18078](https://github.com/civicrm/civicrm-core/pull/18078) and
828 [18072](https://github.com/civicrm/civicrm-core/pull/18072))**
829
830 - **[REF] Extract setUserContext on contribution form & cleanup on backend add
831 membership form
832 ([17968](https://github.com/civicrm/civicrm-core/pull/17968))**
833
834 - **[REF] remove unnecessary variable variables
835 ([17903](https://github.com/civicrm/civicrm-core/pull/17903))**
836
837 - **[REF] - Add helper function for the repetitive task of fetching multilingual
838 ([17650](https://github.com/civicrm/civicrm-core/pull/17650))**
839
840 - **[REF] Unit test attempt to create reported bugs , minor cleanup
841 ([17560](https://github.com/civicrm/civicrm-core/pull/17560))**
842
843 - **[REF] Extract addToRecentItems from membership create
844 ([17524](https://github.com/civicrm/civicrm-core/pull/17524))**
845
846 - **[REF] Fix a couple of jQuery errors that have cropped up
847 ([17871](https://github.com/civicrm/civicrm-core/pull/17871))**
848
849 - **[REF] regen.sh - Remove unusual handling of `zipcodes.mysql`
850 ([17869](https://github.com/civicrm/civicrm-core/pull/17869))**
851
852 - **[REF] ScheduledJob cleanup, remove unused var
853 ([17862](https://github.com/civicrm/civicrm-core/pull/17862))**
854
855 - **[REF] Migrate Event Cart Setting into the Extension
856 ([17841](https://github.com/civicrm/civicrm-core/pull/17841))**
857
858 - **[REF] Only printOnly once
859 ([17850](https://github.com/civicrm/civicrm-core/pull/17850))**
860
861 - **[REF] APIv4 ConformanceTest - Split apart into per-entity sub-tests
862 ([17845](https://github.com/civicrm/civicrm-core/pull/17845))**
863
864 - **[REF] WebsiteTest - Mitigate flaky failures
865 ([17833](https://github.com/civicrm/civicrm-core/pull/17833))**
866
867 - **[REF] Follow up cleanup
868 ([17788](https://github.com/civicrm/civicrm-core/pull/17788))**
869
870 - **[REF] Remove ACL join on temp table creation in Member ContributionDetail
871 report ([17723](https://github.com/civicrm/civicrm-core/pull/17723))**
872
873 - **[REF] Do or do not - there is no try
874 ([17795](https://github.com/civicrm/civicrm-core/pull/17795))**
875
876 - **[REF] Unused interface CRM_Report_Interface
877 ([17767](https://github.com/civicrm/civicrm-core/pull/17767))**
878
879 - **[REF] - Cleanup StatusPreference BAO to be more standard
880 ([17801](https://github.com/civicrm/civicrm-core/pull/17801))**
881
882 - **[REF] Reduce interaction between dedupe code and createProfileContact
883 ([17920](https://github.com/civicrm/civicrm-core/pull/17920))**
884
885 - **[REF] Simplify field reference
886 ([17941](https://github.com/civicrm/civicrm-core/pull/17941))**
887
888 - **[REF] [Test] Minor simplification on test
889 ([18019](https://github.com/civicrm/civicrm-core/pull/18019))**
890
891 - **[REF] Simplify is_email_receipt in sendMail
892 ([18029](https://github.com/civicrm/civicrm-core/pull/18029))**
893
894 - **[REF] Remove transaction from BaseIPN completeTransaction call
895 ([18042](https://github.com/civicrm/civicrm-core/pull/18042))**
896
897 - **[REF] Simplify membership status date handling
898 ([18030](https://github.com/civicrm/civicrm-core/pull/18030))**
899
900 - **[REF] Clean up handling of financial_type_id override
901 ([18032](https://github.com/civicrm/civicrm-core/pull/18032))**
902
903 - **[REF] Remove transaction from completeOrder signature
904 ([18046](https://github.com/civicrm/civicrm-core/pull/18046))**
905
906 - **[REF] Remove transaction instantiation in PaypalPro
907 ([18026](https://github.com/civicrm/civicrm-core/pull/18026))**
908
909 - **[REF] Stop instantiating transaction in PaypalIPN
910 ([18020](https://github.com/civicrm/civicrm-core/pull/18020))**
911
912 - **[REF] Remove pass-by-reference & always empty param
913 ([17984](https://github.com/civicrm/civicrm-core/pull/17984))**
914
915 - **[REF] Tighten up function signature for dedupePair
916 ([17923](https://github.com/civicrm/civicrm-core/pull/17923))**
917
918 - **[REF] Move noisily deprecate BaseIPN->sendMail, call api from it rather
919 than BAO function
920 ([17982](https://github.com/civicrm/civicrm-core/pull/17982))**
921
922 - **[REF] Use CRM_Utils_Mail::send for sending emails for confirming unsubscribe
923 resubscribe auto replies and subscribing
924 ([17396](https://github.com/civicrm/civicrm-core/pull/17396))**
925
926 - **[REF] Reduce calls to CRM_Member_PseudoConstant::membershipType
927 ([17987](https://github.com/civicrm/civicrm-core/pull/17987))**
928
929 - **[REF] Use Standard function cacheClause to re-use contact acl cache table
930 ([17707](https://github.com/civicrm/civicrm-core/pull/17707))**
931
932 - **[REF] Make explicit what we are doing with 'values' in this code
933 ([17979](https://github.com/civicrm/civicrm-core/pull/17979))**
934
935 - **[REF] Minor code clean up
936 ([17974](https://github.com/civicrm/civicrm-core/pull/17974))**
937
938 - **[REF] Grant cleanup
939 ([17967](https://github.com/civicrm/civicrm-core/pull/17967))**
940
941 - **[REF] Refactor to use the standard CRM_Core_Form::addRadio function for a
942 number of radio elements
943 ([17932](https://github.com/civicrm/civicrm-core/pull/17932))**
944
945 - **[REF] Fix the default to_financial_account_id for generated transactions
946 ([17938](https://github.com/civicrm/civicrm-core/pull/17938))**
947
948 - **[REF] Upgrade dompdf version to be more compatible with PHP7.4
949 ([17946](https://github.com/civicrm/civicrm-core/pull/17946))**
950
951 - **[REF] [Tests] Cleanup test declaration to take advantage of mapping
952 improvements ([17939](https://github.com/civicrm/civicrm-core/pull/17939))**
953
954 - **[REF] Remove unnecessary complexity on im export
955 ([17949](https://github.com/civicrm/civicrm-core/pull/17949))**
956
957 - **[REF] GroupContact BAO - Minor code cleanup
958 ([17928](https://github.com/civicrm/civicrm-core/pull/17928))**
959
960 - **[REF] Minor function signuture cleanup
961 ([17922](https://github.com/civicrm/civicrm-core/pull/17922))**
962
963 - **[REF] Do not pass variable by reference
964 ([17921](https://github.com/civicrm/civicrm-core/pull/17921))**
965
966 - **[REF] remove first attempt to set currency in repeattransaction flow
967 ([18055](https://github.com/civicrm/civicrm-core/pull/18055))**
968
969 - **[REF] Even less variable variables
970 ([18058](https://github.com/civicrm/civicrm-core/pull/18058))**
971
972 - **[REF] Move handling of form elements back to the Form
973 ([17981](https://github.com/civicrm/civicrm-core/pull/17981))**
974
975 - **[REF] Simplify location metadata handling in Export class
976 ([17951](https://github.com/civicrm/civicrm-core/pull/17951))**
977
978 - **[REF] Do not pass by reference to the recur function
979 ([18057](https://github.com/civicrm/civicrm-core/pull/18057))**
980
981 - **[REF] Simplify getMembershipStatusByDate more
982 ([18051](https://github.com/civicrm/civicrm-core/pull/18051))**
983
984 - **[REF] Remove mail_mime package as now supplied by composer
985 ([300](https://github.com/civicrm/civicrm-packages/pull/300))**
986
987 - **[REF] Remove some deprecated size function calls replaced with length
988 ([299](https://github.com/civicrm/civicrm-packages/pull/299))**
989
990 - **Refactor "applyLocale" and remove references to "language" column in UFMatch
991 table ([18049](https://github.com/civicrm/civicrm-core/pull/18049))**
992
993 - **[NFC] Fix provider unit test on PHP7.4
994 ([18073](https://github.com/civicrm/civicrm-core/pull/18073))**
995
996 - **[NFC] Docblock cleanup
997 ([610](https://github.com/civicrm/civicrm-drupal/pull/610))**
998
999 - **[NFC] Update versions file to remove reference to Mail_mime and Mail
1000 ([301](https://github.com/civicrm/civicrm-packages/pull/301))**
1001
1002 - **[NFC] Re run regen after recent merges
1003 ([17842](https://github.com/civicrm/civicrm-core/pull/17842))**
1004
1005 - **[NFC] Fix nonstandard header comments
1006 ([17880](https://github.com/civicrm/civicrm-core/pull/17880))**
1007
1008 - **[NFC] Add in a unit test of calling the contribution page widget endpoint
1009 and remove unneeded file
1010 ([17965](https://github.com/civicrm/civicrm-core/pull/17965))**
1011
1012 - **[NFC] Improve docs for APIv4 Save action
1013 ([18004](https://github.com/civicrm/civicrm-core/pull/18004))**
1014
1015 - **[NFC] Docblock cleanup
1016 ([17945](https://github.com/civicrm/civicrm-core/pull/17945))**
1017
1018 - **[NFC] Update a few doc/wiki links in code comments
1019 ([17918](https://github.com/civicrm/civicrm-core/pull/17918))**
1020
1021 - **[NFC] Comment block cleanup
1022 ([17872](https://github.com/civicrm/civicrm-core/pull/17872))**
1023
1024 - **[Test] Update hook signature in test
1025 ([609](https://github.com/civicrm/civicrm-drupal/pull/609))**
1026
1027 - **[Test] Attempt to replicate #17852
1028 ([18038](https://github.com/civicrm/civicrm-core/pull/18038))**
1029
1030 - **[Test fix] We might need this to ensure really quick test runs don't fail
1031 ([18045](https://github.com/civicrm/civicrm-core/pull/18045))**
1032
1033 - **Add testing to Authorize.net and remove the lines that are repeated
1034 ([18028](https://github.com/civicrm/civicrm-core/pull/18028))**
1035
1036 - **Add test on status calculation
1037 ([18037](https://github.com/civicrm/civicrm-core/pull/18037))**
1038
1039 - **Fix for failing test
1040 ([18036](https://github.com/civicrm/civicrm-core/pull/18036))**
1041
1042 - **[Test framework] re-re-fix test and add test for test
1043 ([18013](https://github.com/civicrm/civicrm-core/pull/18013))**
1044
1045 - **Re-fix test ([18009](https://github.com/civicrm/civicrm-core/pull/18009))**
1046
1047 - **[Test framework] - Update failing test
1048 ([18003](https://github.com/civicrm/civicrm-core/pull/18003))**
1049
1050 - **[Test framework] - Combine triplicate createCase functions
1051 ([17957](https://github.com/civicrm/civicrm-core/pull/17957))**
1052
1053 - **Remove error checking by-pass in tests
1054 ([17940](https://github.com/civicrm/civicrm-core/pull/17940))**
1055
1056 - **[Test Framework] - Tests for report downloads
1057 ([17892](https://github.com/civicrm/civicrm-core/pull/17892))**
1058
1059 - **api_v3_TaxContributionPageTest - Remove hard coded processor id
1060 ([17860](https://github.com/civicrm/civicrm-core/pull/17860))**
1061
1062 - **API tests - label versions in dataprovider versionThreeAndFour
1063 ([17847](https://github.com/civicrm/civicrm-core/pull/17847))**
1064
1065 - **Extract code to set isEmailReceipt in Contribution.completeOrder
1066 ([18039](https://github.com/civicrm/civicrm-core/pull/18039))**
1067
1068 - **Do not pass-by-reference to recur function
1069 ([18071](https://github.com/civicrm/civicrm-core/pull/18071))**
1070
1071 - **Unused functions in GenCode
1072 ([17753](https://github.com/civicrm/civicrm-core/pull/17753))**
1073
1074 - **Fix typo in templates/CRM/Report/Form/Tabs/GroupBy.tpl
1075 ([17747](https://github.com/civicrm/civicrm-core/pull/17747))**
1076
1077 - **Remove unused "ufUniqID" session variable
1078 ([213](https://github.com/civicrm/civicrm-wordpress/pull/213))**
1079
1080 - **Remove Net packages Net_Curl Net_DIME as they do not appear to be used
1081 ([294](https://github.com/civicrm/civicrm-packages/pull/294))**
1082
1083 - **Update contributor key for Andrew
1084 ([18230](https://github.com/civicrm/civicrm-core/pull/18230))**
1085
1086 - **Fix qill typo
1087 ([18041](https://github.com/civicrm/civicrm-core/pull/18041))**
1088
1089 - **Update flexmailer release information
1090 ([17912](https://github.com/civicrm/civicrm-core/pull/17912))**
1091
1092 - **Remove invalid use of crmMoney formatter
1093 ([18031](https://github.com/civicrm/civicrm-core/pull/18031))**
1094
1095 - **Remove main PaymentExpress class
1096 ([18010](https://github.com/civicrm/civicrm-core/pull/18010))**
1097
1098 - **Remove unused parameter ids['billing']
1099 ([18021](https://github.com/civicrm/civicrm-core/pull/18021))**
1100
1101 - **Cache loader - remove legacy handling, handle null result from setting
1102 ([17999](https://github.com/civicrm/civicrm-core/pull/17999))**
1103
1104 - **Use case id to get relationship for activity creation
1105 ([17256](https://github.com/civicrm/civicrm-core/pull/17256) and
1106 [17764](https://github.com/civicrm/civicrm-core/pull/17764))**
1107
1108 ## <a name="credits"></a>Credits
1109
1110 This release was developed by the following code authors:
1111
1112 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman;
1113 Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma,
1114 Klaas Eikelboom; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku;
1115 Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Fuzion - Jitendra
1116 Purohit; iXiam - César Ramos, Diego Muñio; JMA Consulting - Monish Deb, Seamus
1117 Lee; John Kingsnorth; Joinery - Allen Shaw; Lighthouse Consulting and Design -
1118 Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MillerTech -
1119 Chamil Wijesooriya; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire;
1120 Progressive Technology Project - Jamie McClelland; Squiffle Consulting - Aidan
1121 Saunders; Stephen Palmstrom; Tadpole Collective - Kevin Cristiano; Timbsoft
1122 Technologies - Tunbola Ogunwande; Wikimedia Foundation - Eileen McNaughton
1123
1124 Most authors also reviewed code for this release; in addition, the following
1125 reviewers contributed their comments:
1126
1127 Agileware - Pengyi Zhang; Andrew Thompson; Artful Robot - Rich Lott; Australian
1128 Greens - Andrew Cormick-Dockery, John Twyman; Bastien Ho; Blackfly Solutions -
1129 Alan Dixon; Carlos Capote; CompuCorp - Jamie Novick; DevApp - Adam Kwiatkowski;
1130 Francesc Bassas i Bullich; Freeform Solutions - Herb van den Dool; Greenpeace
1131 Central and Eastern Europe - Patrick Figel; Irene Meisel; JMA Consulting - Joe
1132 Murray; Korlon - Stuart Gaston; Nicol Wistreich; Rar9; Ray Wright; Semper IT -
1133 Karin Gerritsen; Third Sector Design - Michael McAndrew
1134
1135 ## <a name="feedback"></a>Feedback
1136
1137 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
1138 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
1139 and contact `@agh1`.