From 7abf553ec42071890bf78c1729965ec81a6e0047 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Mon, 6 Mar 2023 16:13:20 -0500 Subject: [PATCH 1/7] Afform - Fix editing search filters nested within multiple containers --- .../afGuiEditor/elements/afGuiContainer.component.js | 10 +++++----- .../ang/afGuiEditor/elements/afGuiField.component.js | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js b/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js index 06c8648d1a13..79382e2ba4d7 100644 --- a/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js +++ b/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js @@ -78,9 +78,10 @@ } }; - this.getSearchDisplay = function(node) { - var searchKey = $scope.getSearchKey(node); - if (searchKey) { + // Finds a SearchDisplay within this container or within the fieldset containing this container + this.getSearchDisplay = function() { + var searchKey = ctrl.getDataEntity(); + if (searchKey && !ctrl.entityName) { return afGui.getSearchDisplay.apply(null, searchKey.split('.')); } }; @@ -416,8 +417,7 @@ var joinType = ctrl.entityName.split('-join-'); entityType = joinType[1] || (ctrl.editor && ctrl.editor.getEntity(joinType[0]).type); } else { - var searchKey = ctrl.getDataEntity(), - searchDisplay = afGui.getSearchDisplay.apply(null, searchKey.split('.')), + var searchDisplay = ctrl.getSearchDisplay(), fieldName = fieldKey.substr(fieldKey.indexOf('.') + 1), prefix = _.includes(fieldKey, '.') ? fieldKey.split('.')[0] : null; if (prefix) { diff --git a/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js b/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js index 1550f94faaf0..66136f86f657 100644 --- a/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js +++ b/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js @@ -89,8 +89,8 @@ this.getDefn = function() { var defn = afGui.getField(ctrl.container.getFieldEntityType(ctrl.node.name), ctrl.node.name); // Calc fields are specific to a search display, not part of the schema - if (!defn && ctrl.container.getSearchDisplay(ctrl.container.node)) { - var searchDisplay = ctrl.container.getSearchDisplay(ctrl.container.node); + if (!defn && ctrl.container.getSearchDisplay()) { + var searchDisplay = ctrl.container.getSearchDisplay(); defn = _.findWhere(searchDisplay.calc_fields, {name: ctrl.node.name}); } defn = defn || { From 4fc0ba79f808fd521869b12cdfc97e557595d7f7 Mon Sep 17 00:00:00 2001 From: Andie Hunt Date: Wed, 8 Mar 2023 20:08:43 -0500 Subject: [PATCH 2/7] 5.60.0 release notes: raw from script --- release-notes/5.60.0.md | 387 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 387 insertions(+) create mode 100644 release-notes/5.60.0.md diff --git a/release-notes/5.60.0.md b/release-notes/5.60.0.md new file mode 100644 index 000000000000..da44afe35b67 --- /dev/null +++ b/release-notes/5.60.0.md @@ -0,0 +1,387 @@ +# CiviCRM 5.60.0 + +Released March 8, 2023; + +- **[Features](#features)** +- **[Bugs resolved](#bugs)** +- **[Miscellany](#misc)** +- **[Credits](#credits)** + +## Features + +## Bugs resolved + +### Core CiviCRM + +- **Load submitted `fieldSeparator` on back on `Import Datasource` screen ([25758](https://github.com/civicrm/civicrm-core/pull/25758))** + +- **Remove the correct extraneous field separator field ([25753](https://github.com/civicrm/civicrm-core/pull/25753))** + +- **PayPal Prp IPN - Fix incorrect option_group update ([25724](https://github.com/civicrm/civicrm-core/pull/25724))** + +- **Fix for 5.59 upgrade on multilingual ([25733](https://github.com/civicrm/civicrm-core/pull/25733))** + +- **Contribution pages crash for logged-in users when CiviMember is disabled ([25729](https://github.com/civicrm/civicrm-core/pull/25729))** + +- **(dev/core#4147) Add test and fix for various flaky tokens ([25704](https://github.com/civicrm/civicrm-core/pull/25704))** + +- **dev/core#4145 Prevent fatal on event sched reminders when CiviEvent enabled ([25703](https://github.com/civicrm/civicrm-core/pull/25703))** + +- **Stricter typing in Apiv4 ([25706](https://github.com/civicrm/civicrm-core/pull/25706))** + +- **Remove deprecated function calls to Event::del, Membership functions del, OptionValue ([25705](https://github.com/civicrm/civicrm-core/pull/25705))** + +- **5.59 ([25702](https://github.com/civicrm/civicrm-core/pull/25702))** + +- **Remove deprecated use of $ids ([25698](https://github.com/civicrm/civicrm-core/pull/25698))** + +- **5.59 to master ([25699](https://github.com/civicrm/civicrm-core/pull/25699))** + +- **Delete long-deprecated functions ([25696](https://github.com/civicrm/civicrm-core/pull/25696))** + +- **Pull over a few more deprecations + blockDelete deprecation ([25695](https://github.com/civicrm/civicrm-core/pull/25695))** + +- **Address portions of deprecated code replacement ([25693](https://github.com/civicrm/civicrm-core/pull/25693))** + +- **Deprecations for Mailing::delete functions ([25691](https://github.com/civicrm/civicrm-core/pull/25691))** + +- **Deprecations for delete on ACL entities ([25690](https://github.com/civicrm/civicrm-core/pull/25690))** + +- **Remove deprecated functions from tests ([25688](https://github.com/civicrm/civicrm-core/pull/25688))** + +- **Remove 2020-deprecated handling of `legacyAddressCreate` ([25686](https://github.com/civicrm/civicrm-core/pull/25686))** + +- **Remove function noisily deprecated when the world was young (2020) ([25685](https://github.com/civicrm/civicrm-core/pull/25685))** + +- **Remove deprecated function call ([25684](https://github.com/civicrm/civicrm-core/pull/25684))** + +- **Afform - Filter autocomplete fields belonging to a search display ([25646](https://github.com/civicrm/civicrm-core/pull/25646))** + +- **dev/core#4146 Remove (old) Smarty-forward incompatible syntax from Address.tpl ([25669](https://github.com/civicrm/civicrm-core/pull/25669))** + +- **Add gentle deprecation to `debug_log_message` ([25683](https://github.com/civicrm/civicrm-core/pull/25683))** + +- **Log Smarty debug to it's own channel ([25682](https://github.com/civicrm/civicrm-core/pull/25682))** + +- **Smarty notice fix on bank_account_number ([25680](https://github.com/civicrm/civicrm-core/pull/25680))** + +- **Remove unnecessary pass-by-reference ([25678](https://github.com/civicrm/civicrm-core/pull/25678))** + +- **Remove code deprecated in 2018 ([25679](https://github.com/civicrm/civicrm-core/pull/25679))** + +- **Remove empty on location - it should always be set now ([25675](https://github.com/civicrm/civicrm-core/pull/25675))** + +- **Afform: Allow selecting case for relationship ([25618](https://github.com/civicrm/civicrm-core/pull/25618))** + +- **Fix e-notice pattern around location not defined in formButtons.tpl ([25668](https://github.com/civicrm/civicrm-core/pull/25668))** + +- **closes core#4070 - respect default return path ([25309](https://github.com/civicrm/civicrm-core/pull/25309))** + +- **dev/core#4127 move cms user parameters to userSystem ([25585](https://github.com/civicrm/civicrm-core/pull/25585))** + +- **SearchKit - Clarify how to view SQL output ([25671](https://github.com/civicrm/civicrm-core/pull/25671))** + +- **Remove unused variables ([25670](https://github.com/civicrm/civicrm-core/pull/25670))** + +- **Remove unused property - not used since import code refactor `_lineCount` ([25466](https://github.com/civicrm/civicrm-core/pull/25466))** + +- **Remove conditional assignment around `is_deductible` ([25237](https://github.com/civicrm/civicrm-core/pull/25237))** + +- **Event test cleanup, fix test to use submitted form values, rather than require a lot of contorting ([25621](https://github.com/civicrm/civicrm-core/pull/25621))** + +- **Extend testing for ContributionConfirm & consolidate `isSeparateMembershipPayment` ([25270](https://github.com/civicrm/civicrm-core/pull/25270))** + +- **Fix mixin to use `addTemplateDir` ([25667](https://github.com/civicrm/civicrm-core/pull/25667))** + +- **Add noisy deprecation to deprecated function, after universe search ([25662](https://github.com/civicrm/civicrm-core/pull/25662))** + +- **(NFC) crmURL - Add examples and whitespace. Crosslink docs. ([25665](https://github.com/civicrm/civicrm-core/pull/25665))** + +- **Remove forward incompatible syntax from template ([25664](https://github.com/civicrm/civicrm-core/pull/25664))** + +- **Add `crmUrl function` to smarty in the standard way ([25661](https://github.com/civicrm/civicrm-core/pull/25661))** + +- **run `civix update` on `recaptcha`, `legacyCustomSearches`, `financialacls` ([25663](https://github.com/civicrm/civicrm-core/pull/25663))** + +- **ext/* - General update to civix v23.02.0 ([25659](https://github.com/civicrm/civicrm-core/pull/25659))** + +- **Smarty - {htxt} blocks should not be evaluated unless needed ([25653](https://github.com/civicrm/civicrm-core/pull/25653))** + +- **HTML definition for subscription history date ([25655](https://github.com/civicrm/civicrm-core/pull/25655))** + +- **5.59 ([25660](https://github.com/civicrm/civicrm-core/pull/25660))** + +- **Notice fix on preferred_language, when null ([25656](https://github.com/civicrm/civicrm-core/pull/25656))** + +- **Remove legacy handling of locks for discontinued mysql/mariaDB versions ([25654](https://github.com/civicrm/civicrm-core/pull/25654))** + +- **Event registration activity target ([25650](https://github.com/civicrm/civicrm-core/pull/25650))** + +- **Php8.x compatibility - do not try to count NULL ([25652](https://github.com/civicrm/civicrm-core/pull/25652))** + +- **Smarty - Fix warnings about 'mb_truncate' modifier ([25651](https://github.com/civicrm/civicrm-core/pull/25651))** + +- **dev/core#4126 - Fix force-url parameters on case dashboard ([25649](https://github.com/civicrm/civicrm-core/pull/25649))** + +- **Allow (some) permissions with colons ([23782](https://github.com/civicrm/civicrm-core/pull/23782))** + +- **Update Smarty addTemplateDir function signature to future smarty ([25248](https://github.com/civicrm/civicrm-core/pull/25248))** + +- **(dev/core#4106) Add filter on pledge payment in contribution report t… ([25629](https://github.com/civicrm/civicrm-core/pull/25629))** + +- **Reduce processing load in test `assertAPIFailure` ([25648](https://github.com/civicrm/civicrm-core/pull/25648))** + +- **Deprecate unused, exception class with non-standard name-spacing ([25641](https://github.com/civicrm/civicrm-core/pull/25641))** + +- **Make job ID accessible to searchkit for joblog ([24746](https://github.com/civicrm/civicrm-core/pull/24746))** + +- **dev/core#4127 move Drupal stuff in getCiviSourceStorage to Drupal use… ([25587](https://github.com/civicrm/civicrm-core/pull/25587))** + +- **Fix add version for civicrm_custom_field.fk_entity ([25642](https://github.com/civicrm/civicrm-core/pull/25642))** + +- **Fix handling of invalid sql query during import ([25600](https://github.com/civicrm/civicrm-core/pull/25600))** + +- **5.59 to master ([25640](https://github.com/civicrm/civicrm-core/pull/25640))** + +- **Fix master-only regression - upgrade script is in wrong version ([25638](https://github.com/civicrm/civicrm-core/pull/25638))** + +- **dev/core#4127 move is_drupal to use userSystem logger ([25573](https://github.com/civicrm/civicrm-core/pull/25573))** + +- **5.59 ([25637](https://github.com/civicrm/civicrm-core/pull/25637))** + +- **Add 'SavePoint' to import to statusBounce back to ([25602](https://github.com/civicrm/civicrm-core/pull/25602))** + +- **Move form specific code to the form ([25457](https://github.com/civicrm/civicrm-core/pull/25457))** + +- **Make dedupe exceptions searchable in SearchKit ([25522](https://github.com/civicrm/civicrm-core/pull/25522))** + +- **E-notice fix Ical display ([25612](https://github.com/civicrm/civicrm-core/pull/25612))** + +- **dev/core#4112 Privatise `prevNextCache` functions ([25392](https://github.com/civicrm/civicrm-core/pull/25392))** + +- **Reduce unneeded DNS queries during OAuth flow ([25446](https://github.com/civicrm/civicrm-core/pull/25446))** + +- **composer require --dev yoast/phpunit-polyfills ([25631](https://github.com/civicrm/civicrm-core/pull/25631))** + +- **Extra deprecation for clarity on token function `convertPseudoConstantsUsingMetadata` ([25511](https://github.com/civicrm/civicrm-core/pull/25511))** + +- **Angular Coder: Fix unescaping of quotes breaking attributes ([25630](https://github.com/civicrm/civicrm-core/pull/25630))** + +- **EntityRef - Format custom field display value on QuickForms ([25632](https://github.com/civicrm/civicrm-core/pull/25632))** + +- **Add new EntityReference custom field type ([25471](https://github.com/civicrm/civicrm-core/pull/25471))** + +- **getStatus() should be returning a string ([25441](https://github.com/civicrm/civicrm-core/pull/25441))** + +- **Add setting to disable Smarty in scheduled reminders ([25444](https://github.com/civicrm/civicrm-core/pull/25444))** + +- **Regression: Fix DB syntax error on Parse address scheduled job ([25616](https://github.com/civicrm/civicrm-core/pull/25616))** + +- **Afform: Fix broken syntax for saving reciprocal relationships ([25620](https://github.com/civicrm/civicrm-core/pull/25620))** + +- **Always show "add more buttons" dropdown in searchkit view ([25596](https://github.com/civicrm/civicrm-core/pull/25596))** + +- **[REF][PHP8.2] Remove unnecessary dynamic property ([25622](https://github.com/civicrm/civicrm-core/pull/25622))** + +- **[REF][PHP8.2] Fix use of self in callables deprecation ([25625](https://github.com/civicrm/civicrm-core/pull/25625))** + +- **[REF][PHP8.2] Tidy up properties on api_v3_GroupContactTest ([25626](https://github.com/civicrm/civicrm-core/pull/25626))** + +- **[REF][PHP8.2] Tidy up properties in CRM_Event_BAO_EventPermissionsTest ([25623](https://github.com/civicrm/civicrm-core/pull/25623))** + +- **(REF) Remove test reference to property which no longer exists ([25624](https://github.com/civicrm/civicrm-core/pull/25624))** + +- **Php8.2 test fix, remove one instance of undeclared property ([25619](https://github.com/civicrm/civicrm-core/pull/25619))** + +- **Stop loading unused `relatedObjects` ([25617](https://github.com/civicrm/civicrm-core/pull/25617))** + +- **[NFC] doc block fix ([25610](https://github.com/civicrm/civicrm-core/pull/25610))** + +- **dev/core#4127 move mailing workflow check to userSystem ([25586](https://github.com/civicrm/civicrm-core/pull/25586))** + +- **Remove function deprecated a year ago ([25615](https://github.com/civicrm/civicrm-core/pull/25615))** + +- **Fix test to test the thing it was written to test ([25608](https://github.com/civicrm/civicrm-core/pull/25608))** + +- **[NFC] php8.2 support in test class `ActivitySearchTest` ([25607](https://github.com/civicrm/civicrm-core/pull/25607))** + +- **distmaker - Fix export of WordPress patches ([25599](https://github.com/civicrm/civicrm-core/pull/25599))** + +- **Make private function private ([25604](https://github.com/civicrm/civicrm-core/pull/25604))** + +- **Disambiguate `Address.state_province_id:abbr` ([25550](https://github.com/civicrm/civicrm-core/pull/25550))** + +- **update entity mapping logic for profile fields to include contact subtypes ([25570](https://github.com/civicrm/civicrm-core/pull/25570))** + +- **Allow OAuth redirect URI to be overridden in client or provider config ([25445](https://github.com/civicrm/civicrm-core/pull/25445))** + +- **(REF) Tidy up unused params in api_v3_ContributionSoftTest ([25322](https://github.com/civicrm/civicrm-core/pull/25322))** + +- **APIv4 - Limited support for casting ([25595](https://github.com/civicrm/civicrm-core/pull/25595))** + +- **Remove unused constants left over from import cleanup ([25601](https://github.com/civicrm/civicrm-core/pull/25601))** + +- **api4 explorer: make boolean params work in cv (short syntax) ([25589](https://github.com/civicrm/civicrm-core/pull/25589))** + +- **Disambiguate `Address.state_province_id:abbr` (PHP asort) ([25552](https://github.com/civicrm/civicrm-core/pull/25552))** + +- **Filter expired searches from search kit results ([25568](https://github.com/civicrm/civicrm-core/pull/25568))** + +- **Fix empty values of Note on Import contribution ([25569](https://github.com/civicrm/civicrm-core/pull/25569))** + +- **Deprecate unused `CRM_Core_BAO_UFField::copy()` function ([25594](https://github.com/civicrm/civicrm-core/pull/25594))** + +- **dev/core#4127 move ipAddress to userSystem ([25572](https://github.com/civicrm/civicrm-core/pull/25572))** + +- **Fix more schema checks to use mysql DATABASE() function, deprecate php function ([25593](https://github.com/civicrm/civicrm-core/pull/25593))** + +- **Remove empty function ([25592](https://github.com/civicrm/civicrm-core/pull/25592))** + +- **Fix Contact import e-notice on preview screen ([25302](https://github.com/civicrm/civicrm-core/pull/25302))** + +- **dev/core#4127 use userSystem method to check for Views ([25571](https://github.com/civicrm/civicrm-core/pull/25571))** + +- **[REF] Fix undefined variable notice in WordPress tests ([25591](https://github.com/civicrm/civicrm-core/pull/25591))** + +- **5.59 ([25590](https://github.com/civicrm/civicrm-core/pull/25590))** + +- **5.59 ([25584](https://github.com/civicrm/civicrm-core/pull/25584))** + +- **5.59 ([25582](https://github.com/civicrm/civicrm-core/pull/25582))** + +- **5.59 ([25581](https://github.com/civicrm/civicrm-core/pull/25581))** + +- **CiviContribute - Fix warning about 'suppressedEmails' when generating PDF ([25576](https://github.com/civicrm/civicrm-core/pull/25576))** + +- **Smarty {ts} - For extensions, use fallback similar to E::ts() and JS ts() ([25383](https://github.com/civicrm/civicrm-core/pull/25383))** + +- **Make `activity_type_id` available to `links` hook, test ([25565](https://github.com/civicrm/civicrm-core/pull/25565))** + +- **Make unshared `getTree` function private, remove never passed params ([25517](https://github.com/civicrm/civicrm-core/pull/25517))** + +- **5.59 to master ([25567](https://github.com/civicrm/civicrm-core/pull/25567))** + +- **Preliminary cleanup, comments, type hints ([25564](https://github.com/civicrm/civicrm-core/pull/25564))** + +- **dev/core#4076 split up the theme method ([25329](https://github.com/civicrm/civicrm-core/pull/25329))** + +- **Fix fatal error on upgrade success screen ([25554](https://github.com/civicrm/civicrm-core/pull/25554))** + +- **Mailing Summary Report: support pseudofields ([25560](https://github.com/civicrm/civicrm-core/pull/25560))** + +- **[REF][PHP8.2] Remove use of dynamic properties in CRM_Contact_Form_Task_EmailTest ([25562](https://github.com/civicrm/civicrm-core/pull/25562))** + +- **[REF][PHP8.2] Get rid of dynamic properties in CRM_Core_Payment_AuthorizeNetTest ([25561](https://github.com/civicrm/civicrm-core/pull/25561))** + +- **[REF][PHP8.2] Stop use of dynamic property in AdditionalPaymentTest ([25559](https://github.com/civicrm/civicrm-core/pull/25559))** + +- **[REF][PHP8.2] Use variable instead of dynmaic property (CRM_Group_Page_AjaxTest) ([25558](https://github.com/civicrm/civicrm-core/pull/25558))** + +- **[REF][PHP8.2] Declare property in CRM_Pledge_BAO_PledgeBlockTest ([25557](https://github.com/civicrm/civicrm-core/pull/25557))** + +- **[REF][PHP8.2] Declare property in CRM_Utils_FakeObject ([25556](https://github.com/civicrm/civicrm-core/pull/25556))** + +- **A couple of minor smarty notice fixes ([25514](https://github.com/civicrm/civicrm-core/pull/25514))** + +- **Upgrade test to use more recent methodology for testing forms ([25551](https://github.com/civicrm/civicrm-core/pull/25551))** + +- **Smarty notice fix ([25544](https://github.com/civicrm/civicrm-core/pull/25544))** + +- **Remove always-NULL `$singleRecord` variable ([25519](https://github.com/civicrm/civicrm-core/pull/25519))** + +- **Enotice fix, pledge block on UserDashboard ([25546](https://github.com/civicrm/civicrm-core/pull/25546))** + +- **SearchKit - Configurable action menu tasks per-search-display ([25521](https://github.com/civicrm/civicrm-core/pull/25521))** + +- **Do not use reference for Object parameter, death to `_NULLObject` ([25541](https://github.com/civicrm/civicrm-core/pull/25541))** + +- **Remove invalid 'world_region' => 'India' from test ([25540](https://github.com/civicrm/civicrm-core/pull/25540))** + +- **Fix a couple more places to use mysql DATABASE() function ([25537](https://github.com/civicrm/civicrm-core/pull/25537))** + +- **5.59 ([25538](https://github.com/civicrm/civicrm-core/pull/25538))** + +- **Typo executequery => executeQuery ([25539](https://github.com/civicrm/civicrm-core/pull/25539))** + +- **NFC cleanup in test class ([25524](https://github.com/civicrm/civicrm-core/pull/25524))** + +- **Use mysql DATABASE() function instead of php code ([25530](https://github.com/civicrm/civicrm-core/pull/25530))** + +- **5.59 ([25531](https://github.com/civicrm/civicrm-core/pull/25531))** + +- **Use `DATABASE()` function rather than lossa code ([25528](https://github.com/civicrm/civicrm-core/pull/25528))** + +- **Enotice fix on userDashboard with contributions, replace deprecated functions with api4v calls ([24861](https://github.com/civicrm/civicrm-core/pull/24861))** + +- **5.59 ([25526](https://github.com/civicrm/civicrm-core/pull/25526))** + +- **Bump dompdf/dompdf from 2.0.2 to 2.0.3 ([25520](https://github.com/civicrm/civicrm-core/pull/25520))** + +- **Add noisy deprecation to `replaceHookTokens` ([25510](https://github.com/civicrm/civicrm-core/pull/25510))** + +- **dev/core#4117 Add is_current to UserJob, Search ([25516](https://github.com/civicrm/civicrm-core/pull/25516))** + +- **Remove never-true IF ([25518](https://github.com/civicrm/civicrm-core/pull/25518))** + +- **Remove interaction with complex legacy `getTree` function ([25395](https://github.com/civicrm/civicrm-core/pull/25395))** + +- **only load dedupe rules for the chosen entity ([25515](https://github.com/civicrm/civicrm-core/pull/25515))** + +- **Post divide code tidy up ([25195](https://github.com/civicrm/civicrm-core/pull/25195))** + +- **(dev/core#4028) make CRM_Admin_Form_Setting_UF more CMS agnostic ([25328](https://github.com/civicrm/civicrm-core/pull/25328))** + +- **Fully deprecate `CRM_Utils_Token::getMembershipTokenDetails`, `CRM_Utils_Token::replaceEntityTokens` ([25507](https://github.com/civicrm/civicrm-core/pull/25507))** + +- **PaymentProcessor - Use ajax refresh ([25512](https://github.com/civicrm/civicrm-core/pull/25512))** + +- **Fully deprecate `CRM_Core_SelectValues::eventTokens()` ([25509](https://github.com/civicrm/civicrm-core/pull/25509))** + +- **Add extra test, comment how it could be used to fix bug ([25503](https://github.com/civicrm/civicrm-core/pull/25503))** + +- **Remove unused variable ([25508](https://github.com/civicrm/civicrm-core/pull/25508))** + +- **Fully deprecate `CRM_Core_SelectValues::membershipTokens()` ([25506](https://github.com/civicrm/civicrm-core/pull/25506))** + +- **Fully deprecate legacy contributionTokens ([25505](https://github.com/civicrm/civicrm-core/pull/25505))** + +- **API4: Allow save() to match on null values ([24971](https://github.com/civicrm/civicrm-core/pull/24971))** + +- **Fix Scheduled reminders form to use tokenProcessor to get token list ([25052](https://github.com/civicrm/civicrm-core/pull/25052))** + +- **Default to supporting partial locales ([25063](https://github.com/civicrm/civicrm-core/pull/25063))** + +- **fix the id help instead use class help ([25487](https://github.com/civicrm/civicrm-core/pull/25487))** + +- **[REF][PHP8.2] Refactor properties on CRM_Event_Form_SearchTest ([25501](https://github.com/civicrm/civicrm-core/pull/25501))** + +- **[REF][PHP8.2] Declare dynamic property in two SMS tests ([25502](https://github.com/civicrm/civicrm-core/pull/25502))** + +- **dev/drupal#176 - allow symfony 6 ([25499](https://github.com/civicrm/civicrm-core/pull/25499))** + +- **(REF) Remove unused setup from AdhocMailingTest ([25500](https://github.com/civicrm/civicrm-core/pull/25500))** + +- **dev/drupal#176 - Move cache/integrationtest only used for testing into require-dev ([25054](https://github.com/civicrm/civicrm-core/pull/25054))** + +- **Fix user profile file fields not saving. ([80](https://github.com/civicrm/civicrm-drupal-8/pull/80))** + +- **[REF] Add support for composer installers v2 which seems to be needed… ([79](https://github.com/civicrm/civicrm-drupal-8/pull/79))** + +- **update CiviCrmTestBase setup() method declaration to match BrowserTestBase ([78](https://github.com/civicrm/civicrm-drupal-8/pull/78))** + +- **CiviCRM Stable Version bump ([291](https://github.com/civicrm/civicrm-wordpress/pull/291))** + +- **5.59 ([290](https://github.com/civicrm/civicrm-wordpress/pull/290))** + +## Miscellany + +## Credits + +This release was developed by the following code authors: + +AGH Strategies - Andie Hunt; anemirovsky; BrightMinded Ltd - Bradley Taylor; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; dependabot[bot]; ES-Progress - Sandor Semsey; Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; iXiam - Luciano Spiegel; JMA Consulting - Seamus Lee; Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; PERORA SRL - Samuele Masetto; Progressive Technology Project - Jamie McClelland; Skvare - Mark Hanna; Tadpole Collective - Kevin Cristiano; Third Sector Design - Kurund Jalmi, Michael McAndrew; Wikimedia Foundation - Eileen McNaughton + +Most authors also reviewed code for this release; in addition, the following +reviewers contributed their comments: + +Agileware - Francis Whittle, Justin Freeman; Andreas Howiller; BeccaTregenna; Blackfly Solutions - Alan Dixon; BrightMinded Ltd - Bradley Taylor; civibot[bot]; civicrm-builder; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Dave D; Freeform Solutions - Herb van den Dool; Fuzion - Luke Stewart; Jens Schuppe; JMA Consulting - Joe Murray, Seamus Lee; Lemniscus - Noah Miller; Megaphone Technology Consulting - Brienne Kordis, Jon Goldberg; MJW Consulting - Matthew Wire; Squiffle Consulting - Aidan Saunders; Stephen Palmstrom; Tadpole Collective - Kevin Cristiano; Third Sector Design - Michael McAndrew; Wikimedia Foundation - Eileen McNaughton \ No newline at end of file From 5ee7e07ed0a306343c9d0308e7227f66e6f52bf0 Mon Sep 17 00:00:00 2001 From: Andie Hunt Date: Wed, 8 Mar 2023 20:12:28 -0500 Subject: [PATCH 3/7] 5.60.0 release notes: added boilerplate --- release-notes.md | 11 +++++++++++ release-notes/5.60.0.md | 26 +++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/release-notes.md b/release-notes.md index 060b9b5def47..301b09319089 100644 --- a/release-notes.md +++ b/release-notes.md @@ -15,6 +15,17 @@ Other resources for identifying changes are: * https://github.com/civicrm/civicrm-joomla * https://github.com/civicrm/civicrm-wordpress +## CiviCRM 5.60.0 + +Released April 5, 2023 + +- **[Synopsis](release-notes/5.60.0.md#synopsis)** +- **[Features](release-notes/5.60.0.md#features)** +- **[Bugs resolved](release-notes/5.60.0.md#bugs)** +- **[Miscellany](release-notes/5.60.0.md#misc)** +- **[Credits](release-notes/5.60.0.md#credits)** +- **[Feedback](release-notes/5.60.0.md#feedback)** + ## CiviCRM 5.59.0 Released March 1, 2023 diff --git a/release-notes/5.60.0.md b/release-notes/5.60.0.md index da44afe35b67..d6143be9b471 100644 --- a/release-notes/5.60.0.md +++ b/release-notes/5.60.0.md @@ -1,11 +1,25 @@ # CiviCRM 5.60.0 -Released March 8, 2023; +Released April 5, 2023 +- **[Synopsis](#synopsis)** - **[Features](#features)** - **[Bugs resolved](#bugs)** - **[Miscellany](#misc)** - **[Credits](#credits)** +- **[Feedback](#feedback)** + +## Synopsis + +| *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? | | ## Features @@ -379,9 +393,15 @@ Released March 8, 2023; This release was developed by the following code authors: -AGH Strategies - Andie Hunt; anemirovsky; BrightMinded Ltd - Bradley Taylor; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; dependabot[bot]; ES-Progress - Sandor Semsey; Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; iXiam - Luciano Spiegel; JMA Consulting - Seamus Lee; Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; PERORA SRL - Samuele Masetto; Progressive Technology Project - Jamie McClelland; Skvare - Mark Hanna; Tadpole Collective - Kevin Cristiano; Third Sector Design - Kurund Jalmi, Michael McAndrew; Wikimedia Foundation - Eileen McNaughton +AGH Strategies - Alice Frumin, Andie Hunt; anemirovsky; BrightMinded Ltd - Bradley Taylor; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; dependabot[bot]; ES-Progress - Sandor Semsey; Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; iXiam - Luciano Spiegel; JMA Consulting - Seamus Lee; Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; PERORA SRL - Samuele Masetto; Progressive Technology Project - Jamie McClelland; Skvare - Mark Hanna; Tadpole Collective - Kevin Cristiano; Third Sector Design - Kurund Jalmi, Michael McAndrew; Wikimedia Foundation - Eileen McNaughton Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments: -Agileware - Francis Whittle, Justin Freeman; Andreas Howiller; BeccaTregenna; Blackfly Solutions - Alan Dixon; BrightMinded Ltd - Bradley Taylor; civibot[bot]; civicrm-builder; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Dave D; Freeform Solutions - Herb van den Dool; Fuzion - Luke Stewart; Jens Schuppe; JMA Consulting - Joe Murray, Seamus Lee; Lemniscus - Noah Miller; Megaphone Technology Consulting - Brienne Kordis, Jon Goldberg; MJW Consulting - Matthew Wire; Squiffle Consulting - Aidan Saunders; Stephen Palmstrom; Tadpole Collective - Kevin Cristiano; Third Sector Design - Michael McAndrew; Wikimedia Foundation - Eileen McNaughton \ No newline at end of file +Agileware - Francis Whittle, Justin Freeman; Andreas Howiller; BeccaTregenna; Blackfly Solutions - Alan Dixon; BrightMinded Ltd - Bradley Taylor; civibot[bot]; civicrm-builder; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Dave D; Freeform Solutions - Herb van den Dool; Fuzion - Luke Stewart; Jens Schuppe; JMA Consulting - Joe Murray, Seamus Lee; Lemniscus - Noah Miller; Megaphone Technology Consulting - Brienne Kordis, Jon Goldberg; MJW Consulting - Matthew Wire; Squiffle Consulting - Aidan Saunders; Stephen Palmstrom; Tadpole Collective - Kevin Cristiano; Third Sector Design - Michael McAndrew; Wikimedia Foundation - Eileen McNaughton + +## Feedback + +These release notes are edited by Alice Frumin and Andie Hunt. If you'd like +to provide feedback on them, please log in to https://chat.civicrm.org/civicrm +and contact `@agh1`. From 7a7c8e2b30dfd00605aedd1fb7ce91ca491385db Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Fri, 10 Mar 2023 11:22:50 +1300 Subject: [PATCH 4/7] dev/core#4158 Fix for recurring double ups --- CRM/Core/Payment/PayPalImpl.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CRM/Core/Payment/PayPalImpl.php b/CRM/Core/Payment/PayPalImpl.php index bbaa04114c52..763e2df050cb 100644 --- a/CRM/Core/Payment/PayPalImpl.php +++ b/CRM/Core/Payment/PayPalImpl.php @@ -544,7 +544,7 @@ public function doDirectPayment(&$params) { public function doPaymentPayPalButton(&$params) { $args = []; - $result = $this->setStatusPaymentPending([]); + $result = []; $this->initialize($args, 'DoDirectPayment'); @@ -606,7 +606,6 @@ public function doPaymentPayPalButton(&$params) { } /* Success */ - $result = $this->setStatusPaymentCompleted($result); $doQueryParams = [ 'gross_amount' => $apiResult['amt'] ?? NULL, 'trxn_id' => $apiResult['transactionid'] ?? NULL, From 607fe36692cfb497a94e778e68e36b078acad3d6 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Fri, 10 Mar 2023 13:13:01 +1300 Subject: [PATCH 5/7] dev/core#4156 Fix failure to update organization_name on employees during merge --- CRM/Dedupe/Merger.php | 19 +++++++++++------ tests/phpunit/CRM/Dedupe/MergerTest.php | 27 +++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/CRM/Dedupe/Merger.php b/CRM/Dedupe/Merger.php index 7fdb55f58505..b09c0c1bad5b 100644 --- a/CRM/Dedupe/Merger.php +++ b/CRM/Dedupe/Merger.php @@ -9,6 +9,7 @@ +--------------------------------------------------------------------+ */ +use Civi\Api4\Contact; use Civi\Api4\CustomGroup; /** @@ -685,7 +686,18 @@ protected static function updateContact(int $contactID, $params): void { // This parameter causes blank fields to be be emptied out. // We can probably remove. $params['updateBlankLocInfo'] = TRUE; + if (empty($params['contact_type']) || ($params['contact_type'] === 'Organization' && empty($params['organization_name']))) { + // Ensuring this is set addresses https://lab.civicrm.org/dev/core/-/issues/4156 + // but not that RM_Dedupe_MergerTest::testMergeWithEmployer covers this scenario + // so refactoring of this is safe. + $contact = Contact::get(FALSE)->addWhere('id', '=', $contactID)->addSelect('organization_name', 'contact_type')->execute()->first(); + $params['contact_type'] = $contact['contact_type']; + if (empty($params['organization_name']) && $params['contact_type'] === 'Organization') { + $params['organization_name'] = $contact['organization_name']; + } + } $data = self::formatProfileContactParams($params, $contactID); + CRM_Contact_BAO_Contact::create($data); } @@ -707,13 +719,12 @@ private static function formatProfileContactParams( int $contactID ) { - $data = $contactDetails = []; + $data = ['contact_type' => $params['contact_type']]; // get the contact details (hier) $details = CRM_Contact_BAO_Contact::getHierContactDetails($contactID, []); $contactDetails = $details[$contactID]; - $data['contact_type'] = $contactDetails['contact_type'] ?? NULL; $data['contact_sub_type'] = $contactDetails['contact_sub_type'] ?? NULL; //fix contact sub type CRM-5125 @@ -993,10 +1004,6 @@ private static function formatProfileContactParams( } } - if (!isset($data['contact_type'])) { - $data['contact_type'] = 'Individual'; - } - return $data; } diff --git a/tests/phpunit/CRM/Dedupe/MergerTest.php b/tests/phpunit/CRM/Dedupe/MergerTest.php index 9aad35e896b8..c821f75d183d 100644 --- a/tests/phpunit/CRM/Dedupe/MergerTest.php +++ b/tests/phpunit/CRM/Dedupe/MergerTest.php @@ -1,5 +1,7 @@ callAPISuccess('Contact', 'create', [ 'id' => $duplicateContactID1, - "{$customFieldName}" => 'def', + $customFieldName => 'def', ]); $this->assertCustomFieldValue($duplicateContactID1, 'def', $customFieldName); @@ -1453,7 +1455,28 @@ public function testMergeWithDeclaredSearchJoin(): void { CRM_Core_DAO_AllCoreTables::flush(); $contact1 = $this->individualCreate(); $contact2 = $this->individualCreate(['api.Im.create' => ['name' => 'chat_handle']]); - $this->callAPISuccess('Contact', 'merge', ['to_keep_id' => $contact1, 'to_remove_id' => $contact2]); + $this->callAPISuccess('Contact', 'merge', [ + 'to_keep_id' => $contact1, + 'to_remove_id' => $contact2, + ]); + } + + /** + * Test that organization name is updated for employees of merged organizations.. + * + * @throws \CRM_Core_Exception + */ + public function testMergeWithEmployer(): void { + $organizationToRemoveID = $this->organizationCreate(['organization_name' => 'remove']); + $organizationToKeepID = $this->organizationCreate(['organization_name' => 'keep']); + $individualID = $this->createContactWithEmployerRelationship([ + 'contact_id_b' => $organizationToRemoveID, + ]); + $employerName = Contact::get()->addSelect('organization_name')->addWhere('id', '=', $individualID)->execute()->first()['organization_name']; + $this->assertEquals('remove', $employerName); + $this->callAPISuccess('Contact', 'merge', ['to_keep_id' => $organizationToKeepID, 'to_remove_id' => $organizationToRemoveID, 'mode' => 'aggressive']); + $employerName = Contact::get()->addSelect('organization_name')->addWhere('id', '=', $individualID)->execute()->first()['organization_name']; + $this->assertEquals('keep', $employerName); } /** From d942d345ebaa2255c2765c1840aa30ce43e699b2 Mon Sep 17 00:00:00 2001 From: Samuel Vanhove Date: Tue, 14 Mar 2023 17:27:24 -0400 Subject: [PATCH 6/7] dev/core#4186 regression for Contact Reference Autocomplete --- CRM/Core/BAO/CustomField.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CRM/Core/BAO/CustomField.php b/CRM/Core/BAO/CustomField.php index 67cc1142d5a8..cf05c109b2e9 100644 --- a/CRM/Core/BAO/CustomField.php +++ b/CRM/Core/BAO/CustomField.php @@ -1068,7 +1068,7 @@ public static function addQuickFormElement( ); } - if ($field->data_type == 'EntityReference') { + elseif ($field->data_type == 'EntityReference') { $fieldAttributes['entity'] = $field->fk_entity; $element = $qf->addAutocomplete($elementName, $label, $fieldAttributes, $useRequired && !$search); } From 250b13bc96aef357d791a3dfe3bb4e0f9620d0c3 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Wed, 15 Mar 2023 09:08:27 +1300 Subject: [PATCH 7/7] dev/core#4184 Fix Import over-authorization --- ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php b/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php index 4ee6bbbe5efe..0eade33f0db9 100644 --- a/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php +++ b/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php @@ -104,7 +104,7 @@ public function on_hook_civicrm_post(PostEvent $event): void { public function onApiAuthorize(AuthorizeEvent $event): void { $apiRequest = $event->getApiRequest(); $entity = $apiRequest['entity']; - if (strpos($entity, 'Import_') === 0) { + if (strpos($entity, 'Import_') === 0 && !in_array($event->getActionName(), ['getFields', 'getActions', 'checkAccess'], TRUE)) { $userJobID = (int) (str_replace('Import_', '', $entity)); if (!UserJob::get(TRUE)->addWhere('id', '=', $userJobID)->selectRowCount()->execute()->count()) { throw new UnauthorizedException('Import access not permitted');