- **Enable view/revert delete action for detail logging
([15045](https://github.com/civicrm/civicrm-core/pull/15045))**
- Allows users to view/revert deleted information from the change log.
+ If detailed logging is enabled, you can now view and revert deleted
+ information.
+
+- **Download Bower dependencies using Composer
+ ([dev/drupal#8](https://lab.civicrm.org/dev/drupal/issues/8):
+ [15044](https://github.com/civicrm/civicrm-core/pull/15044))**
+
+ This improves performance and caching by downloading Javascript libraries
+ using Composer with `composer-downloads-plugin` and specified zip files rather
+ than Bower.
- **Add `hook_civicrm_pre` and `hook_civicrm_post` to Domain create and edit
operations ([dev/core#1203](https://lab.civicrm.org/dev/core/issues/1203):
[15104](https://github.com/civicrm/civicrm-core/pull/15104))**
Makes it so one can detect when a new Domain has been created or when a Domain
- has been edited with the usual hook_civicrm_pre and hook_civicrm_post
+ has been edited with the usual `hook_civicrm_pre` and `hook_civicrm_post`
callbacks.
- **Api support for deduping
Work toward improving the new API support for deduping including: not
geocoding when merging for performance reasons, giving contacts with 'merge
duplicate contacts' permission to get dedupe rules, ensuring the API call
- Dedupe.getstatistics requires "Access CiviCRM" and adds a check for 'force merge
- duplicate contacts' if mode is aggressive.
+ Dedupe.getstatistics requires "Access CiviCRM" and adds a check for 'force
+ merge duplicate contacts' if mode is aggressive.
- **Add cid parameter in custom group form url & set it for Activity form
([dev/core#752](https://lab.civicrm.org/dev/core/issues/752):
([dev/core#1077](https://lab.civicrm.org/dev/core/issues/1077):
[15074](https://github.com/civicrm/civicrm-core/pull/15074))**
- Makes the actions list on the Report listing screen accessible to developers
- by a hook.
+ The actions list on the report listing screen can now be altered by developers
+ using `hook_civicrm_links`.
- **Fixes inconsistency between constituency summary and constituency detail
([15222](https://github.com/civicrm/civicrm-core/pull/15222))**
- Improves consistency of how the Action link "Print Report" functions on the
- Reports listing pages before this change some "Print Report" links would take
- the user to the report in print view and some would trigger a print popup.
+ This improves the consistency of how the "Print Report" action link functions
+ on the reports listing. Before this change, some "Print Report" links would
+ take the user to the report in print view, and some would trigger a print
+ pop-up.
- **Add index to civicrm_contact.created_date & modified_date
([15203](https://github.com/civicrm/civicrm-core/pull/15203))**
- Adds an index to `civicrm_contact.created_date` &
- `civicrm_contact.modified_date`.
+ This adds an index to the `created_date` and `modified_date` columns in the
+ `civicrm_contact` table.
- **Added field title for Cache table
([15204](https://github.com/civicrm/civicrm-core/pull/15204))**
- Adds title for fields to the Cache table.
+ The Data Access Object for the `civicrm_cache` table now stores titles for
+ each field.
- **Allow Manual Geo Code flag to be exported
([14998](https://github.com/civicrm/civicrm-core/pull/14998))**
- Makes it possible for users to export the Manual Geo Code flag.
+ The field denoting that an address has been manually geocoded can now be
+ exported.
- **Use merge duplicate contacts as api permission for merging
([15155](https://github.com/civicrm/civicrm-core/pull/15155))**
- **Adjust permissions on dedupe exception api to 'merge duplicate contacts'
([15157](https://github.com/civicrm/civicrm-core/pull/15157))**
- Moves the CRUD API for managing dedupe exceptions to require the permission
- 'merge duplicate contacts' before this change it required 'Administer
- CiviCRM'.
+ The API for managing dedupe exceptions now requires the permission "merge
+ duplicate contacts" instead of "Administer CiviCRM".
- **Open up permissions on Dedupe.getduplicates
([15152](https://github.com/civicrm/civicrm-core/pull/15152))**
Less restrictive permissions on the `Dedupe.getduplicates` API (currently only
used from unit tests) specifically moves from requiring the permission
- 'Administer CiviCRM' to 'Access CiviCRM'.
+ "Administer CiviCRM" to "Access CiviCRM".
- **Fix inconsistencies in duplicate retrieval
([15160](https://github.com/civicrm/civicrm-core/pull/15160))**
- **Error log improvements: Provide priority level
([14995](https://github.com/civicrm/civicrm-core/pull/14995))**
- Improves Error Logging by adding the ability to pass a priority level argument
+ Improves error logging by adding the ability to pass a priority level argument
to `CRM_Core_Error::debug_var()`.
- **Improve deadlock error handling
Improves deadlock error handling by capturing the error when the deadlock is
first hit so the backtrace is retained.
-- **Manage Group search message fix
- ([15052](https://github.com/civicrm/civicrm-core/pull/15052))**
-
- Improves the help text when one searches for groups and no groups are found.
+- **Better error handling in CRM_Utils_JS::decode
+ ([15145](https://github.com/civicrm/civicrm-core/pull/15145))**
-### CiviContribute
+ Improves handling of malformed Javascript so as to reduce PHP notices.
-- **Add pre/post hooks for price set / field/option
- ([dev/core#870](https://lab.civicrm.org/dev/core/issues/870):
- [15076](https://github.com/civicrm/civicrm-core/pull/15076))**
+- **Replace some calls to CRM_Core_Error::fatal with exceptions
+ ([15156](https://github.com/civicrm/civicrm-core/pull/15156))**
- Ensures Price sets `pre` and `post` hooks get invoked when adding price sets
- and price options etc.
+ Instead of exiting with a fatal error, certain dedupe error situations now
+ throw an exception.
### CiviEvent
([dev/event#14](https://lab.civicrm.org/dev/event/issues/14):
[15140](https://github.com/civicrm/civicrm-core/pull/15140))**
- Improves performance by not clearing caches every time an event is created.
+ This change improves performance by not clearing caches every time an event is
+ created.
### CiviMembership
-- **Update XML files for membership fields to support date picker conversion
- ([15186](https://github.com/civicrm/civicrm-core/pull/15186))**
+- **Convert jcalendar date fields to date picker for membership fields to
+ support date picker conversion
+ ([15177](https://github.com/civicrm/civicrm-core/pull/15177),
+ [15186](https://github.com/civicrm/civicrm-core/pull/15186),
+ [15198](https://github.com/civicrm/civicrm-core/pull/15198) and
+ [15200](https://github.com/civicrm/civicrm-core/pull/15200))**
- Updates the XML and associated files to support the change to date picker
- format for Membership date fields.
+ Date fields on membership search screens now use datepicker rather than
+ jCalendar.
+
+ The `join_date` column on the `civicrm_membership` table is now keyed as
+ `membership_join_date` within the DAO in order to support the change to date
+ picker format for Membership date fields.
- **Add default domain to membershiptype API
([15120](https://github.com/civicrm/civicrm-core/pull/15120))**
- Adds a default domain to the membershiptype API to improve usability.
+ The domain ID now defaults to the current domain when using the membership
+ type API.
- **Fix readability & caching on
CRM_Contact_BAO_Relationship::isInheritedMembershipInvalidated
- **Fail more gracefully when upgrading on PHP5.x
([98](https://github.com/civicrm/civicrm-backdrop/pull/98))**
- Provides a clearer error whens omeone tries to upgrade with PHP 5.x
+ Provides a clearer error when someone tries to upgrade with PHP 5.x.
### Drupal Integration
([dev/drupal#79](https://lab.civicrm.org/dev/drupal/issues/79):
[583](https://github.com/civicrm/civicrm-drupal/pull/583))**
- Throws a clearer error when someone tries to upgrade with PHP 5.x.
-
-- **(dev/drupal#8) Migrate bower.json into composer.json via
- composer-downloads-plugin
- ([15044](https://github.com/civicrm/civicrm-core/pull/15044))**
-
- Improves performance and caching by using `composer` to install `bower`.
+ Provides a clearer error when someone tries to upgrade with PHP 5.x.
## <a name="bugs"></a>Bugs resolved
(Work Towards [dev/core#772](https://lab.civicrm.org/dev/core/issues/772):
[262](https://github.com/civicrm/civicrm-packages/pull/262))**
- Fixes a notice when importing with PHP 7.2 specifically with an import file
- with the column 'Contact Source' among others & import set to use 'Column
- Headers'.
+ This fixes a PHP warning on PHP 7.2 using hierarchical select fields, such as
+ selecting the matching fields for import columns. Some fields have no fields
+ nested below them, and those would trigger an error on the `count()` function.
- **Warnings on CRM_Contribute_Import_Parser re countable
([dev/core#1001](https://lab.civicrm.org/dev/core/issues/1001):
[15240](https://github.com/civicrm/civicrm-core/pull/15240) and
[15147](https://github.com/civicrm/civicrm-core/pull/15147))**
- Fixes a bug that allowed users without Edit permissions to edit inbound emails
- if they changed the activity type label.
-
- **Regression: Can't use CiviCRM menu on 5.16.0
([dev/core#1182](https://lab.civicrm.org/dev/core/issues/1182):
[15020](https://github.com/civicrm/civicrm-core/pull/15020) and
results ([dev/core#1192](https://lab.civicrm.org/dev/core/issues/1192):
[15079](https://github.com/civicrm/civicrm-core/pull/15079))**
- Fixes an E_NOTICE when using the "Add Activity" action from the contact search
- results list.
+ Fixes a PHP notice when using the "Add Activity" action from the contact
+ search results list.
- **CiviCRM Dashboard does not respect multiple domains
([dev/core#1200](https://lab.civicrm.org/dev/core/issues/1200):
[15099](https://github.com/civicrm/civicrm-core/pull/15099))**
For sites with multisite enabled ensures that the CiviCRM Dashboard respects
- multiple domains and shows unique dashlets (depending on what domain you are
- using).
+ multiple domains and shows unique dashlets depending on what domain you are
+ using.
- **Contact subtype is removed after being cached incorrectly
([dev/core#1222](https://lab.civicrm.org/dev/core/issues/1222):
[15171](https://github.com/civicrm/civicrm-core/pull/15171))**
Ensures the static cache is cleared whenever updating or deleting a DAO
- object.
-
-- **Event/Contribution amounts are duplicated when the form is saved
- ([dev/core#1240](https://lab.civicrm.org/dev/core/issues/1240):
- [15245](https://github.com/civicrm/civicrm-core/pull/15245))**
-
- Fixes a bug where saving the "amounts" tab of either an event or contribution
- page (when using that form to enter options NOT a price set) results in the
- duplication of the amount options listed.
+ object.
- **Regression: Searching on Email broken in advanced search
([dev/core#1244](https://lab.civicrm.org/dev/core/issues/1244):
[15255](https://github.com/civicrm/civicrm-core/pull/15255))**
- Fixes a regression where attempting to search on Email on the Advanced search
- form resulted in a warning and no results so that no warning is thrown and
- results are shown based on search parameters entered.
+ This fixes a problem where attempting to search on email on the Advanced
+ search form resulted in a warning and no results.
- **Trim form values when adding LIKE operator
([15275](https://github.com/civicrm/civicrm-core/pull/15275))**
- **Fix fatal when saving import mapping with a relationship but 'Primary'
location type ([15115](https://github.com/civicrm/civicrm-core/pull/15115))**
- Fixes a fatal error when saving an import mapping with a field mapped to (for
- example) employer's phone with the location type set to primary
+ When an import column was mapped to a field with the "Primary" location type
+ that was on a related contact, it would result in a fatal error.
- **Fix export header for 'Contact ID'
([15118](https://github.com/civicrm/civicrm-core/pull/15118))**
- Ensures when exporting a contact id column the header is 'Contact ID' not
- 'contact_id'
+ This ensures when exporting a contact id column the header is "Contact ID" not
+ "contact_id".
- **Changed ClassName for ACL cache
([15193](https://github.com/civicrm/civicrm-core/pull/15193))**
- **Incorporate searchLimit in dedupe cacheKey
([15185](https://github.com/civicrm/civicrm-core/pull/15185))**
- Fixes a bug where changing the search limit after a search has been performed
- does not result in a new search.
-
-- **Fix PayPalImpl Contribution Status PseudoConstant for non-English
- ([15164](https://github.com/civicrm/civicrm-core/pull/15164))**
-
- Ensures Contributions Statuses are set correctly for sites using PayPal
- Express and a language other than English by switching to using the name
- property instead of the label.
+ When you change the search limit after a duplicate search has been performed,
+ this ensures that a new search is run.
- **Allow for the deselection of sorting filters
([15029](https://github.com/civicrm/civicrm-core/pull/15029))**
Fixes a bug where removing sorting filters on reports and refreshing the
- results would retain the sorting filters regardless.
-
-- **Better error handling in CRM_Utils_JS::decode
- ([15145](https://github.com/civicrm/civicrm-core/pull/15145))**
-
- Improves handling of malformed Javascript so as to reduce PHP notices.
+ results would nevertheless retain the sorting filters.
- **CRM_Utils_Array::crmInArray() should recurse properly
([dev/core#1196](https://lab.civicrm.org/dev/core/issues/1196):
[15092](https://github.com/civicrm/civicrm-core/pull/15092))**
-- **Incorrect line item created for back-end membership sign-up using price set
- and CiviDiscount ([dev/core#860](https://lab.civicrm.org/dev/core/issues/860):
- [15004](https://github.com/civicrm/civicrm-core/pull/15004))**
-
-- **Fix an HTML error in Calculate.tpl
- ([15102](https://github.com/civicrm/civicrm-core/pull/15102))**
-
-- **Replace some calls to CRM_Core_Error::fatal with exceptions
- ([15156](https://github.com/civicrm/civicrm-core/pull/15156))**
-
-- **Ensure all report templates switch the filter field_name from join_date to
- be membership_join_date
- ([15198](https://github.com/civicrm/civicrm-core/pull/15198))**
-
-- **Re-remove pledge & member fields from the legacy date list
- ([15200](https://github.com/civicrm/civicrm-core/pull/15200))**
-
-- **Use api to create activity and removed hardcoded status id
- ([14621](https://github.com/civicrm/civicrm-core/pull/14621))**
-
- **Add ts() to deceased string
([15211](https://github.com/civicrm/civicrm-core/pull/15211))**
+ The word "deceased" when appended to a contact's name is now translatable.
+
- **Fatal Error in "Search Builder" if "Household" Contact type is disabled.
([dev/core#1246](https://lab.civicrm.org/dev/core/issues/1246):
[15289](https://github.com/civicrm/civicrm-core/pull/15289))**
- **Do not show Activity Separation on when viewing an Activity
([15046](https://github.com/civicrm/civicrm-core/pull/15046))**
-- **Display only own assignees contact(s) on batch activity form
- ([15035](https://github.com/civicrm/civicrm-core/pull/15035))**
+ The option to create separate activities for each contact, only applicable
+ when creating a new activity, would erroneously appear when viewing an
+ activity.
-- **Swap CRM_Utils_Array::value for empty() in conditionals
- ([15005](https://github.com/civicrm/civicrm-core/pull/15005))**
+- **Activity profile on Update multiple activities action displays duplicate
+ assignees ([dev/core#1185](https://lab.civicrm.org/dev/core/issues/1185):
+ [15035](https://github.com/civicrm/civicrm-core/pull/15035))**
+
+ The list of assignees would display all of the assignees for each previous row
+ in addition to the assignee(s) for that activity.
- **Ensure that civicrm_dashboard has a foreign key to civicrm_domain
([15119](https://github.com/civicrm/civicrm-core/pull/15119))**
+- **Manage Group search message fix
+ ([15052](https://github.com/civicrm/civicrm-core/pull/15052))**
+
+ When no the group listing is filtered and no groups match the criteria, the
+ message says that more clearly rather than stating there are no groups on the
+ site.
+
### CiviCampaign
- **Actions in campaign dashboard not working with pop-up disabled
changed and moves from searching based on regex on the `fee_amount` column to
searching based on the `price_field_value` id.
+- **Add pre/post hooks for price set / field/option
+ ([dev/core#870](https://lab.civicrm.org/dev/core/issues/870):
+ [15076](https://github.com/civicrm/civicrm-core/pull/15076))**
+
+ The `hook_civicrm_pre` and `hook_civicrm_post` hooks get invoked when adding
+ price sets, fields, and options.
+
+- **Event/Contribution amounts are duplicated when the form is saved
+ ([dev/core#1240](https://lab.civicrm.org/dev/core/issues/1240):
+ [15245](https://github.com/civicrm/civicrm-core/pull/15245))**
+
+ Fixes a bug where saving the "amounts" tab of either an event or contribution
+ page (when using that form to enter options, rather than a price set) results in the
+ duplication of the amount options listed.
+
+- **Fix PayPalImpl Contribution Status PseudoConstant for non-English
+ ([15164](https://github.com/civicrm/civicrm-core/pull/15164))**
+
+ Ensures contribution statuses are set correctly for sites using PayPal Express
+ and a language other than English by switching to using the name property
+ instead of the label.
+
+- **Fix an HTML error in Calculate.tpl
+ ([15102](https://github.com/civicrm/civicrm-core/pull/15102))**
+
+ This resolves a `<span>` that was not closed correctly on the calculation of a
+ price set's total amount due.
+
+- **Use api to create activity and removed hardcoded status id
+ ([14621](https://github.com/civicrm/civicrm-core/pull/14621))**
+
+ When exporting an accounting batch, the activity that is created is now done
+ so using the API, and it uses the status name `Completed` rather than a
+ hard-coded status ID `2`.
+
- **Fix wrong variable in check for profiles on contributionpage
([15093](https://github.com/civicrm/civicrm-core/pull/15093))**
[15060](https://github.com/civicrm/civicrm-core/pull/15060))**
Fixes a bug where when submitting an event registration which contains a
- profile which contains a note field, if the note is left blank, then the
- confirmation/notification emails contain the most recent note in the contact's
- record, potentially exposing confidential information.
+ profile which contains a note field. If the note was left blank, then the
+ confirmation/notification emails would contain the most recent note in the
+ contact's record, potentially exposing confidential information.
-- **Custom field value for a new Event based on an Event Template are not
+- **Custom field values for a new Event based on an Event Template are not
checked causing false validation message and Event not to
- save([dev/core#1241](https://lab.civicrm.org/dev/core/issues/1241):
+ save ([dev/core#1241](https://lab.civicrm.org/dev/core/issues/1241):
[15296](https://github.com/civicrm/civicrm-core/pull/15296))**
### CiviGrant
[15238](https://github.com/civicrm/civicrm-core/pull/15238) and
[15209](https://github.com/civicrm/civicrm-core/pull/15209))**
- Ensures that the associated contact is shown on Grants in edit mode.
+ Ensures that the associated contact field is shown when editing a grant.
- **Fixes for taking dynamic form name in grant search
([15075](https://github.com/civicrm/civicrm-core/pull/15075))**
- Ensures Overridden search form will work well with all select actions.
+ This removes the hard-coded form name when retrieving the search results in
+ preparation for a search action.
### CiviMail
-- **SMTP help text and URL are misleading to Organization Address and Contact
- Info instead of leading to From Email Addresses; see also
- [#14055](https://github.com/civicrm/civicrm-core/pull/14055) and
- [#14329](https://github.com/civicrm/civicrm-core/pull/14329)
- ([15165](https://github.com/civicrm/civicrm-core/pull/15165))**
+- **SMTP help text is misleading - references the wrong admin screen
+ ([dev/core#879](https://lab.civicrm.org/dev/core/issues/879):
+ [15165](https://github.com/civicrm/civicrm-core/pull/15165))**
Fixes up the help text displayed when testing the SMTP configuration fails.
following columns: `member_is_override`, `membership_recur_id` and
`max_related`.
+- **Incorrect line item created for back-end membership sign-up using price set
+ and CiviDiscount ([dev/core#860](https://lab.civicrm.org/dev/core/issues/860):
+ [15004](https://github.com/civicrm/civicrm-core/pull/15004))**
+
- **[regression] Recurring contributions no longer properly update memberships
(on PayPal Pro, maybe others)
([dev/membership#13](https://lab.civicrm.org/dev/membership/issues/13):
- **Make sure inherited memberships are not themselves inherited
([15114](https://github.com/civicrm/civicrm-core/pull/15114))**
+ This prevents contacts from inheriting memberships that were inherited from
+ them.
+
- **{Membership.Fee} appears on Membership Renewal Reminder emails with 9
decimal places ([dev/core#377](https://lab.civicrm.org/dev/core/issues/377):
[14992](https://github.com/civicrm/civicrm-core/pull/14992))**
## <a name="misc"></a>Miscellany
+- **Swap CRM_Utils_Array::value for empty() in conditionals
+ ([15005](https://github.com/civicrm/civicrm-core/pull/15005))**
+
- **Possible timing issue with test phpunit/api/v3/AttachmentTest::testCreate
([dev/core#938](https://lab.civicrm.org/dev/core/issues/938):
[15216](https://github.com/civicrm/civicrm-core/pull/15216))**
- **[Datepicker][REF] Convert mailing date field on mailing search screen…
([15181](https://github.com/civicrm/civicrm-core/pull/15181))**
-- **[Date picker][REF] Convert jcalendar date fields to date picker on me…
- ([15177](https://github.com/civicrm/civicrm-core/pull/15177))**
-
- **[Ref] Import use process for relationship defaults, add test
([15215](https://github.com/civicrm/civicrm-core/pull/15215))**