diff --git a/contributor-key.yml b/contributor-key.yml index e727b7ba67d62a942511bb83f4ab89ce04d958ba..fbfaba907c6b6940f62c030e17c7a11e7a4e8f63 100644 --- a/contributor-key.yml +++ b/contributor-key.yml @@ -509,6 +509,10 @@ name : Francesc Bassas i Bullich jira : francescbassas +- github : freeform-sg + organization: Freeform Solutions + name : S.Gray + - github : freephile name : Greg Rundlett organization: eQuality Technology @@ -1326,7 +1330,7 @@ - github : simonjohnparker name : Simon John Parker -- gitub : sushant +- gitub : sushantpaste organization: OSSeed Technologies LLP name : Sushant Paste diff --git a/release-notes/5.25.0.md b/release-notes/5.25.0.md index a340d21c683ed09459274e5295fdeced7e365559..a8748fa18f71dc7cdea2dbe79cc5584759769e23 100644 --- a/release-notes/5.25.0.md +++ b/release-notes/5.25.0.md @@ -13,464 +13,724 @@ Released May 6, 2020 | *Does this version...?* | | |:--------------------------------------------------------------- |:-------:| -| Fix security vulnerabilities? | | -| Change the database schema? | | -| Alter the API? | | -| Require attention to configuration options? | | -| Fix problems installing or upgrading to a previous version? | | -| Introduce features? | | -| Fix bugs? | | +| Fix security vulnerabilities? | no | +| Change the database schema? | **yes** | +| Alter the API? | **yes** | +| Require attention to configuration options? | no | +| Fix problems installing or upgrading to a previous version? | **yes** | +| Introduce features? | **yes** | +| Fix bugs? | **yes** | ## <a name="features"></a>Features ### Core CiviCRM -- **crm- Missing Summary ([16886](https://github.com/civicrm/civicrm-core/pull/16886))** +- **Replace jcalendar instances with datepicker (Continued + Work [dev/core#561](https://lab.civicrm.org/dev/core/issues/561): + [15709](https://github.com/civicrm/civicrm-core/pull/15709) and + [16863](https://github.com/civicrm/civicrm-core/pull/16863))** -- **CRM-1367 Missing Summary ([16870](https://github.com/civicrm/civicrm-core/pull/16870))** + These changes continue work to move to datepicker from jcalendar by converting + report instances from using the legacy jcalendar to using datepicker for date + fields and deprecating the `addDateRange` function used by jcalendar. -- **CRM-20553 Missing Summary ([14667](https://github.com/civicrm/civicrm-core/pull/14667))** +- **End of life plans for php 7.0 & deprecate php 7.1 + ([dev/core#1528](https://lab.civicrm.org/dev/core/issues/1528): + [16753](https://github.com/civicrm/civicrm-core/pull/16753), + [599](https://github.com/civicrm/civicrm-drupal/pull/599), + [598](https://github.com/civicrm/civicrm-drupal/pull/598), + [111](https://github.com/civicrm/civicrm-backdrop/pull/111), + [16678](https://github.com/civicrm/civicrm-core/pull/16678), + [114](https://github.com/civicrm/civicrm-backdrop/pull/114), + [187](https://github.com/civicrm/civicrm-wordpress/pull/187) and + [184](https://github.com/civicrm/civicrm-wordpress/pull/184))** -## <a name="bugs"></a>Bugs resolved - -### Core CiviCRM - -- **Revert #16947 from 5.25RC ([17108](https://github.com/civicrm/civicrm-core/pull/17108))** - -- **Add release-notes/5.24.4.md ([17097](https://github.com/civicrm/civicrm-core/pull/17097))** - -- **Generalise typo3/phar-stream-wrapper so CiviCRM can be installed on d… ([17085](https://github.com/civicrm/civicrm-core/pull/17085))** - -- **Fix unsubscribe regression ([17081](https://github.com/civicrm/civicrm-core/pull/17081))** + Consolidates to a single constant for minimum PHP version. Sets the Minimum + PHP version to be 7.1. Sets the Minimum Install version to be 7.1. -- **Add release-notes/5.24.2 ([17041](https://github.com/civicrm/civicrm-core/pull/17041))** +- **updating misleading labels on buttons to confirmation pages + ([dev/core#1613](https://lab.civicrm.org/dev/core/-/issues/1613): + [16651](https://github.com/civicrm/civicrm-core/pull/16651))** -- **Revert "temp workaround for dev/core#1675" ([17033](https://github.com/civicrm/civicrm-core/pull/17033))** + Changes the text of the confirm contribution (and event registration) button + to "Review". -- **CRM_Core_I18n - Provide a better label for new/unknown locales ([17021](https://github.com/civicrm/civicrm-core/pull/17021))** +- **APIv4 - Add Dashboard & DashboardContact entities + ([16867](https://github.com/civicrm/civicrm-core/pull/16867))** -- **Fixed fatal error for class not found when managed hook is invoked du… ([17004](https://github.com/civicrm/civicrm-core/pull/17004))** + Adds APIv4 support for Dashboard & DashboardContact and does some cleanup in + the BAO and API layers for improved consistency. -- **add nl_BE language ([17014](https://github.com/civicrm/civicrm-core/pull/17014))** +- **add nl_BE language + ([17014](https://github.com/civicrm/civicrm-core/pull/17014))** -- **Add release-notes/5.24.1 ([16978](https://github.com/civicrm/civicrm-core/pull/16978))** + Adds a new translation option for "Dutch (Netherlands)". -- **dev/financial#84 - Fix upgrade failure. Thin-out activation logic for `sequentialcreditnotes`. ([16971](https://github.com/civicrm/civicrm-core/pull/16971))** +- **Add hook to alter display value or Custom field value + ([16921](https://github.com/civicrm/civicrm-core/pull/16921))** -- **core#1688 - false positive on missing custom field check ([16961](https://github.com/civicrm/civicrm-core/pull/16961))** + Adds a hook to alter display value or Custom field value. -- **dev/core#1528 - Consolidate to single constant for minimum PHP version ([16753](https://github.com/civicrm/civicrm-core/pull/16753))** +- **APIv4 Query Improvements (Work Towards + [dev/report#31](https://lab.civicrm.org/dev/report/-/issues/31): + [16917](https://github.com/civicrm/civicrm-core/pull/16917) and + [16947](https://github.com/civicrm/civicrm-core/pull/16947))** -- **[REF] move buildQuickForm function to the trait ([16948](https://github.com/civicrm/civicrm-core/pull/16948))** + Builds out the APIv4 framework to support GROUP BY and different types of + expressions in clauses that previously only accepted the names of fields. + These expressions can now include numbers, NULL, strings, and whitelisted SQL + functions. The framework can in theory handle most SQL functions, but this + first PR adds support for the aggregate functions AVG, COUNT, MAX, MIN & SUM. -- **Revert "APIv4 - Fix contribution create" ([16951](https://github.com/civicrm/civicrm-core/pull/16951))** +### CiviContribute -- **Remove deprecated cleaning of money in the BAO layer ([16950](https://github.com/civicrm/civicrm-core/pull/16950))** +- **Partial Refunds (Work Towards + [dev/financial#87](https://lab.civicrm.org/dev/financial/issues/87): + [16480](https://github.com/civicrm/civicrm-core/pull/16480))** -- **APIv4 - Support GROUP BY and aggregate functions ([16947](https://github.com/civicrm/civicrm-core/pull/16947))** + Alters the "Add Payment" form to permit payments to be added even if a + contribution is fully paid. -- **dev/core#1682 - Invalid currency on sending offline membership receipt. ([16943](https://github.com/civicrm/civicrm-core/pull/16943))** +- **Add privacy fields to ContributionDetail report + ([16674](https://github.com/civicrm/civicrm-core/pull/16674))** -- **dev/core#1674: fix rebuilding of container on every request ([16919](https://github.com/civicrm/civicrm-core/pull/16919))** + Adds columns for the following fields to the contribution detail report: "Do + Not Phone", "Do Not Mail", "Do Not SMS", "Do Not Trade". -- **[REF] Move properties to Trait ([16940](https://github.com/civicrm/civicrm-core/pull/16940))** + - **Add "pledge id" as column and filter in Contribution Detail report. + ([16868](https://github.com/civicrm/civicrm-core/pull/16868))** -- **Follow up PR for #16845 - Fix form error when variable is NULL ([16941](https://github.com/civicrm/civicrm-core/pull/16941))** + Improves the Contribution Detail Report by adding "pledge id" as a filter and + column. -- **fixes dev/core#1683 set profile frontend title ([16945](https://github.com/civicrm/civicrm-core/pull/16945))** +### WordPress Integration -- **5.24 ([16946](https://github.com/civicrm/civicrm-core/pull/16946))** +- **Add shortcodes for Personal Campaign Pages + ([185](https://github.com/civicrm/civicrm-wordpress/pull/185) and + [16695](https://github.com/civicrm/civicrm-core/pull/16695))** -- **[REF] Start transitioning EmailCommon class to a trait ([16935](https://github.com/civicrm/civicrm-core/pull/16935))** + Makes Personal Campaign Pages available as a shortcode. -- **[NFC/TEST] Resurrect unfinished test for getRelatedCases() ([16885](https://github.com/civicrm/civicrm-core/pull/16885))** +## <a name="bugs"></a>Bugs resolved -- **Add hook to alter display value or Custom field value ([16921](https://github.com/civicrm/civicrm-core/pull/16921))** +### Core CiviCRM -- **5.24 ([16938](https://github.com/civicrm/civicrm-core/pull/16938))** +- **Making the poor performance associated with the creditnote_id field opt in + rather than opt out (Further Work + [dev/financial#84](https://lab.civicrm.org/dev/financial/issues/84): + [16971](https://github.com/civicrm/civicrm-core/pull/16971))** -- **[REF] Remove fatal, fix some code comments ([16928](https://github.com/civicrm/civicrm-core/pull/16928))** + Fixes an issue for some builds when upgrading caused by the activation of the + `sequentialcreditnotes` extension. -- **[REF] extract code to getEmails ([16929](https://github.com/civicrm/civicrm-core/pull/16929))** +- **Deleting entities leaves obsolete EntityTag records + ([dev/core#667](https://lab.civicrm.org/dev/core/issues/667): + [16832](https://github.com/civicrm/civicrm-core/pull/16832))** -- **[REF] Minor simplification - do not use variable variables ([16927](https://github.com/civicrm/civicrm-core/pull/16927))** + Fixes a bug where deleting a contact does not delete tags associated with the + contact. -- **Add "pledge id" as column and filter in Contribution Detail report. ([16868](https://github.com/civicrm/civicrm-core/pull/16868))** +- **Auto-complete search results not consistent with other searches + ([dev/core#787](https://lab.civicrm.org/dev/core/issues/787): + [13809](https://github.com/civicrm/civicrm-core/pull/13809))** -- **5.24 to master ([16931](https://github.com/civicrm/civicrm-core/pull/16931))** + Ensures Auto-complete search results are consistent with other searches. -- **[Test] Remove skip that seems no longer required ([16912](https://github.com/civicrm/civicrm-core/pull/16912))** +- **Don't freeze fields for auto-renew memberships + ([dev/core#1331](https://lab.civicrm.org/dev/core/issues/1331): + [16881](https://github.com/civicrm/civicrm-core/pull/16881) and + [16609](https://github.com/civicrm/civicrm-core/pull/16609))** -- **Added pseudoconstant for acl_id ([16925](https://github.com/civicrm/civicrm-core/pull/16925))** + Ensures that the "Cancel auto-renew" button works for translated sites. Makes + it possible for admin users to edit all fields on auto-renew memberships. -- **dev/core#1676 - E_NOTICE because of missing brackets for order of operations ([16924](https://github.com/civicrm/civicrm-core/pull/16924))** +- **Need to Increase Data Size for `form_values` column on + civicrm_report_instance table + ([dev/core#1569](https://lab.civicrm.org/dev/core/issues/1569): + [16836](https://github.com/civicrm/civicrm-core/pull/16836))** -- **Remove deprecated function ([16907](https://github.com/civicrm/civicrm-core/pull/16907))** + Changes the data type for the `form_values` column on the + `civicrm_report_instance` from TEXT to LONGTEXT. -- **dev/core#1366 - case audit printReport parameter is no longer used ([16670](https://github.com/civicrm/civicrm-core/pull/16670))** +- **PHP warning on Add relationship form + ([dev/core#1663](https://lab.civicrm.org/dev/core/issues/1663): + [16845](https://github.com/civicrm/civicrm-core/pull/16845) and + [16941](https://github.com/civicrm/civicrm-core/pull/16941))** -- **Make api4 select query object more sane ([16889](https://github.com/civicrm/civicrm-core/pull/16889))** +- **Removing all the dashlets from the dashboard leads to E_NOTICE + ([dev/core#1668](https://lab.civicrm.org/dev/core/issues/1668): + [16883](https://github.com/civicrm/civicrm-core/pull/16883))** -- **[NFC] APIv4 - Add test coverage for expected fields from join ([16920](https://github.com/civicrm/civicrm-core/pull/16920))** +- **Regression: Api4 causes container being rebuild on every request + ([dev/core#1674](https://lab.civicrm.org/dev/core/issues/1674): + [16919](https://github.com/civicrm/civicrm-core/pull/16919))** -- **[NFC] Add in unit test to ensure that APIv4 Doesn't accept an invalid… ([16893](https://github.com/civicrm/civicrm-core/pull/16893))** +- **E_NOTICE when using the New Individual popup/profile + ([dev/core#1676](https://lab.civicrm.org/dev/core/issues/1676): + [16924](https://github.com/civicrm/civicrm-core/pull/16924))** -- **APIv4 - Only adjust domain_id if required ([16917](https://github.com/civicrm/civicrm-core/pull/16917))** +- **profile Public Title (frontend_title column) is not used in profile + create/edit mode + ([dev/core#1683](https://lab.civicrm.org/dev/core/-/issues/1683): + [16945](https://github.com/civicrm/civicrm-core/pull/16945))** -- **[REF] Extract code used to render a pseudoconstant when a table is defined. ([16902](https://github.com/civicrm/civicrm-core/pull/16902))** +- **[regression] CiviCRM reports smart groups won't work due to deleted custom + fields that aren't deleted + ([dev/core#1688](https://lab.civicrm.org/dev/core/-/issues/1688): + [16961](https://github.com/civicrm/civicrm-core/pull/16961))** -- **Remove unused code ([16914](https://github.com/civicrm/civicrm-core/pull/16914))** +- **Fix checking permissions in api3 profile get + ([16848](https://github.com/civicrm/civicrm-core/pull/16848))** -- **[REF] Move form specific handling back to the relevant form. ([16913](https://github.com/civicrm/civicrm-core/pull/16913))** +- **APIv4 - convert Result object to array when running through json_encode + ([16828](https://github.com/civicrm/civicrm-core/pull/16828))** -- **Remove assigns for atypefile ([16895](https://github.com/civicrm/civicrm-core/pull/16895))** +- **Api4 AJAX endpoint: change required permission to access AJAX API. + ([16705](https://github.com/civicrm/civicrm-core/pull/16705))** -- **Deprecate use of in OptionGroup::add() function ([16910](https://github.com/civicrm/civicrm-core/pull/16910))** + Makes it possible to use the API4 AJAX endpoint as an anonymous user. -- **[REF] APIv4 - Preserve order when expanding select wildcards ([16909](https://github.com/civicrm/civicrm-core/pull/16909))** +- **Make api4 select query object more sane + ([16889](https://github.com/civicrm/civicrm-core/pull/16889))** -- **dev/core#561 Add in deprecation notice on addDateRange funtion ([16863](https://github.com/civicrm/civicrm-core/pull/16863))** +- **APIv4 - bugfix in select query + ([16900](https://github.com/civicrm/civicrm-core/pull/16900))** -- **dev/core#1663 - Fix warning on relationship form ([16845](https://github.com/civicrm/civicrm-core/pull/16845))** +- **CRM_Core_I18n - Provide a better label for new/unknown locales + ([17021](https://github.com/civicrm/civicrm-core/pull/17021))** -- **[NFC] Use strict comparison where possible ([16896](https://github.com/civicrm/civicrm-core/pull/16896))** +- **Fixed fatal error for class not found when managed hook is invoked during + upgrade ([17004](https://github.com/civicrm/civicrm-core/pull/17004))** -- **Improve APIv4 selectUtils to handle join paths in fieldnames. ([16904](https://github.com/civicrm/civicrm-core/pull/16904))** +- **log error message instead of throwing exception + ([16880](https://github.com/civicrm/civicrm-core/pull/16880) and + [16759](https://github.com/civicrm/civicrm-core/pull/16759))** -- **[NFC] Code formatting ([16906](https://github.com/civicrm/civicrm-core/pull/16906))** +- **Fixed fatal error for Event Participants custom search if price set field + option is disabled after a registrant has already selected it + ([16894](https://github.com/civicrm/civicrm-core/pull/16894))** -- **[NFC] minor form cleanup. ([16905](https://github.com/civicrm/civicrm-core/pull/16905))** +- **Fix display of payment processor title in cancelSubscription form + ([16857](https://github.com/civicrm/civicrm-core/pull/16857))** -- **APIv4 - bugfix in select query ([16900](https://github.com/civicrm/civicrm-core/pull/16900))** +- **Fix bug where a % in a serialized array can lead to the data being broken + ([16694](https://github.com/civicrm/civicrm-core/pull/16694))** -- **[REF] Remove & from before variable ([16897](https://github.com/civicrm/civicrm-core/pull/16897))** +- **Respect 'Donot notify activity type' setting + ([16800](https://github.com/civicrm/civicrm-core/pull/16800))** -- **log error message instead of throwing exception ([16880](https://github.com/civicrm/civicrm-core/pull/16880))** +- **Fix batch contact/activity update with radio options + ([16855](https://github.com/civicrm/civicrm-core/pull/16855))** -- **5.24 ([16898](https://github.com/civicrm/civicrm-core/pull/16898))** +- **Fix CustomDataView.tpl plain empty memo field. + ([16839](https://github.com/civicrm/civicrm-core/pull/16839))** -- **Add some deprecation notices, stop calling PrevNext::cleanupCache ([16697](https://github.com/civicrm/civicrm-core/pull/16697))** + Ensure note custom fields display on their own lines -- **Fixed fatal error for Event Participants custom search if price set f… ([16894](https://github.com/civicrm/civicrm-core/pull/16894))** +- **Fix setting outBound_option readonly in UI + ([16774](https://github.com/civicrm/civicrm-core/pull/16774))** -- **APIv3 - Use new DAO::deleteRecord method ([16869](https://github.com/civicrm/civicrm-core/pull/16869))** + Display the SMTP outbound option as read only. -- **APIv4 - Add Dashboard & DashboardContact entities ([16867](https://github.com/civicrm/civicrm-core/pull/16867))** +- **Make the 'billing address is the same' checkbox respond to the change event + ([16496](https://github.com/civicrm/civicrm-core/pull/16496))** -- **5.24 ([16892](https://github.com/civicrm/civicrm-core/pull/16892))** + Make the "billing address is the same.." checkbox respond to javascript. -- **[REF] Replace \CRM_Utils_Array::value with ?? ([16872](https://github.com/civicrm/civicrm-core/pull/16872))** +- **Use dbAlias to generate where clause for date field in activity report + ([16689](https://github.com/civicrm/civicrm-core/pull/16689))** -- **[REF] Civi/Api4 - Refactor out 'use CRM_Utils_Array' ([16873](https://github.com/civicrm/civicrm-core/pull/16873))** +- **[REF] Use composer patches to apply CiviCRM Customisations for CRM-1367 and + CRM-5946 ([16870](https://github.com/civicrm/civicrm-core/pull/16870))** -- **[REF] BAO_Contact - Remove CRM_Utils_Array::value and other unnecessary code ([16874](https://github.com/civicrm/civicrm-core/pull/16874))** + Migrates the patching of pear_mail from a script file to using composer + patches to ensure CiviCRM customisations for CRM-1367 and CRM-5946 are applied + consistently. -- **5.24 ([16884](https://github.com/civicrm/civicrm-core/pull/16884))** +- **Membership join date checkbox on constituent detail report has lost its + label ([dev/report#28](https://lab.civicrm.org/dev/report/issues/28): + [16829](https://github.com/civicrm/civicrm-core/pull/16829))** -- **[REF] APIv4 - Restructure the way get query objects are constucted ([16878](https://github.com/civicrm/civicrm-core/pull/16878))** +### CiviCase -- **dev/core#1668 - Avoid E_NOTICE when removing last dashlet ([16883](https://github.com/civicrm/civicrm-core/pull/16883))** +- **Various errors recorded in log message on Manage Case screen -> relationship + tab. ([dev/core#1664](https://lab.civicrm.org/dev/core/issues/1664): + [16846](https://github.com/civicrm/civicrm-core/pull/16846))** -- **Alternate to #16650 - On Case Audit/Print Report richtext details field is getting escaped when system is non-english ([16659](https://github.com/civicrm/civicrm-core/pull/16659))** + Fixes log messages generated when opening the relationship tab on the Manage + Case form. -- **Fix use col "Soft Credit Amount Stats" and any filter of contribution… ([16591](https://github.com/civicrm/civicrm-core/pull/16591))** +- **Merge Case Modal not showing relevant cases + ([dev/core#1646](https://lab.civicrm.org/dev/core/issues/1646): + [16798](https://github.com/civicrm/civicrm-core/pull/16798))** -- **dev/core#1331 Add missing parameter to translation string ([16881](https://github.com/civicrm/civicrm-core/pull/16881))** + Ensures the Merge Case Modal shows all relevant cases. -- **[REF] Cleanup is_array(CRM_Utils_Array::value()) pattern ([16875](https://github.com/civicrm/civicrm-core/pull/16875))** +- **Adding a timeline to a case doesn't get the last activity in the timeline + right ([dev/core#1675](https://lab.civicrm.org/dev/core/issues/1675) and + [dev/core#1695](https://lab.civicrm.org/dev/core/issues/1695): + [289](https://github.com/civicrm/civicrm-packages/pull/289))** -- **dev/core#667 Fix bug where entity_tags are not deleted by 'soft FK' ([16832](https://github.com/civicrm/civicrm-core/pull/16832))** + Ensures case custom fields are saved when submitted via Drupal webform. + Additionally ensures that the last activity in the case timeline is set + correctly. -- **dev/core#1652 - Check for change case type activity on case activity form doesn't work ([16785](https://github.com/civicrm/civicrm-core/pull/16785))** +- **Check for Change Case Type in case activity form doesn't do anything + ([dev/core#1652](https://lab.civicrm.org/dev/core/issues/1652): + [16785](https://github.com/civicrm/civicrm-core/pull/16785))** -- **Add privacy fields to ContributionDetail report ([16674](https://github.com/civicrm/civicrm-core/pull/16674))** +- **Alternate to #16650 - On Case Audit/Print Report richtext details field is + getting escaped when system is non-english + ([16659](https://github.com/civicrm/civicrm-core/pull/16659))** -- **Follow up on fix on updating memberships when a contact is deceased ([16787](https://github.com/civicrm/civicrm-core/pull/16787))** +### CiviContribute -- **5.24 ([16879](https://github.com/civicrm/civicrm-core/pull/16879))** +- **Fix Bug where Payment Balance is sometimes miscalculated + ([16546](https://github.com/civicrm/civicrm-core/pull/16546))** -- **Fix display of payment processor title in cancelSubscription form ([16857](https://github.com/civicrm/civicrm-core/pull/16857))** + Fixes a bug where Add Refund is displayed instead of Add Payment on partially + paid event contributions. -- **CRM/Contribute - Cleanup boolean expressions ([16853](https://github.com/civicrm/civicrm-core/pull/16853))** +- **CRM-20553 Stop contact being overwritten with paypal account name + ([14667](https://github.com/civicrm/civicrm-core/pull/14667))** -- **dev/financial#87 make it possible to add a payment to a fully paid contribution ([16480](https://github.com/civicrm/civicrm-core/pull/16480))** + Ensures when a user creates a donation via paypal their CiviCRM contact name + is not overwritten to be their paypal account name. -- **dev/1640 New feature - adds a checkbox to the update contribution status form to determine if a receipt is sent ([16742](https://github.com/civicrm/civicrm-core/pull/16742))** +- **Fix use col "Soft Credit Amount Stats" and any filter of contribution… + ([16591](https://github.com/civicrm/civicrm-core/pull/16591))** -- **Civi/Test - Refactor out CRM_Utils_Array::value ([16871](https://github.com/civicrm/civicrm-core/pull/16871))** + Ensures that one can use "Soft Credit Amount Stats" with all filters. -- **dev/core#1331 Don't freeze fields for auto-renew memberships ([16609](https://github.com/civicrm/civicrm-core/pull/16609))** +- **CRM_Core_Payment_PayPalProIPN should not call getPayPalPaymentProcessorID() + if processor_id is clearly provided in URL + ([dev/core#1579](https://lab.civicrm.org/dev/core/issues/1579): + [16479](https://github.com/civicrm/civicrm-core/pull/16479))** -- **[TEST] Add test for to time processing ([16861](https://github.com/civicrm/civicrm-core/pull/16861))** +- **Update pending contribution status action also send email without warning + ([dev/core#1640](https://lab.civicrm.org/dev/core/-/issues/1640): + [16742](https://github.com/civicrm/civicrm-core/pull/16742))** -- **fix typo ([16865](https://github.com/civicrm/civicrm-core/pull/16865))** +- **PayPal Express Checkout fails on events + ([dev/financial#119](https://lab.civicrm.org/dev/financial/issues/119): + [16692](https://github.com/civicrm/civicrm-core/pull/16692))** -- **API tests - remove unnecessary check for v4 ([16866](https://github.com/civicrm/civicrm-core/pull/16866))** +### CiviEvent -- **[REF] Remove redundant call to build permissions ([16862](https://github.com/civicrm/civicrm-core/pull/16862))** +- **Remove additional display of buttons for events + ([16550](https://github.com/civicrm/civicrm-core/pull/16550))** -- **dev/core#561 Convert Reports from jcalender to datepicker format ([15709](https://github.com/civicrm/civicrm-core/pull/15709))** +### CiviMember -- **dev/core#1664 - Fix errors recorded in log message on Manage Case scr… ([16846](https://github.com/civicrm/civicrm-core/pull/16846))** +- **Follow up on fix on updating memberships when a contact is deceased + ([16787](https://github.com/civicrm/civicrm-core/pull/16787))** -- **Cleanup reverse boolean expressions ([16850](https://github.com/civicrm/civicrm-core/pull/16850))** + Improves the messages displayed when editing a membership for a contact that + is deceased. -- **CRM/Core - Cleanup boolean expressions ([16852](https://github.com/civicrm/civicrm-core/pull/16852))** +- **Invalid currency "$" on sending offline membership receipt. + ([dev/core#1682](https://lab.civicrm.org/dev/core/issues/1682): + [16943](https://github.com/civicrm/civicrm-core/pull/16943))** -- **5.24 to master ([16859](https://github.com/civicrm/civicrm-core/pull/16859))** + Fixes an 'Invalid currency "$"' error when sending a receipt for a membership + created from an offline membership form. -- **CRM/Utils - Cleanup boolean expressions ([16851](https://github.com/civicrm/civicrm-core/pull/16851))** +- **Deceased Contact via Inline doesn't update the Membership's status to + Deceased ([dev/core#1599](https://lab.civicrm.org/dev/core/issues/1599): + [16724](https://github.com/civicrm/civicrm-core/pull/16724))** -- **CRM - Cleanup boolean expressions ([16854](https://github.com/civicrm/civicrm-core/pull/16854))** +- **Membership auto-renew is not optional if using price set + ([dev/core#1630](https://lab.civicrm.org/dev/core/-/issues/1630): + [16762](https://github.com/civicrm/civicrm-core/pull/16762))** -- **dev/core#1569: Increase Data Size for `form_values` column on civicrm_report_instance table ([16836](https://github.com/civicrm/civicrm-core/pull/16836))** +### Drupal Integration -- **Add DAO::writeRecord and DAO::deleteRecord methods ([16856](https://github.com/civicrm/civicrm-core/pull/16856))** +- **Address no longer available as Relationship for Views in Drupal 7 + ([dev/drupal#110](https://lab.civicrm.org/dev/drupal/issues/110): + [118](https://github.com/civicrm/civicrm-backdrop/pull/118) and + [600](https://github.com/civicrm/civicrm-drupal/pull/600))** -- **Fix checking permissions in api3 profile get ([16848](https://github.com/civicrm/civicrm-core/pull/16848))** +- **Generalise typo3/phar-stream-wrapper so CiviCRM can be installed on D8.7 + ([17085](https://github.com/civicrm/civicrm-core/pull/17085))** -- **Generate text for cancelSubscription form in payment class ([16715](https://github.com/civicrm/civicrm-core/pull/16715))** +- **civicrm-setup and backward slashes in file paths on windows don't play nice + together ([dev/core#1643](https://lab.civicrm.org/dev/core/-/issues/1643): + [16886](https://github.com/civicrm/civicrm-core/pull/16886))** -- **Fix batch contact/activity update with radio options ([16855](https://github.com/civicrm/civicrm-core/pull/16855))** + Fixes installing CiviCRM on Drupal8 sites on windows using civicrm-setup / cv + core:install. -- **dev/core#1630 Partial fix on renew membership missing ([16762](https://github.com/civicrm/civicrm-core/pull/16762))** +### WordPress Integration -- **UFMatch - deprecate unused functions ([16849](https://github.com/civicrm/civicrm-core/pull/16849))** +- **5.23 breaks WP admin menu links + ([dev/core#1637](https://lab.civicrm.org/dev/core/-/issues/1637): + [16713](https://github.com/civicrm/civicrm-core/pull/16713))** -- **Remove old stuff ([16835](https://github.com/civicrm/civicrm-core/pull/16835))** +- **Merge REST API wrapper code + ([160](https://github.com/civicrm/civicrm-wordpress/pull/160))** -- **Fix CustomDataView.tpl plain empty memo field. ([16839](https://github.com/civicrm/civicrm-core/pull/16839))** + Adds routes for CiviCRM scripts in extern. -- **CRM/Contact - Cleanup boolean expressions ([16844](https://github.com/civicrm/civicrm-core/pull/16844))** +- **Set "cms.root" URL in addition to Path + ([188](https://github.com/civicrm/civicrm-wordpress/pull/188))** -- **5.24 ([16843](https://github.com/civicrm/civicrm-core/pull/16843))** + Resolves "Cannot resolve path using 'cms.root.url'" exception thrown on the + "Settings - Resource URLs" screen incorrectly on WordPress Multisite Subsite. -- **Deprecate unused/unneeded pseudoconstant functions ([16771](https://github.com/civicrm/civicrm-core/pull/16771))** +## <a name="misc"></a>Miscellany -- **dev/report#28 - Join date field has no label on constituent detail report ([16829](https://github.com/civicrm/civicrm-core/pull/16829))** +- **Add recurring contribution ID to doCancelRecurring + ([16741](https://github.com/civicrm/civicrm-core/pull/16741))** -- **5.24 ([16831](https://github.com/civicrm/civicrm-core/pull/16831))** +- **Support PropertyBag in CRM_Utils_Array + ([16699](https://github.com/civicrm/civicrm-core/pull/16699) and + [16737](https://github.com/civicrm/civicrm-core/pull/16737))** -- **APIv4 - convert Result object to array when running through json_encode ([16828](https://github.com/civicrm/civicrm-core/pull/16828))** +- **Added pseudoconstant for acl_id + ([16925](https://github.com/civicrm/civicrm-core/pull/16925))** -- **Fix typos in xml/dao ([16827](https://github.com/civicrm/civicrm-core/pull/16827))** +- **Added pseudoconstant for state province + ([16799](https://github.com/civicrm/civicrm-core/pull/16799))** -- **[REF] Replace CRM_Utils_Array::value with ?? in variable assignments ([16768](https://github.com/civicrm/civicrm-core/pull/16768))** +- **add pseudoconstant for location type + ([16758](https://github.com/civicrm/civicrm-core/pull/16758))** -- **[REF] Replace coalesce pattern with coalesce operator ([16802](https://github.com/civicrm/civicrm-core/pull/16802))** +- **Added pseudoconstant for priceset + ([16754](https://github.com/civicrm/civicrm-core/pull/16754))** -- **[REF] Switch to using a non abandoned library for getting a mapping of mimetypes to extensions ([16436](https://github.com/civicrm/civicrm-core/pull/16436))** +- **pseudoconstant for bounce type + ([16727](https://github.com/civicrm/civicrm-core/pull/16727))** -- **Respect 'Donot notify activity type' setting ([16800](https://github.com/civicrm/civicrm-core/pull/16800))** +- **Added pseudoconstant for civicrm_tag.parent_id + ([16703](https://github.com/civicrm/civicrm-core/pull/16703))** -- **[NFC] Use helper / api to delete contacts in tests ([16825](https://github.com/civicrm/civicrm-core/pull/16825))** +- **Event Cart cleanup + ([16691](https://github.com/civicrm/civicrm-core/pull/16691))** -- **Deprecate calling contactTrashRestore function ([16824](https://github.com/civicrm/civicrm-core/pull/16824))** +- **Update cancelSubscription form to use updated methodology + ([16501](https://github.com/civicrm/civicrm-core/pull/16501) and + [16715](https://github.com/civicrm/civicrm-core/pull/16715))** -- **(NFC) Minor typo: receipients > recipients ([16810](https://github.com/civicrm/civicrm-core/pull/16810))** +- **Skip expensive smarty Processing when nothing to see here + ([16731](https://github.com/civicrm/civicrm-core/pull/16731))** -- **Remove deprecated parameter ([16813](https://github.com/civicrm/civicrm-core/pull/16813))** +- **UFMatch - deprecate unused functions + ([16849](https://github.com/civicrm/civicrm-core/pull/16849))** -- **[NFC] Minor code cleanup ([16823](https://github.com/civicrm/civicrm-core/pull/16823))** +- **Shifted UpdateMemberhsip to BAO Layer + ([16690](https://github.com/civicrm/civicrm-core/pull/16690))** -- **[REF] Simplify obtuse boolean expressions ([16822](https://github.com/civicrm/civicrm-core/pull/16822))** +- **Add DAO::writeRecord and DAO::deleteRecord methods + ([16856](https://github.com/civicrm/civicrm-core/pull/16856))** -- **[NFC] Deprecate passing in silly data ([16818](https://github.com/civicrm/civicrm-core/pull/16818))** +- **Add some deprecation notices, stop calling PrevNext::cleanupCache + ([16697](https://github.com/civicrm/civicrm-core/pull/16697))** -- **[NFC] Test cleanup ([16817](https://github.com/civicrm/civicrm-core/pull/16817))** +- **Remove assigns for atypefile + ([16895](https://github.com/civicrm/civicrm-core/pull/16895))** -- **[REF] Fix PCP getPcpDashboardInfo to be tested & use sensible functions ([16790](https://github.com/civicrm/civicrm-core/pull/16790))** +- **Deprecate use of in OptionGroup::add() function + ([16910](https://github.com/civicrm/civicrm-core/pull/16910))** -- **[REF] Replace CRM_Utils_Array::value with ?? in variable assignments ([16820](https://github.com/civicrm/civicrm-core/pull/16820))** +- **Improve APIv4 selectUtils to handle join paths in fieldnames. + ([16904](https://github.com/civicrm/civicrm-core/pull/16904))** -- **[REF] cleanups on array operator ([16821](https://github.com/civicrm/civicrm-core/pull/16821))** +- **Upgrade jQuery validation version to v1.19.1 + ([16625](https://github.com/civicrm/civicrm-core/pull/16625))** -- **[REF] Simplify obtuse boolean expressions ([16819](https://github.com/civicrm/civicrm-core/pull/16819))** +- **APIv3 - Use new DAO::deleteRecord method + ([16869](https://github.com/civicrm/civicrm-core/pull/16869))** -- **[REF] Remove titleHeader var ([16816](https://github.com/civicrm/civicrm-core/pull/16816))** +- **Improve conditional in api3 ChainSubscriber + ([16718](https://github.com/civicrm/civicrm-core/pull/16718))** -- **Remove unused deprecated function ([16812](https://github.com/civicrm/civicrm-core/pull/16812))** +- **Mark unused function as deprecated + ([16688](https://github.com/civicrm/civicrm-core/pull/16688))** -- **Skip expensive smarty Processing when nothing to see here ([16731](https://github.com/civicrm/civicrm-core/pull/16731))** +- **CRM/Contact - Cleanup boolean expressions + ([16844](https://github.com/civicrm/civicrm-core/pull/16844))** -- **Fix setting outBound_option readonly in UI ([16774](https://github.com/civicrm/civicrm-core/pull/16774))** +- **CRM/Contribute - Cleanup boolean expressions + ([16853](https://github.com/civicrm/civicrm-core/pull/16853))** -- **[REF] simplify references to civicrm_acl ([16671](https://github.com/civicrm/civicrm-core/pull/16671))** +- **Civi/Test - Refactor out CRM_Utils_Array::value + ([16871](https://github.com/civicrm/civicrm-core/pull/16871))** -- **(NFC) Minor typo: contacts(s) -> contact(s) ([16804](https://github.com/civicrm/civicrm-core/pull/16804))** +- **Cleanup reverse boolean expressions + ([16850](https://github.com/civicrm/civicrm-core/pull/16850))** -- **(NFC) Query.php / Minor typo: Genrated -> Generated ([16803](https://github.com/civicrm/civicrm-core/pull/16803))** +- **CRM/Core - Cleanup boolean expressions + ([16852](https://github.com/civicrm/civicrm-core/pull/16852))** -- **Test for PR 13809 ([16474](https://github.com/civicrm/civicrm-core/pull/16474))** +- **CRM/Utils - Cleanup boolean expressions + ([16851](https://github.com/civicrm/civicrm-core/pull/16851))** -- **(POC) Add `hook_civicrm_postCommit`, a less foot-gunny variant of `hook_civicrm_post` ([15338](https://github.com/civicrm/civicrm-core/pull/15338))** +- **CRM - Cleanup boolean expressions + ([16854](https://github.com/civicrm/civicrm-core/pull/16854))** -- **dev/core#1646 Merge Case Modal not showing relevant cases ([16798](https://github.com/civicrm/civicrm-core/pull/16798))** +- **Fix another instance of silly use of CRM_Utils_Array::value + ([16712](https://github.com/civicrm/civicrm-core/pull/16712))** -- **Added pseudoconstant for state province ([16799](https://github.com/civicrm/civicrm-core/pull/16799))** +- **Fix passing a non-array to CRM_Utils_Array::value + ([16701](https://github.com/civicrm/civicrm-core/pull/16701))** -- **5.24 ([16801](https://github.com/civicrm/civicrm-core/pull/16801))** +- **Fix another instance of NULL being passed to CRM_Utils_Array::value + ([16711](https://github.com/civicrm/civicrm-core/pull/16711))** -- **Make the 'billing address is the same' checkbox respond to the change event ([16496](https://github.com/civicrm/civicrm-core/pull/16496))** +- **Remove an instance of passing non-arraay to CRM_Utils_Array::value( + ([16706](https://github.com/civicrm/civicrm-core/pull/16706))** -- **(NFC) Minor string error : for for > for ([16773](https://github.com/civicrm/civicrm-core/pull/16773))** +- **Remove calls & deprecate CRM_Core_BAO_PrevNextCache::setItem + ([16696](https://github.com/civicrm/civicrm-core/pull/16696))** -- **dev/core#787 Auto-complete search results fixes ([13809](https://github.com/civicrm/civicrm-core/pull/13809))** +- **(POC) Add `hook_civicrm_postCommit`, a less foot-gunny variant of + `hook_civicrm_post` + ([15338](https://github.com/civicrm/civicrm-core/pull/15338))** -- **dev/core#1579 CRM_Core_Payment_PayPalProIPN should not call getPayPalPaymentProcessorID() if processor_id is clearly provided in URL ([16479](https://github.com/civicrm/civicrm-core/pull/16479))** +- **Fix typos in xml/dao + ([16827](https://github.com/civicrm/civicrm-core/pull/16827))** -- **[NFC] Test cleanup, remove duplicate test ([16755](https://github.com/civicrm/civicrm-core/pull/16755))** +- **Deprecate unused/unneeded pseudoconstant functions + ([16771](https://github.com/civicrm/civicrm-core/pull/16771))** -- **Fix Bug where Payment Balance is sometimes miscalculated ([16546](https://github.com/civicrm/civicrm-core/pull/16546))** +- **Deprecate calling contactTrashRestore function + ([16824](https://github.com/civicrm/civicrm-core/pull/16824))** -- **5.24 ([16797](https://github.com/civicrm/civicrm-core/pull/16797))** +- **Remove old stuff + ([16835](https://github.com/civicrm/civicrm-core/pull/16835))** -- **[REF] Cleanup api3 DashboardContact ([16792](https://github.com/civicrm/civicrm-core/pull/16792))** +- **Remove deprecated cleaning of money in the BAO layer + ([16950](https://github.com/civicrm/civicrm-core/pull/16950))** -- **[REF] Fixes a bug in Message Template create API where by user permissions checks were being done on system workflow messages ([16788](https://github.com/civicrm/civicrm-core/pull/16788))** +- **Remove unused deprecated function + ([16812](https://github.com/civicrm/civicrm-core/pull/16812))** -- **5.24 ([16794](https://github.com/civicrm/civicrm-core/pull/16794))** +- **Remove deprecated function + ([16907](https://github.com/civicrm/civicrm-core/pull/16907))** -- **[REF] Remove calls to fatal() ([16746](https://github.com/civicrm/civicrm-core/pull/16746))** +- **Remove unused code + ([16914](https://github.com/civicrm/civicrm-core/pull/16914))** -- **[REF] Cleanup uses of CRM_Utils_Array::value related to numbers ([16778](https://github.com/civicrm/civicrm-core/pull/16778))** +- **Remove deprecated parameter + ([16813](https://github.com/civicrm/civicrm-core/pull/16813))** -- **5.24 ([16786](https://github.com/civicrm/civicrm-core/pull/16786))** +- **fix typo ([16865](https://github.com/civicrm/civicrm-core/pull/16865))** -- **dev/core#1599/Deceased Contact's Membership Marked to Deceased via Inline ([16724](https://github.com/civicrm/civicrm-core/pull/16724))** +- **API tests - remove unnecessary check for v4 + ([16866](https://github.com/civicrm/civicrm-core/pull/16866))** -- **5.24 to master ([16783](https://github.com/civicrm/civicrm-core/pull/16783))** +- **[NFC] APIv4 - Add test coverage for expected fields from join + ([16920](https://github.com/civicrm/civicrm-core/pull/16920))** -- **5.24 ([16782](https://github.com/civicrm/civicrm-core/pull/16782))** +- **[NFC] Add in unit test to ensure that APIv4 Doesn't accept an invalid… + ([16893](https://github.com/civicrm/civicrm-core/pull/16893))** -- **[REF] cleanup financial type form - remove complex inheritence ([16777](https://github.com/civicrm/civicrm-core/pull/16777))** +- **[NFC] Use strict comparison where possible + ([16896](https://github.com/civicrm/civicrm-core/pull/16896))** -- **Add shortcodes for Personal Campaign Pages ([16695](https://github.com/civicrm/civicrm-core/pull/16695))** +- **[NFC] Code formatting + ([16906](https://github.com/civicrm/civicrm-core/pull/16906))** -- **5.24 ([16767](https://github.com/civicrm/civicrm-core/pull/16767))** +- **[NFC] minor form cleanup. + ([16905](https://github.com/civicrm/civicrm-core/pull/16905))** -- **Remove instances of fatal ([16759](https://github.com/civicrm/civicrm-core/pull/16759))** +- **(NFC) Minor typo: receipients > recipients + ([16810](https://github.com/civicrm/civicrm-core/pull/16810))** -- **[NFC] cleanup in test class ([16764](https://github.com/civicrm/civicrm-core/pull/16764))** +- **[NFC] Minor code cleanup + ([16823](https://github.com/civicrm/civicrm-core/pull/16823))** -- **[REF] Use ?? operator instead of CRM_Utils_Array::value() ([16710](https://github.com/civicrm/civicrm-core/pull/16710))** +- **[NFC] Deprecate passing in silly data + ([16818](https://github.com/civicrm/civicrm-core/pull/16818))** -- **add pseudoconstant for location type ([16758](https://github.com/civicrm/civicrm-core/pull/16758))** +- **[NFC] Test cleanup + ([16817](https://github.com/civicrm/civicrm-core/pull/16817))** -- **[REF] dev/core#1116 - Remove unused misnamed activityTypeName variable ([16730](https://github.com/civicrm/civicrm-core/pull/16730))** +- **[NFC] Test cleanup, remove duplicate test + ([16755](https://github.com/civicrm/civicrm-core/pull/16755))** -- **Added pseudoconstant for priceset ([16754](https://github.com/civicrm/civicrm-core/pull/16754))** +- **(NFC) Minor string error : for for > for + ([16773](https://github.com/civicrm/civicrm-core/pull/16773))** -- **Fix bug where a % in a serialized array can lead to the data being broken ([16694](https://github.com/civicrm/civicrm-core/pull/16694))** +- **(NFC) Minor typo: contacts(s) -> contact(s) + ([16804](https://github.com/civicrm/civicrm-core/pull/16804))** -- **Event Cart cleanup ([16691](https://github.com/civicrm/civicrm-core/pull/16691))** +- **(NFC) Query.php / Minor typo: Genrated -> Generated + ([16803](https://github.com/civicrm/civicrm-core/pull/16803))** -- **5.24 ([16749](https://github.com/civicrm/civicrm-core/pull/16749))** +- **[NFC] Fix comments, use single quotes + ([16693](https://github.com/civicrm/civicrm-core/pull/16693))** -- **Add recurring contribution ID to doCancelRecurring ([16741](https://github.com/civicrm/civicrm-core/pull/16741))** +- **[NFC] Mark unused function deprecated, fix some comments & formatting + ([16698](https://github.com/civicrm/civicrm-core/pull/16698))** -- **Bump Minimum Install version to be 7.1 (Do not merge until 5.24 RC is cut) ([16678](https://github.com/civicrm/civicrm-core/pull/16678))** +- **[NFC] cleanup in test class + ([16764](https://github.com/civicrm/civicrm-core/pull/16764))** -- **dev/core#1613/Updated Misleading labels ([16651](https://github.com/civicrm/civicrm-core/pull/16651))** +- **[NFC] Use helper / api to delete contacts in tests + ([16825](https://github.com/civicrm/civicrm-core/pull/16825))** -- **5.24 ([16744](https://github.com/civicrm/civicrm-core/pull/16744))** +- **[NFC/TEST] Resurrect unfinished test for getRelatedCases() + ([16885](https://github.com/civicrm/civicrm-core/pull/16885))** -- **REF Switch to getter on cancelSubscription form ([16740](https://github.com/civicrm/civicrm-core/pull/16740))** +- **[Test] Remove skip that seems no longer required + ([16912](https://github.com/civicrm/civicrm-core/pull/16912))** -- **[REF] Minor code simplification ([16734](https://github.com/civicrm/civicrm-core/pull/16734))** +- **Test for PR 13809 + ([16474](https://github.com/civicrm/civicrm-core/pull/16474))** -- **Update cancelSubscription form to use updated methodology ([16501](https://github.com/civicrm/civicrm-core/pull/16501))** +- **[TEST] Add test for to time processing + ([16861](https://github.com/civicrm/civicrm-core/pull/16861))** -- **[REF] Hopefully fix regularly failing conformance test ([16732](https://github.com/civicrm/civicrm-core/pull/16732))** +- **[REF] Case Activities Report includes core activities *always* + ([dev/core#1366](https://lab.civicrm.org/dev/core/issues/1366): + [16670](https://github.com/civicrm/civicrm-core/pull/16670))** -- **Improve conditional in api3 ChainSubscriber ([16718](https://github.com/civicrm/civicrm-core/pull/16718))** +- **[REF] Cleanup api3 DashboardContact + ([16792](https://github.com/civicrm/civicrm-core/pull/16792))** -- **CRM_Utils_Array::values follow up from #16699 ([16737](https://github.com/civicrm/civicrm-core/pull/16737))** +- **[REF] Fixes a bug in Message Template create API where by user permissions + checks were being done on system workflow messages + ([16788](https://github.com/civicrm/civicrm-core/pull/16788))** -- **Support PropertyBag in CRM_Utils_Array ([16699](https://github.com/civicrm/civicrm-core/pull/16699))** +- **[REF] Remove calls to fatal() + ([16746](https://github.com/civicrm/civicrm-core/pull/16746))** -- **[REF] Use empty() instead of CRM_Utils_Array::value() in inline conditionals ([16729](https://github.com/civicrm/civicrm-core/pull/16729))** +- **[REF] Cleanup uses of CRM_Utils_Array::value related to numbers + ([16778](https://github.com/civicrm/civicrm-core/pull/16778))** -- **5.24 ([16728](https://github.com/civicrm/civicrm-core/pull/16728))** +- **[REF] cleanup financial type form - remove complex inheritence + ([16777](https://github.com/civicrm/civicrm-core/pull/16777))** -- **pseudoconstant for bounce type ([16727](https://github.com/civicrm/civicrm-core/pull/16727))** +- **[REF] Use ?? operator instead of CRM_Utils_Array::value() + ([16710](https://github.com/civicrm/civicrm-core/pull/16710))** -- **[REF] Use ?? operator instead of CRM_Utils_Array::value() in return statements ([16719](https://github.com/civicrm/civicrm-core/pull/16719))** +- **[REF] dev/core#1116 - Remove unused misnamed activityTypeName variable + ([16730](https://github.com/civicrm/civicrm-core/pull/16730))** -- **Fix another instance of NULL being passed to CRM_Utils_Array::value ([16711](https://github.com/civicrm/civicrm-core/pull/16711))** +- **REF Switch to getter on cancelSubscription form + ([16740](https://github.com/civicrm/civicrm-core/pull/16740))** -- **5.24 ([16725](https://github.com/civicrm/civicrm-core/pull/16725))** +- **[REF] Minor code simplification + ([16734](https://github.com/civicrm/civicrm-core/pull/16734))** -- **Fix PayPal Express on events ([16692](https://github.com/civicrm/civicrm-core/pull/16692))** +- **[REF] Hopefully fix regularly failing conformance test + ([16732](https://github.com/civicrm/civicrm-core/pull/16732))** -- **dev/core#1637 regression fix on WP urls ([16713](https://github.com/civicrm/civicrm-core/pull/16713))** +- **[REF] Use empty() instead of CRM_Utils_Array::value() in inline conditionals + ([16729](https://github.com/civicrm/civicrm-core/pull/16729))** -- **Fix another instance of silly use of CRM_Utils_Array::value ([16712](https://github.com/civicrm/civicrm-core/pull/16712))** +- **[REF] Use ?? operator instead of CRM_Utils_Array::value() in return + statements ([16719](https://github.com/civicrm/civicrm-core/pull/16719))** -- **[NFC] Fix comments, use single quotes ([16693](https://github.com/civicrm/civicrm-core/pull/16693))** +- **[REF] CRM_Utils_Array::value() -> empty() + ([16704](https://github.com/civicrm/civicrm-core/pull/16704))** -- **Added pseudoconstant for civicrm_tag.parent_id ([16703](https://github.com/civicrm/civicrm-core/pull/16703))** +- **[REF] Cleanup is_array(CRM_Utils_Array::value()) pattern + ([16875](https://github.com/civicrm/civicrm-core/pull/16875))** -- **5.24 ([16709](https://github.com/civicrm/civicrm-core/pull/16709))** +- **[REF] Remove redundant call to build permissions + ([16862](https://github.com/civicrm/civicrm-core/pull/16862))** -- **Remove an instance of passing non-arraay to CRM_Utils_Array::value( ([16706](https://github.com/civicrm/civicrm-core/pull/16706))** +- **[REF] Replace CRM_Utils_Array::value with ?? in variable assignments + ([16768](https://github.com/civicrm/civicrm-core/pull/16768))** -- **[REF] CRM_Utils_Array::value() -> empty() ([16704](https://github.com/civicrm/civicrm-core/pull/16704))** +- **[REF] Replace coalesce pattern with coalesce operator + ([16802](https://github.com/civicrm/civicrm-core/pull/16802))** -- **Remove calls & deprecate CRM_Core_BAO_PrevNextCache::setItem ([16696](https://github.com/civicrm/civicrm-core/pull/16696))** +- **[REF] Switch to using a non abandoned library for getting a mapping of + mimetypes to extensions + ([16436](https://github.com/civicrm/civicrm-core/pull/16436))** -- **Api4 AJAX endpoint: change required permission to access AJAX API. ([16705](https://github.com/civicrm/civicrm-core/pull/16705))** +- **[REF] move buildQuickForm function to the trait + ([16948](https://github.com/civicrm/civicrm-core/pull/16948))** -- **Fix passing a non-array to CRM_Utils_Array::value ([16701](https://github.com/civicrm/civicrm-core/pull/16701))** +- **[REF] Move properties to Trait + ([16940](https://github.com/civicrm/civicrm-core/pull/16940))** -- **Shifted UpdateMemberhsip to BAO Layer ([16690](https://github.com/civicrm/civicrm-core/pull/16690))** +- **[REF] Start transitioning EmailCommon class to a trait + ([16935](https://github.com/civicrm/civicrm-core/pull/16935))** -- **Use dbAlias to generate where clause for date field in activity report ([16689](https://github.com/civicrm/civicrm-core/pull/16689))** +- **[REF] Remove fatal, fix some code comments + ([16928](https://github.com/civicrm/civicrm-core/pull/16928))** -- **[NFC] Mark unused function deprecated, fix some comments & formatting ([16698](https://github.com/civicrm/civicrm-core/pull/16698))** +- **[REF] extract code to getEmails + ([16929](https://github.com/civicrm/civicrm-core/pull/16929))** -- **Remove additional display of buttons for events ([16550](https://github.com/civicrm/civicrm-core/pull/16550))** +- **[REF] Minor simplification - do not use variable variables + ([16927](https://github.com/civicrm/civicrm-core/pull/16927))** -- **Upgrade jQuery validation version to v1.19.1 ([16625](https://github.com/civicrm/civicrm-core/pull/16625))** +- **[REF] Extract code used to render a pseudoconstant when a table is defined. + ([16902](https://github.com/civicrm/civicrm-core/pull/16902))** -- **Mark unused function as deprecated ([16688](https://github.com/civicrm/civicrm-core/pull/16688))** +- **[REF] Move form specific handling back to the relevant form. + ([16913](https://github.com/civicrm/civicrm-core/pull/16913))** -- **Fix Views relationship to addresses ([600](https://github.com/civicrm/civicrm-drupal/pull/600))** +- **[REF] APIv4 - Preserve order when expanding select wildcards + ([16909](https://github.com/civicrm/civicrm-core/pull/16909))** -- **Use new consolidated constant for minimum PHP version ([599](https://github.com/civicrm/civicrm-drupal/pull/599))** +- **[REF] Remove & from before variable + ([16897](https://github.com/civicrm/civicrm-core/pull/16897))** -- **Bump minimum PHP version to be 7.1 (Do not merge until 5.24 RC is cut) ([598](https://github.com/civicrm/civicrm-drupal/pull/598))** +- **[REF] Replace \CRM_Utils_Array::value with ?? + ([16872](https://github.com/civicrm/civicrm-core/pull/16872))** -- **Set "cms.root" URL in addition to Path ([188](https://github.com/civicrm/civicrm-wordpress/pull/188))** +- **[REF] Civi/Api4 - Refactor out 'use CRM_Utils_Array' + ([16873](https://github.com/civicrm/civicrm-core/pull/16873))** -- **Merge REST API wrapper code ([160](https://github.com/civicrm/civicrm-wordpress/pull/160))** +- **[REF] BAO_Contact - Remove CRM_Utils_Array::value and other unnecessary code + ([16874](https://github.com/civicrm/civicrm-core/pull/16874))** -- **Consolidate to single constant for minimum PHP version ([187](https://github.com/civicrm/civicrm-wordpress/pull/187))** +- **[REF] APIv4 - Restructure the way get query objects are constucted + ([16878](https://github.com/civicrm/civicrm-core/pull/16878))** -- **Add shortcodes for Personal Campaign Pages ([185](https://github.com/civicrm/civicrm-wordpress/pull/185))** +- **[REF] Fix PCP getPcpDashboardInfo to be tested & use sensible functions + ([16790](https://github.com/civicrm/civicrm-core/pull/16790))** -- **Bump minimum install version to be 7.1 (Do not merge until 5.24 RC is cut) ([184](https://github.com/civicrm/civicrm-wordpress/pull/184))** +- **[REF] Simplify obtuse boolean expressions + ([16822](https://github.com/civicrm/civicrm-core/pull/16822))** -- **Issue #117 fix address relationship for Views ([118](https://github.com/civicrm/civicrm-backdrop/pull/118))** +- **[REF] Replace CRM_Utils_Array::value with ?? in variable assignments + ([16820](https://github.com/civicrm/civicrm-core/pull/16820))** -- **Consolidate to single constant for minimum PHP version ([114](https://github.com/civicrm/civicrm-backdrop/pull/114))** +- **[REF] cleanups on array operator + ([16821](https://github.com/civicrm/civicrm-core/pull/16821))** -- **Bump Minimum PHP Version to be 7.1 (Do not merge until 5.24 RC is cut) ([111](https://github.com/civicrm/civicrm-backdrop/pull/111))** +- **[REF] Simplify obtuse boolean expressions + ([16819](https://github.com/civicrm/civicrm-core/pull/16819))** -- **dev/core#1675 and dev/core#1695 - Revert part of DB package upgrade that is causing transaction issues ([289](https://github.com/civicrm/civicrm-packages/pull/289))** +- **[REF] Remove titleHeader var + ([16816](https://github.com/civicrm/civicrm-core/pull/16816))** -## <a name="misc"></a>Miscellany +- **[REF] simplify references to civicrm_acl + ([16671](https://github.com/civicrm/civicrm-core/pull/16671))** ## <a name="credits"></a>Credits This release was developed by the following code authors: -a-n The Artists Information Company - William Mortada; AGH Strategies - Alice Frumin, Andrew Hunt; Alexy Mikhailichenko; Andrei Mondoc; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; iXiam - César Ramos; JMA Consulting - Seamus Lee; Joinery - Allen Shaw; Kartik Kathuria; Lighthouse Design and Consulting - Brian Shaughnessy; Makoa - Usha F. Matisson; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Naomi Rosenberg; Ray Wright; sushantpaste; SYSTOPIA Organisationsberatung - Björn Endres; Timbsoft Technologies - Tunbola Ogunwande; Wikimedia Foundation - Eileen McNaughton +a-n The Artists Information Company - William Mortada; AGH Strategies - Alice +Frumin, Andrew Hunt; Alexy Mikhailichenko; Andrei Mondoc; Christian Wach; Circle +Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, +Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; +Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; iXiam - César +Ramos; JMA Consulting - Seamus Lee; Joinery - Allen Shaw; Kartik Kathuria; +Lighthouse Design and Consulting - Brian Shaughnessy; Makoa - Usha F. Matisson; +Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; +Naomi Rosenberg; Ray Wright; OSSeed Technologies LLP - Sushant Paste; SYSTOPIA +Organisationsberatung - Björn Endres; Timbsoft Technologies - Tunbola Ogunwande; +Wikimedia Foundation - Eileen McNaughton Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments: -a-n The Artists Information Company - William Mortada; AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Justin Freeman; Andrei Mondoc; Artful Robot - Rich Lott; British Humanist Association - Andrew West; Christian Wach; Circle Interactive - Pradeep Nayak; civibot[bot]; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Nicolas Ganivet, Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Digitalcourage - Detlev Sieber; freeform-sg; Fuzion - Jitendra Purohit, Luke Stewart; Greenpeace Central and Eastern Europe - Patrick Figel; Jamie Tillman; JMA Consulting - Monish Deb, Seamus Lee; Joinery - Allen Shaw; Kartik Kathuria; Korlon - Stuart Gaston; Megaphone Technology Consulting - Jon Goldberg; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire; Richard van Oosterhout; Skvare - Mark Hanna; Squiffle Consulting - Aidan Saunders; sushantpaste; SYSTOPIA Organisationsberatung - Björn Endres; Tadpole Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton +Agileware - Justin Freeman; Artful Robot - Rich Lott; British Humanist +Association - Andrew West; CiviDesk - Nicolas Ganivet; Coop SymbioTIC - Mathieu +Lutfy; Digitalcourage - Detlev Sieber; Freeform Solutions - S. Gray; Fuzion - +Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick Figel; Jamie +Tillman; JMA Consulting - Monish Deb; Korlon - Stuart Gaston; MJCO - Mikey +O'Toole; Richard van Oosterhout; Skvare - Mark Hanna; Squiffle Consulting - +Aidan Saunders; Tadpole Collective - Kevin Cristiano; ## <a name="feedback"></a>Feedback