| 1 | # CiviCRM 5.18.0 |
| 2 | |
| 3 | Released October 2, 2019 |
| 4 | |
| 5 | - **[Synopsis](#synopsis)** |
| 6 | - **[Features](#features)** |
| 7 | - **[Bugs resolved](#bugs)** |
| 8 | - **[Miscellany](#misc)** |
| 9 | - **[Credits](#credits)** |
| 10 | - **[Feedback](#feedback)** |
| 11 | |
| 12 | ## <a name="synopsis"></a>Synopsis |
| 13 | |
| 14 | | *Does this version...?* | | |
| 15 | |:--------------------------------------------------------------- |:-------:| |
| 16 | | Fix security vulnerabilities? | no | |
| 17 | | **Change the database schema?** | **yes** | |
| 18 | | **Alter the API?** | **yes** | |
| 19 | | Require attention to configuration options? | no | |
| 20 | | **Fix problems installing or upgrading to a previous version?** | **yes** | |
| 21 | | **Introduce features?** | **yes** | |
| 22 | | **Fix bugs?** | **yes** | |
| 23 | |
| 24 | ## <a name="features"></a>Features |
| 25 | |
| 26 | ### Core CiviCRM |
| 27 | |
| 28 | - **Enable view/revert delete action for detail logging |
| 29 | ([15045](https://github.com/civicrm/civicrm-core/pull/15045))** |
| 30 | |
| 31 | If detailed logging is enabled, you can now view and revert deleted |
| 32 | information. |
| 33 | |
| 34 | - **Download Bower dependencies using Composer |
| 35 | ([dev/drupal#8](https://lab.civicrm.org/dev/drupal/issues/8): |
| 36 | [15044](https://github.com/civicrm/civicrm-core/pull/15044))** |
| 37 | |
| 38 | This improves performance and caching by downloading Javascript libraries |
| 39 | using Composer with `composer-downloads-plugin` and specified zip files rather |
| 40 | than Bower. |
| 41 | |
| 42 | - **Add `hook_civicrm_pre` and `hook_civicrm_post` to Domain create and edit |
| 43 | operations ([dev/core#1203](https://lab.civicrm.org/dev/core/issues/1203): |
| 44 | [15104](https://github.com/civicrm/civicrm-core/pull/15104))** |
| 45 | |
| 46 | Makes it so one can detect when a new Domain has been created or when a Domain |
| 47 | has been edited with the usual `hook_civicrm_pre` and `hook_civicrm_post` |
| 48 | callbacks. |
| 49 | |
| 50 | - **Api support for deduping |
| 51 | (Work Towards [dev/core#1230](https://lab.civicrm.org/dev/core/issues/1230): |
| 52 | [15196](https://github.com/civicrm/civicrm-core/pull/15196), |
| 53 | [15188](https://github.com/civicrm/civicrm-core/pull/15188), |
| 54 | [15187](https://github.com/civicrm/civicrm-core/pull/15187), |
| 55 | [15227](https://github.com/civicrm/civicrm-core/pull/15227) and |
| 56 | [15154](https://github.com/civicrm/civicrm-core/pull/15154))** |
| 57 | |
| 58 | Work toward improving the new API support for deduping including: not |
| 59 | geocoding when merging for performance reasons, giving contacts with 'merge |
| 60 | duplicate contacts' permission to get dedupe rules, ensuring the API call |
| 61 | Dedupe.getstatistics requires "Access CiviCRM" and adds a check for 'force |
| 62 | merge duplicate contacts' if mode is aggressive. |
| 63 | |
| 64 | - **Add cid parameter in custom group form url & set it for Activity form |
| 65 | ([dev/core#752](https://lab.civicrm.org/dev/core/issues/752): |
| 66 | [15012](https://github.com/civicrm/civicrm-core/pull/15012))** |
| 67 | |
| 68 | Adds a contact id parameter (cid=) when loading custom data via back end forms |
| 69 | so that hooks can modify behavior based on the `contact_id` being viewed. |
| 70 | |
| 71 | - **Make report listing actions links hookable |
| 72 | ([dev/core#1077](https://lab.civicrm.org/dev/core/issues/1077): |
| 73 | [15074](https://github.com/civicrm/civicrm-core/pull/15074))** |
| 74 | |
| 75 | The actions list on the report listing screen can now be altered by developers |
| 76 | using `hook_civicrm_links`. |
| 77 | |
| 78 | - **Fixes inconsistency between constituency summary and constituency detail |
| 79 | ([15222](https://github.com/civicrm/civicrm-core/pull/15222))** |
| 80 | |
| 81 | This improves the consistency of how the "Print Report" action link functions |
| 82 | on the reports listing. Before this change, some "Print Report" links would |
| 83 | take the user to the report in print view, and some would trigger a print |
| 84 | pop-up. |
| 85 | |
| 86 | - **Add index to civicrm_contact.created_date & modified_date |
| 87 | ([15203](https://github.com/civicrm/civicrm-core/pull/15203))** |
| 88 | |
| 89 | This adds an index to the `created_date` and `modified_date` columns in the |
| 90 | `civicrm_contact` table. |
| 91 | |
| 92 | - **Added field title for Cache table |
| 93 | ([15204](https://github.com/civicrm/civicrm-core/pull/15204))** |
| 94 | |
| 95 | The Data Access Object for the `civicrm_cache` table now stores titles for |
| 96 | each field. |
| 97 | |
| 98 | - **Allow Manual Geo Code flag to be exported |
| 99 | ([14998](https://github.com/civicrm/civicrm-core/pull/14998))** |
| 100 | |
| 101 | The field denoting that an address has been manually geocoded can now be |
| 102 | exported. |
| 103 | |
| 104 | - **Use merge duplicate contacts as api permission for merging |
| 105 | ([15155](https://github.com/civicrm/civicrm-core/pull/15155))** |
| 106 | |
| 107 | Changes the API call `Contact.merge` to require 'merge duplicate contacts' |
| 108 | instead of 'Administer CiviCRM'. |
| 109 | |
| 110 | - **Adjust permissions on dedupe exception api to 'merge duplicate contacts' |
| 111 | ([15157](https://github.com/civicrm/civicrm-core/pull/15157))** |
| 112 | |
| 113 | The API for managing dedupe exceptions now requires the permission "merge |
| 114 | duplicate contacts" instead of "Administer CiviCRM". |
| 115 | |
| 116 | - **Open up permissions on Dedupe.getduplicates |
| 117 | ([15152](https://github.com/civicrm/civicrm-core/pull/15152))** |
| 118 | |
| 119 | Less restrictive permissions on the `Dedupe.getduplicates` API (currently only |
| 120 | used from unit tests) specifically moves from requiring the permission |
| 121 | "Administer CiviCRM" to "Access CiviCRM". |
| 122 | |
| 123 | - **Fix inconsistencies in duplicate retrieval |
| 124 | ([15160](https://github.com/civicrm/civicrm-core/pull/15160))** |
| 125 | |
| 126 | Ensures the API call `Dedupe.getduplicates` respects both 'limit' and |
| 127 | 'search_limit' parameters. |
| 128 | |
| 129 | - **Error log improvements: Provide priority level |
| 130 | ([14995](https://github.com/civicrm/civicrm-core/pull/14995))** |
| 131 | |
| 132 | Improves error logging by adding the ability to pass a priority level argument |
| 133 | to `CRM_Core_Error::debug_var()`. |
| 134 | |
| 135 | - **Improve deadlock error handling |
| 136 | ([258](https://github.com/civicrm/civicrm-packages/pull/258))** |
| 137 | |
| 138 | Improves deadlock error handling by capturing the error when the deadlock is |
| 139 | first hit so the backtrace is retained. |
| 140 | |
| 141 | - **Better error handling in CRM_Utils_JS::decode |
| 142 | ([15145](https://github.com/civicrm/civicrm-core/pull/15145))** |
| 143 | |
| 144 | Improves handling of malformed Javascript so as to reduce PHP notices. |
| 145 | |
| 146 | - **Replace some calls to CRM_Core_Error::fatal with exceptions |
| 147 | ([15156](https://github.com/civicrm/civicrm-core/pull/15156))** |
| 148 | |
| 149 | Instead of exiting with a fatal error, certain dedupe error situations now |
| 150 | throw an exception. |
| 151 | |
| 152 | ### CiviEvent |
| 153 | |
| 154 | - **Creating an event clears the cache |
| 155 | ([dev/event#14](https://lab.civicrm.org/dev/event/issues/14): |
| 156 | [15140](https://github.com/civicrm/civicrm-core/pull/15140))** |
| 157 | |
| 158 | This change improves performance by not clearing caches every time an event is |
| 159 | created. |
| 160 | |
| 161 | ### CiviMembership |
| 162 | |
| 163 | - **Convert jcalendar date fields to date picker for membership fields to |
| 164 | support date picker conversion |
| 165 | ([15177](https://github.com/civicrm/civicrm-core/pull/15177), |
| 166 | [15186](https://github.com/civicrm/civicrm-core/pull/15186), |
| 167 | [15198](https://github.com/civicrm/civicrm-core/pull/15198) and |
| 168 | [15200](https://github.com/civicrm/civicrm-core/pull/15200))** |
| 169 | |
| 170 | Date fields on membership search screens now use datepicker rather than |
| 171 | jCalendar. |
| 172 | |
| 173 | The `join_date` column on the `civicrm_membership` table is now keyed as |
| 174 | `membership_join_date` within the DAO in order to support the change to date |
| 175 | picker format for Membership date fields. |
| 176 | |
| 177 | - **Add default domain to membershiptype API |
| 178 | ([15120](https://github.com/civicrm/civicrm-core/pull/15120))** |
| 179 | |
| 180 | The domain ID now defaults to the current domain when using the membership |
| 181 | type API. |
| 182 | |
| 183 | - **Fix readability & caching on |
| 184 | CRM_Contact_BAO_Relationship::isInheritedMembershipInvalidated |
| 185 | ([15061](https://github.com/civicrm/civicrm-core/pull/15061))** |
| 186 | |
| 187 | Improves caching and performance when calculating inherited memberships. |
| 188 | |
| 189 | ### CiviPledge |
| 190 | |
| 191 | - **Update Pledge XML to support date picker conversion |
| 192 | ([15180](https://github.com/civicrm/civicrm-core/pull/15180))** |
| 193 | |
| 194 | Updates the XML and associated files to support the change to date picker |
| 195 | format for Pledge date fields. |
| 196 | |
| 197 | ### Backdrop Integration |
| 198 | |
| 199 | - **Fail more gracefully when upgrading on PHP5.x |
| 200 | ([98](https://github.com/civicrm/civicrm-backdrop/pull/98))** |
| 201 | |
| 202 | Provides a clearer error when someone tries to upgrade with PHP 5.x. |
| 203 | |
| 204 | ### Drupal Integration |
| 205 | |
| 206 | - **Automatically tag the drupal-8 repository |
| 207 | (Work Towards [dev/release#9](https://lab.civicrm.org/dev/release/issues/9): |
| 208 | [15149](https://github.com/civicrm/civicrm-core/pull/15149))** |
| 209 | |
| 210 | Continues work to automatically tag a Drupal8 version when new CiviCRM |
| 211 | versions are released as is done for other CMS's. |
| 212 | |
| 213 | - **Error when upgrading to 5.16.0 |
| 214 | ([dev/drupal#79](https://lab.civicrm.org/dev/drupal/issues/79): |
| 215 | [583](https://github.com/civicrm/civicrm-drupal/pull/583))** |
| 216 | |
| 217 | Provides a clearer error when someone tries to upgrade with PHP 5.x. |
| 218 | |
| 219 | ## <a name="bugs"></a>Bugs resolved |
| 220 | |
| 221 | ### Core CiviCRM |
| 222 | |
| 223 | - **Warnings on importing contacts - PHP 7.2 |
| 224 | (Work Towards [dev/core#772](https://lab.civicrm.org/dev/core/issues/772): |
| 225 | [262](https://github.com/civicrm/civicrm-packages/pull/262))** |
| 226 | |
| 227 | This fixes a PHP warning on PHP 7.2 using hierarchical select fields, such as |
| 228 | selecting the matching fields for import columns. Some fields have no fields |
| 229 | nested below them, and those would trigger an error on the `count()` function. |
| 230 | |
| 231 | - **Warnings on CRM_Contribute_Import_Parser re countable |
| 232 | ([dev/core#1001](https://lab.civicrm.org/dev/core/issues/1001): |
| 233 | [14989](https://github.com/civicrm/civicrm-core/pull/14989))** |
| 234 | |
| 235 | Fixes a few PHP 7.2 count warnings when importing. |
| 236 | |
| 237 | - **Changing the label for the Inbound Email activity type lets you edit/delete |
| 238 | them even if the permission disallows |
| 239 | ([dev/core#1123](https://lab.civicrm.org/dev/core/issues/1123): |
| 240 | [15240](https://github.com/civicrm/civicrm-core/pull/15240) and |
| 241 | [15147](https://github.com/civicrm/civicrm-core/pull/15147))** |
| 242 | |
| 243 | - **Regression: Can't use CiviCRM menu on 5.16.0 |
| 244 | ([dev/core#1182](https://lab.civicrm.org/dev/core/issues/1182): |
| 245 | [15020](https://github.com/civicrm/civicrm-core/pull/15020) and |
| 246 | [15019](https://github.com/civicrm/civicrm-core/pull/15019))** |
| 247 | |
| 248 | Fixes a bug in CiviCRM 5.16.0 where a race condition was causing the CiviCRM |
| 249 | Admin Menu to break. |
| 250 | |
| 251 | - **csv import only import one phone number |
| 252 | ([dev/core#1187](https://lab.civicrm.org/dev/core/issues/1187): |
| 253 | [15190](https://github.com/civicrm/civicrm-core/pull/15190))** |
| 254 | |
| 255 | Fixes a bug whereby one phone number is not imported if 2 of the same location |
| 256 | type but different phone types are in an import. |
| 257 | |
| 258 | - **Fix Psalm issue Class or interface CiviCRM_API3_Exception does not exist |
| 259 | ([dev/core#1188](https://lab.civicrm.org/dev/core/issues/1188): |
| 260 | [15043](https://github.com/civicrm/civicrm-core/pull/15043))** |
| 261 | |
| 262 | Ensures that the Psalm Autoloader can find `CiviCRM_API3_Exception`. |
| 263 | |
| 264 | - **File attachment uploads - pptx issue |
| 265 | ([dev/core#1190](https://lab.civicrm.org/dev/core/issues/1190): |
| 266 | [15239](https://github.com/civicrm/civicrm-core/pull/15239))** |
| 267 | |
| 268 | Fixes the upgrade function for adding ".pptx" to the list of safe file types. |
| 269 | |
| 270 | - **ENOTICE when creating activity from contact search results / aka Repeat |
| 271 | Activity accordion section missing when using Add Activity from contact search |
| 272 | results ([dev/core#1192](https://lab.civicrm.org/dev/core/issues/1192): |
| 273 | [15079](https://github.com/civicrm/civicrm-core/pull/15079))** |
| 274 | |
| 275 | Fixes a PHP notice when using the "Add Activity" action from the contact |
| 276 | search results list. |
| 277 | |
| 278 | - **CiviCRM Dashboard does not respect multiple domains |
| 279 | ([dev/core#1200](https://lab.civicrm.org/dev/core/issues/1200): |
| 280 | [15099](https://github.com/civicrm/civicrm-core/pull/15099))** |
| 281 | |
| 282 | For sites with multisite enabled ensures that the CiviCRM Dashboard respects |
| 283 | multiple domains and shows unique dashlets depending on what domain you are |
| 284 | using. |
| 285 | |
| 286 | - **Contact subtype is removed after being cached incorrectly |
| 287 | ([dev/core#1222](https://lab.civicrm.org/dev/core/issues/1222): |
| 288 | [15171](https://github.com/civicrm/civicrm-core/pull/15171))** |
| 289 | |
| 290 | Ensures the static cache is cleared whenever updating or deleting a DAO |
| 291 | object. |
| 292 | |
| 293 | - **Regression: Searching on Email broken in advanced search |
| 294 | ([dev/core#1244](https://lab.civicrm.org/dev/core/issues/1244): |
| 295 | [15255](https://github.com/civicrm/civicrm-core/pull/15255))** |
| 296 | |
| 297 | This fixes a problem where attempting to search on email on the Advanced |
| 298 | search form resulted in a warning and no results. |
| 299 | |
| 300 | - **Trim form values when adding LIKE operator |
| 301 | ([15275](https://github.com/civicrm/civicrm-core/pull/15275))** |
| 302 | |
| 303 | Fixes a 5.17 regression whereby the email string is no longer being trimmed |
| 304 | when searching. |
| 305 | |
| 306 | - **Ensure filtering on email via the api looks for an exact match |
| 307 | ([15276](https://github.com/civicrm/civicrm-core/pull/15276))** |
| 308 | |
| 309 | Fixes a released regression whereby a wildcard was being added to API |
| 310 | Contact.get requests with the email parameter. |
| 311 | |
| 312 | - **Fix fatal when saving import mapping with a relationship but 'Primary' |
| 313 | location type ([15115](https://github.com/civicrm/civicrm-core/pull/15115))** |
| 314 | |
| 315 | When an import column was mapped to a field with the "Primary" location type |
| 316 | that was on a related contact, it would result in a fatal error. |
| 317 | |
| 318 | - **Fix export header for 'Contact ID' |
| 319 | ([15118](https://github.com/civicrm/civicrm-core/pull/15118))** |
| 320 | |
| 321 | This ensures when exporting a contact id column the header is "Contact ID" not |
| 322 | "contact_id". |
| 323 | |
| 324 | - **Changed ClassName for ACL cache |
| 325 | ([15193](https://github.com/civicrm/civicrm-core/pull/15193))** |
| 326 | |
| 327 | Ensures `civicrm_acl_cache` and `civicrm_cache` use different entity names. |
| 328 | |
| 329 | - **Set contact communication_style_id as importable |
| 330 | ([15205](https://github.com/civicrm/civicrm-core/pull/15205))** |
| 331 | |
| 332 | Ensures the "Contact Communication Style" is visible in profile view mode. |
| 333 | |
| 334 | - **Incorporate searchLimit in dedupe cacheKey |
| 335 | ([15185](https://github.com/civicrm/civicrm-core/pull/15185))** |
| 336 | |
| 337 | When you change the search limit after a duplicate search has been performed, |
| 338 | this ensures that a new search is run. |
| 339 | |
| 340 | - **Allow for the deselection of sorting filters |
| 341 | ([15029](https://github.com/civicrm/civicrm-core/pull/15029))** |
| 342 | |
| 343 | Fixes a bug where removing sorting filters on reports and refreshing the |
| 344 | results would nevertheless retain the sorting filters. |
| 345 | |
| 346 | - **CRM_Utils_Array::crmInArray() should recurse properly |
| 347 | ([dev/core#1196](https://lab.civicrm.org/dev/core/issues/1196): |
| 348 | [15092](https://github.com/civicrm/civicrm-core/pull/15092))** |
| 349 | |
| 350 | - **Add ts() to deceased string |
| 351 | ([15211](https://github.com/civicrm/civicrm-core/pull/15211))** |
| 352 | |
| 353 | The word "deceased" when appended to a contact's name is now translatable. |
| 354 | |
| 355 | - **Fatal Error in "Search Builder" if "Household" Contact type is disabled. |
| 356 | ([dev/core#1246](https://lab.civicrm.org/dev/core/issues/1246): |
| 357 | [15289](https://github.com/civicrm/civicrm-core/pull/15289))** |
| 358 | |
| 359 | - **Do not show Activity Separation on when viewing an Activity |
| 360 | ([15046](https://github.com/civicrm/civicrm-core/pull/15046))** |
| 361 | |
| 362 | The option to create separate activities for each contact, only applicable |
| 363 | when creating a new activity, would erroneously appear when viewing an |
| 364 | activity. |
| 365 | |
| 366 | - **Activity profile on Update multiple activities action displays duplicate |
| 367 | assignees ([dev/core#1185](https://lab.civicrm.org/dev/core/issues/1185): |
| 368 | [15035](https://github.com/civicrm/civicrm-core/pull/15035))** |
| 369 | |
| 370 | The list of assignees would display all of the assignees for each previous row |
| 371 | in addition to the assignee(s) for that activity. |
| 372 | |
| 373 | - **Ensure that civicrm_dashboard has a foreign key to civicrm_domain |
| 374 | ([15119](https://github.com/civicrm/civicrm-core/pull/15119))** |
| 375 | |
| 376 | - **Manage Group search message fix |
| 377 | ([15052](https://github.com/civicrm/civicrm-core/pull/15052))** |
| 378 | |
| 379 | When no the group listing is filtered and no groups match the criteria, the |
| 380 | message says that more clearly rather than stating there are no groups on the |
| 381 | site. |
| 382 | |
| 383 | ### CiviCampaign |
| 384 | |
| 385 | - **Actions in campaign dashboard not working with pop-up disabled |
| 386 | ([dev/core#1233](https://lab.civicrm.org/dev/core/issues/1233): |
| 387 | [15233](https://github.com/civicrm/civicrm-core/pull/15233))** |
| 388 | |
| 389 | Ensures users with pop ups deactivated can edit and delete campaigns. |
| 390 | |
| 391 | ### CiviCase |
| 392 | |
| 393 | - **Proposal to fix longstanding name vs label problems for case roles (Work |
| 394 | Towards [dev/core#1046](https://lab.civicrm.org/dev/core/issues/1046): |
| 395 | [15192](https://github.com/civicrm/civicrm-core/pull/15192) and |
| 396 | [15182](https://github.com/civicrm/civicrm-core/pull/15182))** |
| 397 | |
| 398 | These changes work towards fixing the label being used as the name in some |
| 399 | places in CiviCase by allowing for an override tag in the xml to specify the |
| 400 | actual "name". |
| 401 | |
| 402 | - **Changing a civicase activity's label breaks the max_instances check |
| 403 | (Work Towards [dev/core#1116](https://lab.civicrm.org/dev/core/issues/1116): |
| 404 | [14999](https://github.com/civicrm/civicrm-core/pull/14999), |
| 405 | [15002](https://github.com/civicrm/civicrm-core/pull/15002), |
| 406 | [15000](https://github.com/civicrm/civicrm-core/pull/15000) and |
| 407 | [15032](https://github.com/civicrm/civicrm-core/pull/15032))** |
| 408 | |
| 409 | Refactors and cleans up code in preparation for fixing a bug where CiviCase |
| 410 | activity's label breaks the max_instances check. |
| 411 | |
| 412 | - **Fix search for case tags that are part of tag sets |
| 413 | ([15212](https://github.com/civicrm/civicrm-core/pull/15212))** |
| 414 | |
| 415 | Fixes a DB Error when searching for tags that are a part of a tag set. |
| 416 | |
| 417 | - **Switch to relationship BAO when modifying relationships in change case |
| 418 | status so we don't bypass hooks |
| 419 | ([15030](https://github.com/civicrm/civicrm-core/pull/15030))** |
| 420 | |
| 421 | - **Word Replacements not working on manage case Roles |
| 422 | ([dev/core#1218](https://lab.civicrm.org/dev/core/issues/1218): |
| 423 | [15161](https://github.com/civicrm/civicrm-core/pull/15161))** |
| 424 | |
| 425 | ### CiviContribute |
| 426 | |
| 427 | - **Renaming a price option / fee level breaks event participant lists |
| 428 | ([CRM-17182](https://issues.civicrm.org/jira/browse/CRM-17182): |
| 429 | [15064](https://github.com/civicrm/civicrm-core/pull/15064) and |
| 430 | [15350](https://github.com/civicrm/civicrm-core/pull/15350))** |
| 431 | |
| 432 | Fixes a bug where the `fee_amount` was being changed whenever a label was |
| 433 | changed and moves from searching based on regex on the `fee_amount` column to |
| 434 | searching based on the `price_field_value` id. |
| 435 | |
| 436 | - **Add pre/post hooks for price set / field/option |
| 437 | ([dev/core#870](https://lab.civicrm.org/dev/core/issues/870): |
| 438 | [15076](https://github.com/civicrm/civicrm-core/pull/15076))** |
| 439 | |
| 440 | The `hook_civicrm_pre` and `hook_civicrm_post` hooks get invoked when adding |
| 441 | price sets, fields, and options. |
| 442 | |
| 443 | - **Event/Contribution amounts are duplicated when the form is saved |
| 444 | ([dev/core#1240](https://lab.civicrm.org/dev/core/issues/1240): |
| 445 | [15245](https://github.com/civicrm/civicrm-core/pull/15245))** |
| 446 | |
| 447 | Fixes a bug where saving the "amounts" tab of either an event or contribution |
| 448 | page (when using that form to enter options, rather than a price set) results in the |
| 449 | duplication of the amount options listed. |
| 450 | |
| 451 | - **Fix PayPalImpl Contribution Status PseudoConstant for non-English |
| 452 | ([15164](https://github.com/civicrm/civicrm-core/pull/15164))** |
| 453 | |
| 454 | Ensures contribution statuses are set correctly for sites using PayPal Express |
| 455 | and a language other than English by switching to using the name property |
| 456 | instead of the label. |
| 457 | |
| 458 | - **Fix an HTML error in Calculate.tpl |
| 459 | ([15102](https://github.com/civicrm/civicrm-core/pull/15102))** |
| 460 | |
| 461 | This resolves a `<span>` that was not closed correctly on the calculation of a |
| 462 | price set's total amount due. |
| 463 | |
| 464 | - **Use api to create activity and removed hardcoded status id |
| 465 | ([14621](https://github.com/civicrm/civicrm-core/pull/14621))** |
| 466 | |
| 467 | When exporting an accounting batch, the activity that is created is now done |
| 468 | so using the API, and it uses the status name `Completed` rather than a |
| 469 | hard-coded status ID `2`. |
| 470 | |
| 471 | - **Fix wrong variable in check for profiles on contributionpage |
| 472 | ([15093](https://github.com/civicrm/civicrm-core/pull/15093))** |
| 473 | |
| 474 | Ensures the correct variable is being checked for pre profile types when |
| 475 | configuring a Contribution Page. |
| 476 | |
| 477 | - **Batch payment page breaks when an exported activity has no file to download |
| 478 | ([dev/financial#58](https://lab.civicrm.org/dev/financial/issues/58): |
| 479 | [14367](https://github.com/civicrm/civicrm-core/pull/14367))** |
| 480 | |
| 481 | - **Stop adding a refund payment from creating extraneous financial items |
| 482 | ([15143](https://github.com/civicrm/civicrm-core/pull/15143))** |
| 483 | |
| 484 | ### CiviEvent |
| 485 | |
| 486 | - **Most recent contact note exposed in event confirmation emails |
| 487 | ([dev/event#10](https://lab.civicrm.org/dev/event/issues/10): |
| 488 | [15060](https://github.com/civicrm/civicrm-core/pull/15060))** |
| 489 | |
| 490 | Fixes a bug where when submitting an event registration which contains a |
| 491 | profile which contains a note field. If the note was left blank, then the |
| 492 | confirmation/notification emails would contain the most recent note in the |
| 493 | contact's record, potentially exposing confidential information. |
| 494 | |
| 495 | - **Custom field values for a new Event based on an Event Template are not |
| 496 | checked causing false validation message and Event not to |
| 497 | save ([dev/core#1241](https://lab.civicrm.org/dev/core/issues/1241): |
| 498 | [15296](https://github.com/civicrm/civicrm-core/pull/15296))** |
| 499 | |
| 500 | - **Confirmation emails include flawed subtitle for post-profiles |
| 501 | ([dev/event#15](https://lab.civicrm.org/dev/event/issues/15): [#15380](https://github.com/civicrm/civicrm-core/pull/15380))** |
| 502 | |
| 503 | Fixes a regression from 5.17.0 when sending a confirmation email. |
| 504 | The confirmation email includes subsections to summarize any |
| 505 | post-profile data, but the title was miscomputed. This manifested |
| 506 | as either a page crash or an inaccurate title. |
| 507 | |
| 508 | ### CiviGrant |
| 509 | |
| 510 | - **Grant in Edit mode doesn't show the associated contact |
| 511 | ([dev/core#1065](https://lab.civicrm.org/dev/core/issues/1065): |
| 512 | [15238](https://github.com/civicrm/civicrm-core/pull/15238) and |
| 513 | [15209](https://github.com/civicrm/civicrm-core/pull/15209))** |
| 514 | |
| 515 | Ensures that the associated contact field is shown when editing a grant. |
| 516 | |
| 517 | - **Fixes for taking dynamic form name in grant search |
| 518 | ([15075](https://github.com/civicrm/civicrm-core/pull/15075))** |
| 519 | |
| 520 | This removes the hard-coded form name when retrieving the search results in |
| 521 | preparation for a search action. |
| 522 | |
| 523 | ### CiviMail |
| 524 | |
| 525 | - **SMTP help text is misleading - references the wrong admin screen |
| 526 | ([dev/core#879](https://lab.civicrm.org/dev/core/issues/879): |
| 527 | [15165](https://github.com/civicrm/civicrm-core/pull/15165))** |
| 528 | |
| 529 | Fixes up the help text displayed when testing the SMTP configuration fails. |
| 530 | |
| 531 | - **Remove template field if using Mosaico in non shoreditch mode |
| 532 | ([14927](https://github.com/civicrm/civicrm-core/pull/14927))** |
| 533 | |
| 534 | ### CiviMember |
| 535 | |
| 536 | - **Fix metadata on member export |
| 537 | ([14916](https://github.com/civicrm/civicrm-core/pull/14916))** |
| 538 | |
| 539 | Ensures when exporting memberships headings are set appropriately for the |
| 540 | following columns: `member_is_override`, `membership_recur_id` and |
| 541 | `max_related`. |
| 542 | |
| 543 | - **Incorrect line item created for back-end membership sign-up using price set |
| 544 | and CiviDiscount ([dev/core#860](https://lab.civicrm.org/dev/core/issues/860): |
| 545 | [15004](https://github.com/civicrm/civicrm-core/pull/15004))** |
| 546 | |
| 547 | - **[regression] Recurring contributions no longer properly update memberships |
| 548 | (on PayPal Pro, maybe others) |
| 549 | ([dev/membership#13](https://lab.civicrm.org/dev/membership/issues/13): |
| 550 | [15053](https://github.com/civicrm/civicrm-core/pull/15053))** |
| 551 | |
| 552 | - **Make sure inherited memberships are not themselves inherited |
| 553 | ([15114](https://github.com/civicrm/civicrm-core/pull/15114))** |
| 554 | |
| 555 | This prevents contacts from inheriting memberships that were inherited from |
| 556 | them. |
| 557 | |
| 558 | - **{Membership.Fee} appears on Membership Renewal Reminder emails with 9 |
| 559 | decimal places ([dev/core#377](https://lab.civicrm.org/dev/core/issues/377): |
| 560 | [14992](https://github.com/civicrm/civicrm-core/pull/14992))** |
| 561 | |
| 562 | ### Drupal Integration |
| 563 | |
| 564 | - **Drupal8: getUrlPath: avoid relying on the deprecated 'q' variable |
| 565 | (Work Towards [dev/drupal#52](https://lab.civicrm.org/dev/drupal/issues/52): |
| 566 | [15268](https://github.com/civicrm/civicrm-core/pull/15268))** |
| 567 | |
| 568 | In Drupal8, the 'q' variable has been deprecated which has resulted in CiviCRM |
| 569 | throwing a bunch of PHP notices. This PR silences those notices while a more |
| 570 | long term fix is developed. |
| 571 | |
| 572 | ### Joomla Integration |
| 573 | |
| 574 | - **Some error messages render a chunk of markup as plain text |
| 575 | ([dev/joomla#10](https://lab.civicrm.org/dev/joomla/issues/10): |
| 576 | [15159](https://github.com/civicrm/civicrm-core/pull/15159))** |
| 577 | |
| 578 | Removes Joomla-specific error display and use native CiviCRM display to avoid |
| 579 | some error messages rendering as plain text. |
| 580 | |
| 581 | - **PHP 7.2 countable warning after installation |
| 582 | ([dev/joomla#15](https://lab.civicrm.org/dev/joomla/issues/15): |
| 583 | [53](https://github.com/civicrm/civicrm-joomla/pull/53))** |
| 584 | |
| 585 | - **[Joomla 4.0] CiviCRM's CSS interferes with Joomla's top header background |
| 586 | colour ([dev/joomla#24](https://lab.civicrm.org/dev/joomla/issues/24): |
| 587 | [15137](https://github.com/civicrm/civicrm-core/pull/15137))** |
| 588 | |
| 589 | ## <a name="misc"></a>Miscellany |
| 590 | |
| 591 | - **Swap CRM_Utils_Array::value for empty() in conditionals |
| 592 | ([15005](https://github.com/civicrm/civicrm-core/pull/15005))** |
| 593 | |
| 594 | - **Possible timing issue with test phpunit/api/v3/AttachmentTest::testCreate |
| 595 | ([dev/core#938](https://lab.civicrm.org/dev/core/issues/938): |
| 596 | [15216](https://github.com/civicrm/civicrm-core/pull/15216))** |
| 597 | |
| 598 | - **Change connection and results charsets to utf8mb4 on MySQL 5.5.3+ |
| 599 | ([241](https://github.com/civicrm/civicrm-packages/pull/241))** |
| 600 | |
| 601 | - **Fix upgrade version for #13487 |
| 602 | ([15031](https://github.com/civicrm/civicrm-core/pull/15031))** |
| 603 | |
| 604 | - **Update select2 to latest 3.x + patches |
| 605 | ([15054](https://github.com/civicrm/civicrm-core/pull/15054))** |
| 606 | |
| 607 | - **Further work on payment.create consolidation - always handle financials from |
| 608 | payment.create ([14673](https://github.com/civicrm/civicrm-core/pull/14673))** |
| 609 | |
| 610 | - **Extract function to create email activity when sending an email to contact |
| 611 | ([15133](https://github.com/civicrm/civicrm-core/pull/15133))** |
| 612 | |
| 613 | - **Extract cancelParticipant and cancelMembership functions in baseIPN |
| 614 | ([15134](https://github.com/civicrm/civicrm-core/pull/15134))** |
| 615 | |
| 616 | - **Rewrite subTypeInfo to use caching mechanism |
| 617 | ([14715](https://github.com/civicrm/civicrm-core/pull/14715))** |
| 618 | |
| 619 | - **providing clear indication that civicrm_engage module is deprecated. |
| 620 | ([582](https://github.com/civicrm/civicrm-drupal/pull/582))** |
| 621 | |
| 622 | - **distmaker - Finish migrating bower.json => composer.json |
| 623 | ([15148](https://github.com/civicrm/civicrm-core/pull/15148))** |
| 624 | |
| 625 | - **Switch recordAdditionalPayment fully over to api |
| 626 | ([14408](https://github.com/civicrm/civicrm-core/pull/14408))** |
| 627 | |
| 628 | - **Add note about testRenewMembership failing on certain days |
| 629 | ([15167](https://github.com/civicrm/civicrm-core/pull/15167))** |
| 630 | |
| 631 | - **Someimes ya just gotta say enough already |
| 632 | ([15175](https://github.com/civicrm/civicrm-core/pull/15175))** |
| 633 | |
| 634 | - **Extend loadSavedMapping to check defaults |
| 635 | ([15179](https://github.com/civicrm/civicrm-core/pull/15179))** |
| 636 | |
| 637 | - **Initial refactor of BaseIPN |
| 638 | ([15129](https://github.com/civicrm/civicrm-core/pull/15129))** |
| 639 | |
| 640 | - **Convert pledge date fields to use datepicker rather than jcalendar |
| 641 | ([15170](https://github.com/civicrm/civicrm-core/pull/15170))** |
| 642 | |
| 643 | - **Use metadata for pledgeDateRange fields |
| 644 | ([15191](https://github.com/civicrm/civicrm-core/pull/15191))** |
| 645 | |
| 646 | - **Add minimal test for testExportFinancialBatch |
| 647 | ([15136](https://github.com/civicrm/civicrm-core/pull/15136))** |
| 648 | |
| 649 | - **Code cleanup in CRM_Core_Permission::check |
| 650 | ([15141](https://github.com/civicrm/civicrm-core/pull/15141))** |
| 651 | |
| 652 | - **Event confirm - (very) minor cleanup + test |
| 653 | ([15010](https://github.com/civicrm/civicrm-core/pull/15010))** |
| 654 | |
| 655 | - **Stabalize Attachment API Test |
| 656 | ([15066](https://github.com/civicrm/civicrm-core/pull/15066))** |
| 657 | |
| 658 | - **Remove ?last? instances of ->free() |
| 659 | ([dev/core#562](https://lab.civicrm.org/dev/core/issues/562): |
| 660 | [14990](https://github.com/civicrm/civicrm-core/pull/14990))** |
| 661 | |
| 662 | - **Add myself to the contributor list |
| 663 | ([15036](https://github.com/civicrm/civicrm-core/pull/15036))** |
| 664 | |
| 665 | - **Remove silly dumb unreachable lines |
| 666 | ([15033](https://github.com/civicrm/civicrm-core/pull/15033))** |
| 667 | |
| 668 | - **Deprecate CRM_Core_Config::addressSequence() |
| 669 | ([15126](https://github.com/civicrm/civicrm-core/pull/15126))** |
| 670 | |
| 671 | - **Deprecate CRM_Core_Config::defaultContactCountry and |
| 672 | defaultContactCountryName |
| 673 | ([15127](https://github.com/civicrm/civicrm-core/pull/15127))** |
| 674 | |
| 675 | - **Use metadata for dataPatterns |
| 676 | ([15224](https://github.com/civicrm/civicrm-core/pull/15224))** |
| 677 | |
| 678 | - **SyntaxConformanceTest::testSqlOperators - Skip "Dedupe" entity on MySQL 5.5 |
| 679 | ([15234](https://github.com/civicrm/civicrm-core/pull/15234))** |
| 680 | |
| 681 | - **Add in 5.17.1 Release notes and migrate .tpl file for 5.17.1 to 5.18 to |
| 682 | support upgrade |
| 683 | ([15253](https://github.com/civicrm/civicrm-core/pull/15253))** |
| 684 | |
| 685 | - **(NFC) Add comments to relate to gitlab ticket |
| 686 | ([dev/core#927](https://lab.civicrm.org/dev/core/issues/927): |
| 687 | [15128](https://github.com/civicrm/civicrm-core/pull/15128))** |
| 688 | |
| 689 | - **Remove unused method CRM_Contact_BAO_Contact_Utils::maxLocations |
| 690 | ([15091](https://github.com/civicrm/civicrm-core/pull/15091))** |
| 691 | |
| 692 | - **Remove unused Selenium binaries |
| 693 | ([263](https://github.com/civicrm/civicrm-packages/pull/263))** |
| 694 | |
| 695 | - **Remove a few unused scripts from tools/bin/scripts |
| 696 | ([15078](https://github.com/civicrm/civicrm-core/pull/15078))** |
| 697 | |
| 698 | - **Remove deprecated unused function. |
| 699 | ([15070](https://github.com/civicrm/civicrm-core/pull/15070))** |
| 700 | |
| 701 | - **Remove unused skipRedirect param |
| 702 | ([15125](https://github.com/civicrm/civicrm-core/pull/15125))** |
| 703 | |
| 704 | - **[clean up][ export] Remove membership_auto_renew from defaultReturn |
| 705 | properties ([14980](https://github.com/civicrm/civicrm-core/pull/14980))** |
| 706 | |
| 707 | - **[Ref] [Import] Use processor to determine website type, location type, test |
| 708 | ([15116](https://github.com/civicrm/civicrm-core/pull/15116))** |
| 709 | |
| 710 | - **[Import] [ref] - minor cleanup to reduce code complexity |
| 711 | ([15097](https://github.com/civicrm/civicrm-core/pull/15097))** |
| 712 | |
| 713 | - **[ref] [ import] Extend tests & simpler retrieval to relationship_type_id |
| 714 | ([15130](https://github.com/civicrm/civicrm-core/pull/15130))** |
| 715 | |
| 716 | - **[REF] Import - minor cleanup - generate js on the processor class |
| 717 | ([15183](https://github.com/civicrm/civicrm-core/pull/15183))** |
| 718 | |
| 719 | - **[Import] Minor cleanup on membership import |
| 720 | ([15013](https://github.com/civicrm/civicrm-core/pull/15013))** |
| 721 | |
| 722 | - **[Import][ref] Minor code improvement - move setDefaults to processor |
| 723 | ([15189](https://github.com/civicrm/civicrm-core/pull/15189))** |
| 724 | |
| 725 | - **[Ref] [Import] more code cleanup |
| 726 | ([15219](https://github.com/civicrm/civicrm-core/pull/15219))** |
| 727 | |
| 728 | - **[Ref] [Import] Final round in the cleanup Load Mapping form epic |
| 729 | ([15226](https://github.com/civicrm/civicrm-core/pull/15226))** |
| 730 | |
| 731 | - **[Import] [REF] code cleanup & test on the code to 'guess the intended |
| 732 | field from the column name' |
| 733 | ([15220](https://github.com/civicrm/civicrm-core/pull/15220))** |
| 734 | |
| 735 | - **[REF] [Import] Minor cleanup on status setting. |
| 736 | ([15015](https://github.com/civicrm/civicrm-core/pull/15015))** |
| 737 | |
| 738 | - **[REF] [Import] extract saved mapping code to parent class |
| 739 | ([15017](https://github.com/civicrm/civicrm-core/pull/15017))** |
| 740 | |
| 741 | - **[Import] [Cleanup] remove unused parameters |
| 742 | ([14981](https://github.com/civicrm/civicrm-core/pull/14981))** |
| 743 | |
| 744 | - **[Ref] [Import] move metadata calculations to a trait |
| 745 | ([15018](https://github.com/civicrm/civicrm-core/pull/15018))** |
| 746 | |
| 747 | - **[Test] [Ref] [Import]Add wrapper class for importProcessor |
| 748 | ([15028](https://github.com/civicrm/civicrm-core/pull/15028))** |
| 749 | |
| 750 | - **Refactor CRM_Contact_BAO_Relationship::add to autoload missing params from |
| 751 | existing record ([15103](https://github.com/civicrm/civicrm-core/pull/15103) |
| 752 | and [15123](https://github.com/civicrm/civicrm-core/pull/15123))** |
| 753 | |
| 754 | - **[Ref] Extract addInheritedMembership |
| 755 | ([15113](https://github.com/civicrm/civicrm-core/pull/15113))** |
| 756 | |
| 757 | - **[REF] minor code refactor on import - Pass ProcessorObject into |
| 758 | loadSavedMapping & use it to load the formName |
| 759 | ([15068](https://github.com/civicrm/civicrm-core/pull/15068))** |
| 760 | |
| 761 | - **Minor refactor of 'Pending' parameter for processMembership |
| 762 | ([15124](https://github.com/civicrm/civicrm-core/pull/15124))** |
| 763 | |
| 764 | - **[REF] Very minor code cleanup on import code with good test cover |
| 765 | ([15173](https://github.com/civicrm/civicrm-core/pull/15173))** |
| 766 | |
| 767 | - **[REF] Move clone template functionality from api to bao |
| 768 | ([15163](https://github.com/civicrm/civicrm-core/pull/15163))** |
| 769 | |
| 770 | - **[REF] Extract chunk of code relating to whether to disabled an inherited |
| 771 | relationship ([14955](https://github.com/civicrm/civicrm-core/pull/14955))** |
| 772 | |
| 773 | - **[REF] Move calculation of js for import fields WITH relationship keys to |
| 774 | processor. ([15218](https://github.com/civicrm/civicrm-core/pull/15218))** |
| 775 | |
| 776 | - **[Datepicker][REF] Convert mailing date field on mailing search screen… |
| 777 | ([15181](https://github.com/civicrm/civicrm-core/pull/15181))** |
| 778 | |
| 779 | - **[Ref] Import use process for relationship defaults, add test |
| 780 | ([15215](https://github.com/civicrm/civicrm-core/pull/15215))** |
| 781 | |
| 782 | - **[REF] extract send receipt in MembershipRenewal fn |
| 783 | ([15117](https://github.com/civicrm/civicrm-core/pull/15117))** |
| 784 | |
| 785 | - **[NFC] Fix test syntax |
| 786 | ([15067](https://github.com/civicrm/civicrm-core/pull/15067))** |
| 787 | |
| 788 | - **[NFC] swap instances where double = is used but it should be triple = |
| 789 | ([15049](https://github.com/civicrm/civicrm-core/pull/15049))** |
| 790 | |
| 791 | - **[NFC] Update Upgrade Template to use short array syntax |
| 792 | ([15057](https://github.com/civicrm/civicrm-core/pull/15057))** |
| 793 | |
| 794 | - **[NFC] Remove redundant annotation |
| 795 | ([15172](https://github.com/civicrm/civicrm-core/pull/15172))** |
| 796 | |
| 797 | - **(NFC) assertPhpSupport - Code cleanup |
| 798 | ([164](https://github.com/civicrm/civicrm-wordpress/pull/164))** |
| 799 | |
| 800 | - **(NFC) civicrm.drush.inc - Cleanup style |
| 801 | ([99](https://github.com/civicrm/civicrm-backdrop/pull/99))** |
| 802 | |
| 803 | - **[NFC] Update Default report instances that filter on join date to be … |
| 804 | ([15247](https://github.com/civicrm/civicrm-core/pull/15247))** |
| 805 | |
| 806 | - **[NFC] Add ImportProcessor class & unit tests + extend existing cover |
| 807 | ([15072](https://github.com/civicrm/civicrm-core/pull/15072))** |
| 808 | |
| 809 | - **[NFC] Update the APIv3 documentation links. |
| 810 | ([15077](https://github.com/civicrm/civicrm-core/pull/15077))** |
| 811 | |
| 812 | - **(NFC) GenericAssertionsTrait - Improve docblocks |
| 813 | ([15071](https://github.com/civicrm/civicrm-core/pull/15071))** |
| 814 | |
| 815 | - **[NFC] Update Examples |
| 816 | ([15085](https://github.com/civicrm/civicrm-core/pull/15085))** |
| 817 | |
| 818 | - **[Test] [NFC] upgrade remaining export tests |
| 819 | ([15095](https://github.com/civicrm/civicrm-core/pull/15095))** |
| 820 | |
| 821 | - **[Test] Bring to life dormant test |
| 822 | ([15150](https://github.com/civicrm/civicrm-core/pull/15150))** |
| 823 | |
| 824 | - **[TEST] Enable apiv4 testing for GroupNesting and GroupOrganization entities |
| 825 | ([15217](https://github.com/civicrm/civicrm-core/pull/15217))** |
| 826 | |
| 827 | - **[Test] Demonstrate the truthiness of CRM_Utils_System::isNull |
| 828 | ([15027](https://github.com/civicrm/civicrm-core/pull/15027))** |
| 829 | |
| 830 | - **Unit test for custom date parsing |
| 831 | ([14988](https://github.com/civicrm/civicrm-core/pull/14988))** |
| 832 | |
| 833 | - **[NFC] [Test] dev/core#1098 Add unit test & code comments relating to the |
| 834 | slow activity search |
| 835 | ([15016](https://github.com/civicrm/civicrm-core/pull/15016))** |
| 836 | |
| 837 | - **[Import] [Test] Initial test on loadSavedMapping function. |
| 838 | ([15050](https://github.com/civicrm/civicrm-core/pull/15050))** |
| 839 | |
| 840 | - **[Test] Tolerance parameter in attachmenttest needs to be one higher for |
| 841 | integers ([15069](https://github.com/civicrm/civicrm-core/pull/15069))** |
| 842 | |
| 843 | - **[Test] Fix Last_name in CiviUnitTestCase::activityCreate |
| 844 | ([15112](https://github.com/civicrm/civicrm-core/pull/15112))** |
| 845 | |
| 846 | - **test for PR |
| 847 | ([15121](https://github.com/civicrm/civicrm-core/pull/15121))** |
| 848 | |
| 849 | ## <a name="credits"></a>Credits |
| 850 | |
| 851 | This release was developed by the following code authors: |
| 852 | |
| 853 | 19ATF77; AGH Strategies - Andie Hunt; Agileware - Justin Freeman; Andrew |
| 854 | Thompson; Australian Greens - Seamus Lee; Caltha - Tomasz Pietrzkowski; |
| 855 | Christian Wach; Circle Interactive - Dave Jenkins, Pradeep Nayak, Reece Benson; |
| 856 | CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha |
| 857 | Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Electronic Frontier Foundation - |
| 858 | Mark Burdett; Florian Kohrt; Greenpeace CEE - Patrick Figel; JMA Consulting - |
| 859 | Monish Deb; John Kingsnorth; Megaphone Technology Consulting - Jon Goldberg; MJW |
| 860 | Consulting - Matthew Wire; mmyriam; Onyemenam Ndubuisi; Progressive Technology |
| 861 | Project - Jamie McClelland; Tadpole Collective - Kevin Cristiano; Wikimedia |
| 862 | Foundation - Eileen McNaughton |
| 863 | |
| 864 | Most authors also reviewed code for this release; in addition, the following |
| 865 | reviewers contributed their comments: |
| 866 | |
| 867 | AGH Strategies - Alice Frumin; Agileware - Francis Whittle, Pengyi Zhang; |
| 868 | don-alejandro-z; Fuzion - Jitendra Purohit; iXiam - Luciano Spiegel; JMA |
| 869 | Consulting - Joe Murray; Nicol Wistreich; Semper IT - Karin Gerritsen; Squiffle |
| 870 | Consulting - Aidan Saunders |
| 871 | |
| 872 | ## <a name="feedback"></a>Feedback |
| 873 | |
| 874 | These release notes are edited by Alice Frumin and Andie Hunt. If you'd like |
| 875 | to provide feedback on them, please log in to https://chat.civicrm.org/civicrm |
| 876 | and contact `@agh1`. |