5.51.0 release notes: added late changes
[civicrm-core.git] / release-notes / 5.15.0.md
1 # CiviCRM 5.15.0
2
3 Released July 3, 2019
4
5 - **[Synopsis](#synopsis)**
6 - **[Features](#features)**
7 - **[Bugs resolved](#bugs)**
8 - **[Miscellany](#misc)**
9 - **[Credits](#credits)**
10 - **[Feedback](#feedback)**
11
12 ## <a name="synopsis"></a>Synopsis
13
14 | *Does this version...?* | |
15 |:--------------------------------------------------------------- |:-------:|
16 | Fix security vulnerabilities? | no |
17 | Change the database schema? | **yes** |
18 | Alter the API? | **yes** |
19 | Require attention to configuration options? | no |
20 | Fix problems installing or upgrading to a previous version? | **yes** |
21 | Introduce features? | **yes** |
22 | Fix bugs? | **yes** |
23
24 ## <a name="features"></a>Features
25
26 ### Core CiviCRM
27
28 - **Rearrange quick search options
29 ([dev/core#628](https://lab.civicrm.org/dev/core/issues/628):
30 [14441](https://github.com/civicrm/civicrm-core/pull/14441))**
31
32 This change makes it so that the quicksearch field options can be rearranged.
33
34 - **Improve formatting for settings checkboxes
35 ([14461](https://github.com/civicrm/civicrm-core/pull/14461) and
36 [14419](https://github.com/civicrm/civicrm-core/pull/14419))**
37
38 Restyles the checkboxes on the "Display Preferences" screen so they all use
39 the same styling for visual consistency and restyles the "Components" settings
40 field as a checkbox list instead of it being an AdvMultiSelect element.
41
42 - **Differentiate smart group from regular group using icon in select2 field
43 (preliminary work for [dev/core#785](https://lab.civicrm.org/dev/core/issues/785):
44 [14416](https://github.com/civicrm/civicrm-core/pull/14416))**
45
46 Extends the addField() function to support fields of the type `select2` and
47 `select`.
48
49 - **Cleanup & api-ise the dedupe code (preliminary work for
50 [dev/core#982](https://lab.civicrm.org/dev/core/issues/982):
51 [14298](https://github.com/civicrm/civicrm-core/pull/14298))**
52
53 Adds a `dedupe.getstatistics` API action.
54
55 - **Add Contact.get_merge_conflicts API
56 ([14394](https://github.com/civicrm/civicrm-core/pull/14394))**
57
58 Adds a `contact.get_merge_conflicts` API action.
59
60 - **Add API for Dedupe.getduplicates
61 ([14411](https://github.com/civicrm/civicrm-core/pull/14411))**
62
63 Adds a `dedupe.getduplicates` API action.
64
65 - **Support latest PHPUnit versions
66 ([dev/core#980](https://lab.civicrm.org/dev/core/issues/980):
67 [14333](https://github.com/civicrm/civicrm-core/pull/14333),
68 [14387](https://github.com/civicrm/civicrm-core/pull/14387),
69 [14279](https://github.com/civicrm/civicrm-core/pull/14279),
70 [14319](https://github.com/civicrm/civicrm-core/pull/14319),
71 [14315](https://github.com/civicrm/civicrm-core/pull/14315),
72 [14421](https://github.com/civicrm/civicrm-core/pull/14421),
73 [14404](https://github.com/civicrm/civicrm-core/pull/14404),
74 [254](https://github.com/civicrm/civicrm-packages/pull/254),
75 [14283](https://github.com/civicrm/civicrm-core/pull/14283) and
76 [14321](https://github.com/civicrm/civicrm-core/pull/14321))**
77
78 Updates phpunit version support so that the CiviCRM test suite works with
79 phpunit versions 5 thru 8. Removes dependency on discontinued dbunit. Moves
80 towards using API functions instead of dbunit.
81
82 - **Permit sort_name as a url parameter on advanced search
83 ([14475](https://github.com/civicrm/civicrm-core/pull/14475))**
84
85 Lays the ground work for a metadata based approach to search forms,
86 Specifically for the contact form. Converts one field (sort_name) to be
87 added by metadata and also to be supported via url (sort_name=x).
88
89 - **Allow updating ENGINE_CONFIG for System.updatelogtables
90 ([14348](https://github.com/civicrm/civicrm-core/pull/14348))**
91
92 Makes it so users can modify the SQL engine config for log tables thru the
93 api.
94
95 - **Reduce cache bypasses - Do not bypass custom metadata cache in setGroupTree
96 ([14292](https://github.com/civicrm/civicrm-core/pull/14292))**
97
98 Improves performance when editing a form with custom data by using
99 the cached metadata instead of doing a database query to rebuild the metadata.
100
101 - **Try enabling api4 extension in test suite
102 ([14241](https://github.com/civicrm/civicrm-core/pull/14241))**
103
104 Makes the api4 extension available when running unit tests.
105
106 - **Use data provider to test both API versions
107 ([14153](https://github.com/civicrm/civicrm-core/pull/14153))**
108
109 Makes it so 311 API v3 tests are converted to also test API v4.
110
111 - **Advanced search: activity tags should use select2 ([
112 dev/core#924](https://lab.civicrm.org/dev/core/issues/924):
113 [14247](https://github.com/civicrm/civicrm-core/pull/14247))**
114
115 Changes the "Activity Tags" field on the "Advanced Search" form to be a
116 select2 instead of a checkbox list to improve user experience.
117
118 ## CiviContribute
119
120 - **Better support in core for token payment processing (continues work for
121 [dev/core#905](https://lab.civicrm.org/dev/core/issues/905):
122 [14395](https://github.com/civicrm/civicrm-core/pull/14395) and
123 [14343](https://github.com/civicrm/civicrm-core/pull/14343))**
124
125 Separates the `contribution_recur` status_id option group from the `contribution`
126 status_id option group and adds the contribution recur statuses 'Processing'
127 and 'Failing'.
128
129 - **Add cancel_reason field to civicrm_contribution_recur table
130 ([dev/core#830](https://lab.civicrm.org/dev/core/issues/830):
131 [13997](https://github.com/civicrm/civicrm-core/pull/13997))**
132
133 Adds a `Cancellation Reason` field to the form to cancel recurring
134 contributions.
135
136 - **Add time start date and end date values on page contribution widget ajax
137 response ([dev/core#964](https://lab.civicrm.org/dev/core/issues/964):
138 [14262](https://github.com/civicrm/civicrm-core/pull/14262))**
139
140 Makes campaign start and end dates available to the campaign widget on
141 Contribution Pages so that one can customize the campaign widget with options
142 such as "Starts in X days".
143
144 - **Expose contribution page in Contribution Summary report
145 ([dev/core#959](https://lab.civicrm.org/dev/core/issues/959):
146 [14249](https://github.com/civicrm/civicrm-core/pull/14249))**
147
148 Exposes the contribution page field in the "Contribution Summary" report.
149
150 - **Add developer tab for summary report
151 ([14254](https://github.com/civicrm/civicrm-core/pull/14254))**
152
153 Adds a developer tab to the "Contribution Summary" report.
154
155 - **Wrap titles in metadata in ts on payment.create API
156 ([14450](https://github.com/civicrm/civicrm-core/pull/14450))**
157
158 Improves the API v3 explorer for multilingual sites by translating the
159 titles in the payment create API action.
160
161 - **Translation in billingblock.tpl - dropping 'Information'
162 ([14358](https://github.com/civicrm/civicrm-core/pull/14358))**
163
164 Improves translation of the billing block on front facing contribution and
165 event forms by removing the word Information from the title.
166
167 ## CiviEvent
168
169 - **WYSIWYG support for i18n event fields
170 ([14384](https://github.com/civicrm/civicrm-core/pull/14384) and
171 [14396](https://github.com/civicrm/civicrm-core/pull/14396))**
172
173 Adds support for wysiwyg editor in i18n popup for event fields.
174
175 ## Drupal Integration
176
177 - **Pass the RFC 3164 severity level thru to drupal watchdog.
178 ([14185](https://github.com/civicrm/civicrm-core/pull/14185))**
179
180 Improves error logging for Drupal users by passing the severity level to
181 drupal watchdog. Before this change all errors passed from CiviCRM to
182 drupal watchdog were logged at the debug level now errors, warnings, notices,
183 info, etc. can be logged as such.
184
185 ## <a name="bugs"></a>Bugs resolved
186
187 ### Core CiviCRM
188
189 - **Fix Notice errors caused by l10n rewriting of query so query outputed create
190 view rather than the create table
191 ([dev/translation#26](https://lab.civicrm.org/dev/translation/issues/26):
192 [14152](https://github.com/civicrm/civicrm-core/pull/14152))**
193
194 Fixes a notice `Undefined property: CRM_Core_DAO::$Create_Table in
195 CRM_Core_DAO::checkConstraintExists()..` when enabling a language in
196 multilingual mode.
197
198 - **File custom fields cause a fatal error when trying to merge
199 ([dev/core#723](https://lab.civicrm.org/dev/core/issues/723):
200 [14325](https://github.com/civicrm/civicrm-core/pull/14325))**
201
202 Fixes a fatal error when trying to merge two contacts with the custom fields
203 of type "file".
204
205 - **Autogenerated .htaccess is for apache 2.2
206 ([dev/core#913](https://lab.civicrm.org/dev/core/issues/913):
207 [14158](https://github.com/civicrm/civicrm-core/pull/14158))**
208
209 Updates the auto-generated .htaccess so it no longer gives an internal error
210 for sites on apache 2.4.
211
212 - **Dedupe screen: single "flip" and multi-selected-flip have no effect
213 ([dev/core#932](https://lab.civicrm.org/dev/core/issues/932):
214 [14195](https://github.com/civicrm/civicrm-core/pull/14195))**
215
216 Fixes the dedupe screen "flip selected duplicates" button so that it
217 works as expected.
218
219 - **$this can not be used in static methods
220 ([dev/core#945](https://lab.civicrm.org/dev/core/issues/945):
221 [14217](https://github.com/civicrm/civicrm-core/pull/14217))**
222
223 Fixes "$this can not be used in static methods" error thrown by
224 getIncompleteImportTables() in CRM/Contact/Import/ImportJob.php
225
226 - **CiviCRM 5.13.4 - Specified key was too long; max key length is 767 bytes
227 ([dev/core#978](https://lab.civicrm.org/dev/core/issues/978):
228 [14363](https://github.com/civicrm/civicrm-core/pull/14363))**
229
230 Fixes DB Error: `unknown error` if the system status check query fails.
231
232 - **userFrameworkResourceURL gets wrong trailing slash on windows
233 ([dev/core#985](https://lab.civicrm.org/dev/core/issues/985):
234 [14405](https://github.com/civicrm/civicrm-core/pull/14405))**
235
236 Fixes an issue where `addTrailingSlash` would generate a \ instead of a '/' on
237 Windows.
238
239 - **Can't set a non-breaking space as Thousands Separator in Administer >
240 Localization settings
241 ([dev/core#994](https://lab.civicrm.org/dev/core/issues/994):
242 [14376](https://github.com/civicrm/civicrm-core/pull/14376))**
243
244 Removes a form rule preventing location separators from having more than one
245 character so that one can use a non-breaking space (or other string longer
246 than one character).
247
248 - **Add CRM_Utils_System::sendResponse(). Fix AssetBuilder's status-code on WP.
249 ([14468](https://github.com/civicrm/civicrm-core/pull/14468))**
250
251 Ensures that a consistent response is returned across CMS's in regards to
252 Asset Builder URLs. Before this change Wordpress would return a different
253 response then Drupal/Backdrop and E2E Unit tests would fail on Wordpress.
254
255 - **Fix Exception API to save lower id number as contact 1
256 ([14448](https://github.com/civicrm/civicrm-core/pull/14448))**
257
258 Improves consistency when deduping contacts.
259
260 - **Fix Exception to remove result from duplicates
261 ([14447](https://github.com/civicrm/civicrm-core/pull/14447))**
262
263 Ensures that marking a non-duplicate contact removes them from the cached
264 duplicates table.
265
266 - **Fix upgrade on participant_register date
267 ([14427](https://github.com/civicrm/civicrm-core/pull/14427))**
268
269 Fixes conversion routing on participant register date when upgrading to 5.15.
270
271 - **Misc translation 'ts' fixes
272 ([14467](https://github.com/civicrm/civicrm-core/pull/14467))**
273
274 Fixes a few places where `ts()` was used incorrectly so that is used correctly.
275
276 - **Don't run search when editing smartgroup criteria
277 ([14464](https://github.com/civicrm/civicrm-core/pull/14464))**
278
279 Ensures that editing smart group criteria does not trigger a search on that
280 smartgroup before the criteria can be viewed.
281
282 - **Add angular-xeditable to angular
283 ([14414](https://github.com/civicrm/civicrm-core/pull/14414))**
284
285 Add angular xeditable component to our bower_components.
286
287 - **crmRouteBinder - Remove params from url if they equal their defaults
288 ([14211](https://github.com/civicrm/civicrm-core/pull/14211))**
289
290 Ensures when a parameter is removed in the api4 explorer, it is also removed
291 from the url.
292
293 - **Remove wasteful double-caching of settings metadata
294 ([14259](https://github.com/civicrm/civicrm-core/pull/14259))**
295
296 Ensures that Settings metadata is cached once per domain and that
297 `hook_civicrm_alterSettingsMetaData()` is invoked only once per domain.
298
299 - **Remove CIVICRM_TEMP_FORCE_UTF8; deprecate TempTable::setUtf8()
300 ([14004](https://github.com/civicrm/civicrm-core/pull/14004))**
301
302 Continues work to phase out CIVICRM_TEMP_FORCE_UTF8.
303
304 - **Stop overriding is_active default when saving new relationship
305 ([14199](https://github.com/civicrm/civicrm-core/pull/14199))**
306
307 Ensures that new relationships are saved as active by default.
308
309 - **Enotice fix on creating a smart group
310 ([14180](https://github.com/civicrm/civicrm-core/pull/14180))**
311
312 Fixes an E-notice `Notice: Undefined index: component_mode in
313 CRM_Contact_Form_Task_SaveSearch->PreProcess()` when creating a smart group.
314
315 - **Ensure that the oldest creation date is preserved when deduping
316 ([dev/core#996](https://lab.civicrm.org/dev/core/issues/996):
317 [14368](https://github.com/civicrm/civicrm-core/pull/14368))**
318
319 - **Recurring activities don't carry over custom data and tags
320 ([CRM-21832](https://issues.civicrm.org/jira/browse/CRM-21832),
321 [14183](https://github.com/civicrm/civicrm-core/pull/14183))**
322
323 - **Disabling Alphabetical Pager is not respected for events and contribution
324 pages. ([dev/core#705](https://lab.civicrm.org/dev/core/issues/705):
325 [14203](https://github.com/civicrm/civicrm-core/pull/14203))**
326
327 - **When creating relationship types don't munge names
328 ([14216](https://github.com/civicrm/civicrm-core/pull/14216))**
329
330 - **CRM_Extension_System - Only allow `test.*` extensions during headless
331 testing. Hide from regular users.
332 ([14392](https://github.com/civicrm/civicrm-core/pull/14392))**
333
334 - **Fix name of cache key column to be all lower case rather than camel case in
335 civicrm_prevnext_cache
336 ([14359](https://github.com/civicrm/civicrm-core/pull/14359))**
337
338 - **Don't apply api3 pre/post processing to api4 actions
339 ([14357](https://github.com/civicrm/civicrm-core/pull/14357))**
340
341 - **Fix fatal error when full group by mysql mode enabled & selecting contacts
342 ([14331](https://github.com/civicrm/civicrm-core/pull/14331))**
343
344 - **Caches - Normalize dependency on php-cache integration-tests
345 ([14423](https://github.com/civicrm/civicrm-core/pull/14423))**
346
347 - **Cache/IntegrationTests - Remove. This can be replaced by composer dependency
348 ([255](https://github.com/civicrm/civicrm-packages/pull/255))**
349
350 ## CiviCase
351
352 - **Case report showing 1 result
353 ([dev/core#743](https://lab.civicrm.org/dev/core/issues/743):
354 [14082](https://github.com/civicrm/civicrm-core/pull/14082))**
355
356 Fixes the Case Summary report so that it properly filters on case
357 relationships.
358
359 - **Set title properly on Move/Copy/File on Case popup
360 ([14347](https://github.com/civicrm/civicrm-core/pull/14347))**
361
362 Ensures when clicking "Move to Case"/"Copy to Case" from the Manage cases
363 activity list the title is set correctly and stays set correctly instead of
364 reverting to "File on Case".
365
366 - **Manage Case search filter "Deleted Activities" no longer working
367 ([dev/core#1022](https://lab.civicrm.org/dev/core/issues/1022):
368 [14445](https://github.com/civicrm/civicrm-core/pull/14445))**
369
370 Fixes the search filter "Deleted Activities" on the Manage Cases form.
371
372 - **Closing a case gives a warning notice
373 ([dev/core#896](https://lab.civicrm.org/dev/core/issues/896):
374 [14160](https://github.com/civicrm/civicrm-core/pull/14160))**
375
376
377 ## CiviContribute
378
379 - **Bug in storing settings for CiviContribute component
380 ([dev/financial#54](https://lab.civicrm.org/dev/financial/issues/54):
381 [14267](https://github.com/civicrm/civicrm-core/pull/14267))**
382
383 Ensures deferred revenue settings are respected.
384
385 - **Changing financial type on a contribution records incorrect financial items
386 ([dev/financial#56](https://lab.civicrm.org/dev/financial/issues/56):
387 [14309](https://github.com/civicrm/civicrm-core/pull/14309))**
388
389 Fixes a bug where changing the financial type on a contribution record would
390 result in a sales tax row being added regardless of whether sales tax was
391 turned on.
392
393 - **Fix financial ACL permissions to respect check_permissions
394 ([14118](https://github.com/civicrm/civicrm-core/pull/14118))**
395
396 Fixes bug where `check_permissions=0` is ignored when doing contribution.get
397 in conjunction with financial ACLs.
398
399 - **Elavon payment processor seems to no longer accept url encoded emails
400 ([dev/core#966](https://lab.civicrm.org/dev/core/issues/966):
401 [14263](https://github.com/civicrm/civicrm-core/pull/14263))**
402
403 Fixes payment processing for sites using an Elavon processor.
404
405 - **Set new inactive statuses as 'Chargeback' does not exist on new installs and
406 that breaks Contributionrecur.create API
407 ([14398](https://github.com/civicrm/civicrm-core/pull/14398))**
408
409 - **Fix inconsistent handling when searching contribution text fields
410 ([14354](https://github.com/civicrm/civicrm-core/pull/14354))**
411
412 - **Fix bug where contribution status is mishandled if label is changed
413 ([14352](https://github.com/civicrm/civicrm-core/pull/14352))**
414
415 ## CiviEvent
416
417 - **Sorting participants ignored search values.
418 ([dev/core#981](https://lab.civicrm.org/dev/core/issues/981):
419 [14313](https://github.com/civicrm/civicrm-core/pull/14313))**
420
421 Ensures when searching for participants for a specific event and then sorting
422 the results the search parameters are respected, before this change all
423 participants for all events would be displayed.
424
425 - **Fix deprecation notice on manage events page
426 ([14289](https://github.com/civicrm/civicrm-core/pull/14289))**
427
428 Removes a `User deprecated function: Deprecated function
429 CRM_Event_BAO_Event::CheckPermission` notice from the manage events page.
430
431 - **Backoffice participant transfer form does not populate contact reference
432 field ([dev/core#888](https://lab.civicrm.org/dev/core/issues/888):
433 [14102](https://github.com/civicrm/civicrm-core/pull/14102))**
434
435 ## CiviMail
436
437 - **Deletion of SMS provider caused all scheduled reminders to fail to be sent
438 (begins work for [dev/core#369](https://lab.civicrm.org/dev/core/issues/369):
439 [14266](https://github.com/civicrm/civicrm-core/pull/14266))**
440
441 Before this change if the Scheduled reminder job was triggered and there were
442 active SMS scheduled reminders for which the SMS Provider has been deleted the
443 job would fail with the message "Provider not known or not provided" and no
444 scheduled reminders would go out this change makes it so that scheduled
445 reminders for which a SMS Provider exists will go out even if there are some
446 scheduled SMS reminders for which there is not an SMS Provider.
447
448 - **E_NOTICE when creating bulk SMS
449 ([dev/core#1023](https://lab.civicrm.org/dev/core/issues/1023):
450 [14449](https://github.com/civicrm/civicrm-core/pull/14449))**
451
452 Fixes E_NOTICE `Notice: Undefined index: Subject in
453 civicrm_api3_mailing_preview()` when creating bulk SMS.
454
455 - **"Confirm this subscription" URL generated by MailingEventSubscribe API
456 should always be a front-end
457 URL([dev/core#1005](https://lab.civicrm.org/dev/core/issues/1005):
458 [14389](https://github.com/civicrm/civicrm-core/pull/14389))**
459
460 Ensures that the "Confirm this subscription" URL included in bulk emails is
461 always a front end URL.
462
463 - **SMTP help text is misleading - references the wrong admin screen
464 ([dev/core#879](https://lab.civicrm.org/dev/core/issues/879):
465 [14329](https://github.com/civicrm/civicrm-core/pull/14329))**
466
467 - **[Outbound mail admin form] fix some more notices resulting from recent
468 change ([14433](https://github.com/civicrm/civicrm-core/pull/14433))**
469
470 ## CiviPledge
471
472 - **incorrect capitalization in default Pledges - Acknowledgement message
473 template ([dev/core#1010](https://lab.civicrm.org/dev/core/issues/1010):
474 [14465](https://github.com/civicrm/civicrm-core/pull/14465) and
475 [14469](https://github.com/civicrm/civicrm-core/pull/14469))**
476
477 Ensures that Pledge acknowledgments use correct capitalization and the
478 `email_greeting`.
479
480 - **correct syntax "IS NOT NULL" to get pledge payment count
481 ([13374](https://github.com/civicrm/civicrm-core/pull/13374))**
482
483 Ensures when editing a payment for a pledge the screen does not freeze because
484 the API count returns 0.
485
486 ## Drupal Integration
487
488 - **incorrect Drupal 8 login URL
489 ([dev/core#898]https://lab.civicrm.org/dev/core/issues/898():
490 [14138](https://github.com/civicrm/civicrm-core/pull/14138))**
491
492 If you create a public contribution page on a Drupal 8 site, it will include a
493 login link for unauthenticated users, with parameters ?destination=... to
494 direct back to the contribution page after login. Fixes this link for
495 recent Drupal versionsso it points to the right login url.
496
497 - **Drupal8: Implement set UF locale/language (affects mailing tokens)
498 ([dev/drupal#19](https://lab.civicrm.org/dev/drupal/issues/19):
499 [14302](https://github.com/civicrm/civicrm-core/pull/14302) and
500 [12152](https://github.com/civicrm/civicrm-core/pull/12152))**
501
502 Fixes a 500 error when calling the REST API endpoint in Drupal 8 and fixes a
503 bug when using Drupal 8 with a multilingual site where mailing token links
504 were not taking the user to the page in the expected language.
505
506 - **Drupal8/jquery
507 ([dev/drupal#68](https://lab.civicrm.org/dev/drupal/issues/68):
508 [14442](https://github.com/civicrm/civicrm-core/pull/14442))**
509
510 Fixes a Javascript error if Drupal's jQuery is not loaded (when its not
511 needed).
512
513 - **Fix legacy IPN endpoint for Drupal
514 ([dev/core#973](https://lab.civicrm.org/dev/core/issues/973):
515 [14272](https://github.com/civicrm/civicrm-core/pull/14272))**
516
517 Fixes a `PHP Fatal error: Uncaught Error: Call to undefined function
518 variable_get()` error when bootstraping Drupal for Drupal sites collecting
519 recurring PayPal donations.
520
521 - **Don't call session_start() before CMS bootstrap (PHP 7.2 compat)
522 ([14074](https://github.com/civicrm/civicrm-core/pull/14074))**
523
524 Fixes a `Warning: ini_set(): A session is active` error for Drupal sites
525 running PHP > 7.1.
526
527 ## Joomla Integration
528
529 - **Fix php warning when viewing profiles
530 ([dev/joomla#11](https://lab.civicrm.org/dev/joomla/issues/11):
531 [14312](https://github.com/civicrm/civicrm-core/pull/14312))**
532
533 ## <a name="misc"></a>Miscellany
534
535 - **Declare API Key as a protected field for future use
536 ([14274](https://github.com/civicrm/civicrm-core/pull/14274))**
537
538 - **Make apiRequst nextId accessible for api4 constructor
539 ([14311](https://github.com/civicrm/civicrm-core/pull/14311))**
540
541 - **Remove confusing pass params by ref
542 ([14360](https://github.com/civicrm/civicrm-core/pull/14360))**
543
544 - **Add EntityPageTrait
545 ([14399](https://github.com/civicrm/civicrm-core/pull/14399))**
546
547 - **[code-quality] [jcalendar] remove jcalendar usage from
548 participant_register_date on event search
549 ([14330](https://github.com/civicrm/civicrm-core/pull/14330))**
550
551 - **Deprecate creating recipients from MailingJob.create.
552 ([14097](https://github.com/civicrm/civicrm-core/pull/14097))**
553
554 - **Fix running of CRM_Utils_MoneyTest on PHPUnit6+
555 ([14424](https://github.com/civicrm/civicrm-core/pull/14424))**
556
557 - **Remove broken delete from customGroupCreate
558 ([14239](https://github.com/civicrm/civicrm-core/pull/14239))**
559
560 - **Remove duplicate line in case BAO
561 ([14345](https://github.com/civicrm/civicrm-core/pull/14345))**
562
563 - **Switch to calling Payment.create api when processing a refund from
564 AdditionalPayment form
565 ([14317](https://github.com/civicrm/civicrm-core/pull/14317))**
566
567 - **Updating contact (with no email) via import adding email doesn't set email
568 as primary (adds test for
569 [dev/core#953](https://lab.civicrm.org/dev/core/issues/953):
570 [14225](https://github.com/civicrm/civicrm-core/pull/14225))**
571
572 - **Cancel first contribution associated to membership, cancels the membership
573 (preliminary work for
574 [dev/core#927](https://lab.civicrm.org/dev/core/issues/927):
575 [14197](https://github.com/civicrm/civicrm-core/pull/14197))**
576
577 - **Searching for removed contacts in a smart group doesn't work (preliminary
578 work for [dev/core#926](https://lab.civicrm.org/dev/core/issues/926):
579 [14181](https://github.com/civicrm/civicrm-core/pull/14181))**
580
581 - **When using custom fields for smart group criteria with relative dates the
582 group does not respect the relative date over time (preliminary work for
583 [dev/core#389](https://lab.civicrm.org/dev/core/issues/389)[14401]:
584 (https://github.com/civicrm/civicrm-core/pull/14401) and
585 [14386](https://github.com/civicrm/civicrm-core/pull/14386))**
586
587 - **Remove instances of $dao->free
588 ([dev/core#562](https://lab.civicrm.org/dev/core/issues/562):
589 [14179](https://github.com/civicrm/civicrm-core/pull/14179))**
590
591 - **Correct syntax for Get pledge payment count (extend test coverage for
592 [dev/core#627](https://lab.civicrm.org/dev/core/issues/627):
593 [14350](https://github.com/civicrm/civicrm-core/pull/14350))**
594
595 - **Remove never-called function
596 _civicrm_api3_deprecated_contact_check_custom_params
597 ([14341](https://github.com/civicrm/civicrm-core/pull/14341))**
598
599 - **IDE re-format of tools directory
600 ([14177](https://github.com/civicrm/civicrm-core/pull/14177))**
601
602 - **Unit test for FGB error in #14331
603 ([14340](https://github.com/civicrm/civicrm-core/pull/14340))**
604
605 - **Test tweaks that *might* help with intermittant test weirdness
606 ([14458](https://github.com/civicrm/civicrm-core/pull/14458))**
607
608 - **[TEST SUITE] Remove some use of dbunit from tests
609 ([14271](https://github.com/civicrm/civicrm-core/pull/14271))**
610
611 - **Test cleanup to remove references to discontinued package dbunit
612 ([14276](https://github.com/civicrm/civicrm-core/pull/14276))**
613
614 - **[dbunit test] remove dbunit dependency
615 ([14328](https://github.com/civicrm/civicrm-core/pull/14328))**
616
617 - **Add unit test for merge handling on custom data.
618 ([14310](https://github.com/civicrm/civicrm-core/pull/14310))**
619
620 - **Fix test / possible live error on submitting credit card renewals
621 ([14316](https://github.com/civicrm/civicrm-core/pull/14316))**
622
623 - **Update testGetActivityAccessCiviCRMEnough test for clarity
624 ([14226](https://github.com/civicrm/civicrm-core/pull/14226))**
625
626 - **[REF] Move retrieval of basicSearchFields to 'get' fn
627 ([14476](https://github.com/civicrm/civicrm-core/pull/14476))**
628
629 - **[REF] Remove input format function from deprecated utils to the only place
630 that calls it ([14342](https://github.com/civicrm/civicrm-core/pull/14342))**
631
632 - **[REF] extract isLiveMode
633 ([14336](https://github.com/civicrm/civicrm-core/pull/14336))**
634
635 - **[REF] use generic loadStandardSearchOptionsFromUrl
636 ([14338](https://github.com/civicrm/civicrm-core/pull/14338))**
637
638 - **[REF] Extract function to get cached duplicate matches
639 ([14324](https://github.com/civicrm/civicrm-core/pull/14324))**
640
641 - **[REF] minor code re-org
642 ([14318](https://github.com/civicrm/civicrm-core/pull/14318))**
643
644 - **[REF] Remove extraneous variable
645 ([14261](https://github.com/civicrm/civicrm-core/pull/14261))**
646
647 - **[REF] Centralize logic for resolving settings pseudoconstants
648 ([14264](https://github.com/civicrm/civicrm-core/pull/14264))**
649
650 - **[REF] Super Minor code readability fix
651 ([14258](https://github.com/civicrm/civicrm-core/pull/14258))**
652
653 - **[REF] Move copyCustomFields function from Event to Core_DAO for
654 re-usablibilty ([14171](https://github.com/civicrm/civicrm-core/pull/14171))**
655
656 - **[REF] Remove reference symbol from 2 variables
657 ([14270](https://github.com/civicrm/civicrm-core/pull/14270))**
658
659 - **[cleanup] Remove deprecated pattern &CRM_Core_Config::singleton()
660 ([14178](https://github.com/civicrm/civicrm-core/pull/14178))**
661
662 - **[REF] Refactor to reduce duplication on payment forms
663 ([14206](https://github.com/civicrm/civicrm-core/pull/14206))**
664
665 - **[REF+ test] start process of cleaning up payment activity handling
666 ([14198](https://github.com/civicrm/civicrm-core/pull/14198))**
667
668 - **[REF][Test] Remove call to
669 CRM_Contribute_BAO_Contribution::recordAdditionalPayment in favour of payment
670 create ([14137](https://github.com/civicrm/civicrm-core/pull/14137))**
671
672 - **[REF+test] clean up code for getting labels for merge screen, stdise
673 ([14260](https://github.com/civicrm/civicrm-core/pull/14260))**
674
675 - **[REF] Simplify ACL page template
676 ([14288](https://github.com/civicrm/civicrm-core/pull/14288))**
677
678 - **[REF] Fix pointless use of CRM_Utils_Array::value in Campaign BAO
679 ([14300](https://github.com/civicrm/civicrm-core/pull/14300))**
680
681 - **[code-cleanup] remove orderBy param from getDuplicatePairs, it is not used
682 ([14297](https://github.com/civicrm/civicrm-core/pull/14297))**
683
684 - **[REF] extract buildGroupTree function
685 ([14303](https://github.com/civicrm/civicrm-core/pull/14303))**
686
687 - **[REF] Test class cleanup - Extract function to create nuanced custom fields
688 to a trait ([14301](https://github.com/civicrm/civicrm-core/pull/14301))**
689
690 - **[REF] Cleanup input & output on paymentActivityCreate & improve test
691 ([14269](https://github.com/civicrm/civicrm-core/pull/14269))**
692
693 - **[REF] move calculation of migrationInfo into the function that uses it
694 ([14365](https://github.com/civicrm/civicrm-core/pull/14365))**
695
696 - **[REF] extract buildClause from CRM_Report_Form_Event_Income
697 ([14098](https://github.com/civicrm/civicrm-core/pull/14098))**
698
699 - **[REF] Activity Summary report - move temp table generation etc from
700 postProcess to buildQuery, remove postProcess, don't skip in unit tests
701 ([14375](https://github.com/civicrm/civicrm-core/pull/14375))**
702
703 - **[REF] Activity form - very minor tidy up
704 ([14434](https://github.com/civicrm/civicrm-core/pull/14434))**
705
706 - **[REF] Stop passing cacheKey to refillCache
707 ([14337](https://github.com/civicrm/civicrm-core/pull/14337))**
708
709 - **[REF] dev/core#998 make processDupes testable & add test
710 ([14370](https://github.com/civicrm/civicrm-core/pull/14370))**
711
712 - **[REF] Remove reference to 'changePaymentInstrument' from
713 updateFinancialAccounts as never passed in
714 ([14353](https://github.com/civicrm/civicrm-core/pull/14353))**
715
716 - **[NFC][test-fix] centralise use of assertLike for comparing sql
717 ([14470](https://github.com/civicrm/civicrm-core/pull/14470))**
718
719 - **[nfc] [test] Skip testGetFromTo on date transition
720 ([14472](https://github.com/civicrm/civicrm-core/pull/14472))**
721
722 - **[NFC] Fix issue with Job Manager Test giving out a warning
723 ([14327](https://github.com/civicrm/civicrm-core/pull/14327))**
724
725 - **[NFC] Fix comment block for variable declarations
726 ([14314](https://github.com/civicrm/civicrm-core/pull/14314))**
727
728 - **(NFC) Update node package versions to latest ones
729 ([14087](https://github.com/civicrm/civicrm-core/pull/14087))**
730
731 - **[NFC] Update civicrm_generated data file following addition of contriā€¦
732 ([14371](https://github.com/civicrm/civicrm-core/pull/14371))**
733
734 - **(NFC) Remove without param tests
735 ([14454](https://github.com/civicrm/civicrm-core/pull/14454))**
736
737 - **[NFC] PHPCS fixes.
738 ([14402](https://github.com/civicrm/civicrm-core/pull/14402))**
739
740 - **[NFC] Update package-lock and civicrm_generated to fix langague issues
741 ([14385](https://github.com/civicrm/civicrm-core/pull/14385))**
742
743 - **[NFC] phpdoc cleanup
744 ([14335](https://github.com/civicrm/civicrm-core/pull/14335))**
745
746 - **[NFC] Fix variable types in DAO doc blocks
747 ([14294](https://github.com/civicrm/civicrm-core/pull/14294))**
748
749 - **[NFC] fix docblock types from boolean to bool
750 ([14296](https://github.com/civicrm/civicrm-core/pull/14296))**
751
752 - **[NFC] array formatting in CRM_Dedupe_MergerTest
753 ([14273](https://github.com/civicrm/civicrm-core/pull/14273))**
754
755 - **[NFC] Update Language to be more user friendly when checking logs
756 ([14278](https://github.com/civicrm/civicrm-core/pull/14278))**
757
758 - **[NFC] array formatting, some comments
759 ([14291](https://github.com/civicrm/civicrm-core/pull/14291))**
760
761 - **[NFC] fix comment blocks capitalising null
762 ([14306](https://github.com/civicrm/civicrm-core/pull/14306))**
763
764 - **[NFC] fix more places where var is declared as boolean rather than bool
765 ([14305](https://github.com/civicrm/civicrm-core/pull/14305))**
766
767 - **[NFC] formatting & comment fixes - Regenerate DAO files
768 ([14304](https://github.com/civicrm/civicrm-core/pull/14304))**
769
770 - **[NFC] ProfileTest class - formatting & general cleanup
771 ([14282](https://github.com/civicrm/civicrm-core/pull/14282))**
772
773 - **[NFC] Add trailing comma to pseudoconstant array in DAOs
774 ([14295](https://github.com/civicrm/civicrm-core/pull/14295))**
775
776 - **[NFC] array formatting in api_v3_paymentTest class
777 ([14451](https://github.com/civicrm/civicrm-core/pull/14451))**
778
779 - **[NFC] Update Exception DAO class
780 ([14482](https://github.com/civicrm/civicrm-core/pull/14482))**
781
782 - **[NFC] Further tests tidy up following removing of dbunit
783 ([14344](https://github.com/civicrm/civicrm-core/pull/14344))**
784
785 - **[NFC] Docblock fixes
786 ([14323](https://github.com/civicrm/civicrm-core/pull/14323))**
787
788 - **NFC Fix DAO Style issues
789 ([14307](https://github.com/civicrm/civicrm-core/pull/14307))**
790
791 - **[NFC] reformat UFFieldTest
792 ([14308](https://github.com/civicrm/civicrm-core/pull/14308))**
793
794 - **contributor-keys file - jira/lab.c.o username fix
795 ([14200](https://github.com/civicrm/civicrm-core/pull/14200))**
796
797 ## <a name="credits"></a>Credits
798
799 This release was developed by the following code authors:
800
801 AGH Strategies - Alice Frumin, Andie Hunt, Eli Lisseck; Agileware - Francis
802 Whittle; Australian Greens - Seamus Lee; Business & Code - Alain Benbassat;
803 Christian Wach; Circle Interactive - Dave Jenkins; CiviCRM - Coleman Watts, Tim
804 Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy, Samuel
805 Vanhove; Dave D; Electronic Frontier Foundation - Mark Burdett; Francesc Bassas
806 i Bullich; Fuzion - Jitendra Purohit; iXiam - Vangelis Pantazis; JMA Consulting -
807 Monish Deb; Just Hope - Phil Morice Brubaker; Megaphone Technology Consulting -
808 Jon Goldberg; MJW Consulting - Matthew Wire; Onyemenam Ndubuisi; Pradeep
809 Nayak; Progressive Technology Project - Jamie McClelland; Stephen Palmstrom;
810 Wikimedia Foundation - Eileen McNaughton
811
812 Most authors also reviewed code for this release; in addition, the following
813 reviewers contributed their comments:
814
815 Agileware - Justin Freeman; Artful Robot - Rich Lott; Blackfly Solutions - Alan
816 Dixon; CEDC - Laryn Kragt Bakker; Chris Burgess; CiviCoop - Jaap Jansma;
817 Centrale Organisatie van Voetbal Scheidsrechters (COVS) - Ed van Leeuwen; Fuzion -
818 Luke Stewart; gareth-circle; Greenpeace CEE - Patrick Figel; JMA Consulting -
819 Joe Murray; John Kingsnorth; John Kyle Cronan; Joinery - Allen Shaw; Lighthouse
820 Design and Consulting - Brian Shaughnessy; myDropWizard - David Snopek; Nicol
821 Wistreich; Webstanz - Adelson;
822
823 ## <a name="feedback"></a>Feedback
824
825 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
826 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
827 and contact `@agh1`.