X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=release-notes%2F5.46.0.md;h=1830506bc8b923004c4e374ca8c60c3a67dee3dc;hb=ee28499859f7153d1bdfa4c046a44fe1f3a0ed67;hp=1cf3e023464c4b2c011d07c11f3c91cf586bd9e3;hpb=59dd77c6fde181e893ef275a12abb991997b60d4;p=civicrm-core.git diff --git a/release-notes/5.46.0.md b/release-notes/5.46.0.md index 1cf3e02346..1830506bc8 100644 --- a/release-notes/5.46.0.md +++ b/release-notes/5.46.0.md @@ -1,6 +1,6 @@ # CiviCRM 5.46.0 -Released February 2, 2022 +Released February 3, 2022 - **[Synopsis](#synopsis)** - **[Features](#features)** @@ -13,377 +13,660 @@ Released February 2, 2022 | *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?** | **yes** | +| **Fix problems installing or upgrading to a previous version?** | **yes** | +| **Introduce features?** | **yes** | +| **Fix bugs?** | **yes** | ## Features ### Core CiviCRM -- **crm- Missing Summary ([22303](https://github.com/civicrm/civicrm-core/pull/22303))** +- **re-jig demo roles to add restricted user + ([dev/core#2773](https://lab.civicrm.org/dev/core/-/issues/2773): + [22377](https://github.com/civicrm/civicrm-core/pull/22377))** -## Bugs resolved + Adds an ACL to demo data. -### Core CiviCRM +- **When adding custom data set change default selected option + ([dev/core#2977](https://lab.civicrm.org/dev/core/-/issues/2977): + [22244](https://github.com/civicrm/civicrm-core/pull/22244))** + + Changes the defaults when adding custom data sets to make them more user + friendly. + +- **Expose email on hold as filter for reports + ([dev/core#3012](https://lab.civicrm.org/dev/core/-/issues/3012): + [22357](https://github.com/civicrm/civicrm-core/pull/22357))** -- **dev/core#3028 - For invalid greetings, return '' instead of failing ([22650](https://github.com/civicrm/civicrm-core/pull/22650))** + Adds a email on hold filter to reports. -- **Extensions - Add dependency status check ([22640](https://github.com/civicrm/civicrm-core/pull/22640))** +- **Increment recommended PHP version + ([dev/core#2996](https://lab.civicrm.org/dev/core/-/issues/2996): + [22265](https://github.com/civicrm/civicrm-core/pull/22265))** -- **ExtensionUpgrades - Skip trying to upgrade missing dependencies ([22623](https://github.com/civicrm/civicrm-core/pull/22623))** + Changes the minimum PHP version to 7.3 and the recommended PHP version to 7.4. -- **APIv4 - Rename 'ReadOnly' trait to 'ReadOnlyEntity' to avoid PHP error ([22626](https://github.com/civicrm/civicrm-core/pull/22626))** +- **APIv4 Explorer - Make selected language and format bookmarkable + ([22233](https://github.com/civicrm/civicrm-core/pull/22233))** -- **SearchKit - Fix running searches for anonymous users ([22597](https://github.com/civicrm/civicrm-core/pull/22597))** + The APIv4 explorer already places params in the URL for easy bookmarking. + This extends it to work for the selected language tab and the selected output + format. -- **Use api for entityRole - addresses save issue on the form ([22589](https://github.com/civicrm/civicrm-core/pull/22589))** +- **SearchKit - Contextual "View" button + ([dev/core#3016](https://lab.civicrm.org/dev/core/-/issues/3016): + [22367](https://github.com/civicrm/civicrm-core/pull/22367))** -- **[REF] Upgrade JQuery UI to 1.13.0 ([22583](https://github.com/civicrm/civicrm-core/pull/22583))** + Improves the SearchKit user interface -- **[dev/core#3029] Avoid risking a TypeError when evaluating tokens for non-existent custom fields ([22537](https://github.com/civicrm/civicrm-core/pull/22537))** +- **SearchKit - Add links for CustomField and CustomGroup entities + ([22302](https://github.com/civicrm/civicrm-core/pull/22302))** -- **SearchKit - Fix token selector to use expression alias ([22539](https://github.com/civicrm/civicrm-core/pull/22539))** + Improves SearchKit user interface by adding links to custom field and custom + group entities. -- **SearchKit - Facilitate popup forms ([22490](https://github.com/civicrm/civicrm-core/pull/22490))** +- **SearchKit - Allow functions in the WHERE clause + ([22241](https://github.com/civicrm/civicrm-core/pull/22241))** -- **Cleanup test class ([22493](https://github.com/civicrm/civicrm-core/pull/22493))** + Adds an advanced feature for SearchKit which allows SQL functions in the + WHERE clause. -- **dev/core#3026 - 5.46 version of 22478 ([22479](https://github.com/civicrm/civicrm-core/pull/22479))** +- **SearchKit - Import/Export saved search configuration + ([22229](https://github.com/civicrm/civicrm-core/pull/22229))** -- **Crash when adding a relationship when CiviMember is disabled ([22451](https://github.com/civicrm/civicrm-core/pull/22451))** + Provides a UI for importing and exporting SavedSearches in JSON format. This + allows power-users to copy and paste their Searches between sites. For + extension developers, includes a direct link to generate a .mgd.php file from + the API Explorer. -- **Use field value function to get html signature ([22445](https://github.com/civicrm/civicrm-core/pull/22445))** +- **SearchKit - Facilitate popup forms + ([22490](https://github.com/civicrm/civicrm-core/pull/22490))** -- **fixes report#93: SearchKit shows broken external URLs ([22437](https://github.com/civicrm/civicrm-core/pull/22437))** + This adds two bits of utility code to facilitate adding a popup form to an + Afform containing a Search Display. -- **Fix input type for smarty number formatting (more forgiving) ([22429](https://github.com/civicrm/civicrm-core/pull/22429))** +- **SearchKit - Allow aggregate columns to be links + ([22356](https://github.com/civicrm/civicrm-core/pull/22356))** -- **[NFC] isDir unit test fails on php 7 'min' matrix ([22418](https://github.com/civicrm/civicrm-core/pull/22418))** + Allows aggregate columns to be rendered as a link in SearchKit Displays -- **Remove unnecessary pass-by-ref ([22393](https://github.com/civicrm/civicrm-core/pull/22393))** +- **CustomGroup - Add pseudoconstant for extends column + ([22282](https://github.com/civicrm/civicrm-core/pull/22282))** -- **Privatise function ([22392](https://github.com/civicrm/civicrm-core/pull/22392))** + Adds missing pseudoconstant to schema, which will allow a SearchKit-based + display of custom groups. -- **[REF] Remove handling for relationshipID ([22391](https://github.com/civicrm/civicrm-core/pull/22391))** +- **Afform - UI and contextual titles for search displays + ([22319](https://github.com/civicrm/civicrm-core/pull/22319))** -- **Ensure getDuplicateContacts always returns an array ([22394](https://github.com/civicrm/civicrm-core/pull/22394))** + Makes it easy to create drilldown search displays, passing in a URL arg to + specify a category/container. E.g. "Custom fields in group X", "Option values + for Individual Prefix", "Email addresses for Bob Smith". -- **REF - Use `CRM_Contact_BAO_ContactType::basicTypes()` instead of hardcoded lists ([22389](https://github.com/civicrm/civicrm-core/pull/22389))** +- **Add system status warning to display scheduled job failures + ([21762](https://github.com/civicrm/civicrm-core/pull/21762))** -- **DedupeRules - Translate contact type labels, respect enabled contact types ([22383](https://github.com/civicrm/civicrm-core/pull/22383))** + Adds a system status message to display scheduled job errors. -- **[REF] Further cleanup on employer create ([22390](https://github.com/civicrm/civicrm-core/pull/22390))** +- **Add system status check for missing dedupe rules + ([22369](https://github.com/civicrm/civicrm-core/pull/22369))** -- **Afform - UI and contextual titles for search displays ([22319](https://github.com/civicrm/civicrm-core/pull/22319))** + Adds a system status check to alert system administrators when an unsupervised + and/or supervised dedupe rule is missing. -- **Smarty modifier - stop using isset to check taxTerm ([22323](https://github.com/civicrm/civicrm-core/pull/22323))** +- **Extensions - Add dependency status check + ([22640](https://github.com/civicrm/civicrm-core/pull/22640))** -- **dev/core#2752 Allow financial_trxns to be viewed ([21178](https://github.com/civicrm/civicrm-core/pull/21178))** + Adds a extensions dependency status check. -- **Remove unused function ([22388](https://github.com/civicrm/civicrm-core/pull/22388))** +- **Improve accessibility - associate label and fields + ([22361](https://github.com/civicrm/civicrm-core/pull/22361))** -- **(NFC) Cleanup test class ([22384](https://github.com/civicrm/civicrm-core/pull/22384))** + Associates the labels on the event location form with the relevant inputs to + improve accessibility for screen reader users. -- **dev/core#3001 escape single quotes when rendering tokens in html format ([22387](https://github.com/civicrm/civicrm-core/pull/22387))** +- **Add state name to export fields + ([22318](https://github.com/civicrm/civicrm-core/pull/22318))** -- **5.45.0 release notes: added late changes ([22386](https://github.com/civicrm/civicrm-core/pull/22386))** + Adds the ability to export the state name when exporting contacts. -- **Add system status check for missing dedupe rules ([22369](https://github.com/civicrm/civicrm-core/pull/22369))** +- **Add authx_login() API for backend script authentication (alt) + ([22292](https://github.com/civicrm/civicrm-core/pull/22292))** -- **Ensure dashboardLinks assigned to prevent e-notice ([22378](https://github.com/civicrm/civicrm-core/pull/22378))** + Adds a function to login as a user. It is cross-platform; accepts contact ID, + user ID, or username; and it updates relevant services (eg Civi session; + Drupal $user; MySQL @civicrm_user_id). -- **APIv4 Explorer - Format array params using add methods instead of set ([22382](https://github.com/civicrm/civicrm-core/pull/22382))** +### CiviContribute -- **[Ref] Add getter for priceSetID and use full form flow ([22267](https://github.com/civicrm/civicrm-core/pull/22267))** +- **Payments - Where do we store IDs from payment processor? (Work Towards + [dev/financial#57](https://lab.civicrm.org/dev/financial/-/issues/57): + [21916](https://github.com/civicrm/civicrm-core/pull/21916))** -- **SearchKit - Fix editable dates on standalone form ([22366](https://github.com/civicrm/civicrm-core/pull/22366))** + Hides the recur trxn_id if it matches the processor_id. -- **SearchKit - Contextual "View" button ([22367](https://github.com/civicrm/civicrm-core/pull/22367))** +- **Financial entity permissions (Work Towards + [dev/core#2752](https://lab.civicrm.org/dev/core/-/issues/2752): + [21178](https://github.com/civicrm/civicrm-core/pull/21178) and + [21181](https://github.com/civicrm/civicrm-core/pull/21181))** -- **Fix E_WARNING access array offset on null when creating new contribution page ([22373](https://github.com/civicrm/civicrm-core/pull/22373))** + Allows financial_trxns to be viewed and use ACL, not blanket permissions on + FinancialAccount, FinancialType, EntityFinancialAccount. -- **dev/report#90 - Don't crash search_kit on upgrade from 5.35 ([22375](https://github.com/civicrm/civicrm-core/pull/22375))** +- **Demo sample data - Add in some mixed currency contributions + ([22307](https://github.com/civicrm/civicrm-core/pull/22307))** -- **dev/core#2773 Add an ACL to demo data ([22377](https://github.com/civicrm/civicrm-core/pull/22377))** + Improves contribution sample data by adding some mixed currency contributions. -- **enotice fix (with default modifiers) ([22372](https://github.com/civicrm/civicrm-core/pull/22372))** +- **Add recurring conributions to sample data + ([22296](https://github.com/civicrm/civicrm-core/pull/22296))** -- **Fix "Import Multi-Value Custom Data" ([22365](https://github.com/civicrm/civicrm-core/pull/22365))** + Improves contributions sample data by adding recurring contributions. -- **Do not escape showHideBlocks by default ([22371](https://github.com/civicrm/civicrm-core/pull/22371))** +## Bugs resolved -- **Formatting cleanup ([22374](https://github.com/civicrm/civicrm-core/pull/22374))** +### Core CiviCRM -- **Ensure we don't get previously set honoree values in receipts ([21483](https://github.com/civicrm/civicrm-core/pull/21483))** +- **"Open in new tab" on .crm-summary-link icons should open contact + page, not summary content. + ([dev/core#2926](https://lab.civicrm.org/dev/core/-/issues/2926): + [22303](https://github.com/civicrm/civicrm-core/pull/22303))** -- **Fix notices on acl page ([22370](https://github.com/civicrm/civicrm-core/pull/22370))** +- **Separate membership payment on contribution form with auto renewal not get + processed (Work Towards + [dev/core#567](https://lab.civicrm.org/dev/core/-/issues/567): + [22275](https://github.com/civicrm/civicrm-core/pull/22275))** -- **SearchKit - Allow aggregate columns to be links ([22356](https://github.com/civicrm/civicrm-core/pull/22356))** + Adds a test shell to ensure membership payments with auto renewal get + processed. -- **Fix PropertyBag setRecurInstallments to accept 0 ([21517](https://github.com/civicrm/civicrm-core/pull/21517))** +- **Avoid warnings for is_dir() when open_basedir is in effect + ([dev/core#2927](https://lab.civicrm.org/dev/core/-/issues/2927): + [22107](https://github.com/civicrm/civicrm-core/pull/22107))** -- **Use new money formatting util for smarty formatting ([22309](https://github.com/civicrm/civicrm-core/pull/22309))** +- **Removes the limit of 15 max values for multiple values can also + be retrieved from URL in reports + ([dev/core#2979](https://lab.civicrm.org/dev/core/-/issues/2979): + [22214](https://github.com/civicrm/civicrm-core/pull/22214))** -- **dev/financial#57 Hide recur trxn_id if it matches recur processor_id ([21916](https://github.com/civicrm/civicrm-core/pull/21916))** +- **Fatal error when merging Housholds (getTemplateForGreeting) + ([dev/core#3028](https://lab.civicrm.org/dev/core/-/issues/3028): + [22650](https://github.com/civicrm/civicrm-core/pull/22650))** -- **Improve accessibility - associate label and fields ([22361](https://github.com/civicrm/civicrm-core/pull/22361))** +- **TypeError when trying to replace tokens for custom fields that don't exist + ([dev/core#3029](https://lab.civicrm.org/dev/core/-/issues/3029): + [22537](https://github.com/civicrm/civicrm-core/pull/22537))** -- **Fix campaign dashboard to work with default escaping ([22364](https://github.com/civicrm/civicrm-core/pull/22364))** +- **Escape single quotes in token html output + ([dev/core#3001](https://lab.civicrm.org/dev/core/-/issues/3001): + [22387](https://github.com/civicrm/civicrm-core/pull/22387) and + [22285](https://github.com/civicrm/civicrm-core/pull/22285))** -- **Fix over-escaping when default escaping is on ([22363](https://github.com/civicrm/civicrm-core/pull/22363))** +- **APIv4 - Rename 'ReadOnly' trait to 'ReadOnlyEntity' to avoid PHP error + ([22626](https://github.com/civicrm/civicrm-core/pull/22626))** -- **Fix escape-by-default ([22362](https://github.com/civicrm/civicrm-core/pull/22362))** +- **APIv4 - Fix saving NULL as custom field value + ([22328](https://github.com/civicrm/civicrm-core/pull/22328))** -- **(dev/core#3012) Expose email on hold as filter for report ([22357](https://github.com/civicrm/civicrm-core/pull/22357))** +- **APIv4 GroupContact create indicates user is added but are not + ([dev/core#2924](https://lab.civicrm.org/dev/core/-/issues/2924): + [22322](https://github.com/civicrm/civicrm-core/pull/22322))** -- **APIv4 - Set 'activity_type_id' to required ([22359](https://github.com/civicrm/civicrm-core/pull/22359))** +- **APIv4 - Make Groups a managed entity, fix 'null' bugs in BAO_Group + ([22228](https://github.com/civicrm/civicrm-core/pull/22228))** -- **[NFC] docblock improvements to Import_Field classes ([22360](https://github.com/civicrm/civicrm-core/pull/22360))** +- **APIv4 - Set 'activity_type_id' to required + ([22359](https://github.com/civicrm/civicrm-core/pull/22359))** -- **Allow chart dropdown labels to be translatable. ([22349](https://github.com/civicrm/civicrm-core/pull/22349))** +- **Use api for entityRole - addresses save issue on the form + ([22589](https://github.com/civicrm/civicrm-core/pull/22589))** -- **Add state name to export fields ([22318](https://github.com/civicrm/civicrm-core/pull/22318))** +- **SearchKit - Fix editable dates on standalone form + ([22366](https://github.com/civicrm/civicrm-core/pull/22366))** -- **dev/drupal#172 - module status used incorrectly in drupal 8 to determine which modules to care about for managed entities ([22350](https://github.com/civicrm/civicrm-core/pull/22350))** +- **SearchKit - Fix running searches for anonymous users + ([22597](https://github.com/civicrm/civicrm-core/pull/22597))** -- **Remove unnecessary id attribute. ([22347](https://github.com/civicrm/civicrm-core/pull/22347))** +- **SearchKit - Fix token selector to use expression alias + ([22539](https://github.com/civicrm/civicrm-core/pull/22539))** -- **5.45 ([22354](https://github.com/civicrm/civicrm-core/pull/22354))** +- **SearchKit - Fix UI for configuring display pager limit + ([22321](https://github.com/civicrm/civicrm-core/pull/22321))** -- **Fix tests that fail after 2021 ([22352](https://github.com/civicrm/civicrm-core/pull/22352))** +- **SearchKit - Fix column headers for custom fields in default display + ([22331](https://github.com/civicrm/civicrm-core/pull/22331))** -- **SqlParallel - Enable more tests. Fix compatiblity with `release_time` ([22326](https://github.com/civicrm/civicrm-core/pull/22326))** +- **SearchKit/Form: exposing a Date custom field has invalid year range + ([dev/report#84](https://lab.civicrm.org/dev/report/-/issues/84): + [22234](https://github.com/civicrm/civicrm-core/pull/22234))** -- **dev/drupal#172 - Deprecated function call in Drupal 9.3 ([22337](https://github.com/civicrm/civicrm-core/pull/22337))** +- **SearchKit: URLs to external sites no longer render + ([dev/report#93](https://lab.civicrm.org/dev/report/-/issues/93): + [22437](https://github.com/civicrm/civicrm-core/pull/22437))** -- **Use JS escaping for {ts} calls in a JS context ([22348](https://github.com/civicrm/civicrm-core/pull/22348))** +- **SearchKit: Chicken-and-egg problem upgrading from 5.35.2 to 5.44.0 + ([dev/report#90](https://lab.civicrm.org/dev/report/-/issues/90): + [22375](https://github.com/civicrm/civicrm-core/pull/22375))** -- **Fix membership test fail for Dec 31 ([22351](https://github.com/civicrm/civicrm-core/pull/22351))** + Don't crash SearchKit on upgrade from 5.35. -- **Add workflow template classes for contributions ([22340](https://github.com/civicrm/civicrm-core/pull/22340))** +- **DedupeRules - Translate contact type labels, respect enabled contact types + ([22383](https://github.com/civicrm/civicrm-core/pull/22383))** -- **SearchKit - Allow functions in the WHERE clause ([22241](https://github.com/civicrm/civicrm-core/pull/22241))** + Fixes up the Dedupe Rules page to properly handle contact types. -- **dev/core#2752 Use acl, not blanket permissions on FinancialAccount, FinancialType, EntityFinancialAccount ([21181](https://github.com/civicrm/civicrm-core/pull/21181))** +- **Allow chart dropdown labels to be translatable. + ([22349](https://github.com/civicrm/civicrm-core/pull/22349))** -- **[REF] Deprecated old getContributionStatuses ([22345](https://github.com/civicrm/civicrm-core/pull/22345))** +- **SqlParallel - Enable more tests. Fix compatiblity with `release_time` + ([22326](https://github.com/civicrm/civicrm-core/pull/22326))** -- **dev/core#3001 escape single quotes when rendering tokens in html format ([22285](https://github.com/civicrm/civicrm-core/pull/22285))** +- **Use JS escaping for {ts} calls in a JS context + ([22348](https://github.com/civicrm/civicrm-core/pull/22348))** -- **[REF] Simplify getContributionStatuses ([22280](https://github.com/civicrm/civicrm-core/pull/22280))** +- **Find Activities Search, default search option for Activity Status will + exclude Activities by default which do not have a status of Scheduled or + Completed. Confuses and frustrates End Users. + ([21596](https://github.com/civicrm/civicrm-core/pull/21596))** -- **5.45 to master ([22342](https://github.com/civicrm/civicrm-core/pull/22342))** +- **Wrap another set of hardcoded strings in {ts} + ([22315](https://github.com/civicrm/civicrm-core/pull/22315))** -- **SearchKit - Fix UI for configuring display pager limit ([22321](https://github.com/civicrm/civicrm-core/pull/22321))** +- **Display label before input elements on SMTP settings page + ([22304](https://github.com/civicrm/civicrm-core/pull/22304))** -- **[NFC] CRM_Core_Exception incorrectly called without message ([22339](https://github.com/civicrm/civicrm-core/pull/22339))** +- **ExtensionUpgrades - Skip trying to upgrade missing dependencies + ([22623](https://github.com/civicrm/civicrm-core/pull/22623))** -- **Find Activities Search, default search option for Activity Status will exclude Activities by default which do not have a status of Scheduled or Completed. Confuses and frustrates End Users. ([21596](https://github.com/civicrm/civicrm-core/pull/21596))** +- **Fix input type for Smarty number formatting (more forgiving) + ([22429](https://github.com/civicrm/civicrm-core/pull/22429))** -- **Fix params passed to setStatus method ([22338](https://github.com/civicrm/civicrm-core/pull/22338))** +- **Ensure getDuplicateContacts always returns an array + ([22394](https://github.com/civicrm/civicrm-core/pull/22394))** -- **Fix Profile helptext menu reference to reCaptcha (by r4zoli) ([22333](https://github.com/civicrm/civicrm-core/pull/22333))** +- **Ensure dashboardLinks assigned to prevent e-notice + ([22378](https://github.com/civicrm/civicrm-core/pull/22378))** -- **Wrap another set of hardcoded strings in {ts} ([22315](https://github.com/civicrm/civicrm-core/pull/22315))** +- **enotice fix (with default modifiers) + ([22372](https://github.com/civicrm/civicrm-core/pull/22372))** -- **Fix inaccuracies and mistakes in comments (especially phpdoc comments) ([22334](https://github.com/civicrm/civicrm-core/pull/22334))** +- **Fix "Import Multi-Value Custom Data" + ([22365](https://github.com/civicrm/civicrm-core/pull/22365))** -- **Correctly mark updateStatusMessage method as static ([22335](https://github.com/civicrm/civicrm-core/pull/22335))** +- **Do not escape showHideBlocks by default + ([22371](https://github.com/civicrm/civicrm-core/pull/22371))** -- **Fix typo. CRM_Core_Execption should be CRM_Core_Exception ([22336](https://github.com/civicrm/civicrm-core/pull/22336))** +- **Fix notices on ACL page + ([22370](https://github.com/civicrm/civicrm-core/pull/22370))** -- **Remove unused method getGrantStatusOptGroup ([22332](https://github.com/civicrm/civicrm-core/pull/22332))** +- **Fix PropertyBag setRecurInstallments to accept 0 + ([21517](https://github.com/civicrm/civicrm-core/pull/21517))** -- **Fix JS Error for Free event with multiple participant on registration… ([22310](https://github.com/civicrm/civicrm-core/pull/22310))** +- **Fix over-escaping when default escaping is on + ([22363](https://github.com/civicrm/civicrm-core/pull/22363))** -- **SearchKit - Fix column headers for custom fields in default display ([22331](https://github.com/civicrm/civicrm-core/pull/22331))** +- **Fix escape-by-default + ([22362](https://github.com/civicrm/civicrm-core/pull/22362))** -- **APIv4 - Fix saving NULL as custom field value ([22328](https://github.com/civicrm/civicrm-core/pull/22328))** +- **Fix params passed to setStatus method + ([22338](https://github.com/civicrm/civicrm-core/pull/22338))** -- **APIv4 - Set default status when creating GroupContact record ([22322](https://github.com/civicrm/civicrm-core/pull/22322))** +- **Fix Profile helptext menu reference to reCaptcha (by r4zoli) + ([22333](https://github.com/civicrm/civicrm-core/pull/22333))** -- **Add authx_login() API for backend script authentication (alt) ([22292](https://github.com/civicrm/civicrm-core/pull/22292))** +- **Fix inaccuracies and mistakes in comments (especially phpdoc comments) + ([22334](https://github.com/civicrm/civicrm-core/pull/22334))** -- **Demo sample data - Add in some mixed currency contributions ([22307](https://github.com/civicrm/civicrm-core/pull/22307))** +- **Correctly mark updateStatusMessage method as static + ([22335](https://github.com/civicrm/civicrm-core/pull/22335))** -- **Allow text to be translated and fix URL paths in calls to docURL() function. ([22311](https://github.com/civicrm/civicrm-core/pull/22311))** +- **Fix typo. CRM_Core_Execption should be CRM_Core_Exception + ([22336](https://github.com/civicrm/civicrm-core/pull/22336))** -- **Event Registration: initialize array ([22312](https://github.com/civicrm/civicrm-core/pull/22312))** +- **APIv3 - Fix overzealous pseudoconstant matching + ([22298](https://github.com/civicrm/civicrm-core/pull/22298))** -- **5.45 ([22317](https://github.com/civicrm/civicrm-core/pull/22317))** +- **Allow text to be translated and fix URL paths in calls to docURL() function. + ([22311](https://github.com/civicrm/civicrm-core/pull/22311))** -- **APIv3 - Fix overzealous pseudoconstant matching ([22298](https://github.com/civicrm/civicrm-core/pull/22298))** +- **Fix char-set for default escaping + ([22306](https://github.com/civicrm/civicrm-core/pull/22306))** -- **SearchKit - Add links for CustomField and CustomGroup entities ([22302](https://github.com/civicrm/civicrm-core/pull/22302))** +- **Crash when adding a relationship when CiviMember is disabled + ([22451](https://github.com/civicrm/civicrm-core/pull/22451))** -- **E-notice fix (smarty) ([22308](https://github.com/civicrm/civicrm-core/pull/22308))** +- **Resources: set language-specific cacheCode, fixes AngularJS translation with + multilingual ([22236](https://github.com/civicrm/civicrm-core/pull/22236))** -- **Fix char-set for default escaping ([22306](https://github.com/civicrm/civicrm-core/pull/22306))** +- **Do not default-escape weight field on order + ([22256](https://github.com/civicrm/civicrm-core/pull/22256))** -- **SearchKit - Tweak export explorer link icon + format ([22300](https://github.com/civicrm/civicrm-core/pull/22300))** +- **Move require_once for Smarty modifier due to order issues + ([22252](https://github.com/civicrm/civicrm-core/pull/22252))** -- **Display label before input elements on SMTP settings page ([22304](https://github.com/civicrm/civicrm-core/pull/22304))** +- **Contact/BAO/Query.php: fix searching for whitespace + ([22240](https://github.com/civicrm/civicrm-core/pull/22240))** -- **Do not apply default escaping to multiselects on currency form ([22294](https://github.com/civicrm/civicrm-core/pull/22294))** +- **Use new money formatting util for Smarty formatting + ([22309](https://github.com/civicrm/civicrm-core/pull/22309))** -- **Fix broken links in default modifier mode on manage contributions ([22290](https://github.com/civicrm/civicrm-core/pull/22290))** +- **Smarty variables] Remove another isset - deferredFinancialType + ([22183](https://github.com/civicrm/civicrm-core/pull/22183))** -- **Merge 5.45 to master ([22297](https://github.com/civicrm/civicrm-core/pull/22297))** +- **Smarty variables] Another isset bites the dust + ([22186](https://github.com/civicrm/civicrm-core/pull/22186))** -- **Follow up fix on recur data ([22301](https://github.com/civicrm/civicrm-core/pull/22301))** +- **Smarty variables] Remove isset from batch form + ([22187](https://github.com/civicrm/civicrm-core/pull/22187))** -- **Add recurring conributions to sample data ([22296](https://github.com/civicrm/civicrm-core/pull/22296))** +- **[Smarty variables] remove isset from merge screen + ([22193](https://github.com/civicrm/civicrm-core/pull/22193))** -- **[REF] move code into the function ([22288](https://github.com/civicrm/civicrm-core/pull/22288))** +- **[Smarty variables] Fix overzealous escaping with Smarty default escaping + ([22194](https://github.com/civicrm/civicrm-core/pull/22194))** -- **Apiv4 - Make Groups a managed entity, fix 'null' bugs in BAO_Group ([22228](https://github.com/civicrm/civicrm-core/pull/22228))** +- **[Smarty variables] Remove issets relating to auto_renew + ([22195](https://github.com/civicrm/civicrm-core/pull/22195))** -- **Enotice fixes on ContributionPage dash ([22289](https://github.com/civicrm/civicrm-core/pull/22289))** +- **[Smarty variables] Remove issets from payment processor form + ([22192](https://github.com/civicrm/civicrm-core/pull/22192))** -- **[REF] Stop passing this as form, set in function ([22287](https://github.com/civicrm/civicrm-core/pull/22287))** +- **Smarty modifier - stop using isset to check taxTerm + ([22323](https://github.com/civicrm/civicrm-core/pull/22323))** -- **Add workflow template for recurring cancelled ([21611](https://github.com/civicrm/civicrm-core/pull/21611))** +- **E-notice fix (Smarty) + ([22308](https://github.com/civicrm/civicrm-core/pull/22308))** -- **SearchKit - Import/Export saved search configuration ([22229](https://github.com/civicrm/civicrm-core/pull/22229))** +## CiviCampaign -- **[REF] Remove now non-variable variables from previously shared code ([22284](https://github.com/civicrm/civicrm-core/pull/22284))** +- **Cleanup Smarty e-notices on campaign dashboard + ([22283](https://github.com/civicrm/civicrm-core/pull/22283))** -- **Cleanup Smarty e-notices on campaign dashboard ([22283](https://github.com/civicrm/civicrm-core/pull/22283))** +- **Fix campaign dashboard to work with default escaping + ([22364](https://github.com/civicrm/civicrm-core/pull/22364))** -- **[REF] Duplicate & unshare processFormContribution ([22276](https://github.com/civicrm/civicrm-core/pull/22276))** +## CiviCase -- **CustomGroup - Add pseudoconstant for extends column ([22282](https://github.com/civicrm/civicrm-core/pull/22282))** +- **Case activity won't open without a source + ([dev/core#2825](https://lab.civicrm.org/dev/core/-/issues/2825): + [22243](https://github.com/civicrm/civicrm-core/pull/22243))** -- **dev/core#2996 Increment php recommndations ([22265](https://github.com/civicrm/civicrm-core/pull/22265))** +- **APIv4: Confusing error when calling CaseType API + ([dev/core#2984](https://lab.civicrm.org/dev/core/-/issues/2984): + [22231](https://github.com/civicrm/civicrm-core/pull/22231))** -- **dev/core#567 Add test shell ([22275](https://github.com/civicrm/civicrm-core/pull/22275))** +## CiviContribution -- **Remove unused function CRM/Utils/Mail/EmailProcessor::cleanupDir ([22278](https://github.com/civicrm/civicrm-core/pull/22278))** +- **Repeat Contributions CiviReport warnings: Formatting non-numeric values is + no longer supported + ([dev/core#2982](https://lab.civicrm.org/dev/core/-/issues/2982): + [22217](https://github.com/civicrm/civicrm-core/pull/22217))** -- **Remove unnecessary pass-by-ref ([22279](https://github.com/civicrm/civicrm-core/pull/22279))** +- **Do not apply default escaping to multiselects on currency form + ([22294](https://github.com/civicrm/civicrm-core/pull/22294))** -- **[NFC] Cleanup in Authorize.net test class ([22272](https://github.com/civicrm/civicrm-core/pull/22272))** +- **Fix broken links in default modifier mode on manage contributions + ([22290](https://github.com/civicrm/civicrm-core/pull/22290))** -- **Move two more functions to financialProcessor ([21927](https://github.com/civicrm/civicrm-core/pull/21927))** +- **Enotice fixes on ContributionPage dash + ([22289](https://github.com/civicrm/civicrm-core/pull/22289))** -- **APIv4 Explorer - Make selected language and format bookmarkable ([22233](https://github.com/civicrm/civicrm-core/pull/22233))** +- **Fix E_WARNING access array offset on null when creating new contribution + page ([22373](https://github.com/civicrm/civicrm-core/pull/22373))** -- **Fix test to use full form flow ([22266](https://github.com/civicrm/civicrm-core/pull/22266))** +- **Ensure we don't get previously set honoree values in receipts + ([21483](https://github.com/civicrm/civicrm-core/pull/21483))** -- **[NFC] - Try to work around failing tests ([22269](https://github.com/civicrm/civicrm-core/pull/22269))** +- **Follow up fix on recur data + ([22301](https://github.com/civicrm/civicrm-core/pull/22301))** -- **5.45 ([22271](https://github.com/civicrm/civicrm-core/pull/22271))** +## CiviEvent -- **dev/core#2927 - Avoid warnings for is_dir() when open_basedir is in effect ([22107](https://github.com/civicrm/civicrm-core/pull/22107))** +- **Event Registration: initialize array + ([22312](https://github.com/civicrm/civicrm-core/pull/22312))** -- **Resources: set language-specific cacheCode, fixes AngularJS translation with multilingual ([22236](https://github.com/civicrm/civicrm-core/pull/22236))** + Minor code nitpick to avoid a PHP fatal on PHP 8.0 in certain unusual + circumstances. -- **Add system status warning to display scheduled job failures ([21762](https://github.com/civicrm/civicrm-core/pull/21762))** +- **Fix JS Error for Free event with multiple participant on registration + ([22310](https://github.com/civicrm/civicrm-core/pull/22310))** -- **[REF] Remove more params that are unused now function is not shared ([22261](https://github.com/civicrm/civicrm-core/pull/22261))** +## Drupal Integration -- **Remove handling for always-truthy var being false ([22260](https://github.com/civicrm/civicrm-core/pull/22260))** +- **Deprecated function drupal_get_installed_schema_version() in 9.3, but with a + twist ([dev/drupal#172](https://lab.civicrm.org/dev/drupal/-/issues/172): + [22337](https://github.com/civicrm/civicrm-core/pull/22337) and + [22350](https://github.com/civicrm/civicrm-core/pull/22350))** -- **Rename protected function ([22259](https://github.com/civicrm/civicrm-core/pull/22259))** +- **"Your browser session has expired and we are unable to complete your form + submission" on all D9.2 anonymous sessions + ([dev/drupal#169](https://lab.civicrm.org/dev/drupal/-/issues/169): + [338](https://github.com/civicrm/civicrm-packages/pull/338))** -- **Remove never passed variables ([22258](https://github.com/civicrm/civicrm-core/pull/22258))** + Fixes an error when uploading images to CKEditor via KCFinder. -- **[REF] Duplicate function to allow us to work it out of the code ([22254](https://github.com/civicrm/civicrm-core/pull/22254))** +- **Fix unreplaced template vars in civicrm.settings.php when using drush + installer ([67](https://github.com/civicrm/civicrm-drupal-8/pull/67))** -- **(NFC) APIv4: Add help info for multi-record custom field sets ([22257](https://github.com/civicrm/civicrm-core/pull/22257))** +- **Drupal Full-Text Search block session time out error + ([dev/core#3026](https://lab.civicrm.org/dev/core/-/issues/3026): + [22479](https://github.com/civicrm/civicrm-core/pull/22479))** -- **Smarty variables] Remove another isset - deferredFinancialType ([22183](https://github.com/civicrm/civicrm-core/pull/22183))** +## WordPress Integration -- **Do not default-escape weight field on order ([22256](https://github.com/civicrm/civicrm-core/pull/22256))** +- **Migrate installers to "setup" API + (Work Towards [dev/core#1615](https://lab.civicrm.org/dev/core/-/issues/1615): + [264](https://github.com/civicrm/civicrm-wordpress/pull/264))** -- **[REF] Minor parameter simplification ([22253](https://github.com/civicrm/civicrm-core/pull/22253))** + Perform CLI installations using Civi\Setup. -- **[NFC] Test cleanup ([22251](https://github.com/civicrm/civicrm-core/pull/22251))** +## Miscellany -- **[NFC] Minor cleanup in test class ([22249](https://github.com/civicrm/civicrm-core/pull/22249))** +- **Add workflow template for recurring cancelled + ([21611](https://github.com/civicrm/civicrm-core/pull/21611))** -- **Move require_once for smarty modifier due to order issues ([22252](https://github.com/civicrm/civicrm-core/pull/22252))** +- **Add workflow template classes for contributions + ([22340](https://github.com/civicrm/civicrm-core/pull/22340))** -- **dev/core#2825 - Make source contact required for activities on the form ([22243](https://github.com/civicrm/civicrm-core/pull/22243))** +- **Use field value function to get html signature + ([22445](https://github.com/civicrm/civicrm-core/pull/22445))** -- **Contributor key: Add Matt Trim ([22248](https://github.com/civicrm/civicrm-core/pull/22248))** +- **SearchKit - Tweak export explorer link icon + format + ([22300](https://github.com/civicrm/civicrm-core/pull/22300))** -- **dev/core#2977 - For custom group creation, flip the default display settings ([22244](https://github.com/civicrm/civicrm-core/pull/22244))** +- **Expose contact ID in getContactInfo method in + CRM/Mailing/Event/BAO/Queue.php + ([dev/core#2962](https://lab.civicrm.org/dev/core/-/issues/2962): + [22096](https://github.com/civicrm/civicrm-core/pull/22096))** -- **Update Brick/Money to 0.5.3 ([22246](https://github.com/civicrm/civicrm-core/pull/22246))** +- **APIv4 Explorer - Format array params using add methods instead of set + ([22382](https://github.com/civicrm/civicrm-core/pull/22382))** -- **Contact/BAO/Query.php: fix searching for whitespace ([22240](https://github.com/civicrm/civicrm-core/pull/22240))** +- **Update Brick/Money to 0.5.3 + ([22246](https://github.com/civicrm/civicrm-core/pull/22246))** -- **[REF] Afform - Use APIv4 for managed dashboard ([22213](https://github.com/civicrm/civicrm-core/pull/22213))** +- **Simplify autogenerated boilerplate upgrader class + ([22225](https://github.com/civicrm/civicrm-core/pull/22225))** -- **(dev/core#2962) get contact id for the mailing along with display nam… ([22096](https://github.com/civicrm/civicrm-core/pull/22096))** +- **Upgrade - Bump minimum upgradable version to 4.6.12 + ([22238](https://github.com/civicrm/civicrm-core/pull/22238))** -- **Simplify autogenerated boilerplate upgrader class ([22225](https://github.com/civicrm/civicrm-core/pull/22225))** +- **Move two more functions to financialProcessor + ([21927](https://github.com/civicrm/civicrm-core/pull/21927))** -- **Upgrade - Bump minimum upgradable version to 4.6.12 ([22238](https://github.com/civicrm/civicrm-core/pull/22238))** +- **Formatting cleanup + ([22374](https://github.com/civicrm/civicrm-core/pull/22374))** -- **Smarty variables] Another isset bites the dust ([22186](https://github.com/civicrm/civicrm-core/pull/22186))** +- **Rename protected function + ([22259](https://github.com/civicrm/civicrm-core/pull/22259))** -- **(REF) CRM/Upgrade - Remove unused entrypoint `verifyPreDBstate()` ([22237](https://github.com/civicrm/civicrm-core/pull/22237))** +- **Contributor key: Add Matt Trim + ([22248](https://github.com/civicrm/civicrm-core/pull/22248))** -- **Smarty variables] Remove isset from batch form ([22187](https://github.com/civicrm/civicrm-core/pull/22187))** +- **5.45.0 release notes: added late changes + ([22386](https://github.com/civicrm/civicrm-core/pull/22386))** -- **Afform - Set date-range defaults ([22234](https://github.com/civicrm/civicrm-core/pull/22234))** +- **Remove handling for always-truthy var being false + ([22260](https://github.com/civicrm/civicrm-core/pull/22260))** -- **5.45 ([22232](https://github.com/civicrm/civicrm-core/pull/22232))** +- **Remove unnecessary ID attribute. + ([22347](https://github.com/civicrm/civicrm-core/pull/22347))** -- **NFC - Delete boilerplate comments and empty functions from upgrade classes ([22226](https://github.com/civicrm/civicrm-core/pull/22226))** +- **Remove never passed variables + ([22258](https://github.com/civicrm/civicrm-core/pull/22258))** -- **[Smarty variables] remove isset from merge screen ([22193](https://github.com/civicrm/civicrm-core/pull/22193))** +- **Remove unused function + ([22388](https://github.com/civicrm/civicrm-core/pull/22388))** -- **dev/core#2984 - Clarify API error when component is disabled ([22231](https://github.com/civicrm/civicrm-core/pull/22231))** +- **Initial refactor of createProfileContact groups + ([18158](https://github.com/civicrm/civicrm-core/pull/18158))** -- **(dev/core#2979) remove the limit of 15 max values for multiple values… ([22214](https://github.com/civicrm/civicrm-core/pull/22214))** +- **Deprecated function drupal_get_path() + ([69](https://github.com/civicrm/civicrm-drupal-8/pull/69))** -- **[Smarty variables] Fix overzealous escaping with smarty default escaping ([22194](https://github.com/civicrm/civicrm-core/pull/22194))** +- **Update jquery.tokeninput.js to 1.6.1 + ([336](https://github.com/civicrm/civicrm-packages/pull/336))** -- **[Smarty variables] Remove issets relating to auto_renew ([22195](https://github.com/civicrm/civicrm-core/pull/22195))** +- **Privatise function + ([22392](https://github.com/civicrm/civicrm-core/pull/22392))** -- **[Smarty variables] Remove issets from payment processor form ([22192](https://github.com/civicrm/civicrm-core/pull/22192))** +- **Remove unnecessary pass-by-ref + ([22393](https://github.com/civicrm/civicrm-core/pull/22393))** -- **dev/core#2982 - Deprecated warnings for money formatting in Repeat Contributions CiviReport ([22217](https://github.com/civicrm/civicrm-core/pull/22217))** +- **Remove unused function CRM/Utils/Mail/EmailProcessor::cleanupDir + ([22278](https://github.com/civicrm/civicrm-core/pull/22278))** -- **NFC - Cleanup messy boilerplate ([22224](https://github.com/civicrm/civicrm-core/pull/22224))** +- **Remove unused method getGrantStatusOptGroup + ([22332](https://github.com/civicrm/civicrm-core/pull/22332))** -- **Initial refactor of createProfileContact groups ([18158](https://github.com/civicrm/civicrm-core/pull/18158))** +- **Remove unnecessary pass-by-ref + ([22279](https://github.com/civicrm/civicrm-core/pull/22279))** -- **5.45 ([22222](https://github.com/civicrm/civicrm-core/pull/22222))** +- **(REF) CRM/Upgrade - Remove unused entrypoint `verifyPreDBstate()` + ([22237](https://github.com/civicrm/civicrm-core/pull/22237))** -- **[REF] Add in getVersion override for Drupal 8/9 to support cv testing… ([22220](https://github.com/civicrm/civicrm-core/pull/22220))** +- **(REF) Remove more params that are unused now function is not shared + ([22261](https://github.com/civicrm/civicrm-core/pull/22261))** -- **Deprecated function drupal_get_path() ([69](https://github.com/civicrm/civicrm-drupal-8/pull/69))** +- **(REF) Duplicate function to allow us to work it out of the code + ([22254](https://github.com/civicrm/civicrm-core/pull/22254))** -- **Fix unreplaced template vars in civicrm.settings.php when using drush installer ([67](https://github.com/civicrm/civicrm-drupal-8/pull/67))** +- **(REF) Minor parameter simplification + ([22253](https://github.com/civicrm/civicrm-core/pull/22253))** -- **(Backport) HookTest - Fix execution on PHP 8 ([269](https://github.com/civicrm/civicrm-wordpress/pull/269))** +- **(REF) Add in getVersion override for Drupal 8/9 to support cv testing and + also cv vars:show picking up the right CMS version + ([22220](https://github.com/civicrm/civicrm-core/pull/22220))** -- **(dev/core#1615) wp-cli - Perform CLI installations using Civi\Setup ([264](https://github.com/civicrm/civicrm-wordpress/pull/264))** +- **(REF) Add getter for priceSetID and use full form flow + ([22267](https://github.com/civicrm/civicrm-core/pull/22267))** -- **HookTest - Fix execution on PHP 8 ([266](https://github.com/civicrm/civicrm-wordpress/pull/266))** +- **(REF) Afform - Use APIv4 for managed dashboard + ([22213](https://github.com/civicrm/civicrm-core/pull/22213))** -- **dev/drupal#169 - Fix namespacing in kcfinder ([338](https://github.com/civicrm/civicrm-packages/pull/338))** +- **(REF) Remove handling for relationshipID + ([22391](https://github.com/civicrm/civicrm-core/pull/22391))** -- **Update jquery.tokeninput.js to 1.6.1 ([336](https://github.com/civicrm/civicrm-packages/pull/336))** +- **(REF) Use `CRM_Contact_BAO_ContactType::basicTypes()` instead of hardcoded + lists ([22389](https://github.com/civicrm/civicrm-core/pull/22389))** -## Miscellany +- **(REF) Move code into the function + ([22288](https://github.com/civicrm/civicrm-core/pull/22288))** + +- **(REF) Remove now non-variable variables from previously shared code + ([22284](https://github.com/civicrm/civicrm-core/pull/22284))** + +- **(REF) Duplicate & unshare processFormContribution + ([22276](https://github.com/civicrm/civicrm-core/pull/22276))** + +- **(REF) Stop passing this as form, set in function + ([22287](https://github.com/civicrm/civicrm-core/pull/22287))** + +- **(REF) Deprecated old getContributionStatuses + ([22345](https://github.com/civicrm/civicrm-core/pull/22345))** + +- **(REF) Simplify getContributionStatuses + ([22280](https://github.com/civicrm/civicrm-core/pull/22280))** + +- **(REF) Upgrade jQuery UI to 1.13.0 + ([22583](https://github.com/civicrm/civicrm-core/pull/22583))** + +- **(REF) Further cleanup on employer create + ([22390](https://github.com/civicrm/civicrm-core/pull/22390))** + +- **HookTest - Fix execution on PHP 8 + ([266](https://github.com/civicrm/civicrm-wordpress/pull/266))** + +- **Fix membership test fail for Dec 31 + ([22351](https://github.com/civicrm/civicrm-core/pull/22351))** + +- **Fix tests that fail after 2021 + ([22352](https://github.com/civicrm/civicrm-core/pull/22352))** + +- **Fix test to use full form flow + ([22266](https://github.com/civicrm/civicrm-core/pull/22266))** + +- **Cleanup test class + ([22493](https://github.com/civicrm/civicrm-core/pull/22493))** + +- **(NFC) Cleanup test class + ([22384](https://github.com/civicrm/civicrm-core/pull/22384))** + +- **(NFC) Try to work around failing tests + ([22269](https://github.com/civicrm/civicrm-core/pull/22269))** + +- **(NFC) Cleanup in Authorize.net test class + ([22272](https://github.com/civicrm/civicrm-core/pull/22272))** + +- **(NFC) isDir unit test fails on PHP 7 'min' matrix + ([22418](https://github.com/civicrm/civicrm-core/pull/22418))** + +- **(NFC) APIv4: Add help info for multi-record custom field sets + ([22257](https://github.com/civicrm/civicrm-core/pull/22257))** + +- **(NFC) Test cleanup + ([22251](https://github.com/civicrm/civicrm-core/pull/22251))** + +- **(NFC) Minor cleanup in test class + ([22249](https://github.com/civicrm/civicrm-core/pull/22249))** + +- **(NFC) Cleanup messy boilerplate + ([22224](https://github.com/civicrm/civicrm-core/pull/22224))** + +- **(NFC) Delete boilerplate comments and empty functions from upgrade classes + ([22226](https://github.com/civicrm/civicrm-core/pull/22226))** + +- **(NFC) CRM_Core_Exception incorrectly called without message + ([22339](https://github.com/civicrm/civicrm-core/pull/22339))** + +- **(NFC) Docblock improvements to Import_Field classes + ([22360](https://github.com/civicrm/civicrm-core/pull/22360))** ## Credits This release was developed by the following code authors: -AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman; BrightMinded Ltd - Bradley Taylor; Circle Interactive - Matt Trim; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Jens Schuppe; JMA Consulting - Seamus Lee; Megaphone Technology Consulting - Jon Goldberg; Miguel Almeida; MJW Consulting - Matthew Wire; Progressive Technology Project - Jamie McClelland; Skvare - Sunil Pawar; Squiffle Consulting - Aidan Saunders; Wikimedia Foundation - Eileen McNaughton +AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman; +BrightMinded Ltd - Bradley Taylor; Circle Interactive - Matt Trim; +CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; +Coop SymbioTIC - Mathieu Lutfy; Dave D; Jens Schuppe; +JMA Consulting - Seamus Lee; Megaphone Technology Consulting - Jon Goldberg; +Miguel Almeida; MJW Consulting - Matthew Wire; +Progressive Technology Project - Jamie McClelland; Skvare - Sunil Pawar; +Squiffle Consulting - Aidan Saunders; Wikimedia Foundation - Eileen McNaughton Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments: -Artful Robot - Rich Lott; Ben Mango; Betty Dolfing; BrightMinded Ltd - Bradley Taylor; Christian Wach; Circle Interactive - Matt Trim; civibot[bot]; CiviCoop - Jaap Jansma, Klaas Eikelboom; civicrm-builder; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit, Peter Davis; Greenpeace Central and Eastern Europe - Patrick Figel; Jens Schuppe; JMA Consulting - Joe Murray, Monish Deb, Seamus Lee; Lighthouse Consulting and Design - Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; Mikey O'Toole; MJW Consulting - Matthew Wire; Semper IT - Karin Gerritsen; Skvare - Sunil Pawar; Tadpole Collective - Kevin Cristiano; tapashdatta; Third Sector Design - William Mortada; Wikimedia Foundation - Eileen McNaughton, Elliott Eggleston +Artful Robot - Rich Lott; Ben Mango; Betty Dolfing; Christian Wach; +CiviCoop - Jaap Jansma, Klaas Eikelboom; Coop SymbioTIC - Samuel Vanhove; +Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit, Peter Davis; +Greenpeace Central and Eastern Europe - Patrick Figel; +JMA Consulting - Joe Murray, Monish Deb; Lighthouse Consulting and +Design - Brian Shaughnessy; Mikey O'Toole; Semper IT - Karin Gerritsen; +Tadpole Collective - Kevin Cristiano; tapashdatta; +Third Sector Design - William Mortada; Wikimedia Foundation - Elliott Eggleston