Merge pull request #17808 from colemanw/bridge
[civicrm-core.git] / release-notes / 5.28.0.md
1 # CiviCRM 5.28.0
2
3 Released August 5, 2020
4
5 - **[Synopsis](#synopsis)**
6 - **[Features](#features)**
7 - **[Bugs resolved](#bugs)**
8 - **[Miscellany](#misc)**
9 - **[Credits](#credits)**
10 - **[Feedback](#feedback)**
11
12 ## <a name="synopsis"></a>Synopsis
13
14 | *Does this version...?* | |
15 |:--------------------------------------------------------------- |:-------:|
16 | Fix security vulnerabilities? | no |
17 | **Change the database schema?** | **yes** |
18 | **Alter the API?** | **yes** |
19 | Require attention to configuration options? | 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 ### CiviCRM Core
27
28 - **Feature Request: Ability to enable SSL for database connection. (Work
29 Towards [dev/core#1137](https://lab.civicrm.org/dev/core/-/issues/1137):
30 [298](https://github.com/civicrm/civicrm-packages/pull/298))**
31
32 Makes ssl database connections without client certificates work in php7.
33
34 - **Investigate php currency library
35 ([dev/translation#48](https://lab.civicrm.org/dev/translation/-/issues/48):
36 [17608](https://github.com/civicrm/civicrm-core/pull/17608))**
37
38 Implements the PHP library [brick/money](https://github.com/brick/money) to
39 better handle currency amounts.
40
41 - **Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception
42 (Work Towards [dev/core#560](https://lab.civicrm.org/dev/core/-/issues/560):
43 [17555](https://github.com/civicrm/civicrm-core/pull/17555),
44 [295](https://github.com/civicrm/civicrm-packages/pull/295),
45 [602](https://github.com/civicrm/civicrm-drupal/pull/602),
46 [17550](https://github.com/civicrm/civicrm-core/pull/17550),
47 [17534](https://github.com/civicrm/civicrm-core/pull/17534),
48 [17541](https://github.com/civicrm/civicrm-core/pull/17541),
49 [17545](https://github.com/civicrm/civicrm-core/pull/17545) and
50 [17539](https://github.com/civicrm/civicrm-core/pull/17539))**
51
52 Work towards throwing exceptions instead of fatal errors.
53
54 - **End of life planning for MySQL server 5.0 - 5.6 (Work Towards
55 [dev/core#1681](https://lab.civicrm.org/dev/core/-/issues/1681):
56 [17558](https://github.com/civicrm/civicrm-core/pull/17558))**
57
58 Block sites from upgrading if on a MySQL version less than 5.6.5.
59
60 - **Create new customPre hook
61 ([dev/core#1716](https://lab.civicrm.org/dev/core/-/issues/1716):
62 [17144](https://github.com/civicrm/civicrm-core/pull/17144))**
63
64 Creates a new hook customPre which makes it so one can impact or observe
65 custom data before it is saved.
66
67 - **V4 activity api has no default for activity_date_time
68 ([dev/core#1782](https://lab.civicrm.org/dev/core/-/issues/1782):
69 [17450](https://github.com/civicrm/civicrm-core/pull/17450))**
70
71 Sets the default for `activity_date_time` and `created_date` as the current
72 date when using the APIv4 Activity.
73
74 - **Update guzzle to d8 latest
75 ([dev/core#1803](https://lab.civicrm.org/dev/core/-/issues/1803):
76 [17551](https://github.com/civicrm/civicrm-core/pull/17551))**
77
78 This updates guzzle to version 6.5.4, civicrm/civicrm-cxn-rpc to "version"
79 "v0.19.01.00", guzzlehttp/psr7 to version 1.6.1 and psr/log to version 1.1.3
80
81 - **APIv4 - Improve row_count to work with HAVING, GROUP BY, and SELECT
82 ([17704](https://github.com/civicrm/civicrm-core/pull/17704))**
83
84 This changes the meaning of $result->count(), to give a total count of
85 filtered items, ignoring limit and offset.
86
87 - **APIv4 - Add more SQL functions
88 ([17692](https://github.com/civicrm/civicrm-core/pull/17692))**
89
90 Adds support for additional SQL functions in APIv4. Also categorizes them and
91 adds translated titles for the new Search Builder.
92
93 - **APIv4 - Add titles and icons to entities
94 ([17527](https://github.com/civicrm/civicrm-core/pull/17527) and
95 [17685](https://github.com/civicrm/civicrm-core/pull/17685))**
96
97 Adds titles and icons to DAO entities and expose them to APIv4 Entity::get and
98 adds meta-metadata.
99
100 - **APIv4 Explorer - UI support for join ON clause
101 ([17682](https://github.com/civicrm/civicrm-core/pull/17682))**
102
103 Improves the APIv4 explorer to give selectable clauses when adding a JOIN.
104
105 - **Add permission metadata to contact is_deleted field
106 ([17721](https://github.com/civicrm/civicrm-core/pull/17721))**
107
108 Improves the contact schema metadata.
109
110 - **API/DAO Metadata - Retain versioning metadata for possible usage in
111 runtime+tooling
112 ([17735](https://github.com/civicrm/civicrm-core/pull/17735))**
113
114 Adds metadata to indicate when fields are created.
115
116 - **Connect to database using SET NAMES utf8mb4
117 ([17716](https://github.com/civicrm/civicrm-core/pull/17716))**
118
119 Makes it so one can use utf8mb4 characters.
120
121 - **Remove slow join from activity search
122 ([17250](https://github.com/civicrm/civicrm-core/pull/17250))**
123
124 Improves performance of the activity search.
125
126 - **Add icons to standalone contact tasks
127 ([17667](https://github.com/civicrm/civicrm-core/pull/17667))**
128
129 Adds icon data to contact tasks.
130
131 - **Add icons to multi-valued custom groups and display on contact tab
132 ([17531](https://github.com/civicrm/civicrm-core/pull/17531))**
133
134 Adds icons to multi-valued custom groups to improve user experience.
135
136 - **Add serialize metadata to domain.locales field
137 ([17651](https://github.com/civicrm/civicrm-core/pull/17651))**
138
139 Adds metadata to help APIv4 serialize/unserialize the domain.locales
140 field correctly.
141
142 - **Add smarty error event
143 ([16918](https://github.com/civicrm/civicrm-core/pull/16918) and
144 [292](https://github.com/civicrm/civicrm-packages/pull/292))**
145
146 Improves debugging errors in smarty templates.
147
148 - **Allow HEAD requests to generate a form key
149 ([17321](https://github.com/civicrm/civicrm-core/pull/17321))**
150
151 Avoids generating crashes (500 errors) when bots check links.
152
153 - **Include a new SqlParallel queue type that enables multiple queue runners to
154 process in parallel
155 ([15422](https://github.com/civicrm/civicrm-core/pull/15422))**
156
157 Adds a new Sql queue type which will allow multiple runners to fetch the next
158 available job from a queue and run in parallel.
159
160 - **Allow adding datepicker to metadata based settings pages
161 ([16610](https://github.com/civicrm/civicrm-core/pull/16610))**
162
163 Makes it so that datepicker can be added to metadata based settings pages by
164 specifying html_Type='datepicker' in settings metadata.
165
166 - **Price Field Form: save the fid for the postProcess hook
167 ([17639](https://github.com/civicrm/civicrm-core/pull/17639))**
168
169 Improves `postProcess` hook for Price Field Form by making the field id
170 available.
171
172 ### CiviContribute
173
174 - **Add payment processor to details on list of recurring contributions
175 ([17179](https://github.com/civicrm/civicrm-core/pull/17179))**
176
177 Improves the Recurring Contributions UI by adding a column for Payment
178 Processor.
179
180 - **Fix all core processors to throw exceptions and not rely on the
181 CRM_Core_Payment to convert errors to exceptions
182 ([dev/financial#131](https://lab.civicrm.org/dev/financial/-/issues/131):
183 [17565](https://github.com/civicrm/civicrm-core/pull/17565),
184 [17559](https://github.com/civicrm/civicrm-core/pull/17559),
185 [17542](https://github.com/civicrm/civicrm-core/pull/17542),
186 [17502](https://github.com/civicrm/civicrm-core/pull/17502),
187 [17597](https://github.com/civicrm/civicrm-core/pull/17597),
188 [17592](https://github.com/civicrm/civicrm-core/pull/17592) and
189 [17596](https://github.com/civicrm/civicrm-core/pull/17596))**
190
191 Makes it so that core payment processors fail elegantly more often.
192
193 - **Add selfService flag to cancelSubscription getText so we can display
194 different text for each case
195 ([17687](https://github.com/civicrm/civicrm-core/pull/17687))**
196
197 Makes it so payment processor developers can identify the different contexts
198 someone may be canceling from and display appropriate messaging.
199
200 ### CiviMember
201
202 - **Display start/end adjustment on membership status page.
203 ([dev/core#1809](https://lab.civicrm.org/dev/core/-/issues/1809):
204 [17571](https://github.com/civicrm/civicrm-core/pull/17571))**
205
206 Improves the Membership Status administration page by adding columns for the
207 start/end adjustment.
208
209 ## <a name="bugs"></a>Bugs resolved
210
211 ### Core CiviCRM
212
213 - **Evaluate if any indexed fields are unused (Work Towards
214 [dev/core#1634](https://lab.civicrm.org/dev/core/-/issues/1634):
215 [17686](https://github.com/civicrm/civicrm-core/pull/17686))**
216
217 Remove database index on `medium_id` from `civicrm_activity`.
218
219 - **[Activity] Default priority value when add Activity
220 ([dev/core#1801](https://lab.civicrm.org/dev/core/-/issues/1801):
221 [17557](https://github.com/civicrm/civicrm-core/pull/17557))**
222
223 Ensures when creating a new activity the priority field defaults correctly for
224 sites not in english.
225
226 - **The multi-lingual multi-domain problem
227 ([dev/core#1852](https://lab.civicrm.org/dev/core/-/issues/1852):
228 [17738](https://github.com/civicrm/civicrm-core/pull/17738) and
229 [17733](https://github.com/civicrm/civicrm-core/pull/17733))**
230
231 Ensures that the list of languages civicrm_domain.locales is the same for all
232 domains in a multi-domain set up.
233
234 - **APIv4 - Skip empty leaves in WHERE clause
235 ([17576](https://github.com/civicrm/civicrm-core/pull/17576))**
236
237 Fixes a big in search builder where APIv4 gives a sql error
238 while building your where clause.
239
240 - **Fix CRM_Utils_JS::dedupeClosures to ignore comments
241 ([17717](https://github.com/civicrm/civicrm-core/pull/17717))**
242
243 Ensures comments do not interfere with deduping.
244
245 - **Use PHPUnit7 as the primary test runner for PHP versions >= 7.1 when using
246 the phpunit script
247 ([17615](https://github.com/civicrm/civicrm-core/pull/17615))**
248
249 Updates php unit tests to use PHPUnit7 when the PHP Unit version is 7.1 or
250 greater.
251
252 - **Fix isMultilingual to use static caching and respect current domain
253 ([17646](https://github.com/civicrm/civicrm-core/pull/17646))**
254
255 Improves the efficiency and accuracy of the `CRM_Core_I18n::isMultilingual`
256 function, preventing a large number of duplicate queries on every request.
257
258 - **Update has_separator field in civicrm_navigation
259 ([17579](https://github.com/civicrm/civicrm-core/pull/17579))**
260
261 This field was incorrectly marked as a boolean; it's actually an int with an
262 option list.
263
264 - **Payment Propertybag remove warning
265 ([17506](https://github.com/civicrm/civicrm-core/pull/17506))**
266
267 Do not trigger warning every time the function is called.
268
269 - **Fix duplicate upgrade function
270 ([17582](https://github.com/civicrm/civicrm-core/pull/17582))**
271
272 Fixes a fatal error on upgrade caused by a merge conflict.
273
274 - **Multiple line item shown on view contribution if participant is transferred
275 to another contact.
276 ([dev/core#890](https://lab.civicrm.org/dev/core/-/issues/890):
277 [16956](https://github.com/civicrm/civicrm-core/pull/16956))**
278
279 - **CRM_Case_XMLProcessor::allActivityTypes() doesn't do caching right
280 ([dev/core#1433](https://lab.civicrm.org/dev/core/-/issues/1433):
281 [17627](https://github.com/civicrm/civicrm-core/pull/17627),
282 [17616](https://github.com/civicrm/civicrm-core/pull/17616) and
283 [17614](https://github.com/civicrm/civicrm-core/pull/17614))**
284
285 - **CustomValue.GetTree API Does Not Return Display Value for Money Select/Radio
286 Custom field ([dev/core#1566](https://lab.civicrm.org/dev/core/-/issues/1566):
287 [17008](https://github.com/civicrm/civicrm-core/pull/17008))**
288
289 - **whom_url missing contact ID parameter in detailed logging report
290 ([dev/core#1749](https://lab.civicrm.org/dev/core/-/issues/1749):
291 [17440](https://github.com/civicrm/civicrm-core/pull/17440))**
292
293 - **Regression : File fields export results in DB error
294 ([dev/core#1787](https://lab.civicrm.org/dev/core/-/issues/1787):
295 [17578](https://github.com/civicrm/civicrm-core/pull/17578))**
296
297 - **Relative date filter - End of yesterday not working properly
298 ([dev/core#1798](https://lab.civicrm.org/dev/core/-/issues/1798):
299 [17512](https://github.com/civicrm/civicrm-core/pull/17512))**
300
301 - **Editing a custom field choice label changes the `name` if you do it from the
302 custom field admin screens
303 ([dev/core#1817](https://lab.civicrm.org/dev/core/-/issues/1817):
304 [17681](https://github.com/civicrm/civicrm-core/pull/17681))**
305
306 - **Custom Date field with format=yy displays calendar icon that doesn't work
307 ([dev/core#1829](https://lab.civicrm.org/dev/core/-/issues/1829):
308 [17664](https://github.com/civicrm/civicrm-core/pull/17664))**
309
310 - **Noncompliant query leads to (semi-)random sorting and failing unit test
311 CRM_Case_BAO_CaseTest::testSortByCaseContact
312 ([dev/core#1844](https://lab.civicrm.org/dev/core/-/issues/1844):
313 [17708](https://github.com/civicrm/civicrm-core/pull/17708))**
314
315 - **Unable to install 5.28 on Maria DB 10.3 on Ubuntu
316 ([dev/core#1860](https://lab.civicrm.org/dev/core/-/issues/1860):
317 [17772](https://github.com/civicrm/civicrm-core/pull/17772))**
318
319 - **APIv4 - filter getActions results based on user permissions
320 ([17540](https://github.com/civicrm/civicrm-core/pull/17540))**
321
322 - **Pre-upgrade message for php-intl shows twice
323 ([17748](https://github.com/civicrm/civicrm-core/pull/17748))**
324
325 - **Fix saving of State/Province Multi-select values
326 ([17737](https://github.com/civicrm/civicrm-core/pull/17737))**
327
328 - **Graphs on Contribution Summary report replace final row with grand total
329 value ([dev/report#40](https://lab.civicrm.org/dev/report/-/issues/40):
330 [17412](https://github.com/civicrm/civicrm-core/pull/17412))**
331
332 - **[regression] Attempting to access Multi-Record Custom Field import results
333 in crash ([dev/core#1841](https://lab.civicrm.org/dev/core/-/issues/1841):
334 [17697](https://github.com/civicrm/civicrm-core/pull/17697))**
335
336 - **Use psr-4 instead of psr-0 in Civi directory
337 ([17690](https://github.com/civicrm/civicrm-core/pull/17690))**
338
339 - **Sort options without relying on unavailable buildOptions param
340 ([17621](https://github.com/civicrm/civicrm-core/pull/17621))**
341
342 - **Throw exception if id not passed into discard
343 ([17666](https://github.com/civicrm/civicrm-core/pull/17666))**
344
345 - **Improve PropertyBag handling of offsetGet and custom properties; add more
346 tests ([17588](https://github.com/civicrm/civicrm-core/pull/17588) and
347 [17654](https://github.com/civicrm/civicrm-core/pull/17654))**
348
349 - **Fix validation of select2 fields in "On behalf of Organisation" block
350 ([17672](https://github.com/civicrm/civicrm-core/pull/17672))**
351
352 - **Pass required attribute for quickform fields through to form
353 ([16488](https://github.com/civicrm/civicrm-core/pull/16488))**
354
355 - **CRM_Core_I18n::setLocale() - Fix bug with repeated usage
356 ([17374](https://github.com/civicrm/civicrm-core/pull/17374))**
357
358 - **Bug in Grant statistics report
359 ([17640](https://github.com/civicrm/civicrm-core/pull/17640))**
360
361 - **Fix retrieving MySQL version for checking as part of install requirements
362 ([17593](https://github.com/civicrm/civicrm-core/pull/17593))**
363
364 - **Set ContactType.name as required in the schema.
365 ([17548](https://github.com/civicrm/civicrm-core/pull/17548))**
366
367 - **Fix "Undefined variable: entryFound" notice on Bookkeeping report
368 ([17554](https://github.com/civicrm/civicrm-core/pull/17554))**
369
370 - **Zip code range search only supports numeric zip codes
371 ([17523](https://github.com/civicrm/civicrm-core/pull/17523))**
372
373 - **Remove isThrowException from CRM_Utils_Type::validate() signature
374 ([17546](https://github.com/civicrm/civicrm-core/pull/17546))**
375
376 ### CiviContribute
377
378 - **Payment instrument ID is not required at processorform level
379 ([17510](https://github.com/civicrm/civicrm-core/pull/17510))**
380
381 Do not throw warning if payment instrument is not sent.
382
383 - **Bank fee has wrong date on import in civicrm_financial_item.transaction_date
384 incorrected uses import date rather than payment date on
385 ([dev/core#1776](https://lab.civicrm.org/dev/core/-/issues/1776):
386 [17389](https://github.com/civicrm/civicrm-core/pull/17389))**
387
388 Ensures the `civicrm_financial_item.transaction_date` gets recorded correctly
389 when importing a transaction with a bank fee.
390
391 - **Payment.create should not set contribution date to today
392 ([17688](https://github.com/civicrm/civicrm-core/pull/17688))**
393
394 - **Fix PHP notice when we don't have credit card params
395 ([16514](https://github.com/civicrm/civicrm-core/pull/16514) and
396 [17584](https://github.com/civicrm/civicrm-core/pull/17584))**
397
398 ### CiviEvent
399
400 - **Event participant_listing_id field defaults to 0 instead of Null
401 ([dev/core#1833](https://lab.civicrm.org/dev/core/-/issues/1833):
402 [17677](https://github.com/civicrm/civicrm-core/pull/17677))**
403
404 ### CiviSMS
405
406 - **Can't change SMS recipient on non-bulk SMS
407 ([dev/core#1840](https://lab.civicrm.org/dev/core/-/issues/1840):
408 [17691](https://github.com/civicrm/civicrm-core/pull/17691))**
409
410 ### Joomla Integration
411
412 - **Ensure that when normal routing trackable urls and opens in Joomla go to the
413 frontend not administrator site
414 ([17760](https://github.com/civicrm/civicrm-core/pull/17760))**
415
416 ### WordPress Integration
417
418 - **Remove `/` from the beginning and end of query string
419 ([207](https://github.com/civicrm/civicrm-wordpress/pull/207))**
420
421 Fixes a 'You do not have permission to access this content.' error resulting
422 from an extra '/' in the `q=` string in the url.
423
424 - **Base page fails to recognise Page Templates in subdirectories.
425 ([dev/wordpress#58](https://lab.civicrm.org/dev/wordpress/-/issues/58):
426 [204](https://github.com/civicrm/civicrm-wordpress/pull/204))**
427
428 Ensures that the CiviCRM base page is correctly identified when it does not
429 reside in the theme root directory.
430
431 - **undefined offset bug in BAO/FinancialAccount.php
432 ([dev/wordpress#61](https://lab.civicrm.org/dev/wordpress/-/issues/61):
433 [17701](https://github.com/civicrm/civicrm-core/pull/17701) and
434 [17689](https://github.com/civicrm/civicrm-core/pull/17689))**
435
436 Ensures that the financial account is set correctly even when the name does
437 not match the label.
438
439 ## <a name="misc"></a>Miscellany
440
441 - **Support passing old method name into deprecatedFunctionWarning
442 ([17552](https://github.com/civicrm/civicrm-core/pull/17552))**
443
444 - **Add CRM_Core_Form::isFormInViewMode and CRM_Core_Form::isFormInEditMode
445 ([17637](https://github.com/civicrm/civicrm-core/pull/17637))**
446
447 - **CRM_Utils_JS - also dedupe 'use strict' directive when deduping closures
448 ([17711](https://github.com/civicrm/civicrm-core/pull/17711))**
449
450 - **Add isBackOffice, isPayLater, getPaymentMode helpers to
451 frontendpaymentformtrait
452 ([17511](https://github.com/civicrm/civicrm-core/pull/17511))**
453
454 - **Fix issue $this
455 ([589](https://github.com/civicrm/civicrm-drupal/pull/589))**
456
457 - **Fix validateAll to no longer support unused abort param
458 ([17544](https://github.com/civicrm/civicrm-core/pull/17544))**
459
460 - **Remove deprecated billingID from baseIPN
461 ([17525](https://github.com/civicrm/civicrm-core/pull/17525))**
462
463 - **Add EntityFormTrait to pricefieldForm - stdised getEntityId()
464 ([17516](https://github.com/civicrm/civicrm-core/pull/17516))**
465
466 - **Update contributor-key.yml
467 ([17553](https://github.com/civicrm/civicrm-core/pull/17553))**
468
469 - **Export fix ([17644](https://github.com/civicrm/civicrm-core/pull/17644))**
470
471 - **Upgrade HTML Purifier to v4.12.0 to support for PHP7.4
472 ([297](https://github.com/civicrm/civicrm-packages/pull/297))**
473
474 - **Temporary tables should follow consistent naming convention
475 ([dev/core#183](https://lab.civicrm.org/dev/core/-/issues/183):
476 [15796](https://github.com/civicrm/civicrm-core/pull/15796))**
477
478 - **Remove unreachable lines
479 ([17563](https://github.com/civicrm/civicrm-core/pull/17563))**
480
481 - **EventInfo template cleanup
482 ([17581](https://github.com/civicrm/civicrm-core/pull/17581))**
483
484 - **Misspelled word
485 ([17652](https://github.com/civicrm/civicrm-core/pull/17652))**
486
487 - **Remove a usage of deprecated funtion get_magic_quotes_gpc and also switch out
488 {} for [] whne acecssing string or array offsets
489 ([296](https://github.com/civicrm/civicrm-packages/pull/296))**
490
491 - **Remove unused deprecated class
492 ([17535](https://github.com/civicrm/civicrm-core/pull/17535))**
493
494 - **Remove obsolete function formatWikiURL
495 ([17726](https://github.com/civicrm/civicrm-core/pull/17726))**
496
497 - **[REF] Ship Flexmailer extension with Core
498 ([17669](https://github.com/civicrm/civicrm-core/pull/17669))**
499
500 - **[Ref] Simplify the replacing of the email with the email from the url
501 ([17491](https://github.com/civicrm/civicrm-core/pull/17491))**
502
503 - **[REF] Replace incorrect usages of array_key_exists when the variable is not
504 an array with property_exists and also fix the parameter order for an implode
505 statement ([17573](https://github.com/civicrm/civicrm-core/pull/17573))**
506
507 - **[Ref] Convert Authorize.net to use Guzzle for update subscription class, add
508 test ([17585](https://github.com/civicrm/civicrm-core/pull/17585))**
509
510 - **[REF] Using {} to access string or array offsets has been deprecated in
511 PHP7.4 ([17574](https://github.com/civicrm/civicrm-core/pull/17574))**
512
513 - **[Ref] Mark unused date functions as deprecated
514 ([17487](https://github.com/civicrm/civicrm-core/pull/17487))**
515
516 - **[REF] Using ternary operation without nesting is deprecated and also using
517 methods and properly instanciate the CiviCase Info object in test
518 ([17575](https://github.com/civicrm/civicrm-core/pull/17575))**
519
520 - **[REF] Add in upgrade step to populate missing contact_type.name field
521 ([17570](https://github.com/civicrm/civicrm-core/pull/17570))**
522
523 - **[Ref] Convert Authorize.net doDirectPayment to use guzzle & add test
524 ([17501](https://github.com/civicrm/civicrm-core/pull/17501))**
525
526 - **[REF] Replace the deprecated system_rebuild_module_data function with
527 equivilant extension.list.module service function calls to be Drupal 9
528 compatiable ([17515](https://github.com/civicrm/civicrm-core/pull/17515))**
529
530 - **[Ref] Remove never reachable lines.
531 ([17556](https://github.com/civicrm/civicrm-core/pull/17556))**
532
533 - **[Ref] Remove another instance of fatal()
534 ([17549](https://github.com/civicrm/civicrm-core/pull/17549))**
535
536 - **[Ref] Readability extraction in Dummy class
537 ([17543](https://github.com/civicrm/civicrm-core/pull/17543))**
538
539 - **[Ref] Throw exceptions from Authorize.net rather than return errors
540 ([17500](https://github.com/civicrm/civicrm-core/pull/17500))**
541
542 - **[REF] Replace some instances of fatal with thrown exceptions.
543 ([17533](https://github.com/civicrm/civicrm-core/pull/17533))**
544
545 - **[Ref] Remove calls to, and deprecate, unhandled function
546 ([17499](https://github.com/civicrm/civicrm-core/pull/17499))**
547
548 - **[REF] Remove handling for 2 fields not on the form
549 ([17504](https://github.com/civicrm/civicrm-core/pull/17504))**
550
551 - **[Ref] Remove some instances of fatal in BAO classes
552 ([17536](https://github.com/civicrm/civicrm-core/pull/17536))**
553
554 - **REF Access the method not the property directly to check if a payment
555 processor supports recurring
556 ([17602](https://github.com/civicrm/civicrm-core/pull/17602))**
557
558 - **[REF] Ensure that our custom error handler is called when jquery validates
559 and expand any collapsed accordions that are hiding required fields that
560 haven't been filled in
561 ([17673](https://github.com/civicrm/civicrm-core/pull/17673))**
562
563 - **[REF] Consolidate code in processMembership
564 ([17611](https://github.com/civicrm/civicrm-core/pull/17611))**
565
566 - **[REF] Cleanup function for retrieving contact types.
567 ([17676](https://github.com/civicrm/civicrm-core/pull/17676))**
568
569 - **[REF] Fix javascript syntax error
570 ([17678](https://github.com/civicrm/civicrm-core/pull/17678))**
571
572 - **[REF] Fix jquery error message display on select2 field validation
573 ([17671](https://github.com/civicrm/civicrm-core/pull/17671))**
574
575 - **[REF] Fix allowing users to clear values for raido custom fields when not
576 required ([17670](https://github.com/civicrm/civicrm-core/pull/17670))**
577
578 - **[REF] Extract getTestTrxnID
579 ([17642](https://github.com/civicrm/civicrm-core/pull/17642))**
580
581 - **[REF] Fix Compatability issue with flexmailer caused by the PHP7.4 fix
582 ([17660](https://github.com/civicrm/civicrm-core/pull/17660))**
583
584 - **[REF] Ensure that the Manual Payment Processor sets the _paymentProcessor
585 variable like other Processors to fix issues in PHP7.4 and UnitTests
586 ([17648](https://github.com/civicrm/civicrm-core/pull/17648))**
587
588 - **[REF] Fix PHP7.4 Test fails when we are accessing array keys when the value
589 is not an array
590 ([17649](https://github.com/civicrm/civicrm-core/pull/17649))**
591
592 - **[REF] Fix parts of code where curly brackets were being used for array or
593 string access which is deprecated in PHP7.4
594 ([17647](https://github.com/civicrm/civicrm-core/pull/17647))**
595
596 - **[REF] Fix issue with using array access tools on NULL values
597 ([17600](https://github.com/civicrm/civicrm-core/pull/17600))**
598
599 - **[REF] Replace incorrect usage of array_key_exists with property_exists in
600 Group BAO Class
601 ([17604](https://github.com/civicrm/civicrm-core/pull/17604))**
602
603 - **[REF] Add test for renewing old expired membership via form
604 ([17564](https://github.com/civicrm/civicrm-core/pull/17564))**
605
606 - **[REF] Update packages to work with PHP7.4
607 ([17598](https://github.com/civicrm/civicrm-core/pull/17598))**
608
609 - **[REF] Fix another couple of uses of array_key_exists when the variable being
610 checked is an object
611 ([17601](https://github.com/civicrm/civicrm-core/pull/17601))**
612
613 - **[REF] Remove deprecated methods of booting drupal container and getting
614 drupal timezone information
615 ([17522](https://github.com/civicrm/civicrm-core/pull/17522))**
616
617 - **[REF] Fix some additional issues where curly braces were being used to
618 access string or array offsets
619 ([17599](https://github.com/civicrm/civicrm-core/pull/17599))**
620
621 - **[NFC] Update existing APIv3 MembershipType Tests to also test against APIv4
622 as appropriate ([17528](https://github.com/civicrm/civicrm-core/pull/17528))**
623
624 - **NFC cleanup docblocks in CRM_Utils_JS
625 ([17714](https://github.com/civicrm/civicrm-core/pull/17714))**
626
627 - **[NFC] Update flexmailer to be PHP7.4 compatible
628 ([17779](https://github.com/civicrm/civicrm-core/pull/17779))**
629
630 - **[NFC] Include flexmailer in distmaker
631 ([17768](https://github.com/civicrm/civicrm-core/pull/17768))**
632
633 - **[NFC] Fix some outdated wiki links
634 ([17739](https://github.com/civicrm/civicrm-core/pull/17739))**
635
636 - **[NFC] Fix contributor key for Lighthouse Consulting and Design
637 ([17727](https://github.com/civicrm/civicrm-core/pull/17727))**
638
639 - **[NFC] Update PHPUnit Configuration file to be compatible with PHPUnit7
640 ([605](https://github.com/civicrm/civicrm-drupal/pull/605))**
641
642 - **[NFC] Fix Unit test failure on MySQL 8 due to mysql ordering issue
643 ([17674](https://github.com/civicrm/civicrm-core/pull/17674))**
644
645 - **[NFC] Fix tests in preparation for phpunit7
646 ([17661](https://github.com/civicrm/civicrm-core/pull/17661))**
647
648 - **[NFC] Remove instances where html is passed to crmMoney
649 ([17612](https://github.com/civicrm/civicrm-core/pull/17612))**
650
651 - **[NFC] Add assertions to existing test to lock in current behaviour
652 ([17605](https://github.com/civicrm/civicrm-core/pull/17605))**
653
654 - **[NFC] Update mocking to use getMockBuilder instead instead of createMock
655 ([17606](https://github.com/civicrm/civicrm-core/pull/17606))**
656
657 - **NFC Formatting cleanup on contribution/recur templates
658 ([17603](https://github.com/civicrm/civicrm-core/pull/17603))**
659
660 - **[NFC] Minor code cleanup
661 ([17566](https://github.com/civicrm/civicrm-core/pull/17566))**
662
663 - **[NFC] Update PHPUnit configuration to be compatible with PHPUnit7
664 ([120](https://github.com/civicrm/civicrm-backdrop/pull/120))**
665
666 - **[NFC] Update PHPUnit configuration to be compatible with PHPUnit7
667 ([206](https://github.com/civicrm/civicrm-wordpress/pull/206))**
668
669 ## <a name="credits"></a>Credits
670
671 This release was developed by the following code authors:
672
673 AGH Strategies - Alice Frumin, Andrew Hunt; British Humanist Association -
674 Andrew West; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM -
675 Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; CompuCorp - Ivan; Coop
676 SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Dietermartens; ES-Progress -
677 Sandor Semsey; Flinders University of South Australia - Tom Anderson; Fuzion -
678 Jitendra Purohit; JMA Consulting - Seamus Lee; Lighthouse Consulting and
679 Design- Brian Shaughnessy; Marcin Lewandowski; Megaphone Technology Consulting -
680 Jon Goldberg; MJW Consulting - Matthew Wire; Tadpole Collective - Kevin
681 Cristiano; Wikimedia Foundation - Eileen McNaughton
682
683 Most authors also reviewed code for this release; in addition, the following
684 reviewers contributed their comments:
685
686 a-n The Artists Information Company - William Mortada; Agileware - Francis
687 Whittle, Justin Freeman; Andrew Thompson; Artful Robot - Rich Lott; Betty
688 Dolfing; Blackfly Solutions - Alan Dixon; CiviCoop - Jaap Jansma; Fuzion - Luke
689 Stewart, Peter Davis; JMA Consulting - Joe Murray; MJCO - Mikey O'Toole; Semper
690 IT - Karin Gerritsen; Squiffle Consulting - Aidan Saunders; Third Sector Design:
691 Eriol Fox; Timbsoft Technologies - Tunbola Ogunwande;
692
693 ## <a name="feedback"></a>Feedback
694
695 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
696 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
697 and contact `@agh1`.