3 Released August 5, 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?** | **yes** |
20 | **Fix problems installing or upgrading to a previous version?** | **yes** |
21 | **Introduce features?** | **yes** |
22 | **Fix bugs?** | **yes** |
24 ## <a name="features"></a>Features
28 - **End of life planning for MySQL server 5.0 - 5.6 (Work Towards
29 [dev/core#1681](https://lab.civicrm.org/dev/core/-/issues/1681):
30 [17558](https://github.com/civicrm/civicrm-core/pull/17558))**
32 Block sites from upgrading if on a MySQL version less than 5.6.5.
34 - **Feature Request: Ability to enable SSL for database connection. (Work
35 Towards [dev/core#1137](https://lab.civicrm.org/dev/core/-/issues/1137):
36 [298](https://github.com/civicrm/civicrm-packages/pull/298))**
38 Makes ssl database connections without client certificates work in php7.
40 - **Create new customPre hook
41 ([dev/core#1716](https://lab.civicrm.org/dev/core/-/issues/1716):
42 [17144](https://github.com/civicrm/civicrm-core/pull/17144))**
44 Creates a new hook customPre which makes it so one can impact or observe
45 custom data before it is saved.
47 - **Investigate php currency library
48 ([dev/translation#48](https://lab.civicrm.org/dev/translation/-/issues/48):
49 [17608](https://github.com/civicrm/civicrm-core/pull/17608))**
51 Implements the PHP library [brick/money](https://github.com/brick/money) to
52 better handle currency amounts.
54 - **Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception
55 (Work Towards [dev/core#560](https://lab.civicrm.org/dev/core/-/issues/560):
56 [17555](https://github.com/civicrm/civicrm-core/pull/17555),
57 [295](https://github.com/civicrm/civicrm-packages/pull/295),
58 [602](https://github.com/civicrm/civicrm-drupal/pull/602),
59 [17550](https://github.com/civicrm/civicrm-core/pull/17550),
60 [17534](https://github.com/civicrm/civicrm-core/pull/17534),
61 [17541](https://github.com/civicrm/civicrm-core/pull/17541),
62 [17545](https://github.com/civicrm/civicrm-core/pull/17545) and
63 [17539](https://github.com/civicrm/civicrm-core/pull/17539))**
65 Work towards throwing exceptions instead of fatal errors.
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))**
71 Sets the default for `activity_date_time` and `created_date` as the current
72 date when using the APIv4 Activity.
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))**
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
81 - **APIv4 - Improve row_count to work with HAVING, GROUP BY, and SELECT
82 ([17704](https://github.com/civicrm/civicrm-core/pull/17704))**
84 This changes the meaning of $result->count(), to give a total count of
85 filtered items, ignoring limit and offset.
87 - **APIv4 - Add more SQL functions
88 ([17692](https://github.com/civicrm/civicrm-core/pull/17692))**
90 Adds support for additional SQL functions in APIv4. Also categorizes them and
91 adds translated titles for the new Search Builder.
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))**
97 Adds titles and icons to DAO entities and expose them to APIv4 Entity::get and
100 - **APIv4 Explorer - UI support for join ON clause
101 ([17682](https://github.com/civicrm/civicrm-core/pull/17682))**
103 Improves the APIv4 explorer to give selectable clauses when adding a JOIN.
105 - **Add permission metadata to contact is_deleted field
106 ([17721](https://github.com/civicrm/civicrm-core/pull/17721))**
108 Improves the contact schema metadata.
110 - **API/DAO Metadata - Retain versioning metadata for possible usage in
112 ([17735](https://github.com/civicrm/civicrm-core/pull/17735))**
114 Adds metadata to indicate when fields are created.
116 - **Connect to database using SET NAMES utf8mb4
117 ([17716](https://github.com/civicrm/civicrm-core/pull/17716))**
119 This change makes it so one can use utf8mb4 characters. However, databases
120 that do not support utf8mb4 will not be affected.
122 - **Remove slow join from activity search
123 ([17250](https://github.com/civicrm/civicrm-core/pull/17250))**
125 Improves performance of the activity search.
127 - **Add icons to standalone contact tasks
128 ([17667](https://github.com/civicrm/civicrm-core/pull/17667))**
130 This adds icon data to contact tasks that appear in the new search builder
133 - **Add icons to multi-valued custom groups and display on contact tab
134 ([17531](https://github.com/civicrm/civicrm-core/pull/17531))**
136 Custom data sets that appear as tabs can now have configurable icons to
139 - **Add serialize metadata to domain.locales field
140 ([17651](https://github.com/civicrm/civicrm-core/pull/17651))**
142 Adds metadata to help APIv4 serialize/unserialize the domain.locales
145 - **Add smarty error event
146 ([16918](https://github.com/civicrm/civicrm-core/pull/16918) and
147 [292](https://github.com/civicrm/civicrm-packages/pull/292))**
149 Improves debugging errors in smarty templates.
151 - **Allow HEAD requests to generate a form key
152 ([17321](https://github.com/civicrm/civicrm-core/pull/17321))**
154 Avoids generating crashes (500 errors) when bots check links.
156 - **Include a new SqlParallel queue type that enables multiple queue runners to
158 ([15422](https://github.com/civicrm/civicrm-core/pull/15422))**
160 Adds a new Sql queue type which will allow multiple runners to fetch the next
161 available job from a queue and run in parallel.
163 - **Allow adding datepicker to metadata based settings pages
164 ([16610](https://github.com/civicrm/civicrm-core/pull/16610))**
166 Makes it so that datepicker can be added to metadata based settings pages by
167 specifying html_Type='datepicker' in settings metadata.
171 - **Add payment processor to details on list of recurring contributions
172 ([17179](https://github.com/civicrm/civicrm-core/pull/17179))**
174 The list of recurring contributions now has a column showing the payment
177 - **Fix all core processors to throw exceptions and not rely on the
178 CRM_Core_Payment to convert errors to exceptions
179 ([dev/financial#131](https://lab.civicrm.org/dev/financial/-/issues/131):
180 [17565](https://github.com/civicrm/civicrm-core/pull/17565),
181 [17559](https://github.com/civicrm/civicrm-core/pull/17559),
182 [17542](https://github.com/civicrm/civicrm-core/pull/17542),
183 [17502](https://github.com/civicrm/civicrm-core/pull/17502),
184 [17597](https://github.com/civicrm/civicrm-core/pull/17597),
185 [17592](https://github.com/civicrm/civicrm-core/pull/17592) and
186 [17596](https://github.com/civicrm/civicrm-core/pull/17596))**
188 Makes it so that core payment processors fail gracefully more often.
190 - **Add selfService flag to cancelSubscription getText so we can display
191 different text for each case
192 ([17687](https://github.com/civicrm/civicrm-core/pull/17687))**
194 Makes it so payment processor developers can identify the different contexts
195 someone may be canceling from and display appropriate messaging.
197 - **Price Field Form: save the fid for the postProcess hook
198 ([17639](https://github.com/civicrm/civicrm-core/pull/17639))**
200 Improves `postProcess` hook for Price Field Form by making the field id
203 - **Improve error handling on IPN
204 ([18062](https://github.com/civicrm/civicrm-core/pull/18062))**
206 The error message and backtrace from a failed PayPal Website Payments Standard
207 instant payment notification (IPN) are now logged.
211 - **Display start/end adjustment on membership status page.
212 ([dev/core#1809](https://lab.civicrm.org/dev/core/-/issues/1809):
213 [17571](https://github.com/civicrm/civicrm-core/pull/17571))**
215 Improves the Membership Status administration page by adding columns for the
216 start/end adjustment.
218 ### WordPress Integration
220 - **Provide concrete details about civicrm.files
221 ([18011](https://github.com/civicrm/civicrm-core/pull/18011) follows on
222 [dev/wordpress#66](https://lab.civicrm.org/dev/wordpress/-/issues/66), see
223 also [17868](https://github.com/civicrm/civicrm-core/pull/17868))**
225 A message will appear after an upgrade to 5.28.0 or later specifying the
226 calculated and expected file upload locations.
228 Changes appearing in 5.27 have been reverted but will be reapplied in 5.29
229 after more notice is provided.
231 ## <a name="bugs"></a>Bugs resolved
235 - **Contact image is broken
236 ([dev/wordpress#62](https://lab.civicrm.org/dev/wordpress/-/issues/62):
237 [17853](https://github.com/civicrm/civicrm-core/pull/17853))**
239 This resolves a problem on sites managed with Git where the `db.json` file
242 - **Evaluate if any indexed fields are unused (Work Towards
243 [dev/core#1634](https://lab.civicrm.org/dev/core/-/issues/1634):
244 [17686](https://github.com/civicrm/civicrm-core/pull/17686))**
246 Remove database index on `medium_id` from `civicrm_activity`.
248 - **[Activity] Default priority value when add Activity
249 ([dev/core#1801](https://lab.civicrm.org/dev/core/-/issues/1801):
250 [17557](https://github.com/civicrm/civicrm-core/pull/17557))**
252 Ensures when creating a new activity the priority field defaults correctly for
253 sites not in english.
255 - **The multi-lingual multi-domain problem
256 ([dev/core#1852](https://lab.civicrm.org/dev/core/-/issues/1852):
257 [17738](https://github.com/civicrm/civicrm-core/pull/17738) and
258 [17733](https://github.com/civicrm/civicrm-core/pull/17733))**
260 Ensures that the list of languages civicrm_domain.locales is the same for all
261 domains in a multi-domain set up.
263 - **APIv4 - Skip empty leaves in WHERE clause
264 ([17576](https://github.com/civicrm/civicrm-core/pull/17576))**
266 Fixes a bug in search builder where APIv4 gives a sql error while building
269 - **Offset is not respected in Date Preferences
270 ([dev/core#1847](https://lab.civicrm.org/dev/core/-/issues/1847) and
271 [dev/core#1874](https://lab.civicrm.org/dev/core/-/issues/1874):
272 [17762](https://github.com/civicrm/civicrm-core/pull/17762) and
273 [17836](https://github.com/civicrm/civicrm-core/pull/17836))**
275 - **Fix CRM_Utils_JS::dedupeClosures to ignore comments
276 ([17717](https://github.com/civicrm/civicrm-core/pull/17717))**
278 Ensures comments do not interfere with deduping.
280 - **Use PHPUnit7 as the primary test runner for PHP versions >= 7.1 when using
282 ([17615](https://github.com/civicrm/civicrm-core/pull/17615))**
284 Updates PHP unit tests to use PHPUnit7 when the PHP Unit version is 7.1 or
287 - **Fix isMultilingual to use static caching and respect current domain
288 ([17646](https://github.com/civicrm/civicrm-core/pull/17646))**
290 Improves the efficiency and accuracy of the `CRM_Core_I18n::isMultilingual`
291 function, preventing a large number of duplicate queries on every request.
293 - **Update has_separator field in civicrm_navigation
294 ([17579](https://github.com/civicrm/civicrm-core/pull/17579))**
296 This field was incorrectly marked as a boolean; it's actually an int with an
299 - **Payment Propertybag remove warning
300 ([17506](https://github.com/civicrm/civicrm-core/pull/17506))**
302 - **Fix duplicate upgrade function
303 ([17582](https://github.com/civicrm/civicrm-core/pull/17582))**
305 Fixes a fatal error on upgrade caused by a merge conflict.
307 - **CRM_Case_XMLProcessor::allActivityTypes() doesn't do caching right
308 ([dev/core#1433](https://lab.civicrm.org/dev/core/-/issues/1433):
309 [17627](https://github.com/civicrm/civicrm-core/pull/17627),
310 [17616](https://github.com/civicrm/civicrm-core/pull/17616) and
311 [17614](https://github.com/civicrm/civicrm-core/pull/17614))**
313 - **CustomValue.GetTree API Does Not Return Display Value for Money Select/Radio
314 Custom field ([dev/core#1566](https://lab.civicrm.org/dev/core/-/issues/1566):
315 [17008](https://github.com/civicrm/civicrm-core/pull/17008))**
317 - **whom_url missing contact ID parameter in detailed logging report
318 ([dev/core#1749](https://lab.civicrm.org/dev/core/-/issues/1749):
319 [17440](https://github.com/civicrm/civicrm-core/pull/17440))**
321 - **Regression : File fields export results in DB error
322 ([dev/core#1787](https://lab.civicrm.org/dev/core/-/issues/1787):
323 [17578](https://github.com/civicrm/civicrm-core/pull/17578))**
325 - **Relative date filter - End of yesterday not working properly
326 ([dev/core#1798](https://lab.civicrm.org/dev/core/-/issues/1798):
327 [17512](https://github.com/civicrm/civicrm-core/pull/17512))**
329 - **Editing a custom field choice label changes the `name` if you do it from the
330 custom field admin screens
331 ([dev/core#1817](https://lab.civicrm.org/dev/core/-/issues/1817):
332 [17681](https://github.com/civicrm/civicrm-core/pull/17681))**
334 - **Custom Date field with format=yy displays calendar icon that doesn't work
335 ([dev/core#1829](https://lab.civicrm.org/dev/core/-/issues/1829):
336 [17664](https://github.com/civicrm/civicrm-core/pull/17664))**
338 - **Unable to install 5.28 on Maria DB 10.3 on Ubuntu
339 ([dev/core#1860](https://lab.civicrm.org/dev/core/-/issues/1860):
340 [17772](https://github.com/civicrm/civicrm-core/pull/17772))**
342 - **APIv4 - filter getActions results based on user permissions
343 ([17540](https://github.com/civicrm/civicrm-core/pull/17540))**
345 - **Pre-upgrade message for php-intl shows twice
346 ([17748](https://github.com/civicrm/civicrm-core/pull/17748))**
348 - **Fix saving of State/Province Multi-select values
349 ([17737](https://github.com/civicrm/civicrm-core/pull/17737))**
351 - **[regression] Attempting to access Multi-Record Custom Field import results
352 in crash ([dev/core#1841](https://lab.civicrm.org/dev/core/-/issues/1841):
353 [17697](https://github.com/civicrm/civicrm-core/pull/17697))**
355 - **Use psr-4 instead of psr-0 in Civi directory
356 ([17690](https://github.com/civicrm/civicrm-core/pull/17690))**
358 - **Sort options without relying on unavailable buildOptions param
359 ([17621](https://github.com/civicrm/civicrm-core/pull/17621))**
361 - **Throw exception if id not passed into discard
362 ([17666](https://github.com/civicrm/civicrm-core/pull/17666))**
364 - **Fix validation of select2 fields in "On behalf of Organisation" block
365 ([17672](https://github.com/civicrm/civicrm-core/pull/17672))**
367 - **Pass required attribute for quickform fields through to form
368 ([16488](https://github.com/civicrm/civicrm-core/pull/16488) and
369 [17929](https://github.com/civicrm/civicrm-core/pull/17929) related to
370 [dev/core#1903](https://lab.civicrm.org/dev/core/-/issues/1903))**
372 - **CRM_Core_I18n::setLocale() - Fix bug with repeated usage
373 ([17374](https://github.com/civicrm/civicrm-core/pull/17374))**
375 - **Fix retrieving MySQL version for checking as part of install requirements
376 ([17593](https://github.com/civicrm/civicrm-core/pull/17593))**
378 - **Set ContactType.name as required in the schema.
379 ([17548](https://github.com/civicrm/civicrm-core/pull/17548),
380 [17570](https://github.com/civicrm/civicrm-core/pull/17570), and
381 [18070](https://github.com/civicrm/civicrm-core/pull/18070) related to
382 [dev/core#1927](https://lab.civicrm.org/dev/core/-/issues/1927))**
384 - **Fix "Undefined variable: entryFound" notice on Bookkeeping report
385 ([17554](https://github.com/civicrm/civicrm-core/pull/17554))**
387 - **Zip code range search only supports numeric zip codes
388 ([17523](https://github.com/civicrm/civicrm-core/pull/17523))**
390 Rather than causing a database error, this displays an error message when
391 attempting to search a postal code range using non-numeric postal codes.
393 - **Remove isThrowException from CRM_Utils_Type::validate() signature
394 ([17546](https://github.com/civicrm/civicrm-core/pull/17546))**
396 - **codeVersion not displayed in system status check error message about db
397 version vs codeversion
398 ([dev/core#1882](https://lab.civicrm.org/dev/core/-/issues/1882):
399 [17854](https://github.com/civicrm/civicrm-core/pull/17854))**
403 - **Noncompliant query leads to (semi-)random sorting and failing unit test
404 CRM_Case_BAO_CaseTest::testSortByCaseContact
405 ([dev/core#1844](https://lab.civicrm.org/dev/core/-/issues/1844):
406 [17708](https://github.com/civicrm/civicrm-core/pull/17708))**
410 - **Payment instrument ID is not required at processorform level
411 ([17510](https://github.com/civicrm/civicrm-core/pull/17510))**
413 Do not throw warning if payment instrument is not sent.
415 - **Bank fee has wrong date on import in civicrm_financial_item.transaction_date
416 incorrected uses import date rather than payment date on
417 ([dev/core#1776](https://lab.civicrm.org/dev/core/-/issues/1776):
418 [17389](https://github.com/civicrm/civicrm-core/pull/17389))**
420 Ensures the `civicrm_financial_item.transaction_date` gets recorded correctly
421 when importing a transaction with a bank fee.
423 - **Payment.create should not set contribution date to today
424 ([17688](https://github.com/civicrm/civicrm-core/pull/17688))**
426 - **Fix PHP notice when we don't have credit card params
427 ([16514](https://github.com/civicrm/civicrm-core/pull/16514) and
428 [17584](https://github.com/civicrm/civicrm-core/pull/17584))**
430 - **Improve PropertyBag handling of offsetGet and custom properties; add more
431 tests ([17588](https://github.com/civicrm/civicrm-core/pull/17588) and
432 [17654](https://github.com/civicrm/civicrm-core/pull/17654))**
434 - **Graphs on Contribution Summary report replace final row with grand total
435 value ([dev/report#40](https://lab.civicrm.org/dev/report/-/issues/40):
436 [17412](https://github.com/civicrm/civicrm-core/pull/17412))**
440 - **Event participant_listing_id field defaults to 0 instead of Null
441 ([dev/core#1833](https://lab.civicrm.org/dev/core/-/issues/1833):
442 [17677](https://github.com/civicrm/civicrm-core/pull/17677))**
444 - **Multiple line item shown on view contribution if participant is transferred
446 ([dev/core#890](https://lab.civicrm.org/dev/core/-/issues/890):
447 [16956](https://github.com/civicrm/civicrm-core/pull/16956))**
451 - **Bug in Grant statistics report
452 ([17640](https://github.com/civicrm/civicrm-core/pull/17640))**
456 - **Can't change SMS recipient on non-bulk SMS
457 ([dev/core#1840](https://lab.civicrm.org/dev/core/-/issues/1840):
458 [17691](https://github.com/civicrm/civicrm-core/pull/17691))**
460 ### Drupal Integration
462 - **Error: Class 'CRM_Upgrade_Incremental_General' not found in
463 Civi\Install\Requirements->checkMysqlVersion()
464 ([dev/drupal#131](https://lab.civicrm.org/dev/drupal/-/issues/131):
465 [18066](https://github.com/civicrm/civicrm-core/pull/18066))**
467 ### Joomla Integration
469 - **Ensure that when normal routing trackable urls and opens in Joomla go to the
470 frontend not administrator site
471 ([17760](https://github.com/civicrm/civicrm-core/pull/17760))**
473 ### WordPress Integration
475 - **Remove `/` from the beginning and end of query string
476 ([207](https://github.com/civicrm/civicrm-wordpress/pull/207))**
478 Fixes a 'You do not have permission to access this content.' error resulting
479 from an extra '/' in the `q=` string in the url.
481 - **Base page fails to recognise Page Templates in subdirectories.
482 ([dev/wordpress#58](https://lab.civicrm.org/dev/wordpress/-/issues/58):
483 [204](https://github.com/civicrm/civicrm-wordpress/pull/204))**
485 Ensures that the CiviCRM base page is correctly identified when it does not
486 reside in the theme root directory.
488 - **undefined offset bug in BAO/FinancialAccount.php
489 ([dev/wordpress#61](https://lab.civicrm.org/dev/wordpress/-/issues/61):
490 [17701](https://github.com/civicrm/civicrm-core/pull/17701) and
491 [17689](https://github.com/civicrm/civicrm-core/pull/17689))**
493 Ensures that the financial account is set correctly even when the name does
496 - **Prevent session from starting during WordPress pseudo cron procedures
497 ([dev/core#1889](https://lab.civicrm.org/dev/core/-/issues/1889):
498 [17890](https://github.com/civicrm/civicrm-core/pull/17890) and
499 [210](https://github.com/civicrm/civicrm-wordpress/pull/210))**
501 ## <a name="misc"></a>Miscellany
503 - **Support passing old method name into deprecatedFunctionWarning
504 ([17552](https://github.com/civicrm/civicrm-core/pull/17552))**
506 - **Add CRM_Core_Form::isFormInViewMode and CRM_Core_Form::isFormInEditMode
507 ([17637](https://github.com/civicrm/civicrm-core/pull/17637))**
509 - **CRM_Utils_JS - also dedupe 'use strict' directive when deduping closures
510 ([17711](https://github.com/civicrm/civicrm-core/pull/17711))**
512 - **Add isBackOffice, isPayLater, getPaymentMode helpers to
513 frontendpaymentformtrait
514 ([17511](https://github.com/civicrm/civicrm-core/pull/17511))**
517 ([589](https://github.com/civicrm/civicrm-drupal/pull/589))**
519 - **Fix validateAll to no longer support unused abort param
520 ([17544](https://github.com/civicrm/civicrm-core/pull/17544))**
522 - **Remove deprecated billingID from baseIPN
523 ([17525](https://github.com/civicrm/civicrm-core/pull/17525))**
525 - **Add EntityFormTrait to pricefieldForm - stdised getEntityId()
526 ([17516](https://github.com/civicrm/civicrm-core/pull/17516))**
528 - **Update contributor-key.yml
529 ([17553](https://github.com/civicrm/civicrm-core/pull/17553))**
531 - **Export fix ([17644](https://github.com/civicrm/civicrm-core/pull/17644))**
533 - **Upgrade HTML Purifier to v4.12.0 to support for PHP7.4
534 ([297](https://github.com/civicrm/civicrm-packages/pull/297))**
536 - **Temporary tables should follow consistent naming convention
537 ([dev/core#183](https://lab.civicrm.org/dev/core/-/issues/183):
538 [15796](https://github.com/civicrm/civicrm-core/pull/15796))**
540 - **Remove unreachable lines
541 ([17563](https://github.com/civicrm/civicrm-core/pull/17563))**
543 - **EventInfo template cleanup
544 ([17581](https://github.com/civicrm/civicrm-core/pull/17581))**
547 ([17652](https://github.com/civicrm/civicrm-core/pull/17652))**
549 - **Remove a usage of deprecated funtion get_magic_quotes_gpc and also switch out
550 {} for [] whne acecssing string or array offsets
551 ([296](https://github.com/civicrm/civicrm-packages/pull/296))**
553 - **Remove unused deprecated class
554 ([17535](https://github.com/civicrm/civicrm-core/pull/17535))**
556 - **Remove obsolete function formatWikiURL
557 ([17726](https://github.com/civicrm/civicrm-core/pull/17726))**
559 - **[REF] Ship Flexmailer extension with Core
560 ([17669](https://github.com/civicrm/civicrm-core/pull/17669))**
562 - **[Ref] Simplify the replacing of the email with the email from the url
563 ([17491](https://github.com/civicrm/civicrm-core/pull/17491))**
565 - **[REF] Replace incorrect usages of array_key_exists when the variable is not
566 an array with property_exists and also fix the parameter order for an implode
567 statement ([17573](https://github.com/civicrm/civicrm-core/pull/17573))**
569 - **[Ref] Convert Authorize.net to use Guzzle for update subscription class, add
570 test ([17585](https://github.com/civicrm/civicrm-core/pull/17585))**
572 - **[REF] Using {} to access string or array offsets has been deprecated in
573 PHP7.4 ([17574](https://github.com/civicrm/civicrm-core/pull/17574))**
575 - **[Ref] Mark unused date functions as deprecated
576 ([17487](https://github.com/civicrm/civicrm-core/pull/17487))**
578 - **[REF] Using ternary operation without nesting is deprecated and also using
579 methods and properly instanciate the CiviCase Info object in test
580 ([17575](https://github.com/civicrm/civicrm-core/pull/17575))**
582 - **[Ref] Convert Authorize.net doDirectPayment to use guzzle & add test
583 ([17501](https://github.com/civicrm/civicrm-core/pull/17501))**
585 - **[REF] Replace the deprecated system_rebuild_module_data function with
586 equivilant extension.list.module service function calls to be Drupal 9
587 compatiable ([17515](https://github.com/civicrm/civicrm-core/pull/17515))**
589 - **[Ref] Remove never reachable lines.
590 ([17556](https://github.com/civicrm/civicrm-core/pull/17556))**
592 - **[Ref] Remove another instance of fatal()
593 ([17549](https://github.com/civicrm/civicrm-core/pull/17549))**
595 - **[Ref] Readability extraction in Dummy class
596 ([17543](https://github.com/civicrm/civicrm-core/pull/17543))**
598 - **[Ref] Throw exceptions from Authorize.net rather than return errors
599 ([17500](https://github.com/civicrm/civicrm-core/pull/17500))**
601 - **[REF] Replace some instances of fatal with thrown exceptions.
602 ([17533](https://github.com/civicrm/civicrm-core/pull/17533))**
604 - **[Ref] Remove calls to, and deprecate, unhandled function
605 ([17499](https://github.com/civicrm/civicrm-core/pull/17499))**
607 - **[REF] Remove handling for 2 fields not on the form
608 ([17504](https://github.com/civicrm/civicrm-core/pull/17504))**
610 - **[Ref] Remove some instances of fatal in BAO classes
611 ([17536](https://github.com/civicrm/civicrm-core/pull/17536))**
613 - **REF Access the method not the property directly to check if a payment
614 processor supports recurring
615 ([17602](https://github.com/civicrm/civicrm-core/pull/17602))**
617 - **[REF] Ensure that our custom error handler is called when jquery validates
618 and expand any collapsed accordions that are hiding required fields that
619 haven't been filled in
620 ([17673](https://github.com/civicrm/civicrm-core/pull/17673))**
622 - **[REF] Consolidate code in processMembership
623 ([17611](https://github.com/civicrm/civicrm-core/pull/17611))**
625 - **[REF] Cleanup function for retrieving contact types.
626 ([17676](https://github.com/civicrm/civicrm-core/pull/17676))**
628 - **[REF] Fix javascript syntax error
629 ([17678](https://github.com/civicrm/civicrm-core/pull/17678))**
631 - **[REF] Fix jquery error message display on select2 field validation
632 ([17671](https://github.com/civicrm/civicrm-core/pull/17671))**
634 - **[REF] Fix allowing users to clear values for raido custom fields when not
635 required ([17670](https://github.com/civicrm/civicrm-core/pull/17670))**
637 - **[REF] Extract getTestTrxnID
638 ([17642](https://github.com/civicrm/civicrm-core/pull/17642))**
640 - **[REF] Fix Compatability issue with flexmailer caused by the PHP7.4 fix
641 ([17660](https://github.com/civicrm/civicrm-core/pull/17660))**
643 - **[REF] Ensure that the Manual Payment Processor sets the _paymentProcessor
644 variable like other Processors to fix issues in PHP7.4 and UnitTests
645 ([17648](https://github.com/civicrm/civicrm-core/pull/17648))**
647 - **[REF] Fix PHP7.4 Test fails when we are accessing array keys when the value
649 ([17649](https://github.com/civicrm/civicrm-core/pull/17649))**
651 - **[REF] Fix parts of code where curly brackets were being used for array or
652 string access which is deprecated in PHP7.4
653 ([17647](https://github.com/civicrm/civicrm-core/pull/17647))**
655 - **[REF] Fix issue with using array access tools on NULL values
656 ([17600](https://github.com/civicrm/civicrm-core/pull/17600))**
658 - **[REF] Replace incorrect usage of array_key_exists with property_exists in
660 ([17604](https://github.com/civicrm/civicrm-core/pull/17604))**
662 - **[REF] Add test for renewing old expired membership via form
663 ([17564](https://github.com/civicrm/civicrm-core/pull/17564))**
665 - **[REF] Update packages to work with PHP7.4
666 ([17598](https://github.com/civicrm/civicrm-core/pull/17598))**
668 - **[REF] Fix another couple of uses of array_key_exists when the variable being
670 ([17601](https://github.com/civicrm/civicrm-core/pull/17601))**
672 - **[REF] Remove deprecated methods of booting drupal container and getting
673 drupal timezone information
674 ([17522](https://github.com/civicrm/civicrm-core/pull/17522))**
676 - **[REF] Fix some additional issues where curly braces were being used to
677 access string or array offsets
678 ([17599](https://github.com/civicrm/civicrm-core/pull/17599))**
680 - **[NFC] Update existing APIv3 MembershipType Tests to also test against APIv4
681 as appropriate ([17528](https://github.com/civicrm/civicrm-core/pull/17528))**
683 - **NFC cleanup docblocks in CRM_Utils_JS
684 ([17714](https://github.com/civicrm/civicrm-core/pull/17714))**
686 - **[NFC] Update flexmailer to be PHP7.4 compatible
687 ([17779](https://github.com/civicrm/civicrm-core/pull/17779))**
689 - **[NFC] Include flexmailer in distmaker
690 ([17768](https://github.com/civicrm/civicrm-core/pull/17768))**
692 - **[NFC] Fix some outdated wiki links
693 ([17739](https://github.com/civicrm/civicrm-core/pull/17739))**
695 - **[NFC] Fix contributor key for Lighthouse Consulting and Design
696 ([17727](https://github.com/civicrm/civicrm-core/pull/17727))**
698 - **[NFC] Update PHPUnit Configuration file to be compatible with PHPUnit7
699 ([605](https://github.com/civicrm/civicrm-drupal/pull/605))**
701 - **[NFC] Fix Unit test failure on MySQL 8 due to mysql ordering issue
702 ([17674](https://github.com/civicrm/civicrm-core/pull/17674))**
704 - **[NFC] Fix tests in preparation for phpunit7
705 ([17661](https://github.com/civicrm/civicrm-core/pull/17661))**
707 - **[NFC] Remove instances where html is passed to crmMoney
708 ([17612](https://github.com/civicrm/civicrm-core/pull/17612))**
710 - **[NFC] Add assertions to existing test to lock in current behaviour
711 ([17605](https://github.com/civicrm/civicrm-core/pull/17605))**
713 - **[NFC] Update mocking to use getMockBuilder instead instead of createMock
714 ([17606](https://github.com/civicrm/civicrm-core/pull/17606))**
716 - **NFC Formatting cleanup on contribution/recur templates
717 ([17603](https://github.com/civicrm/civicrm-core/pull/17603))**
719 - **[NFC] Minor code cleanup
720 ([17566](https://github.com/civicrm/civicrm-core/pull/17566))**
722 - **[NFC] Update PHPUnit configuration to be compatible with PHPUnit7
723 ([120](https://github.com/civicrm/civicrm-backdrop/pull/120))**
725 - **[NFC] Update PHPUnit configuration to be compatible with PHPUnit7
726 ([206](https://github.com/civicrm/civicrm-wordpress/pull/206))**
728 - **MembershipRenewalTest - Fix failure
729 ([17830](https://github.com/civicrm/civicrm-core/pull/17830))**
731 - **[REF] Fix regression where adding any date based field onto a profile
732 triggers an error date preferences not configured when previewing the profile
733 ([17973](https://github.com/civicrm/civicrm-core/pull/17973))**
735 - **[NFC] Port some recent test fixes from master to 5.28
736 ([18053](https://github.com/civicrm/civicrm-core/pull/18053))**
738 ## <a name="credits"></a>Credits
740 This release was developed by the following code authors:
742 AGH Strategies - Alice Frumin, Andrew Hunt; British Humanist Association -
743 Andrew West; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM -
744 Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; CompuCorp - Ivan; Coop
745 SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Dietermartens; ES-Progress -
746 Sandor Semsey; Flinders University of South Australia - Tom Anderson; Fuzion -
747 Jitendra Purohit; JMA Consulting - Seamus Lee; Lighthouse Consulting and
748 Design- Brian Shaughnessy; Marcin Lewandowski; Megaphone Technology Consulting -
749 Jon Goldberg; MJW Consulting - Matthew Wire; Tadpole Collective - Kevin
750 Cristiano; Wikimedia Foundation - Eileen McNaughton
752 Most authors also reviewed code for this release; in addition, the following
753 reviewers contributed their comments:
755 a-n The Artists Information Company - William Mortada; Agileware - Francis
756 Whittle, Justin Freeman; Andrew Thompson; Artful Robot - Rich Lott; Betty
757 Dolfing; Blackfly Solutions - Alan Dixon; CiviCoop - Jaap Jansma; Fuzion - Luke
758 Stewart, Peter Davis; JMA Consulting - Joe Murray; MJCO - Mikey O'Toole; Semper
759 IT - Karin Gerritsen; Squiffle Consulting - Aidan Saunders; Third Sector Design:
760 Eriol Fox; Timbsoft Technologies - Tunbola Ogunwande
762 ## <a name="feedback"></a>Feedback
764 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
765 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm