3 In-progress, based upon commit 55086d4c32123382ce471afd2527469873120129
5 Released August 7, 2019
7 - **[Synopsis](#synopsis)**
8 - **[Features](#features)**
9 - **[Bugs resolved](#bugs)**
10 - **[Miscellany](#misc)**
11 - **[Credits](#credits)**
12 - **[Feedback](#feedback)**
14 ## <a name="synopsis"></a>Synopsis
16 | *Does this version...?* | |
17 |:--------------------------------------------------------------- |:-------:|
18 | Fix security vulnerabilities? | no |
19 | Change the database schema? | no |
20 | Alter the API? | **yes** |
21 | Require attention to configuration options? | **yes** |
22 | Fix problems installing or upgrading to a previous version? | **yes** |
23 | Introduce features? | **yes** |
24 | Fix bugs? | **yes** |
26 ## <a name="features"></a>Features
30 - **Allow extensions to define CSS themes / Add a configuration setting for when
32 ([CRM-18792](https://issues.civicrm.org/jira/browse/CRM-18792) /
33 [dev/core#378](https://lab.civicrm.org/dev/core/issues/378):
34 [14551](https://github.com/civicrm/civicrm-core/pull/14551) and
35 [12929](https://github.com/civicrm/civicrm-core/pull/12929))**
37 Adds an option to the "Display Preferences" settings form to allow users to
38 more finely tune when CiviCRM's css is loaded. On WordPress and Joomla two
39 options are available the "Backend Theme" and "Frontend Theme", on Drupal and
40 Backdrop, the administration screen "Display Preferences" presents a singular
43 - **Clean up use of DAO::nullArray
44 ([dev/core#1047](https://lab.civicrm.org/dev/core/issues/1047):
45 [14556](https://github.com/civicrm/civicrm-core/pull/14556),
46 [14555](https://github.com/civicrm/civicrm-core/pull/14555) and
47 [14550](https://github.com/civicrm/civicrm-core/pull/14550))**
49 Improves code stability by removing the unnecessary function
50 `CRM_Core_DAO::_nullArray`.
52 - **Consolidate handling of conflicts between the batch job and get_conflicts
53 api ([14685](https://github.com/civicrm/civicrm-core/pull/14685))**
55 Improves code consistency by ensuring that merge conflicts are stored during
56 batch_merge to the prev_next cache with the same format as when the api calls
57 get_conflicts, the code doing this wrangling is moved from the api to the BAO
60 - **Add csv reader package
61 ([14524](https://github.com/civicrm/civicrm-core/pull/14524))**
63 Adds the CSV processing utility, league/csv ^9.2 which will help with future
64 PRs which introduce more test-coverage for CSV outputs and help cleanup some
65 of the csv code down the way.
67 - **Improve protected field metadata
68 ([14679](https://github.com/civicrm/civicrm-core/pull/14679))**
70 Adds more robust metadata to fields protected by permissions in a format that
71 can be directly passed into `CRM_Core_Permissions::check()`.
73 - **Move api_key read/write permission checks from api to BAO
74 ([14660](https://github.com/civicrm/civicrm-core/pull/14660))**
76 Moves the logic for checking the api_key field permissions from the api layer
77 to the BAO layer so it can be reused by api4 and other things.
79 - **Handle relative start & end dates passed to datepicker widget
80 ([14632](https://github.com/civicrm/civicrm-core/pull/14632))**
82 Adds some client-side logic to the datepicker widget that was previously done
83 server-side. Paves the way for afform.
85 - **Improve utilities & tests for working with js notation
86 ([14588](https://github.com/civicrm/civicrm-core/pull/14588),
87 [14537](https://github.com/civicrm/civicrm-core/pull/14537) and
88 [14586](https://github.com/civicrm/civicrm-core/pull/14586))**
90 Removes dependence on an external library & improves robustness & accuracy of
91 reading/writing js notation. Adds a utility function for getting properties of
92 a Javascript option without parsing them. Adds a utility function and a
93 test for dealing with data in js notation.
95 - **i18n - Improve multilingual popup for text and wysiwyg fields
96 ([14578](https://github.com/civicrm/civicrm-core/pull/14578))**
98 Fixes copying of values between multilingual popup and main form for wysiwyg
99 fields and makes text fields larger in multilingual pop-up.
101 - **Buttons inconsistencies
102 ([dev/core#347](https://lab.civicrm.org/dev/core/issues/347):
103 [14136](https://github.com/civicrm/civicrm-core/pull/14136) and
104 [14509](https://github.com/civicrm/civicrm-core/pull/14509))**
106 Adds support for "button" elements in CiviCRM ajax popup forms in addition to
107 the input type=button/submit and the "a class=button". This is a first step
108 towards cleaning up button handling from a theming perspective. Adds
109 buttons to 'Cleanup caches and update paths' in standard way
111 - **Display description next to 'paperclip' file icon - usually the filename
112 ([14501](https://github.com/civicrm/civicrm-core/pull/14501))**
114 When viewing custom files displays the description (usually the filename) next
117 - **Address BAO - Handle standard 'custom' param as well as individual fields
118 ([14535](https://github.com/civicrm/civicrm-core/pull/14535))**
120 Ensures that the Address BAO can handle both raw unformatted custom field
121 input and processed custom field inputs.
123 - **Update PSR16 handling for multisite extension legacy caching group
124 ([14505](https://github.com/civicrm/civicrm-core/pull/14505))**
126 Only use a Legacy group if using a version of org.civicrm.multisite 2.6 or
129 - **Improve I18n schema by including comments and default and NOT NULL or NULL
130 statements to be more consistent with non lingual schema
131 ([14484](https://github.com/civicrm/civicrm-core/pull/14484))**
133 Adds more information to the I18n schema structure so that when the
134 translated schema is created it is more similar to the non multilingual schema.
136 - **Add a couple customField pseudoconstants
137 ([14494](https://github.com/civicrm/civicrm-core/pull/14494))**
139 Adds a couple missing option lists to the schema so that they show up in the
140 api explorer for the CustomField entity.
142 - **Deprecate ARCHIVE format for CiviCRM Database Logging (continues work for
143 [dev/core#663](https://lab.civicrm.org/dev/core/issues/663):
144 [14256](https://github.com/civicrm/civicrm-core/pull/14256))**
146 Switches to using InnoDB for extended log tables instead of the ARCHIVE
149 - **ActivityForm - Redirect to contact page or activity view in standalone mode
150 ([14522](https://github.com/civicrm/civicrm-core/pull/14522))**
152 When using the "standalone" New Activity form, moves from always redirecting
153 to the dashboard after saving to redirecting to the contact page (if 1
154 contact) and the activity view screen (if multiple).
158 - **URL support for some params in event search
159 ([14477](https://github.com/civicrm/civicrm-core/pull/14477))**
161 Adds Event Search URL support for the params: sort_name, participant_status_id,
162 participant_register_date_low, participant_register_date_high, and
163 participant_register_date_relative. Date format is a string of numbers YmdHIS
166 - **Add checklist-model angular module
167 ([14634](https://github.com/civicrm/civicrm-core/pull/14634))**
169 Adds the angular `checklist-model` library required by form builder.
173 - **Reduce deadlocks on inserting custom data by only using 'ON DUPLICATE' when
175 ([14605](https://github.com/civicrm/civicrm-core/pull/14605))**
177 Reduce deadlocks when processing contributions with custom data. This
178 specifically makes the custom data insert SQL more efficient.
180 - **Fix url support for receive_date_high & receive_date_low
181 ([14594](https://github.com/civicrm/civicrm-core/pull/14594) and
182 [14611](https://github.com/civicrm/civicrm-core/pull/14611))**
184 As a part of a general standardization movement, adds Url support on the
185 contribution search form for the following fields: receive_date_high,
186 receive_date_low, contribution_cancel_date_high, contribution_cancel_date_low
187 and invoice_number=9. Deprecates and continues to support the start date being
188 passed to contribution search as "start=2018-01-01".
190 - **Deprecate contribution_date as a parameter
191 ([14533](https://github.com/civicrm/civicrm-core/pull/14533))**
193 Add deprecation notice for accessing old field name for receive_date in query
196 - **Create payment activity when creating a payment via the api, test
197 ([14452](https://github.com/civicrm/civicrm-core/pull/14452))**
199 Ensures when creating a payment via the api a payment activity is created.
203 - **Expose Primary member only/Non primary member only filter in membership
204 reports. ([14530](https://github.com/civicrm/civicrm-core/pull/14530) and
205 [14507](https://github.com/civicrm/civicrm-core/pull/14507))**
207 On Membership Reports filters tabs, cleans up Membership Owner ID options.
209 - **Update Owner Membership ID label in reports to be Primary Membership to be
210 more consistent with rest of system
211 ([14585](https://github.com/civicrm/civicrm-core/pull/14585))**
213 Changes the label of the Owner Membership ID in reports from "Membership Owner
214 ID" to "Primary Membership".
216 ## <a name="bugs"></a>Bugs resolved
220 - **submitOnce revisited
221 ([dev/core#914](https://lab.civicrm.org/dev/core/issues/914):
222 [14519](https://github.com/civicrm/civicrm-core/pull/14519))**
224 Ensures "SubmitOnce" functionality works with forms with multiple buttons.
226 - **Errors exporting contributions on 5.13.2 (continues work for
227 [dev/core#1015](https://lab.civicrm.org/dev/core/issues/1015):
228 [14513](https://github.com/civicrm/civicrm-core/pull/14513))**
230 Applies a more robust fix to a bug exporting soft credits in 5.13.2.
232 - **Email created without location when syncing from CMS account
233 ([dev/core#1026](https://lab.civicrm.org/dev/core/issues/1026):
234 [14489](https://github.com/civicrm/civicrm-core/pull/14489))**
236 Adds a default for `location_type_id` in the API Email.create in order to
237 address a bug where Emails were being created without a location type when
238 syncing from a CMS account.
240 - **$this->_selectedTables is not populated incase of boleen filters
241 ([14503](https://github.com/civicrm/civicrm-core/pull/14503))**
243 Fixes a bug where when a report was filtered on a boolean field with option No
244 then `$this->_selectedTables` was not being populated so that it is populated.
246 - **Block classes in unserialize field for IDE cheer
247 ([14683](https://github.com/civicrm/civicrm-core/pull/14683))**
249 Ensures unserialize does not permit class unserialization.
251 - **Support api3 & 4 language syntax & improve test
252 ([14590](https://github.com/civicrm/civicrm-core/pull/14590))**
254 Fixes support for api3 "language" option and extends test coverage to the new
255 syntax as well as api v4.
257 - **Reset language at end of localized api call
258 ([14597](https://github.com/civicrm/civicrm-core/pull/14597))**
260 Restore the original language after changing it for an api call using
261 `options['language']`.
263 - **Activity formRule status check cleanup
264 ([14630](https://github.com/civicrm/civicrm-core/pull/14630))**
266 Fixes a bug where under some circumstances, the activity_type_id from fields
267 and from the getKey call can both return NULL, causing the formRule to raise
268 an error that one cannot record a scheduled SMS activity.
270 - **Add query object support for receive_date_high & receive_date_low and
271 generically date fields
272 ([14623](https://github.com/civicrm/civicrm-core/pull/14623))**
274 Ensures choosing from receive date in advanced search filters appropriately.
276 - **Fix setup.sh crash when using the -a flag
277 ([14595](https://github.com/civicrm/civicrm-core/pull/14595))**
279 Fixes an error where the command setup.sh -a dies with an error because it
280 doesn't know what database to load.
282 - **Fix duplicate households on 'Merge same household' exports
283 ([14443](https://github.com/civicrm/civicrm-core/pull/14443))**
285 Ensures "Merge same household" does not create duplicate rows for each
286 household, one for the "merged individuals" and one being the explicit
287 household directly exported.
289 - **Fix placeholder font in Quicksearch
290 ([14154](https://github.com/civicrm/civicrm-core/pull/14154))**
292 Make the Quicksearch font be the CiviCRM font instead of the "FontAwesome"
295 - **CRM_Utils_SQL_ - Properly interpolate NULL values
296 ([14250](https://github.com/civicrm/civicrm-core/pull/14250))**
298 Ensures the classes `CRM_Utils_SQL_Select`, `CRM_Utils_SQL_Delete`, and
299 `CRM_Utils_SQL_Insert` properly handle NULL values.
301 - **Fix deletion of contact sub_type in api4
302 ([14492](https://github.com/civicrm/civicrm-core/pull/14492))**
304 Cleans up the contact BAO to not arbitrarily delete a contact's sub-type when
305 saving a contact using Api4.
307 - **Add in uniqueness to cache keys to mitigate clashes on multisite installs
308 ([14485](https://github.com/civicrm/civicrm-core/pull/14485))**
310 Ensures cache keys are unique to the specific domain.
312 - **Object id is always NULL in ore hook in update activity mode
313 ([14491](https://github.com/civicrm/civicrm-core/pull/14491))**
315 Ensures when using the pre hook with the Activity entity, the Activity id (i.e
316 the object id) is NOT NULL.
318 - **Scheduled jobs: replace outdated wiki link
319 ([14641](https://github.com/civicrm/civicrm-core/pull/14641))**
321 - **Make the contact summary details popup on merge screen non bold a la contact
322 summary screen ([dev/core#1039](https://lab.civicrm.org/dev/core/issues/1039):
323 [14506](https://github.com/civicrm/civicrm-core/pull/14506))**
325 - **When using custom fields for smart group criteria with relative dates the
326 group does not respect the relative date over time
327 ([dev/core#389](https://lab.civicrm.org/dev/core/issues/389):
328 [14625](https://github.com/civicrm/civicrm-core/pull/14625))**
330 - **Improper character encoding breaks xml processor
331 ([dev-core#1079](https://lab.civicrm.org/dev/core/issues/1079):
332 [14654](https://github.com/civicrm/civicrm-core/pull/14654))**
334 - **Php 7.2 notices fix on import
335 ([14531](https://github.com/civicrm/civicrm-core/pull/14531))**
337 - **Fix use of cached schema information in SchemaHandler
338 ([14568](https://github.com/civicrm/civicrm-core/pull/14568))**
340 - **Ensure that contact groups caches are cleared if memory backed
341 ([14607](https://github.com/civicrm/civicrm-core/pull/14607))**
345 - **CiviCRM Campaign, the Revenue Goal field stores 0 if $5,000 or any other
346 non-numeric value is entered
347 ([dev/core#1067](https://lab.civicrm.org/dev/core/issues/1067):
348 [14601](https://github.com/civicrm/civicrm-core/pull/14601))**
352 - **Make a_b relationships available as case roles
353 ([dev/core#530](https://lab.civicrm.org/dev/core/issues/530):
354 [13916](https://github.com/civicrm/civicrm-core/pull/13916))**
356 This change makes it so users can select b_a relationships AND a_b
357 relationships when creating case roles, before this change only b_a
358 relationships were available when creating case roles.
360 - **Too many divs in caseTypeDetails.html
361 ([dev/core#1086](https://lab.civicrm.org/dev/core/issues/1086):
362 [14682](https://github.com/civicrm/civicrm-core/pull/14682))**
364 - **Send copy of case activity is using the contribution receipt template -
365 actually all message templates seem to be mixed up (Test for
366 [dev/core#1082](https://lab.civicrm.org/dev/core/issues/1082):
367 [14666](https://github.com/civicrm/civicrm-core/pull/14666))**
371 - **Add default receive_date for contributions at BAO level
372 ([14460](https://github.com/civicrm/civicrm-core/pull/14460))**
374 This change ensures one cannot create contributions with no receive date using
377 - **Fix A.net to resolve time when using default
378 ([14540](https://github.com/civicrm/civicrm-core/pull/14540))**
380 Fixes failure to resolve date in authorize.net - this is likely a test-only
383 - **Fixed visibility logic on Price field options.
384 ([13966](https://github.com/civicrm/civicrm-core/pull/13966))**
386 Ensure that when adding price options to a price field with some public
387 options and some private options the new options are considered when
388 validating that there is an admin option.
390 - **Support storing IPNs in `civicrm_system_log` for processors that send JSON
391 data ([dev/financial#55](https://lab.civicrm.org/dev/financial/issues/55):
392 [14290](https://github.com/civicrm/civicrm-core/pull/14290))**
394 Ensures Stripe can log to the `civicrm_system_log`.
396 - **Grab contribution status id from database
397 ([14713](https://github.com/civicrm/civicrm-core/pull/14713) and
398 [14704](https://github.com/civicrm/civicrm-core/pull/14704))**
400 Replaces hard coded Contribution Status Id with a pseudoconstant.
402 - **Error in civicrm/payment/edit "Expected one FinancialTrxn but found 25
403 ([dev/core#965](https://lab.civicrm.org/dev/core/issues/965):
404 [14518](https://github.com/civicrm/civicrm-core/pull/14518))**
406 Fixes a bug where when ajax popup forms are disabled submitting the payment
407 edit form results in a fatal error "Expected one FinancialTrxn but found 25".
409 - **New contribution may overwrite other contribution if it's opened in other
410 tab ([dev/financial#50](https://lab.civicrm.org/dev/financial/issues/50):
411 [14244](https://github.com/civicrm/civicrm-core/pull/14244))**
413 - **Refund throws a fatal error if the main contribution amount is
414 0. ([dev/core#889](https://lab.civicrm.org/dev/core/issues/889):
415 [14488](https://github.com/civicrm/civicrm-core/pull/14488) and
416 [14103](https://github.com/civicrm/civicrm-core/pull/14103))**
418 - **Event Confirmation and ThankYou forms show tax rate with ALL the decimal
419 places. ([dev/core#1049](https://lab.civicrm.org/dev/core/issues/1049):
420 [14562](https://github.com/civicrm/civicrm-core/pull/14562))**
422 - **Deprecation notice on Find Contributions when get there from Manage
424 ([dev/core#1059](https://lab.civicrm.org/dev/core/issues/1059):
425 [14624](https://github.com/civicrm/civicrm-core/pull/14624) and
426 [14613](https://github.com/civicrm/civicrm-core/pull/14613))**
428 - **Fix refund payment not recording from additional payment form
429 ([14733](https://github.com/civicrm/civicrm-core/pull/14733))**
431 - **contribution detail report: error when sorting by custom contrib field (DB
432 Error: no such field)
433 ([dev/core#1081](https://lab.civicrm.org/dev/core/issues/1081):
434 [14746](https://github.com/civicrm/civicrm-core/pull/14746))**
436 - **Fix notice on editing contribution
437 ([14626](https://github.com/civicrm/civicrm-core/pull/14626))**
439 - **Ensure that completed status is selected by default on search contribution
440 form ([14612](https://github.com/civicrm/civicrm-core/pull/14612))**
444 - **When creating a new event using a template the new event screen is taking
445 the default values directly from the custom fields, and not from what's saved
446 in the event template.
447 ([dev/core#553](https://lab.civicrm.org/dev/core/issues/553) /
448 [CRM-18570](https://issues.civicrm.org/jira/browse/CRM-18570):
449 [14480](https://github.com/civicrm/civicrm-core/pull/14480))**
451 - **Display bug for Checkboxes Custom field on Event Confirm / Thank you pages
452 ([dev/core#1058](https://lab.civicrm.org/dev/core/issues/1058):
453 [14587](https://github.com/civicrm/civicrm-core/pull/14587))**
455 - **Fix incorrect display of Line Items created via API when printing invoice
457 ([13477](https://github.com/civicrm/civicrm-core/pull/13477))**
459 - **Add a helper function to ensure we always set the correct tab for manage
460 events ([14602](https://github.com/civicrm/civicrm-core/pull/14602))**
462 - **Removed hardcoded value for registered participant status
463 ([14569](https://github.com/civicrm/civicrm-core/pull/14569))**
467 - **Does CiviCRM make it possible to specify which directories are private and
468 which are public-accessible? (continues work for
469 [dev/cloud-native#3](https://lab.civicrm.org/dev/cloud-native/issues/3):
470 [14717](https://github.com/civicrm/civicrm-core/pull/14717))**
472 Removes an unused cache-driver for storing cache records in the file system
473 (under CIVICRM_TEMPLATE_COMPILEDIR, using PHP serialize() format).
475 ### Drupal Integration
477 - **Drupal8: CiviCRM menu does not use the correct locale (continues work for
478 [dev/drupal#21](https://lab.civicrm.org/dev/drupal/issues/21):
479 [14474](https://github.com/civicrm/civicrm-core/pull/14474))**
481 Ensures CiviCRM menu is translated appropriately on Drupal 8 sites using the
482 locale module and CiviCRM in multilingual mode.
484 - **Drupal8: drupal_set_message is deprecated (or: Event Cart messages display
485 HTML) ([dev/drupal#63](https://lab.civicrm.org/dev/drupal/issues/63):
486 [13959](https://github.com/civicrm/civicrm-core/pull/13959))**
488 Fixes a bug where when using CiviCRM Event Cart in Drupal8, some status
489 messages were being displayed as HTML to the user.
491 ### Joomla Integration
493 - **Upgrade to 5.14 fails on updating case views
494 ([dev/joomla#13](https://lab.civicrm.org/dev/joomla/issues/13):
495 [14707](https://github.com/civicrm/civicrm-core/pull/14707),
496 [14708](https://github.com/civicrm/civicrm-core/pull/14708),
497 [14709](https://github.com/civicrm/civicrm-core/pull/14709),
498 [14710](https://github.com/civicrm/civicrm-core/pull/14710) and
499 [14702](https://github.com/civicrm/civicrm-core/pull/14702))**
501 - **CiviDist fails on BSD flavor of 'cp' with '-r -p' switch to '-R -p'
502 ([14523](https://github.com/civicrm/civicrm-core/pull/14523))**
504 Ensures cividist does not fail for joomla-alt on MacOSX.
506 ### Wordpress Integration
508 - **Recreate rewrite rules when basepage setting is updated
509 ([157](https://github.com/civicrm/civicrm-wordpress/pull/157))**
511 Ensures rewrite rules are flushed when saving the WordPress Base Page setting
514 - **Implement "document_title_parts" filter to apply CiviCRM title on basepage
515 ([158](https://github.com/civicrm/civicrm-wordpress/pull/158))**
517 Ensures when Clean URLs are not implemented, the `<title>` element is
518 correctly set on the civicrm base page.
520 ## <a name="misc"></a>Miscellany
522 - **Remove duplicated code in contribution recur search build function
523 ([14504](https://github.com/civicrm/civicrm-core/pull/14504))**
525 - **Civi\Angular\ChangeSet - Relax debug-mode consistency check
526 ([14510](https://github.com/civicrm/civicrm-core/pull/14510))**
528 - **Alter PSR16 code to take into account of new entitysetting release with
530 ([14559](https://github.com/civicrm/civicrm-core/pull/14559))**
532 - **Remove handling for legacy PrevNextCache group as it has now been converted
533 ([14584](https://github.com/civicrm/civicrm-core/pull/14584),
534 [14631](https://github.com/civicrm/civicrm-core/pull/14631) and
535 [14580](https://github.com/civicrm/civicrm-core/pull/14580))**
537 - **[Form cleanup] remove form classes & tpls for Event Component settings &
538 Multisite ([14425](https://github.com/civicrm/civicrm-core/pull/14425))**
540 - **Add WP-oriented E2E test suite, with HookTest as an example
541 ([159](https://github.com/civicrm/civicrm-wordpress/pull/159))**
543 - **Decommission recordPartialPayment function
544 ([14599](https://github.com/civicrm/civicrm-core/pull/14599))**
546 - **Fix erroneous variable passed to callAPISuccessGetValue
547 ([14688](https://github.com/civicrm/civicrm-core/pull/14688))**
549 - **Deprecate some deprecated address functions: defaultCurrencySymbol
550 ([14687](https://github.com/civicrm/civicrm-core/pull/14687))**
552 - **Extract code converting a date object to local timezone object to own
553 function ([14723](https://github.com/civicrm/civicrm-core/pull/14723))**
555 - **Replace jcalendar instances with datepicker (continues work for
556 [dev/core#561](https://lab.civicrm.org/dev/core/issues/561):
557 [14593](https://github.com/civicrm/civicrm-core/pull/14593),
558 [14431](https://github.com/civicrm/civicrm-core/pull/14431) and
559 [14627](https://github.com/civicrm/civicrm-core/pull/14627))**
561 - **[REF] Remove more instances of _nullArray
562 ([14558](https://github.com/civicrm/civicrm-core/pull/14558))**
564 - **[REF] transform the setting of defaults in CustomField::create to be like
565 (some) other entities
566 ([14671](https://github.com/civicrm/civicrm-core/pull/14671))**
568 - **[NFC] Fix Test function delcaration to match change in CiviUnitTestCa…
569 ([14548](https://github.com/civicrm/civicrm-core/pull/14548))**
571 - **[NFC] Fix indenting in Misc Setting Template
572 ([14526](https://github.com/civicrm/civicrm-core/pull/14526))**
574 - **[NFC] code formatting
575 ([14606](https://github.com/civicrm/civicrm-core/pull/14606))**
577 - **[NFC][test] reformat jobTest class
578 ([14681](https://github.com/civicrm/civicrm-core/pull/14681))**
580 - **[NFC] test cleanup. Uses CRM_Core_Exceptions, properly outputs unfiltered
581 results ([14471](https://github.com/civicrm/civicrm-core/pull/14471))**
583 - **[NFC][test] reformat activity search test
584 ([14699](https://github.com/civicrm/civicrm-core/pull/14699))**
586 - **[NFC][test] code formatting only
587 ([14700](https://github.com/civicrm/civicrm-core/pull/14700))**
589 - **[NFC] formatting on test class cleanup
590 ([14649](https://github.com/civicrm/civicrm-core/pull/14649))**
592 - **NFC These pseudoconstant functions return array or string
593 ([14619](https://github.com/civicrm/civicrm-core/pull/14619))**
595 - **NFC Comments and formatting only
596 ([14497](https://github.com/civicrm/civicrm-core/pull/14497))**
598 - **NFC Cleanup comments on BAO event
599 ([14603](https://github.com/civicrm/civicrm-core/pull/14603))**
601 - **[TEST] add assert to ensure nullArray & nullObject are not contaminated
602 ([14543](https://github.com/civicrm/civicrm-core/pull/14543))**
604 - **[TEST] Update Email Common Test to incorporate testing for the fix fo…
605 ([14629](https://github.com/civicrm/civicrm-core/pull/14629))**
607 - **[TEST] Fix intermittent test fail on NULL array getting contaminated
608 ([14542](https://github.com/civicrm/civicrm-core/pull/14542))**
610 - **[Test] Add in unit test attempting to demonstrate issue caused by dev…
611 ([14637](https://github.com/civicrm/civicrm-core/pull/14637))**
613 - **[test] Call parent tearDown more consistently
614 ([14552](https://github.com/civicrm/civicrm-core/pull/14552))**
616 - **[test] convert export test to handle exception rather than early return
617 ([14608](https://github.com/civicrm/civicrm-core/pull/14608))**
619 - **[test] truncate pledge block when cleaning up financial entities
620 ([14538](https://github.com/civicrm/civicrm-core/pull/14538))**
622 - **Fix failing test by changing expected date format
623 ([14686](https://github.com/civicrm/civicrm-core/pull/14686))**
625 - **Fix proportional test to test Payment.create & for the test to make more
626 sense ([14436](https://github.com/civicrm/civicrm-core/pull/14436))**
628 - **Fix test which fails when run in isolation.
629 ([14517](https://github.com/civicrm/civicrm-core/pull/14517))**
631 - **[REF] do not receive by reference in CustomField::create
632 ([14670](https://github.com/civicrm/civicrm-core/pull/14670))**
634 - **[REF] extract createOptionValue function in CustomField::create
635 ([14652](https://github.com/civicrm/civicrm-core/pull/14652))**
637 - **[REF] remove instances of pass-by-reference where no change takes place
638 ([14693](https://github.com/civicrm/civicrm-core/pull/14693))**
640 - **[REF] extract prepareCreate from CustomField.create
641 ([14689](https://github.com/civicrm/civicrm-core/pull/14689))**
643 - **[REF] Minor code cleanup on string concatenation
644 ([14444](https://github.com/civicrm/civicrm-core/pull/14444))**
646 - **[REF] Move sort_name definition to searchFieldMetadata
647 ([14478](https://github.com/civicrm/civicrm-core/pull/14478))**
649 - **[REF] Copy assignProportional Line items back into Payment.create function
650 ([14622](https://github.com/civicrm/civicrm-core/pull/14622))**
652 - **[REF] minor code cleanup - move indexExist calculation to the only place in
653 the code that needs it
654 ([14650](https://github.com/civicrm/civicrm-core/pull/14650))**
656 - **[REF] Remove columnName field
657 ([14651](https://github.com/civicrm/civicrm-core/pull/14651))**
659 - **[REF + test] extract buildFieldChangeSql and add unit test
660 ([14653](https://github.com/civicrm/civicrm-core/pull/14653))**
662 - **[REF] CRM_Case_BAO_Case::addcaseActivityLinks to CRM_Case_Selector_Search
663 ([14512](https://github.com/civicrm/civicrm-core/pull/14512))**
665 - **[REF] dev/core#561 Convert Contribution Date field to use date picker…
666 ([14486](https://github.com/civicrm/civicrm-core/pull/14486))**
668 - **[REF] do not pass by reference to store & create functions
669 ([14598](https://github.com/civicrm/civicrm-core/pull/14598))**
671 - **[REF] Add in utility function for resetting ACL and System Level Caches
672 ([14600](https://github.com/civicrm/civicrm-core/pull/14600))**
674 - **REF Extract getDefaultRoleID for add participant
675 ([14499](https://github.com/civicrm/civicrm-core/pull/14499))**
677 - **REF Deduplicate recaptcha handling code
678 ([14500](https://github.com/civicrm/civicrm-core/pull/14500))**
680 - **REF Extract override default currency function
681 ([14496](https://github.com/civicrm/civicrm-core/pull/14496))**
683 - **REF: Extract preProcess paypalexpress
684 ([14498](https://github.com/civicrm/civicrm-core/pull/14498))**
686 - **Remove more uses of CRM_Core_DAO::$_nullArray that are unncessary
687 ([14564](https://github.com/civicrm/civicrm-core/pull/14564))**
689 - **Remove unncessary $_nullArray usage when calling createProfileContact
690 function ([14560](https://github.com/civicrm/civicrm-core/pull/14560))**
692 - **Remove unneeded use of CRM_Core_DAO::$_nullArray in executeQuery or s…
693 ([14561](https://github.com/civicrm/civicrm-core/pull/14561))**
695 - **Remove more free calls
696 ([14493](https://github.com/civicrm/civicrm-core/pull/14493))**
698 - **Remove a few places where pass by reference is used but does not need to be
699 ([14643](https://github.com/civicrm/civicrm-core/pull/14643))**
701 - **Remove failing assertion
702 ([14695](https://github.com/civicrm/civicrm-core/pull/14695))**
704 - **Removing unused spec function
705 ([14646](https://github.com/civicrm/civicrm-core/pull/14646))**
707 - **Remove superfluous pass-by-ref in api3
708 ([14645](https://github.com/civicrm/civicrm-core/pull/14645))**
710 - **Add in Andrei Mondoc(mecachisenros) to contributor key
711 ([14665](https://github.com/civicrm/civicrm-core/pull/14665))**
713 - **Adding myself to the contributors file
714 ([14532](https://github.com/civicrm/civicrm-core/pull/14532))**
716 ## <a name="credits"></a>Credits
718 This release was developed by the following code authors:
720 AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Alok Patel, Francis
721 Whittle; Andrei Mondoc; Australian Greens - Seamus Lee; Christian Wach;
722 CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop
723 SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Fuzion - Jitendra Purohit;
724 Greenpeace CEE - Patrick Figel; iXiam - César Ramos; JMA Consulting - Monish Deb;
725 Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire;
726 Nicol Wistreich; Pradeep Nayak; Squiffle Consulting - Aidan Saunders; Tadpole
727 Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton
729 Most authors also reviewed code for this release; in addition, the following
730 reviewers contributed their comments:
732 Agileware - Justin Freeman; CiviCoop - Jaap Jansma; CiviDesk - Sunil Pawar;
733 Fuzion - Luke Stewart; JMA Consulting - Joe Murray; Korlon - Stuart Gaston;
734 Lighthouse Design and Consulting - Brian Shaughnessy; National Urban League:
735 Lisa Taliano; Palante - Morgan Robinson; Semper IT - Karin Gerritsen; Tech To
736 The People - Xavier Dutoit
738 ## <a name="feedback"></a>Feedback
740 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
741 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm