| Fix security vulnerabilities? | no |
| **Change the database schema?** | **yes** |
| **Alter the API?** | **yes** |
-| Require attention to configuration options? | no |
+| **Require attention to configuration options?** | **yes** |
| **Fix problems installing or upgrading to a previous version?** | **yes** |
| **Introduce features?** | **yes** |
| **Fix bugs?** | **yes** |
Block sites from upgrading if on a MySQL version less than 5.6.5.
-- **Feature Request: Ability to enable SSL for database connection. (Work
- Towards [dev/core#1137](https://lab.civicrm.org/dev/core/-/issues/1137):
+- **Ability to enable SSL for database connection. (Work Towards
+ [dev/core#1137](https://lab.civicrm.org/dev/core/-/issues/1137):
[298](https://github.com/civicrm/civicrm-packages/pull/298))**
- Makes ssl database connections without client certificates work in php7.
+ Makes SSL database connections without client certificates work in PHP 7.
- **Create new customPre hook
([dev/core#1716](https://lab.civicrm.org/dev/core/-/issues/1716):
Creates a new hook customPre which makes it so one can impact or observe
custom data before it is saved.
-- **Investigate php currency library
+- **Investigate PHP currency library
([dev/translation#48](https://lab.civicrm.org/dev/translation/-/issues/48):
[17608](https://github.com/civicrm/civicrm-core/pull/17608))**
Work towards throwing exceptions instead of fatal errors.
- - **V4 activity api has no default for activity_date_time
- ([dev/core#1782](https://lab.civicrm.org/dev/core/-/issues/1782):
- [17450](https://github.com/civicrm/civicrm-core/pull/17450))**
+- **APIv4 - Activity has no default for activity_date_time
+ ([dev/core#1782](https://lab.civicrm.org/dev/core/-/issues/1782):
+ [17450](https://github.com/civicrm/civicrm-core/pull/17450))**
- Sets the default for `activity_date_time` and `created_date` as the current
- date when using the APIv4 Activity.
+ Sets the default for `activity_date_time` and `created_date` as the current
+ date when using the APIv4 Activity.
- - **Update guzzle to d8 latest
- ([dev/core#1803](https://lab.civicrm.org/dev/core/-/issues/1803):
- [17551](https://github.com/civicrm/civicrm-core/pull/17551))**
+- **Update guzzle to d8 latest
+ ([dev/core#1803](https://lab.civicrm.org/dev/core/-/issues/1803):
+ [17551](https://github.com/civicrm/civicrm-core/pull/17551))**
- This updates guzzle to version 6.5.4, civicrm/civicrm-cxn-rpc to "version"
- "v0.19.01.00", guzzlehttp/psr7 to version 1.6.1 and psr/log to version 1.1.3
+ This updates guzzle to version 6.5.4, civicrm/civicrm-cxn-rpc to "version"
+ "v0.19.01.00", guzzlehttp/psr7 to version 1.6.1 and psr/log to version 1.1.3
- - **APIv4 - Improve row_count to work with HAVING, GROUP BY, and SELECT
- ([17704](https://github.com/civicrm/civicrm-core/pull/17704))**
+- **APIv4 - Improve row_count to work with HAVING, GROUP BY, and SELECT
+ ([17704](https://github.com/civicrm/civicrm-core/pull/17704))**
- This changes the meaning of $result->count(), to give a total count of
- filtered items, ignoring limit and offset.
+ This changes the meaning of $result->count(), to give a total count of
+ filtered items, ignoring limit and offset.
- - **APIv4 - Add more SQL functions
- ([17692](https://github.com/civicrm/civicrm-core/pull/17692))**
+- **APIv4 - Add more SQL functions
+ ([17692](https://github.com/civicrm/civicrm-core/pull/17692))**
- Adds support for additional SQL functions in APIv4. Also categorizes them and
- adds translated titles for the new Search Builder.
+ Adds support for additional SQL functions in APIv4. Also categorizes them and
+ adds translated titles for the new Search Builder.
- **APIv4 - Add titles and icons to entities
([17527](https://github.com/civicrm/civicrm-core/pull/17527) and
Adds metadata to help APIv4 serialize/unserialize the domain.locales
field correctly.
-- **Add smarty error event
+- **Add Smarty error event
([16918](https://github.com/civicrm/civicrm-core/pull/16918) and
[292](https://github.com/civicrm/civicrm-packages/pull/292))**
- Improves debugging errors in smarty templates.
+ Improves debugging errors in Smarty templates.
- **Allow HEAD requests to generate a form key
([17321](https://github.com/civicrm/civicrm-core/pull/17321))**
process in parallel
([15422](https://github.com/civicrm/civicrm-core/pull/15422))**
- Adds a new Sql queue type which will allow multiple runners to fetch the next
+ Adds a new SQL queue type which will allow multiple runners to fetch the next
available job from a queue and run in parallel.
- **Allow adding datepicker to metadata based settings pages
[17559](https://github.com/civicrm/civicrm-core/pull/17559),
[17542](https://github.com/civicrm/civicrm-core/pull/17542),
[17502](https://github.com/civicrm/civicrm-core/pull/17502),
+ [17500](https://github.com/civicrm/civicrm-core/pull/17500),
[17597](https://github.com/civicrm/civicrm-core/pull/17597),
[17592](https://github.com/civicrm/civicrm-core/pull/17592) and
[17596](https://github.com/civicrm/civicrm-core/pull/17596))**
Makes it so payment processor developers can identify the different contexts
someone may be canceling from and display appropriate messaging.
-- **Price Field Form: save the fid for the postProcess hook
+- **Price Field Form - Save the fid for the postProcess hook
([17639](https://github.com/civicrm/civicrm-core/pull/17639))**
Improves `postProcess` hook for Price Field Form by making the field id
available.
+- **Improve error handling on IPN
+ ([18062](https://github.com/civicrm/civicrm-core/pull/18062))**
+
+ The error message and backtrace from a failed PayPal Website Payments Standard
+ instant payment notification (IPN) are now logged.
+
### CiviMember
- **Display start/end adjustment on membership status page.
Improves the Membership Status administration page by adding columns for the
start/end adjustment.
+### WordPress Integration
+
+- **Provide concrete details about civicrm.files
+ ([18011](https://github.com/civicrm/civicrm-core/pull/18011) follows on
+ [dev/wordpress#66](https://lab.civicrm.org/dev/wordpress/-/issues/66), see
+ also [17868](https://github.com/civicrm/civicrm-core/pull/17868))**
+
+ A message will appear after an upgrade to 5.28.0 or later specifying the
+ calculated and expected file upload locations.
+
+ Changes appearing in 5.27 have been reverted but will be reapplied in 5.29
+ after more notice is provided.
+
## <a name="bugs"></a>Bugs resolved
### Core CiviCRM
+- **Contact image is broken
+ ([dev/wordpress#62](https://lab.civicrm.org/dev/wordpress/-/issues/62):
+ [17853](https://github.com/civicrm/civicrm-core/pull/17853))**
+
+ This resolves a problem on sites managed with Git where the `db.json` file
+ would be missed.
+
- **Evaluate if any indexed fields are unused (Work Towards
[dev/core#1634](https://lab.civicrm.org/dev/core/-/issues/1634):
[17686](https://github.com/civicrm/civicrm-core/pull/17686))**
Remove database index on `medium_id` from `civicrm_activity`.
-- **[Activity] Default priority value when add Activity
+- **Activity - Default priority value when adding an activity
([dev/core#1801](https://lab.civicrm.org/dev/core/-/issues/1801):
[17557](https://github.com/civicrm/civicrm-core/pull/17557))**
- **APIv4 - Skip empty leaves in WHERE clause
([17576](https://github.com/civicrm/civicrm-core/pull/17576))**
- Fixes a big in search builder where APIv4 gives a sql error while building
+ Fixes a bug in search builder where APIv4 gives a SQL error while building
your where clause.
+- **Offset is not respected in Date Preferences
+ ([dev/core#1847](https://lab.civicrm.org/dev/core/-/issues/1847) and
+ [dev/core#1874](https://lab.civicrm.org/dev/core/-/issues/1874):
+ [17762](https://github.com/civicrm/civicrm-core/pull/17762) and
+ [17836](https://github.com/civicrm/civicrm-core/pull/17836))**
+
- **Fix CRM_Utils_JS::dedupeClosures to ignore comments
([17717](https://github.com/civicrm/civicrm-core/pull/17717))**
Ensures comments do not interfere with deduping.
-- **Use PHPUnit7 as the primary test runner for PHP versions >= 7.1 when using
- the phpunit script
- ([17615](https://github.com/civicrm/civicrm-core/pull/17615))**
-
- Updates PHP unit tests to use PHPUnit7 when the PHP Unit version is 7.1 or
- greater.
+- **Use PHPUnit7 as the primary test runner
+ ([17615](https://github.com/civicrm/civicrm-core/pull/17615),
+ [17661](https://github.com/civicrm/civicrm-core/pull/17661),
+ [120](https://github.com/civicrm/civicrm-backdrop/pull/120),
+ [605](https://github.com/civicrm/civicrm-drupal/pull/605),
+ [206](https://github.com/civicrm/civicrm-wordpress/pull/206))**
- **Fix isMultilingual to use static caching and respect current domain
([17646](https://github.com/civicrm/civicrm-core/pull/17646))**
This field was incorrectly marked as a boolean; it's actually an int with an
option list.
-- **Payment Propertybag remove warning
+- **Civi\Payment\PropertyBag - Remove warning
([17506](https://github.com/civicrm/civicrm-core/pull/17506))**
- **Fix duplicate upgrade function
([dev/core#1749](https://lab.civicrm.org/dev/core/-/issues/1749):
[17440](https://github.com/civicrm/civicrm-core/pull/17440))**
-- **Regression : File fields export results in DB error
+- **Regression - File fields export results in DB error
([dev/core#1787](https://lab.civicrm.org/dev/core/-/issues/1787):
[17578](https://github.com/civicrm/civicrm-core/pull/17578))**
([dev/core#1860](https://lab.civicrm.org/dev/core/-/issues/1860):
[17772](https://github.com/civicrm/civicrm-core/pull/17772))**
-- **APIv4 - filter getActions results based on user permissions
+- **APIv4 - Filter getActions results based on user permissions
([17540](https://github.com/civicrm/civicrm-core/pull/17540))**
- **Pre-upgrade message for php-intl shows twice
in crash ([dev/core#1841](https://lab.civicrm.org/dev/core/-/issues/1841):
[17697](https://github.com/civicrm/civicrm-core/pull/17697))**
-- **Use psr-4 instead of psr-0 in Civi directory
+- **Use PSR-4 instead of PSR-0 in Civi directory
([17690](https://github.com/civicrm/civicrm-core/pull/17690))**
- **Sort options without relying on unavailable buildOptions param
([17672](https://github.com/civicrm/civicrm-core/pull/17672))**
- **Pass required attribute for quickform fields through to form
- ([16488](https://github.com/civicrm/civicrm-core/pull/16488))**
+ ([16488](https://github.com/civicrm/civicrm-core/pull/16488) and
+ [17929](https://github.com/civicrm/civicrm-core/pull/17929) related to
+ [dev/core#1903](https://lab.civicrm.org/dev/core/-/issues/1903))**
- **CRM_Core_I18n::setLocale() - Fix bug with repeated usage
([17374](https://github.com/civicrm/civicrm-core/pull/17374))**
([17593](https://github.com/civicrm/civicrm-core/pull/17593))**
- **Set ContactType.name as required in the schema.
- ([17548](https://github.com/civicrm/civicrm-core/pull/17548))**
+ ([17548](https://github.com/civicrm/civicrm-core/pull/17548),
+ [17570](https://github.com/civicrm/civicrm-core/pull/17570), and
+ [18070](https://github.com/civicrm/civicrm-core/pull/18070) related to
+ [dev/core#1927](https://lab.civicrm.org/dev/core/-/issues/1927))**
- **Fix "Undefined variable: entryFound" notice on Bookkeeping report
([17554](https://github.com/civicrm/civicrm-core/pull/17554))**
- **Remove isThrowException from CRM_Utils_Type::validate() signature
([17546](https://github.com/civicrm/civicrm-core/pull/17546))**
+- **`codeVersion` not displayed in system status check error message about db
+ version vs codeversion
+ ([dev/core#1882](https://lab.civicrm.org/dev/core/-/issues/1882):
+ [17854](https://github.com/civicrm/civicrm-core/pull/17854))**
+
+- **"Merge" form moves unchecked related entities (intra-RC regression)
+ ([dev/core#1930](https://lab.civicrm.org/dev/core/-/issues/1930):
+ [18079](https://github.com/civicrm/civicrm-core/pull/18079))**
+
### CiviCase
-- **Noncompliant query leads to (semi-)random sorting and failing unit test
+- **Non-compliant query leads to (semi-)random sorting and failing unit test
CRM_Case_BAO_CaseTest::testSortByCaseContact
([dev/core#1844](https://lab.civicrm.org/dev/core/-/issues/1844):
[17708](https://github.com/civicrm/civicrm-core/pull/17708))**
value ([dev/report#40](https://lab.civicrm.org/dev/report/-/issues/40):
[17412](https://github.com/civicrm/civicrm-core/pull/17412))**
+- **"Undefined offset" bug in BAO/FinancialAccount.php
+ ([dev/wordpress#61](https://lab.civicrm.org/dev/wordpress/-/issues/61):
+ [17701](https://github.com/civicrm/civicrm-core/pull/17701) and
+ [17689](https://github.com/civicrm/civicrm-core/pull/17689))**
+
+ Ensures that the financial account is set correctly even when the name does
+ not match the label.
+
### CiviEvent
- **Event participant_listing_id field defaults to 0 instead of Null
([dev/core#1840](https://lab.civicrm.org/dev/core/-/issues/1840):
[17691](https://github.com/civicrm/civicrm-core/pull/17691))**
+### Drupal Integration
+
+- **Error: Class 'CRM_Upgrade_Incremental_General' not found in
+ Civi\Install\Requirements->checkMysqlVersion()
+ ([dev/drupal#131](https://lab.civicrm.org/dev/drupal/-/issues/131):
+ [18066](https://github.com/civicrm/civicrm-core/pull/18066))**
+
### Joomla Integration
- **Ensure that when normal routing trackable urls and opens in Joomla go to the
Ensures that the CiviCRM base page is correctly identified when it does not
reside in the theme root directory.
-- **undefined offset bug in BAO/FinancialAccount.php
- ([dev/wordpress#61](https://lab.civicrm.org/dev/wordpress/-/issues/61):
- [17701](https://github.com/civicrm/civicrm-core/pull/17701) and
- [17689](https://github.com/civicrm/civicrm-core/pull/17689))**
-
- Ensures that the financial account is set correctly even when the name does
- not match the label.
+- **Prevent session from starting during WordPress pseudo cron procedures
+ ([dev/core#1889](https://lab.civicrm.org/dev/core/-/issues/1889):
+ [17890](https://github.com/civicrm/civicrm-core/pull/17890) and
+ [210](https://github.com/civicrm/civicrm-wordpress/pull/210))**
## <a name="misc"></a>Miscellany
+- **Ship Flexmailer extension with civicrm-core
+ ([17669](https://github.com/civicrm/civicrm-core/pull/17669),
+ ([17768](https://github.com/civicrm/civicrm-core/pull/17768))**
+
- **Support passing old method name into deprecatedFunctionWarning
([17552](https://github.com/civicrm/civicrm-core/pull/17552))**
- **Add CRM_Core_Form::isFormInViewMode and CRM_Core_Form::isFormInEditMode
([17637](https://github.com/civicrm/civicrm-core/pull/17637))**
-- **CRM_Utils_JS - also dedupe 'use strict' directive when deduping closures
+- **CRM_Utils_JS - Dedupe 'use strict' directive
([17711](https://github.com/civicrm/civicrm-core/pull/17711))**
- **Add isBackOffice, isPayLater, getPaymentMode helpers to
- **EventInfo template cleanup
([17581](https://github.com/civicrm/civicrm-core/pull/17581))**
-- **Misspelled word
+- **[NFC] Misspelled word
([17652](https://github.com/civicrm/civicrm-core/pull/17652))**
- **Remove a usage of deprecated funtion get_magic_quotes_gpc and also switch out
- **Remove obsolete function formatWikiURL
([17726](https://github.com/civicrm/civicrm-core/pull/17726))**
-- **[REF] Ship Flexmailer extension with Core
- ([17669](https://github.com/civicrm/civicrm-core/pull/17669))**
-
-- **[Ref] Simplify the replacing of the email with the email from the url
+- **[REF] Simplify the replacing of the email with the email from the url
([17491](https://github.com/civicrm/civicrm-core/pull/17491))**
- **[REF] Replace incorrect usages of array_key_exists when the variable is not
an array with property_exists and also fix the parameter order for an implode
statement ([17573](https://github.com/civicrm/civicrm-core/pull/17573))**
-- **[Ref] Convert Authorize.net to use Guzzle for update subscription class, add
+- **[REF] Convert Authorize.net to use Guzzle for update subscription class, add
test ([17585](https://github.com/civicrm/civicrm-core/pull/17585))**
- **[REF] Using {} to access string or array offsets has been deprecated in
PHP7.4 ([17574](https://github.com/civicrm/civicrm-core/pull/17574))**
-- **[Ref] Mark unused date functions as deprecated
+- **[REF] Mark unused date functions as deprecated
([17487](https://github.com/civicrm/civicrm-core/pull/17487))**
- **[REF] Using ternary operation without nesting is deprecated and also using
methods and properly instanciate the CiviCase Info object in test
([17575](https://github.com/civicrm/civicrm-core/pull/17575))**
-- **[REF] Add in upgrade step to populate missing contact_type.name field
- ([17570](https://github.com/civicrm/civicrm-core/pull/17570))**
-
-- **[Ref] Convert Authorize.net doDirectPayment to use guzzle & add test
+- **[REF] Convert Authorize.net doDirectPayment to use guzzle & add test
([17501](https://github.com/civicrm/civicrm-core/pull/17501))**
- **[REF] Replace the deprecated system_rebuild_module_data function with
equivilant extension.list.module service function calls to be Drupal 9
compatiable ([17515](https://github.com/civicrm/civicrm-core/pull/17515))**
-- **[Ref] Remove never reachable lines.
+- **[REF] Remove never reachable lines.
([17556](https://github.com/civicrm/civicrm-core/pull/17556))**
-- **[Ref] Remove another instance of fatal()
+- **[REF] Remove another instance of fatal()
([17549](https://github.com/civicrm/civicrm-core/pull/17549))**
-- **[Ref] Readability extraction in Dummy class
+- **[REF] Readability extraction in Dummy class
([17543](https://github.com/civicrm/civicrm-core/pull/17543))**
-- **[Ref] Throw exceptions from Authorize.net rather than return errors
- ([17500](https://github.com/civicrm/civicrm-core/pull/17500))**
-
- **[REF] Replace some instances of fatal with thrown exceptions.
([17533](https://github.com/civicrm/civicrm-core/pull/17533))**
-- **[Ref] Remove calls to, and deprecate, unhandled function
+- **[REF] Remove calls to, and deprecate, unhandled function
([17499](https://github.com/civicrm/civicrm-core/pull/17499))**
- **[REF] Remove handling for 2 fields not on the form
([17504](https://github.com/civicrm/civicrm-core/pull/17504))**
-- **[Ref] Remove some instances of fatal in BAO classes
+- **[REF] Remove some instances of fatal in BAO classes
([17536](https://github.com/civicrm/civicrm-core/pull/17536))**
-- **REF Access the method not the property directly to check if a payment
+- **[REF] Access the method not the property directly to check if a payment
processor supports recurring
([17602](https://github.com/civicrm/civicrm-core/pull/17602))**
-- **[REF] Ensure that our custom error handler is called when jquery validates
+- **[REF] Ensure that our custom error handler is called when jQuery validates
and expand any collapsed accordions that are hiding required fields that
haven't been filled in
([17673](https://github.com/civicrm/civicrm-core/pull/17673))**
- **[REF] Cleanup function for retrieving contact types.
([17676](https://github.com/civicrm/civicrm-core/pull/17676))**
-- **[REF] Fix javascript syntax error
+- **[REF] Fix Javascript syntax error
([17678](https://github.com/civicrm/civicrm-core/pull/17678))**
-- **[REF] Fix jquery error message display on select2 field validation
+- **[REF] Fix jQuery error message display on select2 field validation
([17671](https://github.com/civicrm/civicrm-core/pull/17671))**
- **[REF] Fix allowing users to clear values for raido custom fields when not
- **[REF] Extract getTestTrxnID
([17642](https://github.com/civicrm/civicrm-core/pull/17642))**
-- **[REF] Fix Compatability issue with flexmailer caused by the PHP7.4 fix
- ([17660](https://github.com/civicrm/civicrm-core/pull/17660))**
+- **Update Flexmailer to be PHP7.4 compatible
+ ([17779](https://github.com/civicrm/civicrm-core/pull/17779), [17660](https://github.com/civicrm/civicrm-core/pull/17660))**
- **[REF] Ensure that the Manual Payment Processor sets the _paymentProcessor
variable like other Processors to fix issues in PHP7.4 and UnitTests
checked is an object
([17601](https://github.com/civicrm/civicrm-core/pull/17601))**
-- **[REF] Remove deprecated methods of booting drupal container and getting
- drupal timezone information
+- **[REF] Remove deprecated methods of booting Drupal container and getting
+ Drupal timezone information
([17522](https://github.com/civicrm/civicrm-core/pull/17522))**
- **[REF] Fix some additional issues where curly braces were being used to
- **[NFC] Update existing APIv3 MembershipType Tests to also test against APIv4
as appropriate ([17528](https://github.com/civicrm/civicrm-core/pull/17528))**
-- **NFC cleanup docblocks in CRM_Utils_JS
+- **[NFC] cleanup docblocks in CRM_Utils_JS
([17714](https://github.com/civicrm/civicrm-core/pull/17714))**
-- **[NFC] Update flexmailer to be PHP7.4 compatible
- ([17779](https://github.com/civicrm/civicrm-core/pull/17779))**
-
-- **[NFC] Include flexmailer in distmaker
- ([17768](https://github.com/civicrm/civicrm-core/pull/17768))**
-
- **[NFC] Fix some outdated wiki links
([17739](https://github.com/civicrm/civicrm-core/pull/17739))**
- **[NFC] Fix contributor key for Lighthouse Consulting and Design
([17727](https://github.com/civicrm/civicrm-core/pull/17727))**
-- **[NFC] Update PHPUnit Configuration file to be compatible with PHPUnit7
- ([605](https://github.com/civicrm/civicrm-drupal/pull/605))**
-
-- **[NFC] Fix Unit test failure on MySQL 8 due to mysql ordering issue
+- **[NFC] Fix unit test failure on MySQL 8 due to ordering issue
([17674](https://github.com/civicrm/civicrm-core/pull/17674))**
-- **[NFC] Fix tests in preparation for phpunit7
- ([17661](https://github.com/civicrm/civicrm-core/pull/17661))**
-
- **[NFC] Remove instances where html is passed to crmMoney
([17612](https://github.com/civicrm/civicrm-core/pull/17612))**
- **[NFC] Update mocking to use getMockBuilder instead instead of createMock
([17606](https://github.com/civicrm/civicrm-core/pull/17606))**
-- **NFC Formatting cleanup on contribution/recur templates
+- **[NFC] Formatting cleanup on contribution/recur templates
([17603](https://github.com/civicrm/civicrm-core/pull/17603))**
- **[NFC] Minor code cleanup
([17566](https://github.com/civicrm/civicrm-core/pull/17566))**
-- **[NFC] Update PHPUnit configuration to be compatible with PHPUnit7
- ([120](https://github.com/civicrm/civicrm-backdrop/pull/120))**
+- **MembershipRenewalTest - Fix failure
+ ([17830](https://github.com/civicrm/civicrm-core/pull/17830))**
+
+- **[REF] Fix regression where adding any date based field onto a profile
+ triggers an error date preferences not configured when previewing the profile
+ ([17973](https://github.com/civicrm/civicrm-core/pull/17973))**
-- **[NFC] Update PHPUnit configuration to be compatible with PHPUnit7
- ([206](https://github.com/civicrm/civicrm-wordpress/pull/206))**
+- **[NFC] Port some recent test fixes from master to 5.28
+ ([18053](https://github.com/civicrm/civicrm-core/pull/18053))**
## <a name="credits"></a>Credits