3 Released January 1, 2020
5 - **[Synopsis](#synopsis)**
6 - **[Features](#features)**
7 - **[Bugs resolved](#bugs)**
8 - **[Miscellany](#misc)**
9 - **[Credits](#credits)**
10 - **[Feedback](#feedback)**
12 ## <a name="synopsis"></a>Synopsis
14 | *Does this version...?* | |
15 |:--------------------------------------------------------------- |:-------:|
16 | Fix security vulnerabilities? | no |
17 | **Change the database schema?** | **yes** |
18 | **Alter the API?** | **yes** |
19 | Require attention to configuration options? | no |
20 | Fix problems installing or upgrading to a previous version? | no |
21 | **Introduce features?** | **yes** |
22 | **Fix bugs?** | **yes** |
24 ## <a name="features"></a>Features
28 - **Default to 'copy' for non-empty fields on merge screen
29 ([dev/core#1339](https://lab.civicrm.org/dev/core/issues/1339):
30 [15595](https://github.com/civicrm/civicrm-core/pull/15595))**
32 This updates the contact merge screen to default to copying data for all
33 non-empty fields. This change makes it easier to keep too much data but harder
36 - **Performance issue when exporting to CSV from reports with custom fields
37 ([dev/report#19](https://lab.civicrm.org/dev/report/issues/19):
38 [15248](https://github.com/civicrm/civicrm-core/pull/15248))**
40 Performance improvements when exporting a report to CSV.
42 - **Memory error on creating large pdfs
43 ([dev/core#574](https://lab.civicrm.org/dev/core/issues/574):
44 [13232](https://github.com/civicrm/civicrm-core/pull/13232))**
46 Improves performance when creating PDFs.
48 - **Update Country list: change Macedonia, Republic of into North Macedonia
49 ([dev/core#1166](https://lab.civicrm.org/dev/core/issues/1166):
50 [15997](https://github.com/civicrm/civicrm-core/pull/15997))**
52 Updates the name of "Macedonia, Republic of" to "North Macedonia" in
53 accordance with the iso 3166-1 list.
55 - **Tagsets should display vertically in activity/new case forms
56 ([dev/core#1346](https://lab.civicrm.org/dev/core/issues/1346):
57 [15649](https://github.com/civicrm/civicrm-core/pull/15649))**
59 Improves the User interface of the "New Activity" and "New Case" forms by
60 displaying the tag fields vertically instead of horizontally.
62 - **Make utf8mb4 status check language more for the general consumer
63 ([15946](https://github.com/civicrm/civicrm-core/pull/15946))**
65 This alters the language on the utf8mb4 status check so that it is a bit more
66 general in nature and hopefully easier to digest for end users.
68 - **Include Metadata on advanced search form for membership, grant, pledge,
69 contribution, and case fields
70 ([15936](https://github.com/civicrm/civicrm-core/pull/15936),
71 [15785](https://github.com/civicrm/civicrm-core/pull/15785), and
72 [15928](https://github.com/civicrm/civicrm-core/pull/15928))**
74 You can now set URL parameters for additional fields like
75 `membership_join_date` and `pledge_payment_start_date` to pre-filter results
76 on the advanced search form.
78 - **Fix activity search to work by url params
79 ([15990](https://github.com/civicrm/civicrm-core/pull/15990))**
81 You can now set URL parameters like `activity_date_time_high` to pre-filter
82 results on the activity search form.
84 - **Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception
85 (Work towards [dev/core#560](https://lab.civicrm.org/dev/core/issues/560):
86 [15903](https://github.com/civicrm/civicrm-core/pull/15903),
87 [15770](https://github.com/civicrm/civicrm-core/pull/15770),
88 [15941](https://github.com/civicrm/civicrm-core/pull/15941),
89 [15775](https://github.com/civicrm/civicrm-core/pull/15775) and
90 [15822](https://github.com/civicrm/civicrm-core/pull/15822))**
92 Work towards throwing exceptions instead of fatal errors.
94 - **Remove background opacity in menus; improving accessibility/readability
95 ([15847](https://github.com/civicrm/civicrm-core/pull/15847))**
97 The CiviCRM menu is now opaque to improve readability.
99 - **Improve datePicker placeholder/icons
100 ([15848](https://github.com/civicrm/civicrm-core/pull/15848))**
102 Small tweaks to the datepicker widget to improve flexibility & consistency.
104 - **modified shared address note under contact dashboard
105 ([15666](https://github.com/civicrm/civicrm-core/pull/15666) and
106 [15769](https://github.com/civicrm/civicrm-core/pull/15769))**
108 Improves the note below the Shared Address field to include a link to the
109 contact that the address lives on to make it easier for get to the shared
112 - **Grant in Edit mode doesn't show the associated contact and standardize all
113 screens accordingly. (Work Towards
114 [dev/core#1065](https://lab.civicrm.org/dev/core/issues/1065):
115 [15757](https://github.com/civicrm/civicrm-core/pull/15757),
116 [15833](https://github.com/civicrm/civicrm-core/pull/15833) and
117 [15840](https://github.com/civicrm/civicrm-core/pull/15840))**
119 This standardizes edit screens for participant, grant, and membership records
120 to ensure that a clickable link to the associated contact is included in a
123 - **Temporary tables should follow consistent naming convention (Work Towards
124 [dev/core#183](https://lab.civicrm.org/dev/core/issues/183):
125 [15795](https://github.com/civicrm/civicrm-core/pull/15795),
126 [15798](https://github.com/civicrm/civicrm-core/pull/15798),
127 [15819](https://github.com/civicrm/civicrm-core/pull/15819),
128 [15793](https://github.com/civicrm/civicrm-core/pull/15793),
129 [15792](https://github.com/civicrm/civicrm-core/pull/15792),
130 [15874](https://github.com/civicrm/civicrm-core/pull/15874),
131 [15821](https://github.com/civicrm/civicrm-core/pull/15821),
132 [15823](https://github.com/civicrm/civicrm-core/pull/15823),
133 [15826](https://github.com/civicrm/civicrm-core/pull/15826),
134 [15820](https://github.com/civicrm/civicrm-core/pull/15820),
135 [15825](https://github.com/civicrm/civicrm-core/pull/15825),
136 [15876](https://github.com/civicrm/civicrm-core/pull/15876), and
137 [16155](https://github.com/civicrm/civicrm-core/pull/16155))**
139 Begins work to enforce a common naming convention for temporary tables.
143 - **Develop getter & setter structure for Payment classes (Work Towards
144 [dev/financial#82](https://lab.civicrm.org/dev/financial/issues/82):
145 [15697](https://github.com/civicrm/civicrm-core/pull/15697),
146 [16052](https://github.com/civicrm/civicrm-core/pull/16052),
147 [16060](https://github.com/civicrm/civicrm-core/pull/16060), and
148 [16081](https://github.com/civicrm/civicrm-core/pull/16081))**
150 This PR adds a new class, `Civi\Payment\PropertyBag` which is designed to
151 offer a consistent object for holding payment parameters as they are sent to
152 and from payment processors. For now, the legacy array of parameters is still
153 valid, so this will not have much immediate impact, but it lays the groundwork
156 - **Always display amount paid even if it is 0.00. Blank looks like it's missing
157 data rather than nothing paid
158 ([16021](https://github.com/civicrm/civicrm-core/pull/16021))**
160 This improves user experience by displaying contributions of 0 as 0 instead
165 - **CiviMail - Only display "Headers and Footers" if there are headers and
166 footers ([15326](https://github.com/civicrm/civicrm-core/pull/15326))**
168 Makes it so when creating a CiviMail Mailing the "Headers and Footers" tab
169 only displays if there are Headers and/or Footers configured on the site.
171 ### Drupal Integration
173 - **Add participant is_test field to views
174 ([590](https://github.com/civicrm/civicrm-drupal/pull/590))**
176 Makes the Participant `is_test` field available in views.
178 ### PayPal Implementation
180 - **PayPalImpl: Add SOLUTIONTYPE parameter that triggers allowing to pay without
181 having to create a paypal account.
182 ([15523](https://github.com/civicrm/civicrm-core/pull/15523))**
184 Adds a `SOLUTIONTYPE` parameter to the PayPal checkout values so that one can
185 make a contribution without having to create an account.
187 ## <a name="bugs"></a>Bugs resolved
191 - **CiviCRM Option Group with a name containing spaces cannot have any options
192 added, error message is shown also impacts the in-place option editor
193 ([dev/core#1405](https://lab.civicrm.org/dev/core/issues/1405) and
194 [dev/core#1447](https://lab.civicrm.org/dev/core/issues/1447):
195 [15937](https://github.com/civicrm/civicrm-core/pull/15937) and
196 [16033](https://github.com/civicrm/civicrm-core/pull/16033))**
198 Option group names are no longer exposed for editing, as they are now
199 automatically generated from the title. On upgrade, existing option group
200 names that contain spaces will be rewritten. *Extensions that provide or rely
201 upon option group names that contain spaces will need to be rewritten.*
203 Upon upgrade, if rewriting an option group name will duplicate another option
204 group's name, that option group will be skipped and a post-upgrade message
205 will show the details.
207 - **Quicksearch with phone filter doesn't work with non-numeric character
208 ([dev/core#1420](https://lab.civicrm.org/dev/core/issues/1420):
209 [15955](https://github.com/civicrm/civicrm-core/pull/15955))**
211 - **Option to open navigation item in new window (if present)
212 ([dev/core#1398](https://lab.civicrm.org/dev/core/issues/1398):
213 [15861](https://github.com/civicrm/civicrm-core/pull/15861))**
215 Ensures the target attribute is respected for menu items that are added using
216 the navigationMenu hook.
218 - **CIVI-SA-2019-21 may lead to regressions when following typehints on
219 CRM_Core_BAO_Setting::setItem() (Work Towards
220 [dev/core#1425](https://lab.civicrm.org/dev/core/issues/1425):
221 [15981](https://github.com/civicrm/civicrm-core/pull/15981),
222 [15988](https://github.com/civicrm/civicrm-core/pull/15988) and
223 [15980](https://github.com/civicrm/civicrm-core/pull/15980))**
225 Removes a misleading PHPDoc type hint for the `$value` parameter in
226 `CRM_Core_BAO_Setting::setItem()` and updates tests that use this function.
228 - **Only add in the metadata for advanced search if user has access to the
230 ([15987](https://github.com/civicrm/civicrm-core/pull/15987))**
232 Ensures the user has access to the relevant component before adding metadata
233 for that component to the advanced search form.
235 - **Fix api explorer formatting IS NULL clauses
236 ([15817](https://github.com/civicrm/civicrm-core/pull/15817))**
238 Fixes a formatting issue in the api explorer output where IS NULL and IS NOT
239 NULL clauses would output invalid code due to the missing value piece of the
242 - **Add in translation function around newly converted statusBounce messages
243 ([15774](https://github.com/civicrm/civicrm-core/pull/15774))**
245 - **Fix cachekey string
246 ([15761](https://github.com/civicrm/civicrm-core/pull/15761))**
248 Fixes an obscure bug where no custom fields were being returned when doing a
249 Contact.get api call with check_permissions=0.
251 - **Fix potential test glitch when repeatedly calling createLoggedInUser
252 ([15965](https://github.com/civicrm/civicrm-core/pull/15965))**
254 - **Ensure that when sorting on columns in the find activity search the arrow
255 shows which field is being sorted and direction
256 ([15943](https://github.com/civicrm/civicrm-core/pull/15943))**
258 - **translate strings
259 ([15858](https://github.com/civicrm/civicrm-core/pull/15858))**
261 Some text in the extension manager was not wrapped in a translation function.
263 - **Filter contact sub-type by "is not one of" fails
264 ([dev/report#23](https://lab.civicrm.org/dev/report/issues/23):
265 [15971](https://github.com/civicrm/civicrm-core/pull/15971))**
267 - **Trying to edit the settings for a reserved option group gives a network
268 error can't connect to server
269 ([dev/core#1477](https://lab.civicrm.org/dev/core/issues/1477):
270 [16107](https://github.com/civicrm/civicrm-core/pull/16107))**
274 - **Activities not visible if they have a campaign_id & contact does not have
275 'administer CiviCampaign'
276 ([dev/core#1444](https://lab.civicrm.org/dev/core/issues/1444):
277 [16057](https://github.com/civicrm/civicrm-core/pull/16057))**
281 - **Case Activities Report includes core activities *always*
282 ([dev/core#1366](https://lab.civicrm.org/dev/core/issues/1366):
283 [15882](https://github.com/civicrm/civicrm-core/pull/15882) and
284 [15877](https://github.com/civicrm/civicrm-core/pull/15877))**
286 - **Case search with force URL parameters gives php warning
287 ([dev/core#1410](https://lab.civicrm.org/dev/core/issues/1410) and
288 [dev/core#1414](https://lab.civicrm.org/dev/core/issues/1414):
289 [15920](https://github.com/civicrm/civicrm-core/pull/15920) and
290 [15924](https://github.com/civicrm/civicrm-core/pull/15924))**
292 - **CiviCase - Make static function `allActivityTypes()` static
293 ([15839](https://github.com/civicrm/civicrm-core/pull/15839))**
297 - **Membership form permits creating invalid transactions
298 ([dev/financial#100](https://lab.civicrm.org/dev/financial/issues/100):
299 [15771](https://github.com/civicrm/civicrm-core/pull/15771))**
301 To avoid users accidentally setting invalid statuses, this removes the
302 statuses "Partially Paid", "Cancelled", and "Failed" from the `Payment Status`
303 field when recording a payment for a Contribution related to a Membership.
304 Additionally, removes the statuses "Partially Paid", "Overdue" and "In
305 Progress" from the `Payment Status` field when recording a payment for a
306 Contribution related to an Event.
308 - **hook_civicrm_post() implementation results in DB Error: already exists for
310 ([dev/core#1443](https://lab.civicrm.org/dev/core/issues/1443):
311 [16061](https://github.com/civicrm/civicrm-core/pull/16061))**
313 The post hook is invoked after storing custom values when adding contributions.
315 - **Lybunt report - remove broken chart functionality
316 ([dev/core#523](https://lab.civicrm.org/dev/core/issues/523):
317 [15989](https://github.com/civicrm/civicrm-core/pull/15989))**
319 Fixes the LYBUNT charts.
321 - **allow PCP report to filter on contribution status
322 ([16024](https://github.com/civicrm/civicrm-core/pull/16024))**
324 The PCP report template lists all personal campaign pages with the total
325 number of contributions made against each PCP page and the total amount
326 raised. Before this change the report had no filter for Contribution Status,
327 so canceled contributions were showing and throwing off the totals. There is
328 now a filter for contribution status allowing users to filter this list as
331 - **Fix api Payment.create to support overpayments
332 ([15909](https://github.com/civicrm/civicrm-core/pull/15909))**
334 Payments made to already paid-up contributions no longer result in an error.
335 The payment continues to be "Completed" and no related entities are updated.
339 - **Fix Participant Search in force mode to support query parameters in URL
340 ([15791](https://github.com/civicrm/civicrm-core/pull/15791) and
341 [15807](https://github.com/civicrm/civicrm-core/pull/15807))**
343 - **Move greeting handling up as it is not paymentValidation dependent
344 ([15904](https://github.com/civicrm/civicrm-core/pull/15904))**
346 Validation of greetings on the frontend event registration form is no longer
347 conditional on processing a payment.
349 - **Remove nbsp from UserDashboard Event section
350 ([15880](https://github.com/civicrm/civicrm-core/pull/15880))**
354 - **DB error in Mail Clickthroughs bar chart display
355 ([dev/core#1434](https://lab.civicrm.org/dev/core/issues/1434):
356 [16000](https://github.com/civicrm/civicrm-core/pull/16000))**
358 Fixes the bar chart view on the Mail Clickthroughs report.
360 - **Unsubscribe broken if mailing sent to previous mailing recipients with an
361 excluded group ([dev/core#1108](https://lab.civicrm.org/dev/core/issues/1108):
362 [15815](https://github.com/civicrm/civicrm-core/pull/15815))**
366 - **Search builder error on Membership source field.
367 ([dev/core#1390](https://lab.civicrm.org/dev/core/issues/1390):
368 [15845](https://github.com/civicrm/civicrm-core/pull/15845))**
370 Fixes an error: "DB error: syntax error" when adding "Membership Source" on
371 the search builder screen.
373 ### Drupal Integration
375 - **Implement drupal_get_user_timezone()
376 ([15794](https://github.com/civicrm/civicrm-core/pull/15794))**
378 Ensures that the timezone is set using the drupal timezone on Contributions
379 made by anonymous users (Drupal 8).
381 ### Joomla Integration
383 - **New Accessible Menu Color Picker display issue on Joomla
384 ([dev/core#874](https://lab.civicrm.org/dev/core/issues/874):
385 [15945](https://github.com/civicrm/civicrm-core/pull/15945))**
387 Fixes the display of the menubar color picker on Joomla so it looks more like
390 ## <a name="misc"></a>Miscellany
392 - **Field metadata cleanup: Contact & Activity & Custom
393 ([15818](https://github.com/civicrm/civicrm-core/pull/15818))**
395 - **Create a GitLab general issue template
396 ([15665](https://github.com/civicrm/civicrm-core/pull/15665))**
398 - **Don't pass \$input to completeOrder by reference - return values are never
399 used ([15699](https://github.com/civicrm/civicrm-core/pull/15699))**
401 - **Fix incorrect reference on extracted function
402 ([15865](https://github.com/civicrm/civicrm-core/pull/15865))**
404 - **Add $params type declaration to global API functions.
405 ([15852](https://github.com/civicrm/civicrm-core/pull/15852))**
407 - **Add string type declarations to global API functions.
408 ([15864](https://github.com/civicrm/civicrm-core/pull/15864))**
410 - **Convert fee selection test to use Order api
411 ([15812](https://github.com/civicrm/civicrm-core/pull/15812))**
413 - **Fix CRM_Contribute_BAO_ContributionTest to no longer use unreliable legacy
414 set up method ([15905](https://github.com/civicrm/civicrm-core/pull/15905))**
416 - **Sort CMS Database Table list
417 ([15944](https://github.com/civicrm/civicrm-core/pull/15944))**
419 - **Rename activity search field from status_id to activity_status_id
420 ([15947](https://github.com/civicrm/civicrm-core/pull/15947))**
422 - **CSV Export: Add deprecation warning
423 ([15951](https://github.com/civicrm/civicrm-core/pull/15951))**
425 - **Remove CRM_Contact_Form_Search_Custom_Basic from searches added on install.
426 ([15979](https://github.com/civicrm/civicrm-core/pull/15979))**
428 - **Add import & export metadata to activity.priority_id
429 ([15993](https://github.com/civicrm/civicrm-core/pull/15993))**
431 - **Too many dead people in sample data
432 ([dev/core#1329](https://lab.civicrm.org/dev/core/issues/1329):
433 [15967](https://github.com/civicrm/civicrm-core/pull/15967))**
435 - **Update dompdf (0.8.0=>0.8.3) & dependencies
436 ([15739](https://github.com/civicrm/civicrm-core/pull/15739))**
438 - **Upgrade ui-sortable angular library to v0.19.0
439 ([15868](https://github.com/civicrm/civicrm-core/pull/15868))**
441 - **Remove unused parameter
442 ([15953](https://github.com/civicrm/civicrm-core/pull/15953))**
444 - **Remove unused variables in completeOrder()
445 ([15841](https://github.com/civicrm/civicrm-core/pull/15841))**
447 - **Make else statement more legible
448 ([15974](https://github.com/civicrm/civicrm-core/pull/15974))**
450 - **Code style, remove typo, double ;; from code where it makes sense to do so
451 ([16001](https://github.com/civicrm/civicrm-core/pull/16001))**
453 - **Remove obsolete warning
454 ([15786](https://github.com/civicrm/civicrm-core/pull/15786))**
456 - **Remove calls to deprecated pseudoconstant activityType, test
457 ([15995](https://github.com/civicrm/civicrm-core/pull/15995))**
459 - **Remove unused cancelledStatus assign on contributionView
460 ([16019](https://github.com/civicrm/civicrm-core/pull/16019))**
462 - **Remove join to civicrm_option_value in favour of using getLabel funct…
463 ([15734](https://github.com/civicrm/civicrm-core/pull/15734))**
465 - **Remove unused functions
466 ([15956](https://github.com/civicrm/civicrm-core/pull/15956))**
468 - **Remove unused parameter recur from CompleteOrder signature
469 ([15800](https://github.com/civicrm/civicrm-core/pull/15800))**
471 - **[REF] minor refactor - move handling of 'skipMerge' to the skipMerge
472 function ([15828](https://github.com/civicrm/civicrm-core/pull/15828))**
474 - **[REF] refactor on nasty Dedupe function
475 ([15830](https://github.com/civicrm/civicrm-core/pull/15830))**
477 - **[REF] calculate 'amount' on ContributionPage in a shared way in one scenario
478 ([15810](https://github.com/civicrm/civicrm-core/pull/15810))**
480 - **[REF] XMLProcessor/Report - Extract method to make it more testable
481 ([15838](https://github.com/civicrm/civicrm-core/pull/15838))**
483 - **[REF] very minor tidy up
484 ([15756](https://github.com/civicrm/civicrm-core/pull/15756))**
486 - **[REF] remove another unnecessary pass-by-reference
487 ([15902](https://github.com/civicrm/civicrm-core/pull/15902))**
489 - **[REF] Convert CRM_Core_Error::fatal to CRM_Core_Error::statusBounce i…
490 ([15863](https://github.com/civicrm/civicrm-core/pull/15863))**
492 - **[REF] CSV Export: Remove impossible checks on var
493 ([15954](https://github.com/civicrm/civicrm-core/pull/15954))**
495 - **[REF] Further cleanup on address handling in merge code.
496 ([15950](https://github.com/civicrm/civicrm-core/pull/15950))**
498 - **[REF] Move CRM_Event_Form_EventFees::buildQuickForm to Participant_Form
499 class ([15871](https://github.com/civicrm/civicrm-core/pull/15871))**
501 - **[REF] Minor simplifcation on initSet
502 ([15870](https://github.com/civicrm/civicrm-core/pull/15870))**
504 - **[REF] remove unused lines of code
505 ([15869](https://github.com/civicrm/civicrm-core/pull/15869))**
507 - **[REF] Standardise the Grant Search form handling
508 ([15931](https://github.com/civicrm/civicrm-core/pull/15931))**
510 - **[REF] further removal of unnecessary params
511 ([15901](https://github.com/civicrm/civicrm-core/pull/15901))**
513 - **[REF] Remove unused parameter
514 ([15960](https://github.com/civicrm/civicrm-core/pull/15960))**
516 - **[REF] clean up merge array.
517 ([15970](https://github.com/civicrm/civicrm-core/pull/15970))**
519 - **[REF] replace copy & paste with shared getSortID function.
520 ([15783](https://github.com/civicrm/civicrm-core/pull/15783))**
522 - **[REF] return determination of whether to show expired fields to the calling
523 function ([15934](https://github.com/civicrm/civicrm-core/pull/15934))**
525 - **[REF] Minor code cleanup on the setting of contact greetings.
526 ([15949](https://github.com/civicrm/civicrm-core/pull/15949))**
528 - **[REF] Standardise form handling in the Find Pledges search form
529 ([15930](https://github.com/civicrm/civicrm-core/pull/15930))**
531 - **[REF] Add setSearchMetadata to each of the classes that extend
533 ([15806](https://github.com/civicrm/civicrm-core/pull/15806))**
535 - **[REF] extract setDeprecatedDefaults
536 ([15805](https://github.com/civicrm/civicrm-core/pull/15805))**
538 - **Add unit test for searching by participant_status_id & switch to generic
539 function ([15803](https://github.com/civicrm/civicrm-core/pull/15803))**
541 - **Add testing for various params that pass through
542 Contact_BAO_Query::optionValueQuery
543 ([15996](https://github.com/civicrm/civicrm-core/pull/15996))**
545 - **Fix CRM/Event/BAO/AdditionalPaymentTest.php to use Order.create
546 ([15813](https://github.com/civicrm/civicrm-core/pull/15813))**
548 - **Test fixes - addresses more invalid setup data
549 ([15802](https://github.com/civicrm/civicrm-core/pull/15802))**
551 - **FinancialTrxnTest - Fix unit test to be 'legit'
552 ([15799](https://github.com/civicrm/civicrm-core/pull/15799))**
554 - **[Test] Remove hard coded it reference
555 ([15906](https://github.com/civicrm/civicrm-core/pull/15906))**
557 - **[Test] fix test setup on ANet tests
558 ([15908](https://github.com/civicrm/civicrm-core/pull/15908))**
560 - **CiviCaseTestCase setup() can make duplicate activity type option values
561 (Test for [dev/core#1394](https://lab.civicrm.org/dev/core/issues/1394):
562 [15853](https://github.com/civicrm/civicrm-core/pull/15853))**
564 - **[NFC] Add in unit test of code being altered by #15826
565 ([15849](https://github.com/civicrm/civicrm-core/pull/15849))**
567 - **[NFC] [Test] Minor test cleanup on CiviMailUtils
568 ([15907](https://github.com/civicrm/civicrm-core/pull/15907))**
570 - **(NFC) api_v3_ExtensionTest - Fix when executing on build with 25+ extensions
571 ([15892](https://github.com/civicrm/civicrm-core/pull/15892))**
573 - **[NFC] [Test-only] Remove partially paid from statuses tested for
575 ([15866](https://github.com/civicrm/civicrm-core/pull/15866))**
577 - **[NFC] Test fix - incorrect records created due to test set up using
578 PartiallyPaid when no payment is made
579 ([15854](https://github.com/civicrm/civicrm-core/pull/15854))**
581 - **[NFC] Update composer lockfile to remove warning
582 ([15886](https://github.com/civicrm/civicrm-core/pull/15886))**
584 - **[NFC] Cleanup comments, string comparison in grant search
585 ([15983](https://github.com/civicrm/civicrm-core/pull/15983))**
587 - **[NFC] cleanup on QueryTest
588 ([15994](https://github.com/civicrm/civicrm-core/pull/15994))**
590 - **[NFC] reformat CiviUnitTestCase.php
591 ([15801](https://github.com/civicrm/civicrm-core/pull/15801))**
593 - **[NFC] Reformat Contact_Form_Search_Advanced
594 ([15777](https://github.com/civicrm/civicrm-core/pull/15777))**
596 - **[NFC] comment fixes - exceptions & don't declare NULL
597 ([15776](https://github.com/civicrm/civicrm-core/pull/15776))**
599 - **[NFC] Update copyright date for 2020
600 ([586](https://github.com/civicrm/civicrm-drupal/pull/586))**
602 - **Remove copyright & years from all code, except LICENSE.md etc
603 ([dev/core#878](https://lab.civicrm.org/dev/core/issues/878):
604 [588](https://github.com/civicrm/civicrm-drupal/pull/588),
605 [169](https://github.com/civicrm/civicrm-wordpress/pull/169),
606 [15843](https://github.com/civicrm/civicrm-core/pull/15843),
607 [587](https://github.com/civicrm/civicrm-drupal/pull/587) and
608 [104](https://github.com/civicrm/civicrm-backdrop/pull/104))**
610 - **[NFC] Update copyright date for 2020
611 ([585](https://github.com/civicrm/civicrm-drupal/pull/585))**
613 - **[NFC] Update copyright date for 2020
614 ([270](https://github.com/civicrm/civicrm-packages/pull/270))**
616 - **[NFC] Remove dinosaur function
617 ([16010](https://github.com/civicrm/civicrm-core/pull/16010))**
619 - **[NFC] code cleanup in test class.
620 ([16026](https://github.com/civicrm/civicrm-core/pull/16026))**
622 - **Membership and Event Related Contributions - shows all contributions (Clean
623 up for [dev/core#1435](https://lab.civicrm.org/dev/core/issues/1435):
624 [16023](https://github.com/civicrm/civicrm-core/pull/16023))**
626 - **[NFC] Remove unused variable not used since v4.4
627 ([15835](https://github.com/civicrm/civicrm-core/pull/15835))**
629 - **(NFC) PULL_REQUEST_TEMPLATE.md - Improve suggestions for
630 under-the-hood/non-UI changes
631 ([15837](https://github.com/civicrm/civicrm-core/pull/15837))**
633 - **Duplicate custom field blocks on open case (Add Code Comments for
634 [dev/core#1352](https://lab.civicrm.org/dev/core/issues/1352):
635 [15851](https://github.com/civicrm/civicrm-core/pull/15851))**
637 - **[NFC] minimal test for Mailing.update_email_resetdate
638 ([15832](https://github.com/civicrm/civicrm-core/pull/15832))**
640 - **[NFC] declare thrown exceptions
641 ([15809](https://github.com/civicrm/civicrm-core/pull/15809))**
643 - **[NFC] fix test to correctly set up partially paid contribution
644 ([15867](https://github.com/civicrm/civicrm-core/pull/15867))**
646 - **[NFC] Update copyright date for 2020
647 ([167](https://github.com/civicrm/civicrm-wordpress/pull/167))**
649 - **[NFC] Update copyright date for 2020
650 ([54](https://github.com/civicrm/civicrm-joomla/pull/54))**
652 - **[NFC] Update copyright date for 2020
653 ([15755](https://github.com/civicrm/civicrm-core/pull/15755))**
655 - **Update copyright date for 2020
656 ([102](https://github.com/civicrm/civicrm-backdrop/pull/102))**
658 - **add contributor name
659 ([15758](https://github.com/civicrm/civicrm-core/pull/15758))**
661 ## <a name="credits"></a>Credits
663 This release was developed by the following code authors:
665 AGH Strategies - Andie Hunt; Agileware - Justin Freeman; Australian Greens -
666 Seamus Lee; Christian Wach; CiviCRM - Coleman Watts, Tim Otten; CiviDesk -
667 Yashodha Chaku; CompuCorp - Camilo Rodriguez; Coop SymbioTIC - Mathieu Lutfy;
668 Dave D; Electronic Frontier Foundation - Mark Burdett; Fuzion - Jitendra
669 Purohit; Greenpeace CEE - Patrick Figel; Jamie Tillman; Jens Schuppe; JMA
670 Consulting - Monish Deb; Joost Fock; Megaphone Technology Consulting - Jon
671 Goldberg; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire; Progressive
672 Technology Project - Jamie McClelland; Richard van Oosterhout; Semper IT - Karin
673 Gerritsen; Squiffle Consulting - Aidan Saunders; Tadpole Collective - Kevin
674 Cristiano; Wikimedia Foundation - Eileen McNaughton
676 Most authors also reviewed code for this release; in addition, the following
677 reviewers contributed their comments:
679 AGH Strategies - Alice Frumin; Artful Robot - Rich Lott; Chris Burgess; Circle
680 Interactive - Dave Jenkins; John Kingsnorth; Freeform Solutions - Lola Slade;
681 OSSeed Technologies LLP - Revati Gawas
683 ## <a name="feedback"></a>Feedback
685 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
686 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm