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 - **Ability to enable SSL for database connection. (Work Towards
35 [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 PHP 7.
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 - **APIv4 - Activity 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 [17500](https://github.com/civicrm/civicrm-core/pull/17500),
185 [17597](https://github.com/civicrm/civicrm-core/pull/17597),
186 [17592](https://github.com/civicrm/civicrm-core/pull/17592) and
187 [17596](https://github.com/civicrm/civicrm-core/pull/17596))**
189 Makes it so that core payment processors fail gracefully more often.
191 - **Add selfService flag to cancelSubscription getText so we can display
192 different text for each case
193 ([17687](https://github.com/civicrm/civicrm-core/pull/17687))**
195 Makes it so payment processor developers can identify the different contexts
196 someone may be canceling from and display appropriate messaging.
198 - **Price Field Form - Save the fid for the postProcess hook
199 ([17639](https://github.com/civicrm/civicrm-core/pull/17639))**
201 Improves `postProcess` hook for Price Field Form by making the field id
204 - **Improve error handling on IPN
205 ([18062](https://github.com/civicrm/civicrm-core/pull/18062))**
207 The error message and backtrace from a failed PayPal Website Payments Standard
208 instant payment notification (IPN) are now logged.
212 - **Display start/end adjustment on membership status page.
213 ([dev/core#1809](https://lab.civicrm.org/dev/core/-/issues/1809):
214 [17571](https://github.com/civicrm/civicrm-core/pull/17571))**
216 Improves the Membership Status administration page by adding columns for the
217 start/end adjustment.
219 ### WordPress Integration
221 - **Provide concrete details about civicrm.files
222 ([18011](https://github.com/civicrm/civicrm-core/pull/18011) follows on
223 [dev/wordpress#66](https://lab.civicrm.org/dev/wordpress/-/issues/66), see
224 also [17868](https://github.com/civicrm/civicrm-core/pull/17868))**
226 A message will appear after an upgrade to 5.28.0 or later specifying the
227 calculated and expected file upload locations.
229 Changes appearing in 5.27 have been reverted but will be reapplied in 5.29
230 after more notice is provided.
232 ## <a name="bugs"></a>Bugs resolved
236 - **Contact image is broken
237 ([dev/wordpress#62](https://lab.civicrm.org/dev/wordpress/-/issues/62):
238 [17853](https://github.com/civicrm/civicrm-core/pull/17853))**
240 This resolves a problem on sites managed with Git where the `db.json` file
243 - **Evaluate if any indexed fields are unused (Work Towards
244 [dev/core#1634](https://lab.civicrm.org/dev/core/-/issues/1634):
245 [17686](https://github.com/civicrm/civicrm-core/pull/17686))**
247 Remove database index on `medium_id` from `civicrm_activity`.
249 - **Activity - Default priority value when adding an activity
250 ([dev/core#1801](https://lab.civicrm.org/dev/core/-/issues/1801):
251 [17557](https://github.com/civicrm/civicrm-core/pull/17557))**
253 Ensures when creating a new activity the priority field defaults correctly for
254 sites not in english.
256 - **The multi-lingual multi-domain problem
257 ([dev/core#1852](https://lab.civicrm.org/dev/core/-/issues/1852):
258 [17738](https://github.com/civicrm/civicrm-core/pull/17738) and
259 [17733](https://github.com/civicrm/civicrm-core/pull/17733))**
261 Ensures that the list of languages civicrm_domain.locales is the same for all
262 domains in a multi-domain set up.
264 - **APIv4 - Skip empty leaves in WHERE clause
265 ([17576](https://github.com/civicrm/civicrm-core/pull/17576))**
267 Fixes a bug in search builder where APIv4 gives a SQL error while building
270 - **Offset is not respected in Date Preferences
271 ([dev/core#1847](https://lab.civicrm.org/dev/core/-/issues/1847) and
272 [dev/core#1874](https://lab.civicrm.org/dev/core/-/issues/1874):
273 [17762](https://github.com/civicrm/civicrm-core/pull/17762) and
274 [17836](https://github.com/civicrm/civicrm-core/pull/17836))**
276 - **Fix CRM_Utils_JS::dedupeClosures to ignore comments
277 ([17717](https://github.com/civicrm/civicrm-core/pull/17717))**
279 Ensures comments do not interfere with deduping.
281 - **Use PHPUnit7 as the primary test runner
282 ([17615](https://github.com/civicrm/civicrm-core/pull/17615),
283 [17661](https://github.com/civicrm/civicrm-core/pull/17661),
284 [120](https://github.com/civicrm/civicrm-backdrop/pull/120),
285 [605](https://github.com/civicrm/civicrm-drupal/pull/605),
286 [206](https://github.com/civicrm/civicrm-wordpress/pull/206))**
288 - **Fix isMultilingual to use static caching and respect current domain
289 ([17646](https://github.com/civicrm/civicrm-core/pull/17646))**
291 Improves the efficiency and accuracy of the `CRM_Core_I18n::isMultilingual`
292 function, preventing a large number of duplicate queries on every request.
294 - **Update has_separator field in civicrm_navigation
295 ([17579](https://github.com/civicrm/civicrm-core/pull/17579))**
297 This field was incorrectly marked as a boolean; it's actually an int with an
300 - **Civi\Payment\PropertyBag - Remove warning
301 ([17506](https://github.com/civicrm/civicrm-core/pull/17506))**
303 - **Fix duplicate upgrade function
304 ([17582](https://github.com/civicrm/civicrm-core/pull/17582))**
306 Fixes a fatal error on upgrade caused by a merge conflict.
308 - **CRM_Case_XMLProcessor::allActivityTypes() doesn't do caching right
309 ([dev/core#1433](https://lab.civicrm.org/dev/core/-/issues/1433):
310 [17627](https://github.com/civicrm/civicrm-core/pull/17627),
311 [17616](https://github.com/civicrm/civicrm-core/pull/17616) and
312 [17614](https://github.com/civicrm/civicrm-core/pull/17614))**
314 - **CustomValue.GetTree API Does Not Return Display Value for Money Select/Radio
315 Custom field ([dev/core#1566](https://lab.civicrm.org/dev/core/-/issues/1566):
316 [17008](https://github.com/civicrm/civicrm-core/pull/17008))**
318 - **whom_url missing contact ID parameter in detailed logging report
319 ([dev/core#1749](https://lab.civicrm.org/dev/core/-/issues/1749):
320 [17440](https://github.com/civicrm/civicrm-core/pull/17440))**
322 - **Regression - File fields export results in DB error
323 ([dev/core#1787](https://lab.civicrm.org/dev/core/-/issues/1787):
324 [17578](https://github.com/civicrm/civicrm-core/pull/17578))**
326 - **Relative date filter - End of yesterday not working properly
327 ([dev/core#1798](https://lab.civicrm.org/dev/core/-/issues/1798):
328 [17512](https://github.com/civicrm/civicrm-core/pull/17512))**
330 - **Editing a custom field choice label changes the `name` if you do it from the
331 custom field admin screens
332 ([dev/core#1817](https://lab.civicrm.org/dev/core/-/issues/1817):
333 [17681](https://github.com/civicrm/civicrm-core/pull/17681))**
335 - **Custom Date field with format=yy displays calendar icon that doesn't work
336 ([dev/core#1829](https://lab.civicrm.org/dev/core/-/issues/1829):
337 [17664](https://github.com/civicrm/civicrm-core/pull/17664))**
339 - **Unable to install 5.28 on Maria DB 10.3 on Ubuntu
340 ([dev/core#1860](https://lab.civicrm.org/dev/core/-/issues/1860):
341 [17772](https://github.com/civicrm/civicrm-core/pull/17772))**
343 - **APIv4 - Filter getActions results based on user permissions
344 ([17540](https://github.com/civicrm/civicrm-core/pull/17540))**
346 - **Pre-upgrade message for php-intl shows twice
347 ([17748](https://github.com/civicrm/civicrm-core/pull/17748))**
349 - **Fix saving of State/Province Multi-select values
350 ([17737](https://github.com/civicrm/civicrm-core/pull/17737))**
352 - **[regression] Attempting to access Multi-Record Custom Field import results
353 in crash ([dev/core#1841](https://lab.civicrm.org/dev/core/-/issues/1841):
354 [17697](https://github.com/civicrm/civicrm-core/pull/17697))**
356 - **Use PSR-4 instead of PSR-0 in Civi directory
357 ([17690](https://github.com/civicrm/civicrm-core/pull/17690))**
359 - **Sort options without relying on unavailable buildOptions param
360 ([17621](https://github.com/civicrm/civicrm-core/pull/17621))**
362 - **Throw exception if id not passed into discard
363 ([17666](https://github.com/civicrm/civicrm-core/pull/17666))**
365 - **Fix validation of select2 fields in "On behalf of Organisation" block
366 ([17672](https://github.com/civicrm/civicrm-core/pull/17672))**
368 - **Pass required attribute for quickform fields through to form
369 ([16488](https://github.com/civicrm/civicrm-core/pull/16488) and
370 [17929](https://github.com/civicrm/civicrm-core/pull/17929) related to
371 [dev/core#1903](https://lab.civicrm.org/dev/core/-/issues/1903))**
373 - **CRM_Core_I18n::setLocale() - Fix bug with repeated usage
374 ([17374](https://github.com/civicrm/civicrm-core/pull/17374))**
376 - **Fix retrieving MySQL version for checking as part of install requirements
377 ([17593](https://github.com/civicrm/civicrm-core/pull/17593))**
379 - **Set ContactType.name as required in the schema.
380 ([17548](https://github.com/civicrm/civicrm-core/pull/17548),
381 [17570](https://github.com/civicrm/civicrm-core/pull/17570), and
382 [18070](https://github.com/civicrm/civicrm-core/pull/18070) related to
383 [dev/core#1927](https://lab.civicrm.org/dev/core/-/issues/1927))**
385 - **Fix "Undefined variable: entryFound" notice on Bookkeeping report
386 ([17554](https://github.com/civicrm/civicrm-core/pull/17554))**
388 - **Zip code range search only supports numeric zip codes
389 ([17523](https://github.com/civicrm/civicrm-core/pull/17523))**
391 Rather than causing a database error, this displays an error message when
392 attempting to search a postal code range using non-numeric postal codes.
394 - **Remove isThrowException from CRM_Utils_Type::validate() signature
395 ([17546](https://github.com/civicrm/civicrm-core/pull/17546))**
397 - **`codeVersion` not displayed in system status check error message about db
398 version vs codeversion
399 ([dev/core#1882](https://lab.civicrm.org/dev/core/-/issues/1882):
400 [17854](https://github.com/civicrm/civicrm-core/pull/17854))**
402 - **"Merge" form moves unchecked related entities (intra-RC regression)
403 ([dev/core#1930](https://lab.civicrm.org/dev/core/-/issues/1930):
404 [18079](https://github.com/civicrm/civicrm-core/pull/18079))**
408 - **Non-compliant query leads to (semi-)random sorting and failing unit test
409 CRM_Case_BAO_CaseTest::testSortByCaseContact
410 ([dev/core#1844](https://lab.civicrm.org/dev/core/-/issues/1844):
411 [17708](https://github.com/civicrm/civicrm-core/pull/17708))**
415 - **Payment instrument ID is not required at processorform level
416 ([17510](https://github.com/civicrm/civicrm-core/pull/17510))**
418 Do not throw warning if payment instrument is not sent.
420 - **Bank fee has wrong date on import in civicrm_financial_item.transaction_date
421 incorrected uses import date rather than payment date on
422 ([dev/core#1776](https://lab.civicrm.org/dev/core/-/issues/1776):
423 [17389](https://github.com/civicrm/civicrm-core/pull/17389))**
425 Ensures the `civicrm_financial_item.transaction_date` gets recorded correctly
426 when importing a transaction with a bank fee.
428 - **Payment.create should not set contribution date to today
429 ([17688](https://github.com/civicrm/civicrm-core/pull/17688))**
431 - **Fix PHP notice when we don't have credit card params
432 ([16514](https://github.com/civicrm/civicrm-core/pull/16514) and
433 [17584](https://github.com/civicrm/civicrm-core/pull/17584))**
435 - **Improve PropertyBag handling of offsetGet and custom properties; add more
436 tests ([17588](https://github.com/civicrm/civicrm-core/pull/17588) and
437 [17654](https://github.com/civicrm/civicrm-core/pull/17654))**
439 - **Graphs on Contribution Summary report replace final row with grand total
440 value ([dev/report#40](https://lab.civicrm.org/dev/report/-/issues/40):
441 [17412](https://github.com/civicrm/civicrm-core/pull/17412))**
443 - **"Undefined offset" bug in BAO/FinancialAccount.php
444 ([dev/wordpress#61](https://lab.civicrm.org/dev/wordpress/-/issues/61):
445 [17701](https://github.com/civicrm/civicrm-core/pull/17701) and
446 [17689](https://github.com/civicrm/civicrm-core/pull/17689))**
448 Ensures that the financial account is set correctly even when the name does
453 - **Event participant_listing_id field defaults to 0 instead of Null
454 ([dev/core#1833](https://lab.civicrm.org/dev/core/-/issues/1833):
455 [17677](https://github.com/civicrm/civicrm-core/pull/17677))**
457 - **Multiple line item shown on view contribution if participant is transferred
459 ([dev/core#890](https://lab.civicrm.org/dev/core/-/issues/890):
460 [16956](https://github.com/civicrm/civicrm-core/pull/16956))**
464 - **Bug in Grant statistics report
465 ([17640](https://github.com/civicrm/civicrm-core/pull/17640))**
469 - **Can't change SMS recipient on non-bulk SMS
470 ([dev/core#1840](https://lab.civicrm.org/dev/core/-/issues/1840):
471 [17691](https://github.com/civicrm/civicrm-core/pull/17691))**
473 ### Drupal Integration
475 - **Error: Class 'CRM_Upgrade_Incremental_General' not found in
476 Civi\Install\Requirements->checkMysqlVersion()
477 ([dev/drupal#131](https://lab.civicrm.org/dev/drupal/-/issues/131):
478 [18066](https://github.com/civicrm/civicrm-core/pull/18066))**
480 ### Joomla Integration
482 - **Ensure that when normal routing trackable urls and opens in Joomla go to the
483 frontend not administrator site
484 ([17760](https://github.com/civicrm/civicrm-core/pull/17760))**
486 ### WordPress Integration
488 - **Remove `/` from the beginning and end of query string
489 ([207](https://github.com/civicrm/civicrm-wordpress/pull/207))**
491 Fixes a 'You do not have permission to access this content.' error resulting
492 from an extra '/' in the `q=` string in the url.
494 - **Base page fails to recognise Page Templates in subdirectories.
495 ([dev/wordpress#58](https://lab.civicrm.org/dev/wordpress/-/issues/58):
496 [204](https://github.com/civicrm/civicrm-wordpress/pull/204))**
498 Ensures that the CiviCRM base page is correctly identified when it does not
499 reside in the theme root directory.
501 - **Prevent session from starting during WordPress pseudo cron procedures
502 ([dev/core#1889](https://lab.civicrm.org/dev/core/-/issues/1889):
503 [17890](https://github.com/civicrm/civicrm-core/pull/17890) and
504 [210](https://github.com/civicrm/civicrm-wordpress/pull/210))**
506 ## <a name="misc"></a>Miscellany
508 - **Ship Flexmailer extension with civicrm-core
509 ([17669](https://github.com/civicrm/civicrm-core/pull/17669),
510 ([17768](https://github.com/civicrm/civicrm-core/pull/17768))**
512 - **Support passing old method name into deprecatedFunctionWarning
513 ([17552](https://github.com/civicrm/civicrm-core/pull/17552))**
515 - **Add CRM_Core_Form::isFormInViewMode and CRM_Core_Form::isFormInEditMode
516 ([17637](https://github.com/civicrm/civicrm-core/pull/17637))**
518 - **CRM_Utils_JS - Dedupe 'use strict' directive
519 ([17711](https://github.com/civicrm/civicrm-core/pull/17711))**
521 - **Add isBackOffice, isPayLater, getPaymentMode helpers to
522 frontendpaymentformtrait
523 ([17511](https://github.com/civicrm/civicrm-core/pull/17511))**
526 ([589](https://github.com/civicrm/civicrm-drupal/pull/589))**
528 - **Fix validateAll to no longer support unused abort param
529 ([17544](https://github.com/civicrm/civicrm-core/pull/17544))**
531 - **Remove deprecated billingID from baseIPN
532 ([17525](https://github.com/civicrm/civicrm-core/pull/17525))**
534 - **Add EntityFormTrait to pricefieldForm - stdised getEntityId()
535 ([17516](https://github.com/civicrm/civicrm-core/pull/17516))**
537 - **Update contributor-key.yml
538 ([17553](https://github.com/civicrm/civicrm-core/pull/17553))**
540 - **Export fix ([17644](https://github.com/civicrm/civicrm-core/pull/17644))**
542 - **Upgrade HTML Purifier to v4.12.0 to support for PHP7.4
543 ([297](https://github.com/civicrm/civicrm-packages/pull/297))**
545 - **Temporary tables should follow consistent naming convention
546 ([dev/core#183](https://lab.civicrm.org/dev/core/-/issues/183):
547 [15796](https://github.com/civicrm/civicrm-core/pull/15796))**
549 - **Remove unreachable lines
550 ([17563](https://github.com/civicrm/civicrm-core/pull/17563))**
552 - **EventInfo template cleanup
553 ([17581](https://github.com/civicrm/civicrm-core/pull/17581))**
555 - **[NFC] Misspelled word
556 ([17652](https://github.com/civicrm/civicrm-core/pull/17652))**
558 - **Remove a usage of deprecated funtion get_magic_quotes_gpc and also switch out
559 {} for [] whne acecssing string or array offsets
560 ([296](https://github.com/civicrm/civicrm-packages/pull/296))**
562 - **Remove unused deprecated class
563 ([17535](https://github.com/civicrm/civicrm-core/pull/17535))**
565 - **Remove obsolete function formatWikiURL
566 ([17726](https://github.com/civicrm/civicrm-core/pull/17726))**
568 - **[REF] Simplify the replacing of the email with the email from the url
569 ([17491](https://github.com/civicrm/civicrm-core/pull/17491))**
571 - **[REF] Replace incorrect usages of array_key_exists when the variable is not
572 an array with property_exists and also fix the parameter order for an implode
573 statement ([17573](https://github.com/civicrm/civicrm-core/pull/17573))**
575 - **[REF] Convert Authorize.net to use Guzzle for update subscription class, add
576 test ([17585](https://github.com/civicrm/civicrm-core/pull/17585))**
578 - **[REF] Using {} to access string or array offsets has been deprecated in
579 PHP7.4 ([17574](https://github.com/civicrm/civicrm-core/pull/17574))**
581 - **[REF] Mark unused date functions as deprecated
582 ([17487](https://github.com/civicrm/civicrm-core/pull/17487))**
584 - **[REF] Using ternary operation without nesting is deprecated and also using
585 methods and properly instanciate the CiviCase Info object in test
586 ([17575](https://github.com/civicrm/civicrm-core/pull/17575))**
588 - **[REF] Convert Authorize.net doDirectPayment to use guzzle & add test
589 ([17501](https://github.com/civicrm/civicrm-core/pull/17501))**
591 - **[REF] Replace the deprecated system_rebuild_module_data function with
592 equivilant extension.list.module service function calls to be Drupal 9
593 compatiable ([17515](https://github.com/civicrm/civicrm-core/pull/17515))**
595 - **[REF] Remove never reachable lines.
596 ([17556](https://github.com/civicrm/civicrm-core/pull/17556))**
598 - **[REF] Remove another instance of fatal()
599 ([17549](https://github.com/civicrm/civicrm-core/pull/17549))**
601 - **[REF] Readability extraction in Dummy class
602 ([17543](https://github.com/civicrm/civicrm-core/pull/17543))**
604 - **[REF] Replace some instances of fatal with thrown exceptions.
605 ([17533](https://github.com/civicrm/civicrm-core/pull/17533))**
607 - **[REF] Remove calls to, and deprecate, unhandled function
608 ([17499](https://github.com/civicrm/civicrm-core/pull/17499))**
610 - **[REF] Remove handling for 2 fields not on the form
611 ([17504](https://github.com/civicrm/civicrm-core/pull/17504))**
613 - **[REF] Remove some instances of fatal in BAO classes
614 ([17536](https://github.com/civicrm/civicrm-core/pull/17536))**
616 - **[REF] Access the method not the property directly to check if a payment
617 processor supports recurring
618 ([17602](https://github.com/civicrm/civicrm-core/pull/17602))**
620 - **[REF] Ensure that our custom error handler is called when jQuery validates
621 and expand any collapsed accordions that are hiding required fields that
622 haven't been filled in
623 ([17673](https://github.com/civicrm/civicrm-core/pull/17673))**
625 - **[REF] Consolidate code in processMembership
626 ([17611](https://github.com/civicrm/civicrm-core/pull/17611))**
628 - **[REF] Cleanup function for retrieving contact types.
629 ([17676](https://github.com/civicrm/civicrm-core/pull/17676))**
631 - **[REF] Fix Javascript syntax error
632 ([17678](https://github.com/civicrm/civicrm-core/pull/17678))**
634 - **[REF] Fix jQuery error message display on select2 field validation
635 ([17671](https://github.com/civicrm/civicrm-core/pull/17671))**
637 - **[REF] Fix allowing users to clear values for raido custom fields when not
638 required ([17670](https://github.com/civicrm/civicrm-core/pull/17670))**
640 - **[REF] Extract getTestTrxnID
641 ([17642](https://github.com/civicrm/civicrm-core/pull/17642))**
643 - **Update Flexmailer to be PHP7.4 compatible
644 ([17779](https://github.com/civicrm/civicrm-core/pull/17779), [17660](https://github.com/civicrm/civicrm-core/pull/17660))**
646 - **[REF] Ensure that the Manual Payment Processor sets the _paymentProcessor
647 variable like other Processors to fix issues in PHP7.4 and UnitTests
648 ([17648](https://github.com/civicrm/civicrm-core/pull/17648))**
650 - **[REF] Fix PHP7.4 Test fails when we are accessing array keys when the value
652 ([17649](https://github.com/civicrm/civicrm-core/pull/17649))**
654 - **[REF] Fix parts of code where curly brackets were being used for array or
655 string access which is deprecated in PHP7.4
656 ([17647](https://github.com/civicrm/civicrm-core/pull/17647))**
658 - **[REF] Fix issue with using array access tools on NULL values
659 ([17600](https://github.com/civicrm/civicrm-core/pull/17600))**
661 - **[REF] Replace incorrect usage of array_key_exists with property_exists in
663 ([17604](https://github.com/civicrm/civicrm-core/pull/17604))**
665 - **[REF] Add test for renewing old expired membership via form
666 ([17564](https://github.com/civicrm/civicrm-core/pull/17564))**
668 - **[REF] Update packages to work with PHP7.4
669 ([17598](https://github.com/civicrm/civicrm-core/pull/17598))**
671 - **[REF] Fix another couple of uses of array_key_exists when the variable being
673 ([17601](https://github.com/civicrm/civicrm-core/pull/17601))**
675 - **[REF] Remove deprecated methods of booting Drupal container and getting
676 Drupal timezone information
677 ([17522](https://github.com/civicrm/civicrm-core/pull/17522))**
679 - **[REF] Fix some additional issues where curly braces were being used to
680 access string or array offsets
681 ([17599](https://github.com/civicrm/civicrm-core/pull/17599))**
683 - **[NFC] Update existing APIv3 MembershipType Tests to also test against APIv4
684 as appropriate ([17528](https://github.com/civicrm/civicrm-core/pull/17528))**
686 - **[NFC] cleanup docblocks in CRM_Utils_JS
687 ([17714](https://github.com/civicrm/civicrm-core/pull/17714))**
689 - **[NFC] Fix some outdated wiki links
690 ([17739](https://github.com/civicrm/civicrm-core/pull/17739))**
692 - **[NFC] Fix contributor key for Lighthouse Consulting and Design
693 ([17727](https://github.com/civicrm/civicrm-core/pull/17727))**
695 - **[NFC] Fix unit test failure on MySQL 8 due to ordering issue
696 ([17674](https://github.com/civicrm/civicrm-core/pull/17674))**
698 - **[NFC] Remove instances where html is passed to crmMoney
699 ([17612](https://github.com/civicrm/civicrm-core/pull/17612))**
701 - **[NFC] Add assertions to existing test to lock in current behaviour
702 ([17605](https://github.com/civicrm/civicrm-core/pull/17605))**
704 - **[NFC] Update mocking to use getMockBuilder instead instead of createMock
705 ([17606](https://github.com/civicrm/civicrm-core/pull/17606))**
707 - **[NFC] Formatting cleanup on contribution/recur templates
708 ([17603](https://github.com/civicrm/civicrm-core/pull/17603))**
710 - **[NFC] Minor code cleanup
711 ([17566](https://github.com/civicrm/civicrm-core/pull/17566))**
713 - **MembershipRenewalTest - Fix failure
714 ([17830](https://github.com/civicrm/civicrm-core/pull/17830))**
716 - **[REF] Fix regression where adding any date based field onto a profile
717 triggers an error date preferences not configured when previewing the profile
718 ([17973](https://github.com/civicrm/civicrm-core/pull/17973))**
720 - **[NFC] Port some recent test fixes from master to 5.28
721 ([18053](https://github.com/civicrm/civicrm-core/pull/18053))**
723 ## <a name="credits"></a>Credits
725 This release was developed by the following code authors:
727 AGH Strategies - Alice Frumin, Andie Hunt; British Humanist Association -
728 Andrew West; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM -
729 Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; CompuCorp - Ivan; Coop
730 SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Dietermartens; ES-Progress -
731 Sandor Semsey; Flinders University of South Australia - Tom Anderson; Fuzion -
732 Jitendra Purohit; JMA Consulting - Seamus Lee; Lighthouse Consulting and
733 Design- Brian Shaughnessy; Marcin Lewandowski; Megaphone Technology Consulting -
734 Jon Goldberg; MJW Consulting - Matthew Wire; Tadpole Collective - Kevin
735 Cristiano; Wikimedia Foundation - Eileen McNaughton
737 Most authors also reviewed code for this release; in addition, the following
738 reviewers contributed their comments:
740 a-n The Artists Information Company - William Mortada; Agileware - Francis
741 Whittle, Justin Freeman; Andrew Thompson; Artful Robot - Rich Lott; Betty
742 Dolfing; Blackfly Solutions - Alan Dixon; CiviCoop - Jaap Jansma; Fuzion - Luke
743 Stewart, Peter Davis; JMA Consulting - Joe Murray; MJCO - Mikey O'Toole; Semper
744 IT - Karin Gerritsen; Squiffle Consulting - Aidan Saunders; Third Sector Design:
745 Eriol Fox; Timbsoft Technologies - Tunbola Ogunwande
747 ## <a name="feedback"></a>Feedback
749 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
750 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm